GNU/Linux >> Tutoriales Linux >  >> Cent OS

Cómo configurar un clúster de Redis en CentOS 8 - Parte 3

Clúster de Redis es un Redis integrado función que admite la fragmentación automática, la replicación y la alta disponibilidad que se implementó previamente con Sentinels . Está diseñado para dos propósitos principales:uno es dividir automáticamente su conjunto de datos entre varias instancias y, en segundo lugar, proporcionar cierto grado de disponibilidad durante las particiones, para continuar las operaciones cuando algunas instancias (especialmente las maestras) fallan o no pueden comunicarse con la mayoría de nodos en el clúster.

Sin embargo, el clúster deja de funcionar en caso de fallas mayores (por ejemplo, cuando la mayoría de las instancias maestras no están disponibles). Además, si un maestro y un esclavo fallan al mismo tiempo, el clúster no puede continuar con las operaciones normales (aunque la solución consiste en agregar más nodos o crear una asimetría en el clúster para cambiar automáticamente el diseño del clúster).

Según Redis documentación del clúster, el “clúster mínimo ” que funciona como se esperaba requiere contener al menos 3 nodos maestros. Pero la configuración más adecuada para alta disponibilidad debería tener al menos 6 nodos con tres maestros y tres esclavos, cada maestro con un esclavo.

Importante :Redis Cluster también tiene algunas limitaciones que son la falta de soporte para NATted entornos, así como aquellos en los que las direcciones IP o los puertos TCP se reasignan, por ejemplo, en Docker . Además, no todas las bibliotecas de clientes lo admiten.

Este artículo muestra cómo configurar un clúster de Redis (con modo clúster deshabilitado ) en CentOS 8 . Incluye cómo instalar Redis, configurar los nodos del clúster, crear un clúster y probar la conmutación por error del clúster.

Nota :Para esta guía, usaremos instancias de Redis nuevas/vacías para ejecutar el modo de clúster. El modo de clúster no funcionará con algunas configuraciones realizadas en las dos primeras guías de nuestra serie Redis, en particular, no funciona cuando se usa la réplica del parámetro.

Requisitos previos:

  1. Servidores con instalación de CentOS 8

Configuración del entorno de prueba

Redis Master1: 10.42.0.247
Redis Master2: 10.42.0.197
Redis Master3: 10.42.0.132

Redis Slave1: 10.42.0.200
Redis Slave2: 10.42.0.21
Redis Slave3: 10.42.0.34

Diagrama lógico del clúster de Redis

Nuestra configuración tiene 3 nodos maestros de lectura/escritura y 3 nodos de réplica de solo lectura, cada maestro tiene una réplica, por lo que tres fragmentos contienen todos los datos del clúster en cada nodo. Una aplicación API o CLI el cliente solo puede escribir en los nodos maestros, pero puede leer desde cualquier nodo del clúster.

Paso 1:Instalación de Redis en todos los nodos

1. Inicie sesión en todas las instancias a través de SSH , luego ejecute el siguiente comando para instalar Redis módulo usando el administrador de paquetes DNF como se muestra.

# dnf module install redis

2. A continuación, inicie Redis servicio, habilítelo para que se inicie automáticamente al arrancar el sistema y verifique su estado para verificar que se está ejecutando (verifique el servicio en las 6 instancias):

# systemctl start redis
# systemctl enable redis
# systemctl status redis

Paso 2:Configuración de instancias de Redis en todos los nodos

3. Esta sección describe cómo configurar los nodos del clúster de Redis. Recuerde realizar las configuraciones aquí en todos los nodos.

Utilice el /etc/redis.conf archivo de configuración para configurar Redis servidor. Como práctica recomendada, cree una copia de seguridad del archivo original antes de editarlo con un editor de texto de línea de comandos de su elección.

# cp /etc/redis.conf /etc/redis.conf.orig
# vi /etc/redis.conf

