深入理解Redis原理:哨兵模式

目录

1、什么是哨兵模式

2、哨兵模式工作原理

2.1、心跳机制

2.2、Redis哨兵心跳机制和Redis集群内部心跳机制区别

2.3、哨兵判断master节点是否下线

2.4、基于Raft算法选举领头哨兵

2.5、故障转移


下一篇:redis 集群模式

1、什么是哨兵模式

哨兵是一个独立的进程。通过心跳机制监控和管理主从复制架构中的节点。哨兵会定期检测节点的健康状态,当主节点故障时,会自动进行故障转移,将一个从节点选举升级为新的主节点。

三点作用:

(1)监控:不断地检查Master和Slave是否运作正常;

(2)告警:当被监控的某个Redis节点出现问题时,哨兵可以通过 API 向管理员或者其他应用程序发送通知;(修改哨兵配置文件sentinel.conf的notify_script.sh,配置邮件或者短信告警)

(3自动故障迁移:Master不能正常工作时,哨兵会进行自动故障迁移操作

多少个sentinel (哨兵)认为 master 失效才判定为客观下线?----半数哨兵以上

2、哨兵模式工作原理

2.1、心跳机制

 - 哨兵进程会周期性地向被监控的Redis节点发送PING命令,以检测节点的健康状态。
 - Redis节点在收到PING命令后会回复一个PONG响应,表示节点正常运行。
 - 如果哨兵进程在一定时间内没有收到PONG响应,就会将该节点标记为不可用,并触发相应的故障转移操作。

2.2、Redis哨兵心跳机制和Redis集群内部心跳机制区别

(1)作用范围:单个Redis节点或Redis主从复制架构用哨兵心跳、Redis集群用Gossip协议内部心跳。

真实企业:Redis集群模式下哨兵和Gossip协议心跳一般同时使用,使用哨兵来监控和管理Redis节点的健康状态,并使用Redis集群内部的心跳机制来实现节点间的通信和状态同步。

(2)监测对象:哨兵心跳用于监测和管理Redis节点、Redis集群内部心跳用于Redis集群中各个节点之间的通信和状态同步

(3)实现方式:哨兵心跳由哨兵进程周期性地向被监控的Redis节点发送PING命令,并等待节点返回PONG响应; Redis集群内部心跳机制通过Gossip协议,各个节点会周期性地向其他节点发送PING消息,并等待其他节点的响应。

2.3、哨兵判断master节点是否下线

(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就被标记为客观下线

2.4、基于Raft算法选举领头哨兵

master客观下线,那就需要一个sentinel来负责故障转移

(1)判断客观下线的sentinel节点向其他 sentinel 节点发送自己的runid;

(2)目标sentinel回复是否同意master下线并选举领头sentinel,选择领头sentinel的过程符合先到先得的原则;

(3)当sentinel发现选自己的节点个数超过 一半以上自己就是领头节点;

(4)如果没有一个哨兵达到一半数量等一段时间重新选举。

2.5、故障转移

有了领头sentinel之后,下面就是要做故障转移了。故障转移选择领头sentinel问题差不多,判断是要选哪个slaver节点来作为master。

(1)剔除掉一些不满足条件的slaver,这些slaver不会作为变成master的备选

  • 剔除列表中已经下线的从服务
  • 剔除有5s没有回复sentinel的info命令的slave

(2)选主过程

  • 选择优先级最高的节点
  • 优先级相同,选择offset最大的,offset表示主节点向从节点同步数据的偏移量,越大表示同步的数据越多
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Redis哨兵模式是一种用于高可用性和自动故障转移的Redis部署架构。它通过监控Redis主节点和从节点的状态,实现自动故障检测和转移。以下是Redis哨兵模式的工作原理: 1. 哨兵节点:在Redis哨兵模式中,有一组特殊的Redis实例,称为哨兵节点。它们通过发送命令并接收响应来监控Redis服务器的状态。 2. 监控主节点:哨兵节点会定期发送命令到主节点,检查其是否正常运行。如果主节点未响应或被判定为不可用,哨兵节点会将其标记为下线。 3. 选举新主节点:当哨兵节点检测到主节点不可用时,它会发起一次领导者选举过程。哨兵节点会从剩余的Redis从节点中选出一个新的主节点,并将其升级为主节点。 4. 通知客户端:一旦新的主节点选举完成,哨兵节点会通知客户端发生了主节点切换。客户端可以根据通知来更新配置,连接到新的主节点。 5. 故障转移:如果旧的主节点重新上线,哨兵节点会检测到并将其重新配置为从节点。这样可以确保故障转移后的主从关系保持一致。 6. 监控多个主从集群:哨兵节点还可以监控多个Redis主从集群,以实现更高的可用性和故障转移能力。 总之,Redis哨兵模式通过哨兵节点的监控和领导者选举机制,实现了对Redis主节点的高可用性和自动故障转移。这种架构可以确保即使在主节点发生故障时,Redis服务仍然可用,并且能够自动恢复。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值