Cómo configurar Redis para alta disponibilidad con Sentinel en CentOS 8 - Parte 2


Redis proporciona alta disponibilidad a través del sistema distribuido Redis Sentinel. Sentinel ayuda a monitorear las instancias de Redis, detectar fallas y realizar cambios de roles automáticamente, lo que permite que una implementación de Redis resista cualquier tipo de falla.

Cuenta con monitoreo de instancias de Redis (maestro y réplicas), admite la notificación de otros servicios/procesos o el administrador del sistema a través de un script, conmutación por error automática para promover una réplica a maestro cuando el maestro deja de funcionar y proporciona configuración para que los clientes descubran el actual. maestro ofreciendo un servicio particular.

Este artículo muestra cómo configurar Redis para alta disponibilidad con Redis Sentinel en CentOS 8, incluida la configuración de centinelas, la verificación del estado de configuración y la prueba de una conmutación por error de Sentinel.

  1. Cómo configurar la replicación de Redis (con el modo de clúster deshabilitado) en CentOS 8 - Parte 1

Master Server and Sentinel1: 10.42.0.247
Redis Replica1 and Sentinel2: 10.42.0.21
Redis Replica2 and Sentinel3: 10.42.0.34

Según la documentación de Redis Sentinel, se necesitan al menos tres instancias de Sentinel para una implementación sólida. Teniendo en cuenta nuestra configuración anterior, si el maestro falla, Sentinels2 y Sentinel3 estarán de acuerdo sobre la falla y podrán autorizar una conmutación por error, lo que permitirá que las operaciones del cliente continúen.

Paso 1: Iniciar y habilitar el servicio Redis Sentinel

1. En CentOS 8, el servicio Redis Sentinel se instala junto con el servidor Redis (lo que ya hicimos en la Configuración de replicación de Redis).

Para iniciar el servicio centinela de Redis y permitir que se inicie automáticamente al arrancar el sistema, utilice los siguientes comandos systemctl. Además, confirme que está en funcionamiento comprobando su estado (haga esto en todos los nodos):

# systemctl start redis-sentinel
# systemctl enable redis-sentinel
# systemctl status redis-sentinel

Paso 2: Configuración de Redis Sentinel en todos los nodos de Redis

2. En esta sección, explicamos cómo configurar Sentinel en todos nuestros nodos. El servicio Sentinel tiene un formato de configuración similar al del servidor Redis. Para configurarlo, use el archivo de configuración autodocumentado /etc/redis-sentinel.conf.

Primero, cree una copia de seguridad del archivo original y ábralo para editarlo.

# cp /etc/redis-sentinel.conf /etc/redis-sentinel.conf.orig
# vi /etc/redis-sentinel.conf

3. De forma predeterminada, Sentinel escucha en el puerto 26379, verifique esto en todas las instancias. Tenga en cuenta que debe dejar el parámetro de vinculación comentado (o establecido en 0.0.0.0).

port 26379

4. A continuación, dígale a Sentinel que supervise a nuestro maestro y que lo considere en el estado "Objetivamente abajo" solo si al menos 2 centinelas del quórum están de acuerdo. Puede reemplazar "mymaster" con un nombre personalizado.

#On Master Server and Sentinel1
sentinel monitor mymaster 127.0.0.1 6379 2

#On Replica1 and Sentinel2
sentinel monitor mymaster 10.42.0.247 6379 2

#On Replica1 and Sentinel3
sentinel monitor mymaster 10.42.0.247 6379 2

Importante: La declaración del monitor centinela DEBE colocarse antes de la declaración de autorización de pase de centinela para evitar el error "No existe tal maestro con el nombre especificado". al reiniciar el servicio centinela.

5. Si el maestro de Redis a monitorear tiene una contraseña establecida (en nuestro caso, el maestro la tiene), proporcione la contraseña para que la instancia de Sentinel pueda autenticarse con la instancia protegida.

 
sentinel auth-pass mymaster [email protected]

6. Luego, establezca el número de milisegundos que el maestro (o cualquier réplica adjunta o centinela) debe ser inalcanzable para considerarlo en el estado "Subjetivamente abajo".

La siguiente configuración significa que se considerará que el maestro falla tan pronto como no recibamos ninguna respuesta de nuestros pings en 5 segundos (1 segundo equivale a 1000 milisegundos).

