[conceptos básicos de Redis] Centinela

hola, aquí está la serie de artículos de redis, este artículo es [redis basics] sentinel, el enlace anterior: [redis] redis master-slave replication_Work hard and work hard mlx's blog-CSDN blog


Tabla de contenido

concepto 

efecto 

Cómo usar Sentinel (demostración de caso + pasos prácticos)

La arquitectura centinela de Redis explicada con antelación

Configuración de parámetros clave

Configuración de archivo común para este caso

Acerca de otras configuraciones en el archivo centinela

Inicie una instancia de redis con un maestro y dos esclavos, configure centinelas y demuestre la replicación maestro-esclavo normal

El host está caído, verifique el registro

Apague el servidor redis manualmente y el host simulado cuelga

 Verificamos los cambios del esclavo después de que el maestro cuelga

Comparar archivos de configuración

Proceso operativo y principio de selección de Sentinel

Subjetivo fuera de línea y objetivo fuera de línea

SDOWN subjetivo fuera de línea

Objetivo ODOWN fuera de línea

Centinela líder electoral (elija al rey de los soldados del centinela)

El rey de los soldados activa la conmutación por error y elige un nuevo maestro

nuevo señor entronizado

Todos los funcionarios inclinaron la cabeza, una vez que el emperador y los cortesanos, volvieron a reconocer al jefe.

El viejo maestro adora, y el viejo maestro tiene que ser persuadido cuando regrese.

Sugerencias para usar Sentinel


concepto 

En pocas palabras, un centinela es un denunciante que inspecciona y supervisa si el host maestro en segundo plano está defectuoso. Si falla, convertirá automáticamente una determinada base de datos esclava en una nueva base de datos maestra de acuerdo con la cantidad de votos, y continuará para servir al mundo exterior.

efecto 

Sentinel tiene las siguientes cuatro funciones principales:

  • Supervisión maestro-esclavo
    • Supervise si la biblioteca redis maestro-esclavo se ejecuta normalmente
  • notificación
    • Sentry puede enviar resultados de conmutación por error a los clientes
  • conmutación por error
    • Si el maestro es anormal, se realizará un cambio maestro-esclavo y uno de los esclavos se usará como el nuevo maestro.
  • centro de configuración
    • El cliente obtiene la dirección del nodo maestro del servicio Redis actual conectándose al centinela

Para resumir en una frase, las principales funciones de Sentinels son las siguientes:

1. Supervise el estado de ejecución de redis, incluidos el maestro y el esclavo

2. Cuando el maestro está inactivo, puede cambiar automáticamente el esclavo al nuevo maestro

Cómo usar Sentinel (demostración de caso + pasos prácticos)

La arquitectura centinela de Redis explicada con antelación

Nuestra configuración para verificar el rol de redis sentry es la siguiente:

  • 3 centinelas
    • Monitoree y mantenga clústeres automáticamente, no almacene datos, solo monitoree
  • 1 maestro 2 esclavos
    • Para lectura y almacenamiento de datos.
    • Cree o copie sentinel.conf en el directorio /myredis
    • Primero mire el contenido del archivo sentinel.conf predeterminado en el directorio de descompresión de redis

Configuración de parámetros clave


Parámetros del archivo Sentinel (líder)
dirección de escucha del servicio de vinculación, utilizada para la conexión del cliente (dirección local predeterminada)
demonizar si se ejecuta como daemon en segundo plano
modo protegido seguridad modo de protección
puerto puerto
archivo de registro ruta
del archivo de registro pidfile pid ruta de registro
dir directorio de trabajo

monitor centinela <maestro> <redis-port> <quórum>

Configurar el quórum maestro para ser monitoreado significa que al menos algunos centinelas acuerdan desconectarse objetivamente y aceptar el número legal de votos para la migración de fallas.

