centinela redis

Centinela Redis



Suponga un escenario en el que solo tiene una instancia de Redis en su producción y falla en algún momento debido a algún motivo. Su aplicación almacena datos en caché en el almacén de datos de Redis y ahora su única fuente de datos está muerta. Una forma de controlar este tipo de escenarios es mantener una arquitectura maestro-esclavo donde los esclavos puedan replicar el nodo maestro hasta que regrese. Los clústeres de Redis admiten alta disponibilidad hasta cierto punto con el enfoque de réplica maestra. Redis Sentinel es otro enfoque que proporciona una forma más confiable de mantener la alta disponibilidad de las instancias de Redis. Supervisa el nodo maestro de Redis en busca de fallas y activa el proceso de conmutación por error inmediatamente, lo que promoverá un nodo esclavo existente a un nuevo maestro.







Además, Redis Sentinel actúa como intermediario donde los clientes se conectan y solicitan la última dirección IP del nodo maestro. Entonces, el centinela conectado proporciona la dirección del nodo maestro de inmediato.



Además, se confirma una falla del nodo maestro si varios centinelas acordaron que un maestro determinado no está accesible o disponible. Esto concluye la fase de detección de fallas y el proceso de conmutación por error comienza de inmediato. Por lo tanto, el centinela de Redis puede verse como un sistema distribuido con propiedades específicas.



El acuerdo de centinelas se basa en un valor de quórum que será discutido en la siguiente sección.





cuyo valor

El valor de Quórum es el número máximo de centinelas que se debe acordar cuando el nodo principal está inactivo. Este valor solo se usa para identificar una falla en el nodo maestro. El proceso de conmutación por error comienza con la autorización de varios nodos centinela disponibles para continuar con un centinela seleccionado como líder.

Características de Redis Sentinel

El centinela es conocido por proporcionar un mecanismo de alta disponibilidad para el almacén de datos de Redis. Aparte de eso, se pueden enumerar varias otras capacidades.



  • Sentinel monitorea continuamente el estado de los nodos maestros y esclavos en su sistema Redis.
  • Cada vez que hay una falla o algo mal con sus instancias de Redis, Sentinel es capaz de notificar al administrador o a las aplicaciones conectadas mediante la API de Sentinel.
  • El centinela dirige la fase de conmutación por error mediante la promoción de una réplica como el nuevo maestro. Réplicas restantes configuradas para usar el nuevo maestro. Finalmente, los clientes correspondientes recibirán una notificación de la nueva dirección del nodo maestro.
  • Además, el centinela de Redis es un proveedor de configuración para los clientes conectados donde los clientes pueden solicitar la dirección de la instancia maestra actualmente disponible y, si ocurriera un colapso repentino, el centinela se compromete a enviar la nueva dirección del nodo maestro de inmediato.

 

En la siguiente sección, configuraremos centinelas de Redis con instancias de réplica principal y usaremos la API de centinela para monitorear los nodos.

Configuración de centinela

Primero, creamos dos instancias de Redis en los puertos 7000 y 7001. El puerto 7000 será el nodo maestro y el otro replicará el maestro. Ambas instancias usan los siguientes archivos de configuración respectivamente:

Configuración del nodo maestro

Puerto 7000
habilitado para clúster no
archivo de configuración de clúster nodes.conf
tiempo de espera del nodo del clúster 5000
agregar solo

 

Configuración del nodo esclavo

Puerto 7001
habilitado para clúster no
archivo de configuración de clúster nodes.conf
tiempo de espera del nodo del clúster 5000
agregar solo

 

Ambas instancias comenzarán proporcionando el archivo de configuración asociado a cada una. Podemos usar el siguiente comando para iniciar instancias de Redis por separado:

redis-servidor redis.conf

 

Conectémonos a la instancia de Redis iniciada en el puerto 7001 de la siguiente manera:

redis-cli -pags 7001

 

Ahora, podemos hacer que esta instancia sea una réplica del maestro que se ejecuta en el puerto 7000. El comando REPLICAOF se puede usar de la siguiente manera:

réplica de 127.0.0.1 7000

 

Como era de esperar, la instancia que se ejecutaba en el puerto 7001 se convirtió en el nodo de réplica del maestro que se ejecutaba en el puerto 7000.

Ahora, estamos listos para configurar tres centinelas de Redis para monitorear la instancia maestra anterior. Necesitamos tener tres archivos de configuración para crear tres instancias de Sentinel en los puertos 5000, 5001 y 5002 como se muestra a continuación.

Cada centinela.conf El archivo tiene el siguiente aspecto, excepto que se cambiará el número de puerto:

Puerto 5000
nodo maestro del monitor centinela 127.0.0.1 7000 2
Sentinel abajo después de milisegundos masternode 5000
Sentinel failover-timeout masternode 60000

 

Ahora, es hora de ejecutar los tres centinelas. Puede usar el ejecutable redis-sentinel junto con la ruta a centinela.conf archivo de configuración para crear una instancia de Sentinel. De lo contrario, aún podemos llamar al ejecutable del servidor redis especificando la ruta a centinela.conf y la bandera -centinela .

Comencemos cada centinela usando el siguiente comando:

redis-servidor sentinel.conf --centinela

 

El primer centinela se inició en el puerto 5000. De manera similar, también puede iniciar las otras dos instancias.

Ahora, nuestra configuración de Redis Sentinel está funcionando como se muestra en la siguiente ilustración:

