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:
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

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

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

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

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

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

7. A continuación, configure el tiempo de espera de conmutación por
sentinel failover-timeout mymaster 180000

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

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.

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 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.

13. Para mostrar información detallada sobre el maestro (llamado mymaster), usa el comando sentinel master.
# redis-cli -p 26379 sentinel master mymaster

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

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.

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/