Redis (Servidor de Diccionario Remoto) es un servidor de base de datos/estructura de datos clave-valor en memoria, distribuido, rápido y eficiente, de código abierto y muy popular y utilizado.
Ofrece un conjunto rico de características que lo hacen efectivo para una amplia gama de casos de uso: como base de datos, capa de 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 disco en un formato compacto, agrupamiento y particionamiento. También cuenta con conmutaciones por error automáticas para implementaciones de alta disponibilidad a través de Redis Sentinel, scripting Lua, transacciones y muchas más.
Siendo 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 memoria, lo que facilita el acceso por parte de una aplicación, mientras que las bases de datos tradicionales tienen que escribir todos los datos en disco o leerlos de una fuente externa.
Redis se ha convertido en una opción cada vez más prevalente para el almacenamiento en caché, lo que permite reutilizar datos en caché (almacenados dentro del espacio de memoria principal de una aplicación) en lugar de consultar siempre una base de datos para datos de uso frecuente. Por lo tanto, es un compañero fantástico de RDMS (Sistemas de Gestión de Bases de Datos Relacionales) para mejorar en última instancia el rendimiento de la aplicación.
En esta serie de tutoriales de tres partes sobre Redis, cubriremos cómo configurar y utilizar algunas de las características clave de Redis, como la replicación, la alta disponibilidad utilizando Redis Sentinel y Redis Cluster, los artículos son:
Esta guía muestra cómo configurar la Replicación de Redis (con Modo de Cluster Deshabilitado) en Linux CentOS 8, incluyendo cómo instalar Redis, configurar el maestro y las réplicas, y probar la replicación.
Importante: Un Cluster de Redis (es decir, un Cluster de Replicación) con el modo de clúster deshabilitado tiene un único grupo de nodos (por ejemplo, un maestro y uno o dos replicas), 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:
Configuración del Entorno de Pruebas
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 principal/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 cualquier dato que existiera previamente en el esclavo será descartado.
Además, un cliente solo puede escribir en el maestro pero leer desde cualquier nodo en el clúster. Y como las escrituras se realizan en el maestro, se propagan a todos los esclavos conectados para actualizar los conjuntos de datos del esclavo en tiempo real.
Paso 1: Instalación de Redis en CentOS 8
1. Para comenzar, inicie sesión en todos los nodos de CentOS 8 a través de SSH, luego instale el paquete Redis en todos los nodos (maestro y réplicas) utilizando el gestor de paquetes DNF como se muestra a continuación.
# dnf install @redis
2. Al finalizar la instalación del paquete Redis, inicie el servicio de 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 de Redis está en funcionamiento verificando los puertos de escucha utilizando el comando ss, como se muestra a continuación.
# ss -ltpn | grep redis-server

Paso 2: Configuración del 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, crea una copia de seguridad del archivo original, luego ábrelo para editarlo usando tu editor de línea de comandos preferido.
# cp /etc/redis.conf /etc/redis.conf.org # vi /etc/redis.conf
5. Por defecto, una instancia de Redis está configurada para escuchar y aceptar conexiones en la interfaz de bucle local, utilizando la directiva bind. Para comunicarse con las réplicas, el maestro debe estar configurado para escuchar en la dirección de bucle local 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, establece 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 establece utilizando 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 al maestro utilizando la directiva requirepass, de modo que los clientes/réplicas tengan que emitir 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 (recuerda establecer una contraseña segura).
Usaremos la siguiente opción con fines demostrativos, 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 establece utilizando la directiva logfile y el nivel de verbosidad del servidor predeterminado es notice, definido mediante el parámetro loglevel.
loglevel notice logfile /var/log/redis/redis.log

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

10. Después de realizar todas las configuraciones necesarias, guarda el archivo y ciérralo. Luego, reinicia el servicio de Redis para aplicar los nuevos cambios.
# systemctl daemon-reload # systemctl restart redis
11. Para acceder al servidor de Redis, necesitamos usar el redis-cli (una interfaz de línea de comandos para el redis-server). Por defecto, se conecta al servidor en el localhost (en el puerto 127.0.0.1 puerto 6379). Ten en cuenta que debido a que el servidor está protegido de los clientes usando una contraseña, ejecutar un comando antes de la autenticación debería fallar.
Usa 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 un replica (después de configurarlos como se describe en la siguiente sección), usa las opciones -h
y -p
para especificar la dirección IP/nombre de host del replica y el puerto respectivamente (nota que el puerto 6379 debe estar abierto en el firewall del replica).
# redis-cli -h 10.42.0.21 -p 6379
13. A continuación, abre el puerto de datos del servidor Redis en el firewall para permitir conexiones entrantes al maestro, y posteriormente recarga 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: Configuración de Servidores Réplica/Esclavo de Redis
14. Para configurar rápidamente una instancia de Redis como réplica sobre la marcha, utiliza la utilidad redis-cli y llama al comando REPLICAOF 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 hacer permanente una conexión de replicación, necesitas hacer los siguientes cambios en el archivo de configuración. Empieza haciendo una copia de seguridad del archivo original, luego ábrelo 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, añade la dirección IP de la réplica a la directiva bind.
# replica1 bind 127.0.0.1 10.42.0.21 # replica2 bind 127.0.0.1 10.42.0.34
Configuración de una Instancia de Redis como Réplica
17. Para configurar una instancia de Redis como réplica, utiliza el parámetro replicaof y establece 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 con el Maestro
18. A continuación, dado que nuestra instancia maestra está protegida con una contraseña, necesitamos establecer la contraseña en la configuración de la réplica para permitirle autenticarse con el maestro, utilizando el parámetro masterauth.
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 está configurada para responder a las solicitudes de los clientes, posiblemente con datos “fuera de fecha”. 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, desde Redis 2.6 por defecto las réplicas son de solo lectura, esto está controlado por el parámetro replica-read-only. Puede realizar otros ajustes de configuración de réplica para adaptarse a las necesidades de su aplicación.
20. Una vez que haya realizado todos los cambios necesarios, reinicie el servicio de 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 recargue las reglas del firewall.
# firewall-cmd --zone=public --permanenent --add-port=6379/tcp # firewall-cmd --reload
Paso 4: Verificar el Estado de la Replicación Maestro-Réplica
22. Una vez que la configuración de replicación maestro-réplica esté completa, podemos verificar si la configuración está funcionando correctamente 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 la 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 par clave-valor en la instancia maestra y verifiquemos si los datos se sincronizan en las réplicas.
En el maestro, haga lo siguiente:
# redis-cli 127.0.0.1:6379> AUTH Securep@55Here 127.0.0.1:6379> set domain 'www.tecmint.com'

24. Luego verifique si los datos se han sincronizado en las réplicas como se muestra.
# redis-cli 127.0.0.1:6379> get domain

Protegiendo la Instancia Maestra Contra el Riesgo de Perder Algunas Escrituras
25. Redis tiene una característica que permite a una instancia maestra limitar el riesgo de perder algunas escrituras en caso de que no haya suficientes réplicas disponibles, a un número especificado de segundos.
Esto significa que una maestra puede dejar de aceptar escrituras si hay menos de N réplicas conectadas, con un retraso menor o igual a M segundos, controlado por las opciones min-replicas-to-write y min-replicas-max-lag respectivamente.
Para configurarlos, descoméntelos y establezca los valores según los requisitos de su 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, la maestra 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 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, manténgase informado y recuerde compartir sus pensamientos y preguntas utilizando nuestro formulario de comentarios que está a continuación para que pueda contactarnos.
Source:
https://www.tecmint.com/setup-redis-replication-in-centos-8/