Contenido
Resumen
Redis es un almacén de estructura de datos en memoria de código abierto que se puede utilizar como intermediario de mensajes, caché y base de datos de valores clave. Admite varias estructuras de datos: hashes, listas, conjuntos, conjuntos ordenados, mapas de bits, índices geoespaciales, hiperloglogs, etc.
Lo que hace único a Redis es que puede considerarse tanto una tienda como un caché. Está diseñado de tal manera que los datos se modifican y / o leen desde la memoria de la computadora principal.
Entre otras características, Redis ofrece alta disponibilidad, a través de Redis Sentinely particionamiento automático, a través de Redis Cluster. Además, Redis tiene un mecanismo de replicación que permite que las instancias esclavas sean copias exactas de las instancias maestras. El esclavo se volverá a conectar automáticamente al maestro cada vez que se rompa el enlace, y su objetivo es ser una copia exacta del mismo.
Como Redis Sentinel proporciona alta disponibilidad para Redis, puede manejar fallas automáticamente sin intervención humana en muchos casos, pero también proporciona otras tareas como monitoreo, notificaciones y actúa como un proveedor de configuración para los clientes.
Pero, ¿Qué sucede cuando Sentinel detecta un servidor Redis como inactivo? Descubriremos en este artículo cómo crear un servicio virtual completo de alta disponibilidad para Redis.
Tenga en cuenta que esta configuración también se puede hacer incluso si su servidor Redis no está utilizando Sentinel para el monitoreo.
Entorno de equilibrio de carga de Redis
El escenario que queremos lograr en este artículo se muestra en el diagrama a continuación.
Redis Sentinel comprueba el estado de todos los nodos de Redis y cambia la función del servidor Redis una vez que se detecta un error.
El equilibrador de carga también verifica el estado, pero lo hace periódicamente cada algunos segundos. Puede haber casos en los que Sentinel detecta el problema, pero el equilibrador de carga puede tardar unos segundos en darse cuenta. Esto podría llevar al equilibrador a enviar solicitudes al maestro incorrecto, que es el que acaba de fallar pero que Sentinel ha cambiado.
Zevenet ofrece una forma de resolver este problema, la granja L4 realiza comprobaciones periódicamente. Por otro lado, también está el flujo que se pasa al backend que no contiene ninguna verificación previa. Cuando el guardián de la granja se da cuenta de que el backend no responde, da la alarma, lo que indica que el flujo no debería ir de esta manera.
Teniendo esto en cuenta, tenemos por un lado los cheques y por el otro las solicitudes. Si la verificación 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 tener una IP virtual. Para lograr eso, vaya a Red> Interfaces virtuales. Luego haga clic en Acción> Crear interfaz virtual. A continuación, seleccione Interfaz principal, Nombre de interfaz virtual y su Dirección IP:
Luego, para el servidor virtual Redis, necesitamos crear una granja de servidores L4xNAT. Para eso, ve a LSLB> Granjas, y luego haga clic en Tarjetas, flyers, carteles personalizados y Crear granja.
Una vez establecidos los parámetros iniciales, haga clic en Crear. A continuación, ve al Tecnología pestaña y asegúrese de que el tipo de protocolo es TCP.
A continuación, vaya a Servicios. Los backends y Farm Guardian se configurarán aquí para un control de salud avanzado. Primero encuentra el Backends sección y haga clic en Acciones> Agregar backend como se muestra a continuación:
Monitoreo de redis y verificación de salud avanzada
Finalmente, se requieren las verificaciones de Farm Guardian para asegurarse de que siempre estamos usando el nodo en línea, como se explicó anteriormente. Para eso, necesitamos configurar lo siguiente como el comando Farm Guardian:
check_tcp -E -H HOST -p PORT -s 'info replication\r\n' -e role:master -t 3
Dónde HOST y PORT será reemplazado por la dirección IP y el puerto del servidor Redis de cada backend. El comando replicación de información obtendrá la información del servidor Redis para verificar qué maestro está vivo, las conexiones solo se redirigirán al servidor si se presenta el rol maestro, tan pronto como Sentinel cambie el rol, el equilibrador de carga detectará el cambio y el Redis el servidor se marcará como inactivo. La bandera -t es el número de segundos que Farm Guardian esperará una respuesta del servidor Redis y luego, si se alcanza el tiempo de espera sin responder, el servidor Redis se marcará como inactivo. Por otro lado, una vez que se restaura la salud del servidor Redis, volverá a estar en funcionamiento.
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 comprobador de estado de Redis Sentinel, por ejemplo, check_redis_master como en el ejemplo, ahora elige check_tcp en el archivado Farmguardian para copiar y haga clic en Crear como se muestra a continuación.
Finalmente, copie el comando mencionado anteriormente en el Comando parámetro y realice la configuración como se muestra a continuación.
Haga clic en Enviar.
Ahora, seleccione esta nueva verificación de estado avanzada de Farm Guardian en el servicio virtual de Redis. Volver a LSLB> Granjas, a la granja creada con nombre RedisGranja, Servicios lengüeta. Finalmente, seleccione el check_redis_master comando recién creado bajo Chequeos de salud para el backend.
Haga clic en Actualizar la granja y ahora Redis estarán totalmente disponibles.
Referencias
https://redis.io/topics/sentinel
https://redis.io/topics/cluster-tutorial