Arquitectura de alta disponibilidad de Redis Sentinel

Este artículo presenta principalmente Redis Sentinel, la arquitectura de alta disponibilidad de Redis, y explica desde varios aspectos, como qué es, por qué se usa, proceso automatizado e implementación.

¿Qué es Redis Sentinel?

Redis Sentinel es una implementación de alta disponibilidad de Redis. Es una arquitectura distribuida que incluye varios nodos Sentinel y nodos de datos de Redis. Cada nodo Sentinel monitorea el nodo de datos y otros nodos Sentinel. Cuando el nodo no está disponible, el programa El procesamiento automatizado no requiere intervención manual, por lo que se resuelve de manera eficiente el problema de alta disponibilidad de Redis.

¿Por qué usarlo?

El modo de replicación maestro-esclavo tradicional sincroniza los cambios de datos del nodo maestro con los nodos esclavos. Esto tiene dos efectos:

  1. Como respaldo para la falla del nodo primario

  2. Reducir la presión de `` lectura '' del nodo maestro

En el modo de replicación maestro-esclavo, una vez que falla el nodo maestro, se requiere la intervención manual para la conmutación por error durante este proceso. El rendimiento en tiempo real no se puede garantizar debido a la intervención manual, y el proceso de operación también es propenso a errores, lo que aumenta las molestias de todo el proceso. Por lo tanto, es necesario introducir una arquitectura de alta disponibilidad para automatizar todo el proceso de transferencia.

Proceso automatizado

El proceso de transferencia es el mismo que la lógica de intervención manual de la replicación maestro-esclavo. Aquí primero miramos el proceso de intervención manual:

  1. El nodo maestro (M) falla y la replicación de los nodos esclavos (S1, S2) se interrumpe.

  2. Realice slaveof no one un nodo esclavo S1 como el nuevo nodo.

  3. Actualice el enlace de redis del cliente al nuevo nodo maestro S1, reinicie

  4. Comience a copiar los datos del nodo maestro S1 desde el nodo S2 y espere la recuperación del nodo maestro anterior M para copiar los datos del nuevo nodo maestro S1.

La diferencia entre el modo centinela de Redis y el modo maestro-esclavo es agregar nodos Sentinel para el monitoreo de nodos de Redis.


335f702fbbf995665dca7bd9fe88cc2e.jpeg

  1. Como se muestra en la figura, cada nodo Sentinel encuentra que el nodo principal tiene fallas a través del monitoreo regular (el maestro está fuera de línea)

  2. Múltiples nodos Sentinel llegan a un acuerdo sobre la falla del nodo maestro y seleccionan un líder para que sea responsable de la conmutación por error.

  3. El proceso de transferencia de datos es consistente con la lógica de "intervención manual" anterior, pero está automatizado.

  4. Una vez que se completa la transferencia, el nodo esclavo 1 (o esclavo 2) se convierte en el nodo maestro y el maestro original se convierte en el nodo esclavo.

Se puede ver en lo anterior que Redis Sentinel tiene notificaciones de monitoreo, conmutación por error del nodo maestro y configuración (conexión del cliente al nodo Sentinel) y otras funciones.

Implementar en línea

Aquí, nuestra arquitectura de implementación utiliza 3 nodos Sentinel, 1 nodo maestro y 2 nodos esclavos para formar la arquitectura Redis Sentinel.

  • Primero iniciamos los nodos maestro y esclavo normalmente

  • Configurar el archivo conf de centinela

El archivo de configuración redis_sentinel.conf es el siguiente:

port 26379
bind 10.xx.xx.xx
sentinel monitor mymaster 10.xx.xx.xx 6379 2 
# 表示配置需要监控10.xx.xx.xx:6379
# 2表示至少需要2个Sentinel节点统一,
# mymaster是主节点别名,防止挂了也可以找到主节点 sentinel auth-pass mymaster password  # 需要的密码 sentinel config-epoch mymaster 0  #确认mymater SDOWN时长 sentinel down-after-milliseconds mymaster 5000
# mymaster多久不响应认为SDOWN sentinel failover-timeout mymaster 60000
# 2次failover切换时间 dir "/etc/redis" # 定义目录存放 daemonize yes pidfile "/var/run/redis/redis-sentinel.pid" logfile "/var/log/redis/redis-sentinel.log"
  • ¿El script de inicio del servicio redis-sentinel.sh en /etc/init.d/

  •  Y el script es ejecutable

sudo service redis-sentinel start

algunos consejos

  1. Todos los nodos de Redis Sentinel deben distribuirse en diferentes máquinas físicas.

  2. Implementar al menos tres y un número impar de nodos Sentinel

  3. El cliente se conecta al nodo centinela.


Supongo que te gusta

Origin blog.51cto.com/15009257/2552291
Recomendado
Clasificación