Modo maestro-esclavo y centinela de Redis
Modo maestro-esclavo
Aunque Redis lee y escribe muy rápido, también produce una situación en la que la presión de lectura es extremadamente alta. Para compartir la presión de lectura, aunque Redis lee y escribe muy rápido, también produce una situación en la que la presión de lectura es extremadamente alta. Para compartir la presión de lectura, la arquitectura puede adoptar una estructura maestro-esclavo múltiple o en cascada. La replicación maestro-esclavo de Redis se puede dividir en sincronización completa y sincronización incremental según esté completa.
El propósito de la replicación maestro-esclavo
Para copiar los datos en la base de datos primaria a la base de datos secundaria, para asegurar la consistencia de la base de datos primaria y la base de datos secundaria, de modo que el cliente lea indistintamente de las bases de datos primaria y secundaria, lo que puede ayudar a la base de datos primaria a reducir la presión de carga y resuelva el punto único de falla.
Sincronización completa
La replicación completa de Redis generalmente ocurre en la fase de inicialización del esclavo, en este momento el esclavo necesita copiar todos los datos en el maestro. Los pasos específicos son los siguientes:
El servidor esclavo se conecta al servidor maestro y envía el comando de sincronización como,
después de recibir el nombre de SYNC, el servidor maestro comienza a ejecutar el comando BGSAVE para generar el archivo RDB y utiliza la memoria intermedia para registrar todos los comandos de escritura ejecutados a partir de entonces Después de la.
Servidor maestro BGSAVE se ha ejecutado, envía el archivo de instantánea a todos los servidores esclavos, y continúa registrando los comandos de escritura ejecutados durante el envío;
descarta todos los datos antiguos después de recibir el archivo de instantánea del servidor y carga la instantánea recibida; el
servidor maestro comienza a enviar los comandos de escritura en el búfer al servidor esclavo después de que se envía la instantánea;
el servidor esclavo termina de cargar la instantánea, comienza a recibir solicitudes de comando y ejecuta el comando de escritura desde el búfer del servidor maestro.
Sincronización incremental
La replicación incremental de Redis se refiere al proceso de sincronizar las operaciones de escritura desde el servidor maestro al servidor esclavo cuando el esclavo se inicializa y comienza a funcionar normalmente.
El proceso de replicación incremental consiste principalmente en que el servidor maestro envía el mismo comando de escritura al servidor esclavo cada vez que ejecuta un comando de escritura, y el servidor esclavo recibe y ejecuta el comando de escritura recibido.
Despliegue maestro-esclavo
1. Apague el firewall
systemctl stop firewalld
setenforce 0
2. Cargue el paquete de instalación redis-5.0.4.tar.gz
3. Descomprima, configure e instale
tar zxvf redis-5.0.4.tar.gz
cd redis-5.0.4/
make
make DREFIX=/usr/local/redis install
4. Crea un vínculo
ln -s /usr/local/redis/bin/* /usr/local/bin/
5. Ejecute el script
cd redis-5.0.4/utils/
./install_server.sh
6. Modifique el archivo de configuración
vi /etc/redis/6379.conf
(Es necesario modificar los nodos maestro y esclavo)
Número de líneas | contenido | Descripción |
---|---|---|
69 | 0.0.0.0 | Dirección de escucha |
136 | demonizar sí | Inicie el demonio |
171 | archivo de registro /var/log/redis_6379.log | Modificar el directorio del archivo de registro |
263 | dir / var / lib / redis / 6379 | Modificar directorio de trabajo |
699 | solo si | Habilitar la función de persistencia AOF |
(nodo esclavo)
línea 287
replicaof 20.0.0.11 6379
Reiniciar
/etc/init.d/redis_6379 stop
/etc/init.d/redis_6379 start
Ver registro
tail -20 /var/log/redis_6379.log
Verifique el nodo esclavo
en el maestro Establezca un número en el maestro para
verlo en el esclavo.
Modo centinela
Principios del modo centinela
El centinela es un sistema distribuido que se utiliza para monitorear cada servidor en la estructura maestro-esclavo.Cuando ocurre una falla, se selecciona un nuevo maestro a través de un mecanismo de votación y todos los esclavos se conectan al nuevo maestro. Por lo tanto, el número de centinelas en ejecución del clúster completo no debe ser inferior a 3 nodos.
El papel del modo centinela
① Supervisión
Compruebe continuamente si el maestro y el esclavo funcionan con normalidad.
Detección de supervivencia del maestro, detección del estado de funcionamiento del maestro y del esclavo
② Notificación (recordatorio)
Cuando hay un problema con el servidor monitoreado, envíe una notificación a otro (sala centinela, cliente).
③ Conmutación por error automática
Desconecte el maestro y el esclavo, seleccione un esclavo como maestro, conecte otros esclavos al nuevo maestro e informe al cliente de la nueva dirección del servidor
El centinela también es un servidor redis, pero no proporciona servicios de datos
. El inicio del centinela depende del modo maestro-esclavo, por lo que el modo centinela debe instalarse después de instalar el modo maestro-esclavo. El modo centinela debe ser implementado en todos los nodos. El modo centinela supervisará si todos los nodos de redis en funcionamiento son normales. Cuando hay un problema con el maestro, porque otros nodos pierden contacto con el nodo maestro, votarán. Después de más de la mitad de la votación, se considera que hay un problema con el maestro, y luego se notificará a la sala de centinelas, y luego se seleccionará entre los esclavos Uno como el nuevo maestro
Implementación del modo centinela
Implementar sobre una base maestro-esclavo
Modificar el sentinel.conf
archivo de configuración
vi redis-5.0.4/sentinel.conf
Número de líneas | antes de arreglar | Después de la modificación | Descripción |
---|---|---|---|
17 | # modo protegido no | modo protegido no | Desactivar el modo de protección |
26 | demonizar no | demonizar sí | Especificar centinela para comenzar en segundo plano |
36 | archivo de registro "" | archivo de registro "/var/log/sentinel.log" | Archivo de registro |
sesenta y cinco | dir / tmp | dir / var / lib / redis / 6379 | Ruta de datos |
Al menos algunos centinelas en la línea 84 detectan que el servidor principal está defectuoso y luego se realizará la conmutación por error.
sentinel monitor mymaster 20.0.0.11 6379 2
La línea 113 determina el período de tiempo en el que el servidor está inactivo, el valor predeterminado es 30000 milisegundos (30 segundos)
sentinel down-after-milliseconds mymaster 3000
El tiempo de espera máximo para la sección de falla en la línea 146 es 180000 (180 segundos)
sentinel failover-timeout mymaster 100000
Copie el archivo de configuración de arriba
scp redis-5.0.4/sentinel.conf [email protected]:/root/redis-5.0.4
scp redis-5.0.4/sentinel.conf [email protected]:/root/redis-5.0.4
Empezar maestro primero, luego esclavo
redis-sentinel redis-5.0.4/sentinel.conf &
Ver información centinela
redis-cli -h 20.0.0.11 -p 26379 info Sentinel
Ver archivos de registro
Prueba del modo centinela
ps -ef | grep redis
Elimine el ID de proceso del servidor de redis en el maestro
Ver información centinela
redis-cli -h 20.0.0.11 -p 26379 info Sentinel