【Redis】哨兵

哨兵

image-20200809235844945

哨兵 哨兵(sentinel) 是一个分布式系统,用于对主从结构中的每台服务器进行监控,当出现故障时通过投票机制选择新的master并将所有slave连接到新的master。

image-20200809235931417

哨兵的作用

●监控

不断的检查master和slave是否正常运行。

master存活检测、master与slave运行情况检测

●通知(提醒)

当被监控的服务器出现问题时,向其他(哨兵间,客户端)发送通知。

●自动故障转移

断开master与slave连接,选取一个slave作为master ,将其他slave连接到新的master ,并告知客户端新的服务器地址

注意: 哨兵也是一台redis服务器 ,只是不提供数据服务 通常哨兵配置数量为单数

配置哨兵

●配置一拖二的主从结构

●配置三个哨兵(配置相同,端口不同)

​ 参看sentinel.conf

●启动哨兵

redis - sentinel sentinel-端口号. conf

image-20200810000455922

主从切换

哨兵在进行主从切换过程中经历三个阶段:

1.监控

2.通知

3.故障转移

阶段一:监控阶段

image-20200811090502814

image-20200810212618019

阶段二:通知阶段

维护信息对等的阶段

image-20200810212657630

阶段三:故障转移阶段

超过半数sentinel认为master挂了 它就挂了

标志从:SRI_S_DOWN(一个哨兵认为它挂了)变为了SRI_O_DOWN(半数认为它挂了)

image-20200810212904261

当选的sentiel会去选择备选的master

image-20200810213710174

●服务器列表中挑选备选master

​ ●在线的(pass掉不在线的)

​ ●响应慢的(pass掉)

​ ●与原master断开时间久的

​ ●优先原则

​ ●优先级

​ ●offset(优先级相同的情况下,选择偏移量小)

​ ●runid(如果优先级和offset相同,选择runid小的)

●发送指令( sentinel )

​ ●向新的master发送slaveof no one

​ ●向其他slave发送slaveof 新masterIP端口

总结

●监控

​ ●同步信息

●通知

​ ●保持联通

●故障转移

​ ●发现问题

​ ●竞选负责人

​ ●优选新master

​ ●新master上任,其他slave切换到新的master ,原master作为slave故障恢复后连接