Búsqueda de sitios web

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


Redis (Remote Dictionary Server) es un servidor de estructura de datos/base de datos de valores clave en memoria, de código abierto, rápido, distribuido y eficiente, muy popular y ampliamente utilizado.

Ofrece un amplio conjunto de funciones que lo hacen eficaz para una amplia gama de casos de uso: como base de datos, capa de almacenamiento en caché, intermediario de mensajes o cola; aplicable en aplicaciones web, aplicaciones de chat y mensajería, juegos, análisis de datos en tiempo real y mucho más.

Admite estructuras de datos flexibles, replicación asíncrona maestro-esclavo para escalar el rendimiento de lectura y proteger contra la pérdida de datos, fragmentación del lado del cliente para escalar el rendimiento de escritura, dos formas de persistencia para escribir datos en memoria en el disco en un formato compacto, agrupación en clústeres y fraccionamiento. También incluye conmutación por error automática para implementación de alta disponibilidad a través de Redis Sentinel, lua scripting, transacciones y muchos más.

Al ser una base de datos NO SQL o no relacional, Redis ofrece algunos beneficios de rendimiento sobre los sistemas de bases de datos tradicionales (como MySQL/MariaDB, PostgreSQL, etc.), porque todos sus datos residen o se almacenan en la memoria, lo que los hace fácilmente accesibles para una aplicación, mientras que las bases de datos tradicionales tienen que escribir todos los datos o leerlos en un disco o en una fuente externa.

Redis se ha convertido en una opción cada vez más frecuente para el almacenamiento en caché, que permite la reutilización de datos almacenados en caché (almacenados dentro del espacio de memoria principal de una aplicación) en lugar de consultar siempre una base de datos en busca de datos utilizados con frecuencia. Por lo tanto, es un complemento fantástico de RDMS (Sistemas de gestión de bases de datos relacionales) para, en última instancia, mejorar el rendimiento de las aplicaciones.

En esta serie de tutoriales de Redis de tres partes, cubriremos cómo configurar y utilizar algunas de las características clave de Redis, que son la replicación, la alta disponibilidad usando Redis Sentinel y Redis. >Redis Cluster, los artículos son:

Esta guía muestra cómo configurar Replicación de Redis (con el modo de clúster deshabilitado) en CentOS 8 Linux, incluido cómo instalar Redis y configurar el servidor maestro. y réplicas, y probar la replicación.

Importante: Un Clúster de Redis (es decir, un Clúster de replicación) con el modo de clúster deshabilitado tiene un único grupo de nodos ( por ejemplo, un maestro y una o dos réplicas), mientras que un clúster de Redis con el modo de clúster habilitado puede constar de dos o más grupos de nodos (por ejemplo, tres maestros, cada uno con esclavos o dos).

Requisitos previos:

  1. Servidores con instalación CentOS 8

Configuración del entorno de prueba

Redis Master Server: 10.42.0.247
Redis Replica1/Slave1: 10.42.0.21
Redis Replica2/Slave2: 10.42.0.34

Con la configuración anterior (que tiene un único nodo primario/maestro de lectura/escritura y 2 nodos réplica de solo lectura), tenemos un único grupo de nodos que contiene todos los datos del clúster en cada nodo. Una vez que un esclavo se conecta a un maestro, recibe una copia inicial de la base de datos completa y se descartará cualquier dato que existiera anteriormente en el esclavo.

Además, un cliente sólo puede escribir en el maestro pero leer desde cualquier nodo del clúster. Y a medida que se realizan escrituras en el maestro, se propagan a todos los esclavos conectados para actualizar los conjuntos de datos del esclavo en tiempo real.

Paso 1: instalar Redis en CentOS 8

1. Para empezar, inicie sesión en todos los nodos CentOS 8 a través de SSH, luego instale el paquete Redis en todos los nodos (maestro y réplicas). ) usando el administrador de paquetes DNF como se muestra.


dnf install @redis

2. Una vez completada la instalación del paquete Redis, inicie el servicio Redis, habilítelo para que se inicie automáticamente en cada inicio del sistema y verifique si está en funcionamiento de la siguiente manera.

systemctl start redis
systemctl enable redis
systemctl status redis

