Explicación detallada del modo centinela de redis

 

(1) Descripción general de Sentinel

Anteriormente hablamos de la replicación maestro-esclavo de redis. Para lograr una alta disponibilidad, se seleccionará un servidor como maestro y varios servidores como esclavos. Ahora hay una situación en la que el maestro no funciona. En este momento, el sistema seleccionará un esclavo como maestro, luego desconectará al maestro fuera de línea y luego notificará a todos los esclavos quién es el nuevo maestro. Aquí hay una pregunta: ¿quién decide si el maestro está caído y qué esclavo se selecciona como maestro?

En la replicación maestro-esclavo, los centinelas completan estas operaciones. El centinela es un sistema distribuido que monitorea cada servidor en la estructura maestro-esclavo. Cuando ocurre una falla, se selecciona un nuevo maestro a través de un mecanismo de votación.

El centinela también es un servidor redis, y el número de centinelas suele configurarse como un número impar (para evitar un empate durante la campaña).

(2) El papel del centinela

1. Monitoreo: verifique constantemente si el maestro y el esclavo están funcionando normalmente; detección de supervivencia del maestro; detección del estado de funcionamiento del maestro y esclavo

2. Notificación: cuando haya un problema con el servidor detectado, envíe una notificación a otros centinelas y clientes

3. Conmutación por error automática: abra la conexión maestro y esclavo, seleccione un nuevo esclavo como maestro y conecte otros esclavos al nuevo maestro

(3) El principio de funcionamiento del centinela

3.1 Fase de seguimiento

La monitorización es una de las funciones de los centinelas. La monitorización consiste en sincronizar la información de estado de cada nodo.

1. Obtenga el estado de cada uno de los centinelas (ya sea en línea), a través del comando ping

2. Obtenga el estado del maestro, incluyendo principalmente el runid del maestro, información detallada de cada esclavo, etc., a través del comando info.

3. Obtenga el estado de todos los esclavos (de acuerdo con la información del esclavo en el maestro), incluyendo principalmente el runid, el rol, el host, el desplazamiento, etc. del esclavo.

Cuando dos centinelas obtengan la información de seguimiento del maestro o esclavo respectivamente, intercambiarán datos para la sincronización de datos, de igual forma, cuando el tercer centinela obtenga la información de seguimiento, también sincronizará los datos con los otros dos centinelas.

3.2 Fase de notificación

La fase de notificación es principalmente la comunicación mutua de varios centinelas.Suponiendo que hay tres centinelas en un sistema, cuando sentinel1 pregunta sobre el estado de los servidores maestro y esclavo y obtiene una respuesta, le informará a sentinel2 y sentinel3 de su mensaje. De manera similar, sentinel2 le dirá 1 y 3 cuando reciba la noticia. Para que los datos estén siempre sincronizados.

3.3 Fase de conmutación por error

Cuando un maestro deja de funcionar, entra en la fase de conmutación por error.

1. Primero, un centinela descubre que no responde a un mensaje al maestro, por lo que establece el estado del maestro como inactivo e informa a otros centinelas. Otros centinelas enviarán un saludo al maestro.Cuando más de la mitad de los centinelas (que se pueden configurar) sienten que el maestro está caído, el estado del maestro se establece en odown, que ingresa al segundo paso.

2. Dado que el maestro está caído, se debe elegir un nuevo maestro. El centinela elige al maestro debe implementarse a través del mecanismo de votación interna del centinela. Después de ser elegido para ejecutar y descubrir al centinela del nuevo maestro, proceda al tercer paso.

3. El centinela elige uno del esclavo ya que el nuevo maestro tiene los siguientes principios

Elimina los que no están en línea

Elimina la respuesta lenta

Elimina a los que llevan mucho tiempo desconectados del maestro original.

Finalmente, uno de los esclavos restantes se seleccionará como el nuevo maestro en función de la prioridad, el desplazamiento, etc.

4. El centinela envía instrucciones al nuevo maestro:

slaveof no one

  Envía instrucciones a otros esclavos

slaveof 新masterIP 端口

(4) La operación del centinela

En cuanto al funcionamiento del centinela, se recomienda operar bajo el servidor linux

Enciende el centinela:

redis-sentinel sentinel.conf (配置的文件名自定义)

Archivo de configuración

 
  1. port 26379

  2. dir /tmp

  3. sentinel monitor mymaster 127.0.0.1 6379 2

  4. sentinel down-after-milliseconds 30000 //连接多长时间未响应就认为被监控服务器宕机

  5. parallel-syncs mymaster 1 //指定了在执行故障转移时, 最多可以有多少个从服务器同时对新的主服务器进行同步

  6. failover-timeout mymaster 180000 //指定了故障转移的同步超时时间

centinela monitor mymaster 127.0.0.1 6379 2: 127.0.0.1 6379 representa el objeto monitoreado por el centinela, donde mymaster es un nombre definido por sí mismo, y el último dígito 2 significa que cuando dos centinelas piensan que el servidor monitoreado está inactivo, lo harán confírmelo El servidor no funciona. El valor de éste suele ser el número de centinelas / 2 + 1, es decir, más de la mitad.

Cuando el host está inactivo, el centinela seleccionará automáticamente uno de los esclavos como host

 

Supongo que te gusta

Origin blog.csdn.net/qq_33762302/article/details/114682577
Recomendado
Clasificación