哨兵模式
1. 简介
1.1 哨兵的作用
- 主从状态检测
- 如果Master 异常,则会进行 Master - Replica 切换, 将其中一个Replica 作为Master,将之前的Master 作为Replica (如果重启成功)
1.2 哨兵模式架构
(1)单哨兵模式
(2)多哨兵模式
多个哨兵,不仅同时监控主从状态,且哨兵之间也是相互监控
1.3 下线
(1)主观下线
Subjectively Down,简称 SDOWN,指的是当前 Sentinel 实例对某个redis服务器做出的下线判断。
(2)客观下线
Objectively Down, 简称 ODOWN,指的是多个 Sentinel 实例在对Master Server做出 SDOWN 判断,并且通过 SENTINEL is-master-down-by-addr 命令互相交流之后,得出的Master Server下线判断,然后开启failover.
1.4 工作原理
(1)每个Sentinel以每秒钟一次的频率向它所知的Master,Slave以及其他 Sentinel 实例发送一个 PING 命令 ;
(2)如果一个实例(instance)距离最后一次有效回复 PING 命令的时间超过 down-after-milliseconds 选项所指定的值, 则这个实例会被 Sentinel 标记为主观下线;
(3)如果一个Master被标记为主观下线,则正在监视这个Master的所有 Sentinel 要以每秒一次的频率确认Master的确进入了主观下线状态;
(4)当有足够数量的 Sentinel(大于等于配置文件指定的值)在指定的时间范围内确认Master的确进入了主观下线状态, 则Master会被标记为客观下线 ;
(5)在一般情况下, 每个 Sentinel 会以每 10 秒一次的频率向它已知的所有Master,Slave发送 INFO 命令 ;
(6)当Master被 Sentinel 标记为客观下线时,Sentinel 向下线的 Master 的所有 Slave 发送 INFO 命令的频率会从 10 秒一次改为每秒一次 ;
(7)若没有足够数量的 Sentinel 同意 Master 已经下线, Master 的主观下线状态就会被移除;
若 Master 重新向 Sentinel 的 PING 命令返回有效回复, Master 的客观下线状态就会被移除;
2. 哨兵配置
(1)先配置号redis集群
(2)在redis集群基础上完成哨兵的配置
2.1 配置哨兵
(1)准备配置文件
cd ~/config/redis-leader-follower/
cp /opt/module/redis-6.0.9/sentinel.conf ./
vim sentinel.conf
(2)配置内容
# 禁止保护模式
protected-mode no
# 配置监听的主服务器,这里sentinel monitor代表监控
# mymaster代表服务器的名称,可以自定义
# 192.168.11.128代表监控的主服务器
# 6379代表端口
# 2代表只有两个或两个以上的哨兵认为主服务器不可用的时候,才会进行failover操作。
sentinel monitor mymaster 192.168.11.128 6379 2
# 后台启动
daemonize yes
2.2 启动哨兵
cd /usr/local/bin
redis-sentinel /home/xuxu/config/redis-leader-follower/sentinel.conf
2.3 测试哨兵
(1)关闭master
127.0.0.1:6379> shutdown
(2) 查看replica1 和 replica2 的状态
info replication