3. También puede confirmar que el servidor Redis está en funcionamiento comprobando los puertos de escucha mediante el comando ss, de la siguiente manera.

ss -ltpn | grep redis-server

Paso 2: configurar el servidor maestro de Redis

4. Redis se configura utilizando el archivo de configuración /etc/redis.conf, un archivo de configuración de ejemplo autodocumentado. Primero, cree una copia de seguridad del archivo original, luego ábralo para editarlo usando el editor de línea de comandos de su elección.

cp /etc/redis.conf /etc/redis.conf.org
vi /etc/redis.conf

5. De forma predeterminada, una instancia de Redis está configurada para escuchar y aceptar conexiones en la interfaz loopback, utilizando la directiva bind. Para comunicarse con las réplicas, el maestro debe configurarse para escuchar en la dirección de loopback IPv4 y su dirección IP de LAN, es decir, 10.42.0.247.

bind 127.0.0.1 10.42.0.247

6. A continuación, establezca el parámetro de modo protegido en no para permitir la comunicación con las réplicas como se muestra.

protected-mode no

Además, Redis escucha en el puerto 6379 que se configura mediante la directiva port. Este es el puerto de datos para comunicarse con las API de aplicaciones o clientes CLI.

port 6379

7. Para proteger opcionalmente las comunicaciones maestro-réplica, podemos proteger el maestro usando la directiva requirepass, de modo que los clientes/réplicas tengan que emita una contraseña de autenticación antes de ejecutar cualquier comando o iniciar un proceso de sincronización de replicación; de lo contrario, el maestro rechazará la solicitud del cliente/réplica (recuerde establecer una contraseña segura).

Usaremos la siguiente opción con fines de demostración, para mostrar cómo funciona.

requirepass  Securep@55Here

8. Además, los registros de Redis se almacenan en el archivo /var/log/redis/redis.log, esto se configura mediante la directiva logfile. y el nivel de detalle predeterminado del servidor es aviso, definido mediante el parámetro loglevel.

loglevel  notice
logfile  /var/log/redis/redis.log

9. Dado que systemd es el sistema predeterminado y el administrador de servicios en CentOS 8, puede configurar Redis para interactuar con el árbol de supervisión systemd estableciendo el parámetro supervisado en systemd.

supervised systemd

10. Después de realizar todas las configuraciones necesarias, guarde el archivo y ciérrelo. Luego reinicie el servicio Redis para aplicar los nuevos cambios.

systemctl daemon-reload
systemctl restart redis

11. Para acceder al servidor Redis, necesitamos usar redis-cli (una interfaz de línea de comandos para el servidor redis). De forma predeterminada, se conecta al servidor en el localhost (en el puerto 127.0.0.1 6379). Tenga en cuenta que debido a que el servidor está protegido contra clientes mediante una contraseña, la ejecución de un comando antes de la autenticación debería fallar.

Utilice el comando auth para proporcionar la contraseña de autenticación como se muestra en la siguiente captura de pantalla.

redis-cli
127.0.0.1:6379> client list
127.0.0.1:6379> AUTH Securep@55Here
127.0.0.1:6379> client list

12. Para conectarse a una réplica (después de configurarlas como se describe en la siguiente sección), utilice -h y -p. opciones para especificar la dirección IP/nombre de host y el puerto de la réplica respectivamente (no es que el puerto 6379 deba estar abierto en el firewall de la réplica).

redis-cli -h 10.42.0.21 -p 6379

13. A continuación, abra el puerto de datos del servidor Redis en el firewall para permitir conexiones entrantes al maestro y, posteriormente, vuelva a cargar las reglas del firewall usando el comando firewall-cmd como se muestra.

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

Paso 3: Configurar servidores réplica/esclavo de Redis

14. Para configurar rápidamente una instancia de Redis como una réplica sobre la marcha, use la utilidad redis-cli y llame a REPLICAOF comando como se muestra.

redis-cli replicaof 10.42.0.247 6379
OR
redis-cli
127.0.0.1:6379> REPLICAOF 10.42.0.247 6379

15. Para que una conexión de replicación sea permanente, debe realizar los siguientes cambios en el archivo de configuración. Comience haciendo una copia de seguridad del archivo original y luego ábralo para editarlo.

