Redis Sentinel

Redis Sentinel

Suponga un escenario en el que solo tiene una instancia de Redis en su producción y falla en algún momento debido a alguna razón. Su aplicación almacena datos 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 la arquitectura del esclavo maestro donde los esclavos pueden replicar el nodo maestro hasta que regrese. Los clústeres de Redis admiten una alta disponibilidad hasta cierto punto con el enfoque maestro-replica. Redis Sentinel es otro enfoque que proporciona una forma más confiable de mantener la alta disponibilidad de instancias de Redis. Monitorea el nodo maestro Redis para fallas y desencadena el proceso de conmutación por error de inmediato, lo que promoverá un nodo esclavo existente a un nuevo maestro.

Además, Redis Sentinel actúa como un hombre medio donde los clientes se conectan y solicitan la última dirección IP del nodo maestro. Entonces, el Sentinel conectado proporciona la dirección del nodo maestro inmediatamente.

Además, se confirma una falla del nodo maestro si múltiples centinelas acordaron que un maestro dado no es 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 Redis Sentinel puede verse como un sistema distribuido con propiedades específicas.

El acuerdo de Sentinels se basa en un valor de quórum que se discutirá en la siguiente sección.

Valor de quórum

El valor de quórum es el número máximo de centinelas que debe acordarse cuando el nodo maestro 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 múltiples nodos centinela disponibles para proceder con un centinela seleccionado como líder.

Características de Redis Sentinel

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

  • Sentinel monitorea continuamente el estado de los nodos maestros y esclavos en su sistema Redis.
  • Siempre que haya una falla o algo malo en sus instancias de Redis, el Sentinel es capaz de notificar al administrador o las solicitudes conectadas utilizando API Sentinel.
  • La fase de conmutación por error está dirigida por el centinela promoviendo una réplica como el nuevo maestro. Replicas restantes configuradas para usar el nuevo maestro. Finalmente, los clientes correspondientes serán notificados de la nueva dirección del nodo maestro.
  • Además, el Redis Sentinel 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 se produce un colapso repentino, el Sentinel se compromete a presionar la nueva dirección del nodo maestro de inmediato.

En la siguiente sección, configuraremos Redis Sentinels con instancias maestro-replica y utilizando la API Sentinel para monitorear los nodos.

Configuración centinela

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

Configuración del nodo maestro

puerto 7000
No habilitado por clúster no
nodos de archivo de conglomerados de clúster.confusión
clúster-nodo-tiempout 5000
APENDENTY SÍ

Configuración del nodo esclavo

puerto 7001
No habilitado por clúster no
nodos de archivo de conglomerados de clúster.confusión
clúster-nodo-tiempout 5000
APENDENTY SÍ

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

Redis-server Redis.confusión

Conectemos a la instancia de Redis iniciada en el puerto 7001 de la siguiente manera:

Redis -Cli -P 7001

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

réplica de 127.0.0.1 7000

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

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

Cada centinela.confusión El archivo parece el siguiente, excepto que el número de puerto se cambiará:

puerto 5000
Sentinel Monitor MasterNode 127.0.0.1 7000 2
Sentinel Down-MilliseConds MasterNode 5000
Tiempo de conmutación por error Sentinel MasterNode 60000

Ahora, es hora de ejecutar los tres centinelas. Puede usar el ejecutable Redis-Sentinel junto con el camino a centinela.confusión Archivo de configuración para crear una instancia de Sentinel. De lo contrario, aún podemos llamar al ejecutable de Redis-Server especificando la ruta a centinela.confusión y la bandera -centinela.

Comencemos cada centinela usando el siguiente comando:

Redis-Server Sentinel.conf --sentinel

El primer centinela se ha iniciado en el puerto 5000. Del mismo modo, también puedes iniciar las otras dos instancias.

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

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

API centinela

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

  • Verifique el estado de las instancias monitoreadas de Redis Master y Slave
  • Detalles sobre otros centinelas
  • Recibir notificaciones de estilo push de Sentinels en un evento de una conmutación por error

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

Verifique el estado del nodo maestro

Es muy importante monitorear o verificar la salud del nodo maestro de vez en cuando. El siguiente comando Sentinel API se puede usar para recuperar los detalles maestros:

Maestro centinela

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

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

Sentinel Master MasterNode

Se han recuperado varias piezas de información y algunas de ellas son importantes, como esclavos, banderas y numerosos orinales.

El banderas la propiedad está establecida en maestro lo que significa que el maestro es de buena salud. Siempre que el nodo maestro esté inactivo, el s_down o o_down la bandera se mostrará. La propiedad num-otros sentinales se establece en 2, lo que significa que el centinela redis ya reconoció a los otros dos centinelas para el nodo maestro. además, el num-esclavos La propiedad muestra las réplicas disponibles para el nodo maestro. 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 comando Sentinel Sub:

Réplicas centinela

En este ejemplo, el nombre maestro es 'MasterNode'.

Réplicas centinelas masternode

Como se esperaba, el Sentinel detectó el nodo esclavo que se ejecuta en el puerto 7001.

Obtener información sobre Sentinels asociados

Del mismo modo, podemos consultar los detalles relacionados con otros Sentinels asociados con el nodo maestro actual utilizando el siguiente subcomando Sentinel:

Centinela centinela

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

Sentinel Sentinels MasterNode

Obtener la dirección del nodo maestro

Como se menciona 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 del nodo maestro actualmente en ejecución y el puerto a los clientes solicitados. El siguiente subcomando API de Sentinel se puede utilizar para recuperar la información mencionada.

Sentinel Get-Master-addr por nombre

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

Sentinel Get-Master-addr por nombre Masternode

Solo discutimos algunos comandos API centinela. Hay varios otros subcomanes disponibles, como Sentinel-Failover, Sentinel Info-Cache, Sentinel Masters y etc. Además, muchos comandos están disponibles para usar para fines de administración también. En la siguiente sección, nos centraremos en el proceso de conmutación por error de Redis Sentinel.

Proceso de conmutación por error de Sentinel

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

Depurar el sueño 300

El nodo maestro que se ejecuta en el puerto 7000 debería ser inalcanzable ahora. Entonces, los centinelas asociados notarán que el maestro no está disponible con el +sdow evento. Entonces, esto se establecerá en +Osown donde 2 centinelas confirman que el nodo maestro está inactivo de acuerdo con el valor de quórum. Finalmente, la fase de conmutación por error comenzará e idealmente la réplica debe promoverse al nuevo maestro.

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

Sentinel Get-Master-addr por nombre Masternode

Como se esperaba, la réplica anterior ha sido promovida al nuevo maestro, lo que significa que el proceso de conmutación por error de Sentinel es exitoso. Esto concluye la implementación y las pruebas de nuestras tres configuraciones centinelas para un solo par de maestría-replica.

Conclusión

Redis Sentinel es el enfoque más confiable para garantizar la alta disponibilidad de una instancia de réplica maestra de Redis dada. Un centinela es capaz de monitorear, notificar e iniciar conmutación por error automática sin intervención humana. Además, múltiples centinelas juntos acuerdan el hecho de que el nodo maestro no es posible 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 la salud del nodo maestro y las réplicas asociadas y realizar tareas administrativas también.