Cómo crear una base de datos Redis de alta disponibilidad con monitoreo Sentinel

Ver Categorías

Cómo crear una base de datos Redis de alta disponibilidad con monitoreo Sentinel

Resumen #

Redis es un almacén de estructuras de datos en memoria de código abierto que puede utilizarse como intermediario de mensajes, caché y base de datos clave-valor. Admite diversas estructuras de datos: hashes, listas, conjuntos, conjuntos ordenados, mapas de bits, índices geoespaciales, hyperloglogs, etc.

Lo que hace que Redis sea único es que puede considerarse tanto un almacén como un caché. Está diseñado de manera que los datos se modifican y/o leen desde la memoria principal de la computadora.

Entre otras características, Redis ofrece alta disponibilidad mediante Redis Sentinel y particionamiento automático mediante Redis Cluster . Además, Redis cuenta con un mecanismo de replicación que permite que las instancias esclavas sean copias exactas de las instancias maestras. La instancia esclava se reconectará automáticamente a la maestra cada vez que se interrumpa la conexión, con el objetivo de ser una copia exacta de ella.

Como Redis Sentinel proporciona alta disponibilidad para Redis, puede manejar fallas automáticamente sin ninguna intervención humana en muchos casos, pero también proporciona otras tareas como monitoreo, notificaciones y actúa como proveedor de configuración para los clientes.

Pero, ¿qué sucede cuando Sentinel detecta que un servidor Redis está caído? En este artículo, descubriremos cómo crear un servicio virtual completo de alta disponibilidad para Redis.

Tenga en cuenta que esta configuración también se puede realizar incluso si su servidor Redis no utiliza Sentinel para la monitorización.

Entorno de equilibrio de carga de Redis #

El escenario que queremos lograr en este artículo se muestra en el siguiente diagrama.

Redis Sentinel verifica el estado de todos los nodos Redis y cambia la función del servidor Redis una vez que se detecta un error.

El balanceador de carga también verifica el estado, pero lo hace periódicamente cada algunos segundos. Puede haber casos en los que Sentinel detecte el problema, pero el balanceador de carga puede tardar unos segundos en darse cuenta. Esto puede provocar que el balanceador envíe solicitudes al maestro equivocado, que es el que acaba de fallar pero que Sentinel ha cambiado.

RELIANOID ofrece una forma de resolver este problema, la granja L4 realiza comprobaciones periódicas. Por otro lado, también está el flujo que pasa al backend que no contiene ninguna comprobación previa. Cuando el guardián de la granja se da cuenta de que el backend no responde, entonces lanza la alarma, indicando que el flujo no debe seguir ese camino.

Teniendo esto en cuenta, tenemos por un lado los controles y por otro las solicitudes. Si el control falla, el flujo se envía inmediatamente a otro nodo. Incluso las peticiones en curso se redirigen a otro nodo en línea. Esto se explicará con más detalle en la configuración.

Configuración de equilibrio de carga de Redis #

Antes de configurar la granja, necesitamos una IP virtual. Para ello, vaya a Red > Interfaces virtuales . A continuación, haga clic en Acción > Crear interfaz virtual . Luego, seleccione Interfaz principal , Nombre de la interfaz virtual y su dirección IP :

Luego, para el servidor virtual Redis necesitamos crear una granja L4xNAT. Para ello, vaya a LSLB > Granjas y luego haga clic en Acción y Crear granja.

Una vez configurados los parámetros iniciales, haga clic en Crear . A continuación, vaya a la pestaña Avanzado y asegúrese de que el tipo de protocolo sea TCP.

A continuación, ve a Servicios . Aquí se configurarán los backends y Farm Guardian para realizar comprobaciones de estado avanzadas. Primero, busca la sección Backends y haz clic en Acciones > Agregar backend, como se muestra a continuación:

Monitoreo de Redis y verificación avanzada del estado #

Por último, las comprobaciones de Farm Guardian son necesarias para asegurarnos de que siempre estemos utilizando el nodo en línea, como se explicó en el caso anterior. Para ello, debemos configurar lo siguiente como comando de Farm Guardian:

check_tcp -E -H HOST -p PUERTO -s 'información de replicación\r\n' -e rol:master -t 3

Donde HOST y PORT se reemplazarán por la dirección IP y el puerto del servidor Redis de cada backend. El comando info replication obtendrá la información del servidor Redis para verificar qué maestro está activo. Las conexiones solo se redirigirán al servidor si se presenta el rol de maestro. Tan pronto como Sentinel cambie el rol, el balanceador de carga detectará el cambio y el servidor Redis se marcará como inactivo. El indicador -t es el número de segundos que Farm Guardian esperará una respuesta del servidor Redis. Si se alcanza el tiempo de espera sin respuesta, el servidor Redis se marcará como inactivo. Por otro lado, una vez que se restablezca el estado del servidor Redis, volverá a estar activo.

Pero antes de modificar Farm Guardian para esta granja en particular, vaya a Monitoreo > Farmguardian y luego haga clic en Acción > Crear Farmguardian.

Elija un nombre descriptivo para su nuevo verificador de estado de Redis Sentinel, por ejemplo, check_redis_master como en el ejemplo, ahora elija check_tcp en el campo Farmguardian para copiar y haga clic en Crear como se muestra a continuación.

Finalmente, copie el comando mencionado anteriormente en el parámetro Command y realice la configuración como se muestra a continuación.

Haz clic en Enviar.

Ahora, seleccione esta nueva comprobación de estado avanzada de Farm Guardian en el servicio virtual Redis. Vuelva a LSLB > Granjas , a la granja creada con el nombre RedisFarm , pestaña Servicios . Finalmente, seleccione el comando check_redis_master que acaba de crear en Comprobaciones de estado para el backend.

Haz clic en Actualizar la granja y ahora Redis tendrá alta disponibilidad completa.

Referencias #

https://redis.io/topics/sentinel
https://redis.io/topics/cluster-tutorial

📄 Descarga este documento en formato PDF #

    EMAIL: *

    Desarrollado por BetterDocs