sentinel down-after-milliseconds mymaster 5000

7. A continuación, configure el tiempo de espera de la conmutación por error en milisegundos, lo que define muchas cosas (lea la documentación del parámetro en el archivo de configuración).

sentinel failover-timeout mymaster 180000

8. Luego, establezca la cantidad de réplicas que se pueden reconfigurar para usar el nuevo maestro después de una conmutación por error al mismo tiempo. Como tenemos dos réplicas, configuraremos una réplica ya que la otra se promoverá al nuevo maestro.

sentinel parallel-syncs mymaster 1

Tenga en cuenta que los archivos de configuración en Redis Replica1 y Sentinel2, y Reddis Replica1 y Sentinel2 deben ser idénticos.

9. A continuación, reinicie los servicios de Sentinel en todos los nodos para aplicar los cambios recientes.

# systemctl restart redis-sentinel

10. A continuación, abra el puerto 26379 en el firewall en todos los nodos para permitir que las instancias de Sentinel comiencen a hablar, reciban conexiones de las otras instancias de Sentinel, usando el firewall-cmd.

# firewall-cmd --zone=public --permanent --add-port=26379/tcp
# firewall-cmd --reload

11. Todas las réplicas se descubrirán automáticamente. Es importante destacar que Sentinel actualizará la configuración automáticamente con información adicional sobre las réplicas. Puede confirmar esto abriendo el archivo de configuración de Sentinel para cada instancia y revisándolo.

Por ejemplo, cuando observa el final del archivo de configuración del maestro, debería ver las declaraciones de centinelas conocidos y réplicas conocidas como se muestra en la siguiente captura de pantalla.

Debería ser el mismo caso en replica1 y replica2.

Tenga en cuenta que la configuración de Sentinel también se reescribe/actualiza cada vez que una réplica se promueve al estado maestro durante una conmutación por error y cada vez que se descubre un nuevo Sentinel en la configuración.

Paso 3: Verifique el estado de configuración de Redis Sentinel

12. Ahora verifique el estado/información de Sentinel en el maestro, usando el comando info sentinel de la siguiente manera.

# redis-cli -p 26379 info sentinel

De la salida del comando como se ve en la siguiente captura de pantalla, tenemos dos réplicas/esclavos y tres centinelas.

13. Para mostrar información detallada sobre el maestro (llamado mymaster), use el comando centinela maestro.

# redis-cli -p 26379 sentinel master mymaster

14. Para mostrar información detallada sobre los esclavos y centinelas, utilice el comando de esclavos centinela y el comando centinelas centinelas respectivamente.

# redis-cli -p 26379 sentinel slaves mymaster
# redis-cli -p 26379 sentinel sentinels mymaster

15. Luego, pregunte la dirección del maestro por nombre de las instancias esclavas usando el comando centinela get-master-addr-by-name de la siguiente manera.

La salida debe ser la dirección IP y el puerto de la instancia maestra actual:

# redis-cli -p 26379 sentinel get-master-addr-by-name mymaster

Paso 4: probar la conmutación por error de Sentinel

16. Finalmente, probemos la conmutación por error automática en nuestra configuración de Sentinel. En el maestro Redis/Sentinel, haga que el maestro Redis (que se ejecuta en el puerto 6379) entre en reposo durante 60 segundos. Luego, consulte la dirección del maestro actual en las réplicas/esclavos de la siguiente manera.

# redis-cli -p 6379
127.0.0.1:6379> AUTH [email protected]
127.0.0.1:6379>  debug sleep 60
# redis-cli -p 26379 sentinel get-master-addr-by-name mymaster
# redis-cli -p 26379 sentinel get-master-addr-by-name mymaster

Desde el resultado de la consulta, el nuevo maestro ahora es réplica/esclavo2 con la dirección IP 10.42.0.34 como se ve en la siguiente captura de pantalla.

Puede obtener más información en la documentación de Redis Sentinel. Pero si tiene alguna idea o consulta que compartir, el formulario de comentarios a continuación es su puerta de entrada a nosotros.

En la siguiente y última parte de esta serie, veremos cómo configurar un clúster de Redis en CentOS 8. Será un artículo independiente de los dos primeros.