Búsqueda de sitios web

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 instancias de Redis, detecta 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, 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 maestro actual que ofrece un servicio en 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 un Conmutación por error de Sentinel.

Requisito previo:

  1. Cómo configurar la replicación de Redis (con el 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

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 master falla, Sentinels2 y Sentinel3 se pondrán de acuerdo sobre el error y podrán autorizar una conmutación por error, haciendo las operaciones del cliente puedan continuar.

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 Redis y permitir que se inicie automáticamente al iniciar 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: configurar 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, utilice 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 bind comentado (o establecerlo en 0.0.0.0).

port 26379

4. A continuación, dígale a Sentinel que supervise nuestro master y lo considere en el estado "Objetivamente inactivo". solo si al menos dos centinelas del quórum están de acuerdo. Puede reemplazar “mimaestro” 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 centinela auth-pass para evitar el error “No existe tal maestro con el nombre especificado. ”al reiniciar el servicio Sentinel.

5. Si el maestro 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 Securep@55Here

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

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

sentinel down-after-milliseconds mymaster 5000

7. A continuación, establezca el tiempo de espera de 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 será promovida 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 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 Sentinel comiencen a hablar y reciban conexiones de los otros Instancias >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 examinándolo.

Por ejemplo, cuando mira 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 réplica1 y réplica2.

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

Del resultado 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 master (llamado mymaster), utilice el comando sentinel master.

redis-cli -p 26379 sentinel master mymaster

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

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

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

El resultado 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: Pruebe la conmutación por error de Sentinel

16. Finalmente, probemos la conmutación por error automática en nuestra configuración Sentinel. En el maestro Redis/Sentinel, haga que el maestro Redis (que se ejecuta en el puerto 6379) entre en suspensión 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 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

Según el resultado de la consulta, el nuevo maestro ahora es réplica/slave2 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 que compartir o alguna consulta, 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 Redis Cluster en CentOS 8. Será un artículo independiente de los dos primeros.