Table of Contents
Cómo configurar la replicación de Redis (con el modo de clúster deshabilitado) en CentOS 8-Parte 1
Redis. ( servidor de diccionario remoto. es un servidor de estructura de datos/base de datos de valor clave en memoria muy popular y ampliamente utilizado, rápido, distribuido y eficiente .
Ofrece un amplio conjunto de características que lo hacen efectivo para una amplia gama de casos de uso: como base de datos, capa de almacenamiento en caché, agente 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 protegerse 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 la memoria en el disco en un formato compacto, agrupación en clústeres y particiones. También cuenta con conmutaciones por error automáticas para la implementación de alta disponibilidad a través de Redis Sentinel. secuencias de comandos Lua. 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 o leer todos los datos en el disco o en una fuente externa.
Redis. se ha convertido en una opción cada vez más frecuente para el almacenamiento en caché, lo que permite la reutilización de los 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 de uso frecuente. Por lo tanto, es un compañero fantástico de RDMS. ( Sistemas de administración de bases de datos relacionales. para mejorar en última instancia el rendimiento de la aplicación.
freestar.config.enabled_slots.push (LocationName: ” tecmint_incontent “, slotId:” tecmint_incontent “);
En esta serie de tutoriales de Redis. de tres partes, cubriremos cómo configurar y usar algunas de las características clave de Redis, que son replicación, alta disponibilidad con Redis Sentinel. y Redis Cluster. los artículos son:
Parte 1 : Cómo configurar la replicación de Redis (con Cluster-Mode Disabled) en CentOS 8 Parte 2 : Cómo configurar Redis para alta disponibilidad con Sentinel en CentOS 8 Parte 3 : Cómo configurar un clúster de Redis (con el modo de clúster habilitado) en CentOS 8
Esta guía muestra cómo configurar Replicación de Redis. (con Modo de clúster Disabled. en CentOS 8. Linux, incluido cómo instalar Redis, configure el master y réplicas, y pruebe la replicación.
Importante. Un Clúster de Redis. (es decir, una Replicación Clúster. con el modo de clúster inhabilitado tiene un solo grupo de nodos (p. Ej., Un maestro. y una o dos réplicas) donde un clúster de Redis con el modo de clúster habilitado puede constar de dos o más grupos de nodos (p. Ej. tres maestros, cada uno con esclavos o dos).
Requisitos previos:
- Servidores con instalación de 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
Representación lógica del diagrama de replicación de Redis
Con la configuración anterior (que tiene un solo nodo principal/maestro de lectura/escritura y 2 nodos de réplica de solo lectura), tenemos un solo 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 existía previamente en el esclavo será descartado.
Además, un cliente solo 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 esclavos 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 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 con el comando ss, de la siguiente manera.
# ss-ltpn | grep redis-server
Confirmar los puertos del servidor Redis
Paso 2: Configurar el servidor maestro de Redis
4.. Redis se configura usando el archivo de configuración /etc/redis.conf. un ejemplo auto-documentado archivo de configuración. 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 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 estar configurado 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.
Modo protegido no
Además, Redis escucha en puerto 6379. que se establece mediante la directiva de puerto. Este es el puerto de datos para comunicarse con API de aplicaciones o clientes CLI.
puerto 6379
Configurando Redis Servidor maestro
7.. Para proteger opcionalmente las comunicaciones maestro-réplica. podemos proteger el maestro usando la directiva requirepass. de modo que el los clientes/réplicas deben 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á al cliente/solicitud de réplica (recuerde establecer una contraseña segura).
Usaremos la siguiente opción con fines de demostración, para mostrar cómo funciona.
requirepass [correo electrónico protegido]
Establecer contraseña de autenticación
8.. Además, los registros de Redis se almacenan en el archivo /var/log/redis/redis.log. esto se establece mediante la directiva logfile. y el nivel de verbosidad del servidor predeterminado es aviso. definido mediante el parámetro loglevel.
loglevel notice logfile/var/log/redis/redis.log
Establecer el archivo de registro de Redis y el nivel de registro
9.. Dado que systemd. es el administrador de servicios y sistema predeterminado en CentOS 8. puede configurar Redis. para que interactúe con el árbol de supervisión de systemd. estableciendo el parámetro supervisado. en systemd.
systemd supervisado
Establecer Redis Supervisor en 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 a Redis. servidor, necesitamos usar redis-cli. (una interfaz de línea de comandos para el servidor redis). De forma predeterminada, se conecta al servidor en localhost. (en 127.0.0.1. puerto 6379. . Tenga en cuenta que debido a que el servidor está protegido contra los 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> lista de clientes 127.0.0.1:6379> AUTH [email protected] 127.0.0.1:6379> lista de clientes
Accede al servidor Redis a través de la CLI de Redis
12.. Para conectarse a una réplica. (después de configurarlas como se describe en la siguiente sección), use las opciones-h y-p para especificar la dirección IP/nombre de host de la réplica y el puerto respectivamente (no ese puerto 6379. debe estar abierto en el firewall de la réplica).
# redis-cli-h 10.42.0.21-p 6379
13.. A continuación, abra el El puerto de datos del servidor Redis en el firewall para permitir conexiones entrantes al maestro y, posteriormente, volver a cargar las reglas del firewall utilizando 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 una réplica sobre la marcha, utilice la utilidad redis-cli. y llame al REPLICAOF. como se muestra.
# redis-cli replicaof 10.42.0.247 6379 O # redis-cli 127.0.0.1:6379> REPLICAOF 10.42.0.247 6379
Conectar a una instancia principal de Redis
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, 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 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. utilice el parámetro réplica de. y establezca la IP del nodo principal dirección (o nombre de host) y puerto como valores.
réplica de 10.42.0.247 6379 Configuración de réplica para autenticarse en 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 permitir que se autentique en el maestro, usando el parámetro masterauth.
masterauth [email protected]
19. Además, cuando una réplica pierde i ts conexión con el maestro, o cuando la replicación está en curso, la réplica está configurada para responder a las solicitudes del cliente, posiblemente con datos “ desactualizados. . 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 está controlado por el parámetro replica-read-only. Puede realizar otros ajustes de configuración de réplicas 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 comprobar si la configuración funciona correctamente de la siguiente manera.
En el master, ejecute los siguientes comandos.
# redis-cli 127.0.0.1:6379> AUTH [email protected] 127.0.0.1:6379> replicación de información
Verifique la información de reubicación de Redis en el maestro
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> replicación de información
Verifique la información de replicación de Redis en Redis Replica 1
Verifique la información de replicación de Redis en Redis Replica 2
23.. Ahora probemos la replicación configurando un valor-clave. en la instancia maestra y verifique si los datos están sincronizados con las réplicas.
En la instancia maestra, haga esto:
# redis-cli 127.0.0.1:6379> AUTH [email protegido] 127.0.0.1:6379> establecer dominio ‘www.tecmint.com’
Establecer valor clave en instancia maestra
24.. Luego, verifique si los datos se han sincronizado con las réplicas como mostrado.
# redis-cli 127.0.0.1:6379> obtener dominio
Verificar el estado de sincronización de datos en réplicas 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 disponible, 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 que M. segundos, según lo controlan las opciones min-replicas-to-write. y min-replicas-max-lag. respectivamente.
Para configurarlos, descomente y configure los valores de acuerdo con 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-retraso 10
Protección del maestro de Redis contra la pérdida de escritura
Puede encontrar más opciones en el resto del archivo de configuración /etc/redis.conf. y para obtener más detalles sobre la replicación en el documento 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 para que pueda comunicarse con nosotros.