4. A continuación, busque los siguientes parámetros de configuración y edite sus valores como se muestra. El vínculo El parámetro establece la interfaz del servidor Redis en la que escuchará, establezca su valor en la IP de la LAN de la instancia. Eliminar el 127.0.0.1 porque nos dimos cuenta de que dejarlo allí ralentiza el proceso de creación del clúster, en particular la etapa de unirse al clúster.

bind  10.42.0.247

Luego configure el modo protegido a no para permitir conexiones desde otras instancias en el clúster.

protected-mode no

El parámetro de puerto define el puerto en el que el servidor de Redis escuchará las conexiones; el valor predeterminado es 6379 . Este es el puerto de datos para comunicarse con los clientes.

port 6379

Establecer la interfaz y el puerto de escucha de Redis

5. El siguiente conjunto de parámetros habilitará el modo de clúster y establecerá algunas de sus características útiles. El habilitado para clústeres parámetro, cuando se establece en yes , activa el modo clúster.

cluster-enabled yes

A continuación, el archivo de configuración del clúster El parámetro establece el nombre del archivo de configuración del clúster de un nodo de clúster (por ejemplo, nodes-6379.conf ). El archivo se crea en el directorio de trabajo (el valor predeterminado es /var/lib/redis definido usando el dir parámetro) y no es editable por el usuario.

cluster-config-file nodes-6379.conf

La siguiente opción de clúster útil es cluster-node-timeout , se utiliza para establecer la cantidad máxima de tiempo en milisegundos que una instancia puede estar no disponible para que se considere en estado de falla. Un valor de 15000 es equivalente a 15 segundos.

cluster-node-timeout 15000

Establecer el tiempo de espera del nodo del clúster

6. También necesitamos habilitar la persistencia de Redis en el disco. Podemos usar uno de los modos de persistencia, que es el Agregar solo archivo (AOF ):registra (en el archivo appendonly.aof creado en el directorio de trabajo) cada operación de escritura recibida con éxito por el servidor. Los datos se reproducirán durante el inicio del servidor para reconstruir el conjunto de datos original.

Para habilitarlo, configure appendonly parámetro a yes .

appendonly yes

Establecer opciones de persistencia

7. Después de realizar todos los cambios, reinicie Redis servicio en todos los nodos para aplicar los cambios recientes.

# systemctl restart redis

8. En este punto, cada nodo del clúster ahora debería tener un ID . Puede verificar esto en el archivo de registro ubicado en /var/log/redis/redis.log .

# cat /var/log/redis/redis.log

Comprobar el archivo de registro del nodo del clúster

9. A continuación, abra el puerto 6397 y 16379 en todas las instancias. El puerto posterior se utiliza para el bus del clúster (un nodo a nodo canal de comunicación usando un protocolo binario). Este es un requisito básico para las conexiones TCP del clúster de Redis.

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

Paso 3:Creación del clúster de Redis

10. Para crear el clúster, utilice la línea de comandos de redis-cli cliente de la siguiente manera. El --cluster create habilita la creación de clústeres y --cluster-replicas 1 significa crear una réplica por maestro.

Para nuestra configuración que tiene 6 nodos, tendremos 3 maestros y 3 esclavos.

Tenga en cuenta que los primeros 6 nodos se considerarán maestros (M) y los siguientes tres serán considerados esclavos (S) . El primer esclavo, es decir, 10.42.0.200:6379 replica el primer maestro, es decir, 10.42.0.247:6379 , el segundo esclavo replica al segundo maestro, en ese orden.

El siguiente comando está formateado de manera que el resultado representará nuestra configuración lógica anterior.

# redis-cli --cluster create 10.42.0.247:6379 10.42.0.197:6379 10.42.0.132:6379 10.42.0.200:6379 10.42.0.21:6379 10.42.0.34:6379 --cluster-replicas 1

Crear clúster de Redis

11. Una vez que la creación del clúster sea exitosa, ejecute el siguiente comando en cualquier host (especifique su dirección IP usando -h bandera) para enumerar todos los nodos del clúster.

# redis-cli -h 10.42.0.247 -p 6379 cluster nodes

Debería poder ver todos los nodos del clúster, con los esclavos indicando sus maestros, como se muestra en la siguiente captura de pantalla.