cp /etc/redis.conf /etc/redis.conf.org
vi /etc/redis.conf

16. Para permitir que los clientes se conecten a la réplica para leer datos, agregue la dirección IP de la réplica a la directiva de vinculación.

replica1
bind 127.0.0.1 10.42.0.21

replica2
bind 127.0.0.1 10.42.0.34

Configurar una instancia de Redis como réplica

17. Para configurar una instancia de Redis como una réplica, utilice el parámetro replicaof y establezca la dirección IP (o nombre de host) y el puerto del nodo maestro como valores.

replicaof 10.42.0.247 6379

Configuración de la réplica para autenticarse en el maestro

18. A continuación, dado que nuestra instancia maestra está protegida mediante una contraseña, debemos establecer la contraseña en la configuración de la réplica para permitirle autenticarse en la instancia maestra, usando masterauth. parámetro.

masterauth Securep@55Here

19. Además, cuando una réplica pierde su conexión con el maestro, o cuando la replicación está en curso, la réplica se configura para responder a las solicitudes de los clientes, posiblemente con "desactualizado ". ”datos. Pero si es la primera sincronización, entonces el conjunto de datos puede estar vacío. Este comportamiento está controlado por el parámetro replica-serve-stale-data.

Y, dado que Redis 2.6 por defecto las réplicas son de solo lectura, esto se controla mediante el parámetro replica-read-only. Puede realizar otros ajustes de configuración de réplica para satisfacer las necesidades de su aplicación.

20. Una vez que haya realizado todos los cambios necesarios, reinicie el servicio Redis en todas las réplicas.

systemctl restart redis

21. Además, abra el puerto 6379 en el firewall para permitir conexiones desde el maestro y los clientes a las réplicas, y vuelva a cargar las reglas del firewall.

firewall-cmd --zone=public --permanenent --add-port=6379/tcp
firewall-cmd --reload

Paso 4: Verifique el estado de replicación de la réplica maestra

22. Una vez que se completa la configuración de replicación master-replica, podemos verificar si la configuración funciona bien de la siguiente manera.

En el maestro, ejecute los siguientes comandos.

redis-cli
127.0.0.1:6379> AUTH Securep@55Here
127.0.0.1:6379> info replication

23. Además, verifique el estado de replicación en las réplicas/esclavos de la siguiente manera.

redis-cli
127.0.0.1:6379> info replication

23. Ahora probemos la replicación configurando un valor-clave en la instancia maestra y verifiquemos si los datos están sincronizados con las réplicas.

En el maestro, haz esto:

redis-cli
127.0.0.1:6379> AUTH Securep@55Here
127.0.0.1:6379> set domain 'linux-console.net'

24. Luego verifique si los datos se han sincronizado con las réplicas como se muestra.

redis-cli
127.0.0.1:6379> get domain

Protección de la instancia maestra contra el riesgo de perder algunas escrituras

25. Redis tiene una función que permite que una instancia maestra limite el riesgo de perder algunas escrituras en caso de que no haya suficientes réplicas disponibles, a un número específico de segundos.

Esto significa que un maestro puede dejar de aceptar escrituras si hay menos de N réplicas conectadas, con un retraso menor o igual a M segundos, según lo controlado por el min -réplicas-to-write y min-replicas-max-lag respectivamente.

Para configurarlos, descoméntelos y establezca los valores según sus requisitos de configuración en /etc/redis.conf, como se muestra en la siguiente captura de pantalla. Esta configuración significa que, desde el último ping a las réplicas, después de 10 segundos, si hay menos de 2 réplicas en línea, el maestro dejará de aceptar escrituras.

min-replicas-to-write 2
min-replicas-max-lag 10

Puede encontrar más opciones en el resto del archivo de configuración /etc/redis.conf y, para obtener más detalles, lea sobre la replicación en la documentación de Redis.

En el próximo artículo, cubriremos cómo configurar Redis para alta disponibilidad con Sentinel en CentOS 8. Hasta entonces, permanezca bloqueado y recuerde compartir sus pensamientos y preguntas utilizando nuestro formulario de comentarios a continuación, que está a su disposición para comunicarse con nosotros.