Sentinel 哨兵模式
Redis Sentinel 官网
Redis 的 Sentinel 文档 -- Redis中国用户组(CRUG)
Sentinel Redis 命令参考(红色)
Sentinel 通过监控的方式获取主机的工作状态是否正常,当主机发生故障时, Sentinel 会自动进行 Failover(即故障转移),并将其监控的从机提升主服务器(master),从而保证了系统的高可用性。
哨兵(sentinel)是一个分布式系统,用于对主从结构中的每台服务器进行监控,当出现故障时通过投票机制选择新的master并将所有slave连接到新的master。
哨兵模式是一种自动选择老大的模式,即在老大宕机之后,哨兵模式会根据哨兵们的内部投票,自动的重新选出一个新的老大。
注意:配置sentinel之前需先建立master-slave replication
哨兵的作用
● 监控
不断的检查master和slave是否正常运行
master存活检测、master与slave运行情况检测
● 通知(提醒)
当被监控的服务器出现问题时,向其他(哨兵间,客户端)发送通知
● 自动故障转移
断开master与slave连接,选取一个slave作为master,将其他slave连接到新的master,并告知客户端新的服务器地址
注意:哨兵也是一台redis服务器,只是不提供数据服务,通常哨兵配置数量为单数
哨兵工作原理【其实就是主从同步】
阶段一:监控阶段,用于同步各个节点的状态信息,sentinel会向master、slave以及其他sentinel获取状态,sentinel直接会组件“对应频道”,大家一起发布消息、订阅消息,收消息,同步信息等;
阶段二:通知,保持联通;
阶段三:故障转移,发现问题,竞选负责人,优选新master,新master上任,其他slave切换master,原master座位slave故障回复后连接;
● 通过发送命令,让Redis服务器返回监控其运行状态,包括主服务器和从服务器。
● 当哨兵监测到master宕机,会自动将slave切换成master,然后通过发布订阅模式通知其他的从服务器,修改配置文件,让它们切换主机。
● 一般情况下,至少会需要3~5个哨兵对redis 进行监控,我们可以通过修改端口启动多个sentinel 服务。
总结
● 将宕机的master下线 ● 谁来确认master宕机了
● 找一个slave作为master ● 找一个主?怎么找法?
● 通知所有的slave连接新的master ● 修改配置后,原始的主恢复了怎么办?
● 启动新的master与slave
● 全量复制*N+部分复制*N
第一阶段:监控阶段
第二阶段:通知阶段
1、*
*
2*
*
3*
*
4*
*
5*
*
6*
*
第三阶段
1、*
*
2*
*
3*
*
4*
*
5*
*
6*
*
7*
*
8*
*
9*
*
10*
*
*
11、*
*
12*
*
13*
*
14*
*
15*
*
16*
*
17*
18*
*
19*
*
20*
*
21、*
*
22*
*
23*
*
24*
*
25*
*
26*
*
27*
*
28*
*
29*
*
30*
*
31、*
*
32*
*
*
*