Sabemos que la red no es confiable. A veces, un centinela pensará erróneamente que un maestro redis ha muerto debido a la congestión de la red. En un entorno de clúster de centinela, varios centinelas deben comunicarse entre sí para confirmar si un maestro está realmente muerto . El parámetro el quórum es una base para el objetivo fuera de línea, lo que significa que al menos los centinelas del quórum creen que el maestro está defectuoso, y luego el maestro estará fuera de línea y conmutará por error. Porque a veces, es posible que un nodo centinela no pueda conectarse al maestro debido a sus propias razones de red, y el maestro no está defectuoso en este momento, por lo que requiere que varios centinelas acuerden que el maestro tiene un problema antes de continuar con el siguiente operación por pasos, lo que garantiza equidad y alta disponibilidad.

sentinel auth-pass <nombre-maestro> <contraseña> // Conéctese al maestro a través de la contraseña

//Conéctese al host a través de una contraseña. Cabe señalar aquí que incluso si es un archivo de configuración en el host, todavía tenemos que configurar esto, porque después de que nuestro host cuelga y se reinicia, ya no es el host por predeterminado, y se reconoce como un esclavo. , en este momento también necesita conectarse al nuevo host

Configuración de archivo común para este caso

Configuramos los siguientes archivos de configuración de centinela

centinela26381.conf

bind 0.0.0.0
daemonize yes
protected-mode no
port 26379
logfile "/myredis/sentinel26379.log"
pidfile /var/run/redis-sentinel26379.pid
dir /myredis
sentinel monitor mymaster 192.168.111.169 6379 2
sentinel auth-pass mymaster 111111
 

centinela26380.conf

bind 0.0.0.0
daemonize yes
protected-mode no
port 26380
logfile "/myredis/sentinel26380.log"
pidfile /var/run/redis-sentinel26380.pid
dir "/myredis"
sentinel monitor mymaster 192.168.111.169 6379 2
sentinel auth-pass mymaster 111111

centinela26379.conf

bind 0.0.0.0
daemonize yes
protected-mode no
port 26381
logfile "/myredis/sentinel26381.log"
pidfile /var/run/redis-sentinel26381.pid
dir "/myredis"
sentinel monitor mymaster 192.168.111.169 6379 2
sentinel auth-pass mymaster 111111

Acerca de otras configuraciones en el archivo centinela

sentinel down-after-milliseconds <master-name> <milliseconds>:

指定多少毫秒之后,主节点没有应答哨兵,此时哨兵主观上认为主节点下线

 

sentinel parallel-syncs <master-name> <nums>:

表示允许并行同步的slave个数,当Master挂了后,哨兵会选出新的Master,此时,剩余的slave会向新的master发起同步数据

 

sentinel failover-timeout <master-name> <milliseconds>:

故障转移的超时时间,进行故障转移时,如果超过设置的毫秒,表示故障转移失败

 

sentinel notification-script <master-name> <script-path> :

配置当某一事件发生时所需要执行的脚本

 

sentinel client-reconfig-script <master-name> <script-path>:

客户端重新配置主节点参数脚本

Inicie una instancia de redis con un maestro y dos esclavos, configure centinelas y demuestre la replicación maestro-esclavo normal

1
Cree un nuevo archivo de configuración redis6379.conf en la máquina 169. Para que coincida con este caso, establezca la contraseña de acceso del elemento masterauth en 111111.
De lo contrario, se puede informar un error más adelante master_link_status:down
2
Cree un nuevo archivo de configuración redis6380.conf en la máquina 172, configure la réplica de <masterip> <masterport>
3
Cree un nuevo archivo de configuración redis6381.conf en la máquina 173, establezca la réplica de <masterip> <masterport>

Sobre la base de un maestro y dos esclavos configurados en el capítulo anterior, se debe cambiar el host redis6379.conf

redis6379.conf

6379 puede convertirse en un esclavo en el futuro, debe establecer una contraseña para acceder al nuevo host, establezca la contraseña de acceso del elemento masterauth en 111111

redis 6380.conf

La dirección IP y la contraseña específicas deben modificarse de acuerdo con su situación local real. 

redis 6381.conf

Comience un maestro y dos esclavos

6379.conf
    redis-server /myredis/redis6379.conf 
    redis-cli -a 111111 -p6379
 
6380.conf
    redis-server /myredis/redis6380.conf 
    redis-cli -a 111111 -p 6380
 
