redis自学(33)哨兵的作用和工作原理
哨兵的作用
Redis提供了哨兵(Sentinel)机制来实现主从集群的自动故障恢复。哨兵的结构和作用如下:
服务状态监控
Sentinel基于心跳机制监测服务状态,每隔1秒向集群的每个实例发送ping命令。
l 主观下线:如果某sentinel节点发现某实例未在规定时间响应,则认为该实例主观下线。
l 客观下线:若超过指定数量(quorum)的sentinel都认为该实例主观下线,则该实例客观下线。Quorum值最好超过sentinel实例数量的一半。
选举新的master
一旦发现master故障,sentinel需要在slave中选择一个作为新的master,选择依据是这样的:
l 首先会判断slave节点与master节点断开时间长短,如果超过指定值(down-after-milliseconds * 10)则会排除该slave节点
l 然后判断slave节点的slave-priority值,越小优先级越高,如果是0则用不参与选举。(默认值是1,如果不修改的配置的话,这一条等于没有)
l 如果slave-priority一样,则判断slave节点的offset值,越大说明数据越新,优先级越高(最关键的)
l 最后是判断slave节点的运行id大小,越小优先级越高
如何实现故障转移
当选中了其中一个slave为新的master后(例如slave1),故障的转移的步骤如下:
Sentinel给备选的slave1节点发送slaveof no one命令,让该节点成为master
Sentinel给所有其他slave发送slaveof 192.168.150.101 7002 命令。让这些slave成为新master的从节点,开始从新的master上同步数据
最后,sentinel将故障节点标记为slave,当故障节点恢复后会自动成为新的master的slave节点
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!