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 notificación de otros servicios/procesos o del administrador del sistema a través de un script, failover automático para promover una réplica a maestro cuando el maestro falla y proporciona configuración para que los clientes descubran el maestro actual que ofrece un servicio particular.

Este artículo demuestra cómo configurar Redis para alta disponibilidad con Redis Sentinel en CentOS 8, incluida la configuración de sentinels, verificación del estado de la configuración y prueba de failover de Sentinel.

Prerrequisito:

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

Configuración del entorno de prueba

Master Server and Sentinel1: 10.42.0.247
Redis Replica1 and Sentinel2: 10.42.0.21
Redis Replica2 and Sentinel3: 10.42.0.34
Redis Sentinel Setup Logical Diagram

Según la documentación de Redis Sentinel, se necesitan al menos tres instancias de Sentinel para una implementación robusta. Considerando nuestra configuración anterior, si el maestro falla, Sentinel2 y Sentinel3 estarán de acuerdo sobre el fallo y podrán autorizar un failover, permitiendo 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 cual ya hicimos en la Configuración de Replicación de Redis).

Para iniciar el servicio de Redis sentinel y habilitarlo para que se inicie automáticamente en el arranque del sistema, use los siguientes comandos de systemctl. Además, confirme que esté en funcionamiento verificando su estado (haga esto en todos los nodos):

# systemctl start redis-sentinel
# systemctl enable redis-sentinel
# systemctl status redis-sentinel
Start Redis Sentinel Service

Paso 2: Configurar Redis Sentinel en Todos los Nodos 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, utilice el archivo de configuración auto-documentado /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. Por defecto, Sentinel escucha en el puerto 26379, verifique esto en todas las instancias. Tenga en cuenta que debe dejar el parámetro bind comentado (o configurado en 0.0.0.0).

port 26379
Set Sentinel Listen Interface and Port

4. A continuación, diga a Sentinel que monitoree nuestro maestro, y que lo considere en estado de “Objetivamente No Disponible” solo si al menos 2 sentinelas de 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
Set Redis Master to Monitor

Importante: La declaración de monitoreo del sentinel DEBE colocarse antes de la declaración de auth-pass del sentinel para evitar el error de “No hay ningún maestro con el nombre especificado.” al reiniciar el servicio del sentinel.

5. Si el maestro de Redis que se va 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 Securep@55Here
Set Master Auth Password

6. Luego configure la cantidad de milisegundos que el maestro (o cualquier réplica o sentinela adjunta) debe estar inalcanzable para considerarlo en estado de “Subjetivamente No Disponible”.

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

sentinel down-after-milliseconds mymaster 5000
Set Down Time for Master

7. A continuación, configure el tiempo de espera de conmutación por

sentinel failover-timeout mymaster 180000
Set Fail Over Timeout

8. Luego, establezca el número de réplicas que pueden reconfigurarse para usar el nuevo maestro después de un failover al mismo tiempo. Dado que tenemos dos réplicas, estableceremos una réplica como la otra será promocionada al nuevo maestro.

sentinel parallel-syncs mymaster 1
Set Number of Parallel Sync Replicas

Tenga en cuenta que los archivos de configuración en Redis Replica1 y Sentinel2, y Redis 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. Después, abra el puerto 26379 en el firewall en todos los nodos para permitir que las instancias de Sentinel inicien la comunicación, reciban conexiones de las otras instancias de Sentinel, utilizando firewall-cmd.

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

11. Todas las réplicas serán descubiertas 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, al mirar al final del archivo de configuración del maestro, debería ver las declaraciones known-sentinels y known-replica como se muestra en la siguiente captura de pantalla.

Auto Generated Config in Master

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

Auto Generated Config in Replica1
Auto Generated Config in Replica2

Tenga en cuenta que la configuración de Sentinel también se reescribe/actualiza cada vez que una réplica es promovida a estado de maestro durante un failover y cada vez que se descubre un nuevo Sentinel en la configuración.

Paso 3: Verificar el estado de la configuración de Redis Sentinel

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

# redis-cli -p 26379 info sentinel

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

Check Sentinel Info on Master

13. Para mostrar información detallada sobre el maestro (llamado mymaster), usa el comando sentinel master.

# redis-cli -p 26379 sentinel master mymaster
Show Detailed Info About Sentinel Master

14. Para mostrar información detallada sobre los esclavos y los sentinels, usa los comandos sentinel slaves y sentinel sentinels respectivamente.

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

15. A continuación, pide la dirección del maestro por nombre desde las instancias esclavas utilizando el comando sentinel get-master-addr-by-name de la siguiente manera.

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

# redis-cli -p 26379 sentinel get-master-addr-by-name mymaster
Get the Address of Master by Name on Slaves

Paso 4: Probar el failover de Sentinel

16. Finalmente, probemos el failover automático en nuestra configuración de Sentinel. En el maestro de Redis/Sentinel, haz que el maestro de Redis (ejecutándose en el puerto 6379) duerma durante 60 segundos. Luego consulta 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 Securep@55Here
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 la salida de la consulta, el nuevo maestro es ahora replica/esclavo2 con la dirección IP 10.42.0.34 como se ve en la siguiente captura de pantalla.

Test Redis Sentinel Failover

Puedes obtener más información de la documentación de Redis Sentinel. Pero si tienes algún pensamiento para compartir o preguntas, el formulario de retroalimentación a continuación es tu puerta de entrada hacia nosotros.

En la próxima 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.

Source:
https://www.tecmint.com/setup-redis-high-availability-with-sentinel-in-centos-8/