6381.conf
    redis-server /myredis/redis6381.conf 
    redis-cli -a 111111-p 6381


iniciar centinela

redis-sentinel sentinel26379.conf --sentinel
redis-sentinel sentinel26380.conf --sentinel
redis-sentinel sentinel26381.conf --sentinel

Ver información centinela

Verifique la información de replicación maestro-esclavo y descubra que todo es normal

El host está caído, verifique el registro

Apague el servidor redis manualmente y el host simulado cuelga

 Verificamos los cambios del esclavo después de que el maestro cuelga

Problemas que pueden surgir:

 Una cierta explicación de la tubería rota:

Conozca la tubería rota
Pipe significa canalización, y dentro de la canalización hay un flujo de datos, generalmente datos leídos desde un archivo o un socket de red.
Cuando la tubería se cierra repentinamente desde el otro extremo, los datos se interrumpirán repentinamente, lo que se rompe.
Probablemente la red se desconectó o el proceso en el otro extremo se bloqueó
Resolver el problema
De hecho, cuando ocurre la excepción, no tiene mucho impacto en el servidor. Este error puede ser causado por un cliente que finalizó el proceso repentinamente.
ResumenTubo Roto
Esta excepción es que el cliente agotó el tiempo de lectura y cerró la conexión. En este momento, el servidor envía al cliente
¡Se produce una excepción de tubería rota cuando una conexión desconectada escribe datos!

En resumen, el bloqueo del maestro tiene un impacto transitorio en el esclavo. No entre en pánico cuando se encuentre con este tipo de problema, simplemente vuelva a ingresar el mismo comando nuevamente.

Continuar para ver la información de la copia

6380

6381

Descubrimos que 6381 se convirtió en el host

Comparar archivos de configuración

viejo maestro vim redis6379.conf

redis6379 fuera de línea

vim redis6380.conf

nuevo maestro vim redis6381.conf

llegamos a la conclusión:

  • Sentinel26379.log, sentinel26380.log y sentinel26381.log en este artículo cambiarán dinámicamente durante la operación
  • En el conmutador maestro-esclavo, el contenido del archivo redis###.conf se cambiará automáticamente

Además, se pueden monitorear múltiples maestros en Sentinel, uno por línea

Proceso operativo y principio de selección de Sentinel

Cuando falla un maestro en una configuración maestro-esclavo, Sentinel puede elegir un nuevo maestro para que se haga cargo del trabajo del maestro original, y otros servidores Redis en la configuración maestro-esclavo apuntan automáticamente al nuevo maestro para sincronizar los datos. Por lo general, se recomienda utilizar un número impar de centinelas para evitar que un determinado centinela no pueda conectarse al maestro y provoque un cambio accidental.

Subjetivo fuera de línea y objetivo fuera de línea

SDOWN subjetivo fuera de línea

1. SDOWN es el estado del maestro detectado subjetivamente por un solo centinela.Desde la perspectiva del centinela, si no se recibe una respuesta legal dentro de un cierto período de tiempo después de que se envía el latido PING, se cumple la condición 2 de SDOWN
. -después de milisegundos en el archivo de configuración de Sentinel establece el período de tiempo para juzgar subjetivo fuera de línea

El llamado subjetivo caído (Subjectively Down, referido como SDOWN) se refiere al juicio fuera de línea realizado por una sola instancia de Sentinel al servidor, es decir, un solo centinela piensa que un servicio está fuera de línea (puede ser que la suscripción no pueda recibir, la red entre ellos no está conectada, etc. y otras razones). Fuera de línea subjetivo significa que si el servidor no responde al comando PING o devuelve un mensaje de error dentro de la cantidad dada de milisegundos en [sentinel down-after-milliseconds], Sentinel considerará subjetivamente (unilateralmente) que el maestro no está disponible. Sí , o (╥﹏╥)o

sentinel down-after-milliseconds <nombreMaestro> <tiempo de espera>

 Indica el intervalo de tiempo para que la instancia actual de Sentinel considere que el maestro no es válido.

