赞
踩
目录
2.2、Redis哨兵心跳机制和Redis集群内部心跳机制区别
下一篇:redis 集群模式
哨兵是一个独立的进程。通过心跳机制监控和管理主从复制架构中的节点。哨兵会定期检测节点的健康状态,当主节点故障时,会自动进行故障转移,将一个从节点选举升级为新的主节点。
三点作用:
(1)监控:不断地检查Master和Slave是否运作正常;
(2)告警:当被监控的某个Redis节点出现问题时,哨兵可以通过 API 向管理员或者其他应用程序发送通知;(修改哨兵配置文件sentinel.conf的notify_script.sh,配置邮件或者短信告警)
(3)自动故障迁移:Master不能正常工作时,哨兵会进行自动故障迁移操作
多少个sentinel (哨兵)认为 master 失效才判定为客观下线?----半数哨兵以上
- 哨兵进程会周期性地向被监控的Redis节点发送PING命令,以检测节点的健康状态。
- Redis节点在收到PING命令后会回复一个PONG响应,表示节点正常运行。
- 如果哨兵进程在一定时间内没有收到PONG响应,就会将该节点标记为不可用,并触发相应的故障转移操作。
(1)作用范围:单个Redis节点或Redis主从复制架构用哨兵心跳、Redis集群用Gossip协议内部心跳。
真实企业:Redis集群模式下哨兵和Gossip协议心跳一般同时使用,使用哨兵来监控和管理Redis节点的健康状态,并使用Redis集群内部的心跳机制来实现节点间的通信和状态同步。
(2)监测对象:哨兵心跳用于监测和管理Redis节点、Redis集群内部心跳用于Redis集群中各个节点之间的通信和状态同步。
(3)实现方式:哨兵心跳由哨兵进程周期性地向被监控的Redis节点发送PING命令,并等待节点返回PONG响应; Redis集群内部心跳机制通过Gossip协议,各个节点会周期性地向其他节点发送PING消息,并等待其他节点的响应。
(1)每个 sentinel 哨兵节点每隔1s 向所有的master、slave以及其他 sentinel 节点发送一个PING命令;
(2)master 节点回复 PING 命令的时间超过阈值(默认30s),则这个 master 会被 sentinel 标记为主观下线;
(3)当sentinel 哨兵节点将 master 标记为主观下线后,会向其余所有的 sentinel 发送消息询问其他sentinel是否同意该master下线;
(4)每个sentinel收到命令之后,会根据发送过来的 ip和port 检查自己判断的结果,回复自己是否认为该master节点已经下线了;
(5)sentinel收到回复的个数大于设定值,则master就被标记为客观下线。
master客观下线,那就需要一个sentinel来负责故障转移
(1)判断客观下线的sentinel节点向其他 sentinel 节点发送自己的runid;
(2)目标sentinel回复是否同意master下线并选举领头sentinel,选择领头sentinel的过程符合先到先得的原则;
(3)当sentinel发现选自己的节点个数超过 一半以上自己就是领头节点;
(4)如果没有一个哨兵达到一半数量等一段时间重新选举。
有了领头sentinel之后,下面就是要做故障转移了。故障转移选择领头sentinel问题差不多,判断是要选哪个slaver节点来作为master。
(1)剔除掉一些不满足条件的slaver,这些slaver不会作为变成master的备选
(2)选主过程
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。