Replicación maestro-esclavo de Redis + centinela centinela

Uno, replicación maestro-esclavo de redis

Modificar el archivo de configuración

[root@master src]# vim /usr/local/redis/redis.conf
#master、slave节点都需要修改
#69行 修改监听地址为0.0.0.0(在实验环境使用),现网环境建议绑定从服务器IP地址
#136行 开启守护进程
daemonize yes
#171行 修改日志文件目录
logfile /var/log/redis_6379.log
#263行 修改工作目录
dir /var/lib/redis/6379
#699行 开启AOF持久化功能
appendonly yes

#nodo esclavo

#与master节点修改一致,多修改一个同步master节点IP和端口
replicaof 20.0.0.11 6379
服务重启
/etc/init.d/redis_6379 restart

Verificar el efecto maestro-esclavo

master上看日志
tail -f /var/log/redis_6379.log 
Replica 20.0.0.12:6379 asks for synchronization
Replica 20.0.0.13:6379 asks for synchronization

Verifique el nodo esclavo en el maestro

127.0.0.1:6379> info replication
#Replication
role:master
connected_slaves:2
slave0:ip=20.0.0.12,port=6379,state=online,offset=1246,lag=0
slave1:ip=20.0.0.13,port=6379,state=online,offset=1246,lag=1

2. Modo centinela

2.1 Principios del modo centinela

  • El centinela es un sistema distribuido utilizado 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
  1. Supervisión
    Compruebe continuamente si el maestro y el esclavo funcionan con normalidad.
    Detección de supervivencia de maestro, detección de operación de maestro y esclavo

  2. Notificación (recordatorio)
    Cuando haya un problema con el servidor monitoreado, envíe una notificación a otro (centinela, cliente).

  3. 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
    PS: 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 implementarse en todos los nodos.
El modo centinela monitoreará si todos los nodos de trabajo de redis son normales. Cuando el maestro tiene un problema, porque otros nodos pierden contacto con el nodo maestro, votará. Después de que la votación sea la mitad de los votos, se considera que hay un problema con el maestro, y luego se notificará a la sala de centinelas. Seleccione uno de los esclavos como nuevo maestro

2.2 Configuración de Sentinel

Configuración del modo centinela

  1. Modificación del archivo de configuración del modo centinela ### (Todos los nodos deben modificarse)
vi redis-5.0.4/sentinel.conf
17/protected-mode no  #关闭保护模式
26/daemonize yes #指定sentinel为后台启动
36/logfile "/var/log/sentinel.log" #指定日志存放路径
65/dir "/var/lib/redis/6379" #指定数据库存放路径
84/sentinel monitor mymaster 20.0.0.11 6379 2  #至少几个哨兵检测到主服务器故障了,才会进行故障迁移
113/sentinel down-after-milliseconds mymaster 3000 #判定服务器down掉的时间周期,默认30000毫秒(30秒)
146/sentinel failover-timeout mymaster 100000 #故障节的的最大超时时间为180000180秒)
  1. Activar el modo centinela
先启master,再启slave
redis-sentinel redis-5.0.4/sentinel.conf &
  1. Ver información centinela
redis-cli -h 20.0.0.11 -p 26379 info Sentinel
# Sentinel
sentinel_masters:1
sentinel_tilt:0
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
sentinel_simulate_failure_flags:0
master0:name=mymaster,status=ok,address=20.0.0.11:6379,slaves=2,sentinels=3
  1. Simulación de fallas
  • Ver el número de proceso de redis-server
ps -ef | grep redis
root      57031      1  0 15:20 ?        00:00:07 /usr/local/bin/redis-server 0.0.0.0:6379
root      57742      1  1 16:05 ?        00:00:07 redis-sentinel *:26379 [sentinel]
root      57883  57462  0 16:17 pts/1    00:00:00 grep --color=auto redis
  • Mata el ID de proceso de redis-server en el maestro
kill -9 57031 #master上redis-server的进程号
  • Los resultados de la verificación
    se pueden ver de ambas formas
tail -f /var/log/sentinel.log    //查看日志文件
57742:X 07 Aug 2020 16:19:21.170 # +failover-state-select-slave master mymaster 20.0.0.12 6379
57742:X 07 Aug 2020 16:19:21.170 # -sdown slave 20.0.0.13:6379 20.0.0.13 6379 @ mymaster 20.0.0.12 6379
57742:X 07 Aug 2020 16:19:21.272 # +selected-slave slave 20.0.0.13:6379 20.0.0.13 6379 @ mymaster 20.0.0.12 6379
57742:X 07 Aug 2020 16:19:21.272 * +failover-state-send-slaveof-noone slave 20.0.0.13:6379 20.0.0.13 6379 @ mymaster 20.0.0.12 6379
57742:X 07 Aug 2020 16:19:21.338 * +failover-state-wait-promotion slave 20.0.0.13:6379 20.0.0.13 6379 @ mymaster 20.0.0.12 6379
57742:X 07 Aug 2020 16:19:21.402 # -failover-abort-slave-timeout master mymaster 20.0.0.12 6379
57742:X 07 Aug 2020 16:19:21.799 # -sdown master mymaster 20.0.0.12 6379
57742:X 07 Aug 2020 16:19:21.826 # +new-epoch 41
57742:X 07 Aug 2020 16:19:21.827 # +vote-for-leader b12178afd9f862e0ead00763c2c7f1ae7f5de22e 41
57742:X 07 Aug 2020 16:19:31.137 * +convert-to-slave slave 20.0.0.13:6379 20.0.0.13 6379 @ mymaster 20.0.0.12 6379
redis-cli -p 26379 INFO Sentinel
# Sentinel
sentinel_masters:1
sentinel_tilt:0
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
sentinel_simulate_failure_flags:0
master0:name=mymaster,status=ok,address=20.0.0.12:6379,slaves=2,sentinels=3

Supongo que te gusta

Origin blog.csdn.net/qq_46480020/article/details/111353748
Recomendado
Clasificación