哨兵模式

1. 简介

1.1 哨兵的作用

  • 主从状态检测
  • 如果Master 异常,则会进行 Master - Replica 切换, 将其中一个Replica 作为Master,将之前的Master 作为Replica (如果重启成功)

1.2 哨兵模式架构

(1)单哨兵模式

redis哨兵模式 查询master redis哨兵模式连接命令_Server

(2)多哨兵模式

多个哨兵,不仅同时监控主从状态,且哨兵之间也是相互监控

redis哨兵模式 查询master redis哨兵模式连接命令_Server_02

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

redis哨兵模式 查询master redis哨兵模式连接命令_服务器_03