Marque todos los nodos de clúster en cualquier nodo

Los diferentes campos están en este orden:ID de nodo, dirección IP:puerto, banderas, último ping enviado, último ping recibido, época de configuración, estado de enlace, ranuras (para maestros).

Paso 4:Probar la conmutación por error del clúster de Redis

12. En esta sección, demostraremos cómo probar una conmutación por error de clúster. Primero, tomemos nota de los maestros.

# redis-cli -h 10.42.0.247 -p 6379 cluster nodes  | grep master

Mostrar maestros de clúster de Redis

Además, toma nota de los esclavos de Redis.

# redis-cli -h 10.42.0.247 -p 6379 cluster nodes  | grep slave

Listar todos los esclavos de clúster de Redis

13. A continuación, detengamos el servicio de Redis en uno de los nodos maestros, por ejemplo, 10.42.0.197 y verifique todos los nodos maestros en el clúster.

# systemctl stop redis
# redis-cli -h 10.42.0.247 -p 6379 cluster nodes | grep master

En la siguiente captura de pantalla, puede ver que el nodo 10.42.0.197:6367 está en estado fallido y su esclavo 10.42.0.21:6379 ha sido ascendido a estado maestro.

Comprobar el estado de conmutación por error del clúster

14. Ahora comencemos el Redis servicio una vez más en el nodo fallido y verifique todos los maestros en el clúster.

# systemctl start redis
# redis-cli -h 10.42.0.247 -p 6379 cluster nodes  | grep master

Comprobar todo el estado maestro del clúster de Redis

Además, verifique los esclavos del clúster para confirmar que el maestro fallido ahora es un esclavo.

# redis-cli -h 10.42.0.247 -p 6379 cluster nodes  | grep slave

Marque todos los esclavos de clúster de Redis

Paso 5:probar la replicación de datos en el clúster de Redis

15. Esta última sección explica cómo verificar la replicación de datos del clúster. Crearemos una clave y un valor en uno de los maestros, luego intentaremos leerlo de todos los nodos del clúster de la siguiente manera. Utilice el -c cambie para habilitar la compatibilidad con clústeres en la utilidad redis-cli y acceda a los datos en modo clúster.

# redis-cli -c -h 10.42.0.247 -p 6379 set name 'TecMint.com'
# redis-cli -c -h 10.42.0.247 -p 6379 get name
# redis-cli -c -h 10.42.0.21 -p 6379 get name
# redis-cli -c -h 10.42.0.132 -p 6379 get name
# redis-cli -c -h 10.42.0.200 -p 6379 get name
# redis-cli -c -h 10.42.0.197 -p 6379 get name
# redis-cli -c -h 10.42.0.34 -p 6379 get name

Verificar la replicación de datos del clúster de Redis

El resultado final es el clúster de Redis es la forma preferida de obtener fragmentación automática, replicación y alta disponibilidad. Hay muchos otros parámetros de configuración bien documentados en el resto de /etc/redis.conf archivo, puede encontrar más información en la documentación oficial:tutorial de clúster de Redis y especificación de clúster de Redis.

Esto nos lleva al final de la serie de tutoriales de Redis de tres partes. El siguiente formulario de comentarios se puede utilizar para publicar preguntas o comentarios.

Compartir es cuidar…
Compartir en FacebookCompartir en TwitterCompartir en LinkedinCompartir en Reddit
Cent OS
  1. Cómo instalar y configurar Redis en CentOS 7

  2. Cómo instalar y configurar Redis en CentOS 8

  3. Cómo instalar el servidor Redis en CentOS 8 / RHEL 8

  4. Cómo configurar claves SSH en CentOS 8

  5. Cómo instalar Redis en CentOS 7

Cómo instalar Redis en CentOS 7

Cómo instalar phpRedisAdmin en CentOS 7

Cómo instalar PhpRedmin en CentOS 7

Cómo instalar Redis en CentOS 8

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

Cómo configurar Redis para alta disponibilidad con Sentinel en CentOS 8 – Parte 2