Solución de alta disponibilidad de Redis - Redis + Sentinel (Project Actual Combat)
Prefacio
Este entorno se basa en el sistema Centos 7.8 para crear un entorno de aprendizaje de Redis. Para
una construcción específica, consulte Redis-5.0.9 Implementación del entorno
1. Diseño de la arquitectura centinela
2. Preparación ambiental
papel | anfitrión | ip | Versión Redis |
---|---|---|---|
Maestro | node01 | 192.168.5.11 | Redis-5.0.9 |
esclavo1 | node02 | 192.168.5.12 | Redis-5.0.9 |
esclavo2 | node03 | 192.168.5.13 | Redis-5.0.9 |
Nota: este entorno se instala en base a redis-yum
Tres, configurar la sincronización maestro-esclavo
Maestro
[root@node01 ~]# vim /etc/redis.conf
bind 192.168.5.11
daemonize yes
appendonly yes
[root@node01 ~]# systemctl enable --now redis
esclavo1
[root@node02 ~]# vim /etc/redis.conf
bind 192.168.5.12
daemonize yes
appendonly yes
replicaof 192.168.5.11 6379
[root@node02 ~]# systemctl enable --now redis
esclavo2
[root@node03 ~]# vim /etc/redis.conf
bind 192.168.5.13
daemonize yes
appendonly yes
replicaof 192.168.5.11 6379
[root@node03 ~]# systemctl enable --now redis
Verificar el estado de sincronización maestro-esclavo
Maestro
esclavo1
esclavo2 ¡ Configuración de sincronización
maestro-esclavo exitosa! ! !
Cuarto, configura el servicio de centinela
Modificar l archivo de configuración
maestro
[root@node01 ~]# vim /etc/redis-sentinel.conf
daemonize yes
sentinel monitor mymaster 192.168.5.11 6379 2
[root@node01 ~]# systemctl enable --now redis-sentinel.service
Created symlink from /etc/systemd/system/multi-user.target.wants/redis-sentinel.service to /usr/lib/systemd/system/redis-sentinel.service.
[root@node01 ~]# netstat -lnutp | grep 6379
tcp 0 0 192.168.5.11:26379 0.0.0.0:* LISTEN 11911/redis-sentine
tcp 0 0 192.168.5.11:6379 0.0.0.0:* LISTEN 1698/redis-server 1
esclavo1
[root@node02 ~]# vim /etc/redis-sentinel.conf
bind 192.168.5.11
daemonize yes
sentinel monitor mymaster 192.168.5.11 6379 2
[root@node02 ~]# systemctl enable --now redis-sentinel.service
Created symlink from /etc/systemd/system/multi-user.target.wants/redis-sentinel.service to /usr/lib/systemd/system/redis-sentinel.service.
[root@node02 ~]# netstat -lnutp | grep 6379
tcp 0 0 192.168.5.12:26379 0.0.0.0:* LISTEN 11884/redis-sentine
tcp 0 0 192.168.5.12:6379 0.0.0.0:* LISTEN 1717/redis-server 1
esclavo2
[root@node03 ~]# vim /etc/redis-sentinel.conf
bind 192.168.5.13
daemonize yes
sentinel monitor mymaster 192.168.5.11 6379 2
[root@node03 ~]# systemctl enable --now redis-sentinel.service
Created symlink from /etc/systemd/system/multi-user.target.wants/redis-sentinel.service to /usr/lib/systemd/system/redis-sentinel.service.
[root@node03 ~]# netstat -lnutp | grep 6379
tcp 0 0 192.168.5.13:26379 0.0.0.0:* LISTEN 11791/redis-sentine
tcp 0 0 192.168.5.13:6379 0.0.0.0:* LISTEN 1648/redis-server 1
Ver el estado de centinela
Rastrear archivos de registro de
centinela Ver información de centinela
Ver información del maestro centinela
Ver información de centinela de Salve
Cinco, simular la conmutación por error centinela
Detenga el servicio master redis
[root@node01 ~]# systemctl stop redis
[root@node01 ~]# netstat -lnutp | grep redis
tcp 0 0 192.168.5.11:26379 0.0.0.0:* LISTEN 11911/redis-sentine
Ver el estado maestro-esclavo después de 3 minutos
interruptor maestro a node02
Registro de seguimiento
Ver estado maestro-esclavo
El maestro escribe y elimina datos y la
conmutación por error se realiza correctamente. ! !
Iniciar el servicio node01 redis
[root@node01 ~]# systemctl start redis
[root@node01 ~]# netstat -lnutp | grep redis
tcp 0 0 192.168.5.11:6379 0.0.0.0:* LISTEN 12031/redis-server
tcp 0 0 192.168.5.11:26379 0.0.0.0:* LISTEN 11911/redis-sentine
Ver estado maestro-esclavo
El maestro escribe los datos y el bálsamo verifica el estado de sincronización.
maestro escribe datos
node01 view
node03 view
¡Se realizan funciones de conmutación por error y conmutación por error! ! !
Recuperación exitosa de fallas (rol de elección no preventiva)
Nota: Después de que el maestro envía la falla, Sentinel cambia la calibración del color cambiando el archivo de configuración del nodo, para cumplir con los requisitos de conmutación por error y conmutación por error.
¡El centinela de Redis está configurado correctamente! ! !