En la siguiente sección, exploraremos más sobre la API de Sentinel y cómo podemos utilizarla para recuperar información relacionada con el nodo maestro de Redis.

API de centinela

Redis proporciona una API de centinela separada para monitorear maestros y réplicas asociados, suscribirse a notificaciones y modificar la configuración de centinela. Además, varios usos se enumeran a continuación.

 

  • Verifique el estado de las instancias maestras y esclavas de Redis monitoreadas
  • Detalles sobre otros centinelas
  • Reciba notificaciones automáticas de los centinelas en caso de conmutación por error

 

El comando SENTINEL se puede usar con sus subcomandos asociados para consultar, actualizar o establecer centinelas Redis y nodos monitoreados.

Comprobar el estado del nodo maestro

Es muy importante monitorear o verificar el estado del nodo maestro de vez en cuando. El siguiente comando API de Sentinel se puede utilizar para recuperar detalles maestros:

MAESTRO CENTINELA < nombre_maestro_supervisado >

 

nombre_maestro_supervisado: El nombre del nodo principal que se especifica en el archivo de configuración de Sentinel que creamos en el paso anterior.

Usemos este comando para consultar el estado del maestro en nuestra configuración. En nuestro caso, el nombre del nodo maestro es 'nodo maestro'.

Nodo maestro SENTINEL MASTER

 

Se han recuperado varias piezas de información y algunas de ellas son importantes, como num-slaves, flags y num-other-sentinels.

los banderas la propiedad se establece en Maestro lo que significa que el maestro goza de buena salud. Cada vez que el nodo principal está inactivo, el s_abajo o o_abajo se mostrará la bandera. La propiedad num-otros-centinelas se establece en 2, lo que significa que el centinela de Redis ya reconoció los otros dos centinelas para el nodo principal. además, el num-esclavos La propiedad muestra las réplicas disponibles para el nodo principal. En este caso, se establece en 1 ya que solo tenemos una réplica.

Obtener información sobre las réplicas conectadas

Podemos verificar las réplicas conectadas con el nodo maestro usando el siguiente subcomando SENTINEL:

RÉPLICAS DE CENTINELA < nombre_maestro_supervisado >

 

En este ejemplo, el nombre del maestro es 'masternode'.

SENTINEL replica masternode

 

Como era de esperar, Sentinel detectó el nodo esclavo ejecutándose en el puerto 7001.

Obtenga información sobre los centinelas asociados

De manera similar, podemos consultar los detalles relacionados con otros centinelas asociados con el nodo maestro actual usando el siguiente subcomando SENTINEL:

CENTINELAS CENTINELAS < nombre_nodo_maestro >

 

En este caso, buscaremos la información relacionada con el nodo maestro llamado 'masternode'.

SENTINEL centinelas masternode

 

Obtenga la dirección del nodo maestro

Como se mencionó en la sección anterior, Redis Sentinel es un proveedor de configuración para clientes conectados. Por lo tanto, es capaz de proporcionar la dirección IP y el puerto del nodo maestro actualmente en ejecución a los clientes solicitados. El siguiente subcomando de la API de Sentinel se puede utilizar para recuperar la información mencionada.

SENTINEL GET-MASTER-ADDR-BY-NAME < nombre_nodo_maestro >

 

Ejecutemos el comando anterior para nuestro escenario de la siguiente manera:

Sentinel get-master-addr-by-name masternode

 

Solo discutimos algunos comandos API centinela. Varios otros subcomandos están disponibles, como sentinel-failover, sentinel info-cache, sentinel masters, etc. Además, muchos comandos también están disponibles para su uso con fines administrativos. En la siguiente sección, nos centraremos en el proceso de conmutación por error de Sentinel de Redis.

Proceso de conmutación por error de Sentinel

Dado que nuestro centinela está configurado, podemos probar la fase de conmutación por error. Enviemos nuestro nodo maestro a dormir durante 300 segundos, lo que simula una falla en el nodo maestro.

depurar dormir 300

 

El nodo maestro que se ejecuta en el puerto 7000 debería estar inaccesible ahora. Por lo tanto, los centinelas asociados notarán que el maestro no está disponible con el +bajar evento. Entonces, esto se establecerá en +o abajo donde 2 centinelas confirman que el nodo maestro está inactivo según el valor de quórum. Finalmente, comenzará la fase de conmutación por error e, idealmente, la réplica debería promoverse al nuevo maestro.

Verifiquemos la dirección IP del nodo maestro y el puerto nuevamente.

Sentinel get-master-addr-by-name masternode

 

Como era de esperar, la réplica anterior se promovió al nuevo maestro, lo que significa que el proceso de conmutación por error de Sentinel se realizó correctamente. Esto concluye la implementación y las pruebas de nuestras tres configuraciones de centinela para un solo par maestro-réplica.

Conclusión

Redis sentinel es el enfoque más confiable para garantizar la alta disponibilidad de una instancia de réplica maestra de Redis determinada. Un centinela es capaz de monitorear, notificar e iniciar una conmutación por error automática sin intervención humana. Además, varios centinelas juntos acuerdan el hecho de que el nodo maestro es inalcanzable y el valor de quórum se usa como el número máximo de centinelas que deben acordarse al verificar la disponibilidad de la instancia maestra. Redis Sentinel ofrece una API fácil de usar para recuperar información sobre el estado del nodo principal y las réplicas asociadas, y también para realizar tareas administrativas.