Durante cuánto tiempo el maestro no ha devuelto información válida a Sentine, se considera que el maestro está subjetivamente fuera de línea. Es decir, si no se ha contactado con redis-servevr durante mucho tiempo, se considera que redis-server ha entrado en estado SDOWN.

Objetivo ODOWN fuera de línea

ODOWN requiere un cierto número de centinelas, y múltiples centinelas pueden llegar a un consenso para considerar que un maestro está objetivamente caído

El significado de los cuatro parámetros:

masterName es un identificador distintivo para una combinación maestro+esclavo (un conjunto de centinelas puede monitorear múltiples grupos de combinaciones maestro+esclavo)

El parámetro quórum es una base para el objetivo fuera de línea , el quórum/quórum de votos

Significa que al menos los centinelas del quórum piensan que el maestro está defectuoso antes de desconectarse y realizar la conmutación por error del maestro. Porque a veces, es posible que un nodo centinela no pueda conectarse al maestro debido a su propia red, pero el maestro no está defectuoso en este momento, por lo que esto requiere que varios centinelas acuerden que el maestro tiene un problema antes de continuar con el siguiente paso. Esto asegura equidad y alta disponibilidad.

Centinela líder electoral (elija al rey de los soldados del centinela)

  1. Cuando se considera que el nodo maestro está objetivamente fuera de línea, cada nodo centinela negociará y el condado elegirá un nodo centinela líder y el nodo líder realizará la conmutación por error (migración por falla)
  2. El algoritmo Raft selecciona el nodo líder
  3. Todos los Sentinels que monitorean el nodo maestro pueden ser elegidos como líder.El algoritmo utilizado para la elección es el algoritmo Raft, la idea básica del algoritmo Raft es por orden de llegada: es decir, en una ronda de elecciones. , el centinela A envía un mensaje a B para que se convierta en líder. , si B no ha aceptado a otros centinelas, aceptará a A como líder.

  4. registrar cambios

El rey de los soldados activa la conmutación por error y elige un nuevo maestro

nuevo señor entronizado


Un candidato esclavo se convierte en el nuevo maestro para seleccionar una nueva regla maestra En el archivo redis.conf
bajo la condición de que los nodos esclavos restantes estén en buen estado, el nodo esclavo con la prioridad de esclavo o prioridad de réplica más alta (cuanto menor sea el número , mayor es la prioridad)


Copie el nodo esclavo con la posición de desplazamiento más grande (el que tiene la mayor cantidad de registros en el registro) y
el nodo esclavo con el ID de ejecución más pequeño, es decir, en orden lexicográfico, código ASCII


Todos los funcionarios inclinaron la cabeza, una vez que el emperador y los cortesanos, volvieron a reconocer al jefe.


Ejecute el comando slaveof no one para convertir el nodo esclavo seleccionado en el nuevo nodo maestro, y use el comando slaveof para convertir otros nodos en sus nodos esclavos. El líder de Sentinel ejecutará la operación slaveof
no one en el nuevo nodo maestro elegido y lo promoverá a nodo maestro
Sentinel El líder envía comandos a otros esclavos, convirtiendo a los esclavos restantes en esclavos del nuevo nodo maestro


El viejo maestro adora, y el viejo maestro tiene que ser persuadido cuando regrese.


Establezca el antiguo maestro que ha estado desconectado anteriormente como el nodo esclavo del nuevo maestro recién elegido. Cuando el antiguo maestro vuelva a estar en línea, se convertirá en el nodo esclavo del nuevo maestro. El líder centinela degradará el maestro original a esclavo y reanudará trabajo normal

Sugerencias para usar Sentinel

  • La cantidad de nodos centinela debe ser múltiple y el centinela en sí debe estar agrupado para garantizar una alta disponibilidad.
  • El número de ganglios centinela debe ser un número impar
  • La configuración de cada nodo centinela debe ser consistente
  • Si el nodo centinela se implementa en un contenedor como Docker, preste atención a la asignación de puertos correcta
  • Clúster Sentinel + replicación maestro-esclavo no garantiza cero pérdida de datos

​​​​​​​

​​​​​​​

Supongo que te gusta

Origin blog.csdn.net/m0_65431718/article/details/131002580
Recomendado
Clasificación