Redis Sentinel哨兵模式

本文最后更新于:2022年6月11日 下午

Redis Sentinel哨兵模式

Redis 的 Sentinel 最小配置是 一主一从。

主要功能

  1. 监控
    Sentinel会不断的检查主服务器和从服务器是否正常运行。
  2. 通知
    当被监控的某个Redis 服务器出现问题,Sentinel通过API脚本向管理员或者其他的应用程序发送通知。
  3. 自动故障转移
    当主节点不能正常工作时,Sentinel会开始一次自动的故障转移操作,它会将失效主节点的其中一个从节点升级为新的主节点,并将其他从节点指向新的主节点。

主观下线和客观下线

默认情况下,每个Sentinel节点会以每秒一次的频率对Redis节点和其它的Sentinel节点发送PING命令,并通过节点的回复来判断该节点是否在线。

  1. 主观下线
    每个 sentinel 节点对 redis 节点失败的“偏见”
    如果在down-after-milliseconds毫秒内,Sentinel没有收到目标节点的有效回复,则会判定该节点下线。
  2. 客观下线
    所有sentinel节点对master Redis节点失败“达成共识”
    Sentinel节点会通过sentinel is-master-down-by-addr命令,向其它Sentinel节点询问对该主节点的状态判断。如果超过<quorum>个数的节点判定该主节点不可达,则该Sentinel节点会判断该主节点下线。

哨兵模式设置

一个稳健的 Redis Sentinel 集群,应该使用至少 三个 Sentinel 实例,并且保证讲这些实例放到 不同的机器 上,甚至不同的 物理区域。(没那么多服务器,只能自己本地跑了几台虚拟机,每台虚拟机一个redis数据节点,一个哨兵节点)
测试5个虚拟机
哨兵模式主要配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
port 26379
#sentinel日志文件
logfile ""
#设置成后台运行
daemonize yes
# 工作目录
dir /tmp
# 这里定义主库的IP和端口,还有最后的5表示要达到5台sentinel认同才认为主库已经挂掉(即客观失效),quorum 要配置成 sentinel 节点数的一半 + 1;
sentinel monitor mymaster 127.0.0.1 6379 5
# 主库在30000毫秒(即30秒)内没有反应就认为主库挂掉(即主观失效)
sentinel down-after-milliseconds mymaster 30000
# 若新主库当选后,允许最大可以同时从新主库同步数据的从库数
sentinel parallel-syncs mymaster 1
# 若在指定时间(即180000毫秒,即180秒)内没有实现故障转移,则会自动再发起一次
sentinel failover-timeout mymaster 180000
sentinel deny-scripts-reconfig yes

主从复制依旧不变
哨兵模式配置结果

1
2
3
4
#sentinel配置文件里的port
redis-cli -p 26379
#然后使用如下命令查看
info sentinel

成功结果:

1
2
3
4
5
6
7
# 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=192.168.31.44:6379,slaves=4,sentinels=5

设置主服务器要在前边

1
2
3
4
sentinel monitor mymaster 127.0.0.1 6379 5 #master相当于一个变量
# 主库在30000毫秒(即30秒)内没有反应就认为主库挂掉(即主观失效)
sentinel down-after-milliseconds mymaster 30000
...

不然启动会报:

1
No such master with specified name.

Redis Sentinel哨兵模式
http://www.muzili.ren/2022/06/11/redis哨兵模式/
作者
jievhaha
发布于
2022年6月11日
许可协议