Redis学习(Redis哨兵)
Redis学习(Redis哨兵)
引入:master节点宕机怎么办
一个可行的解决办法是:在master节点宕机之后,立刻将一个slave节点变成master节点,之后将恢复后的master节点变为slave节点
那么监测和重启该怎么做,这里我们就需要哨兵
哨兵的作用和原理
哨兵(Sentinel)实现主从集群的自动故障恢复
- 监控:哨兵不断检查master和slave是否按预期工作
- 恢复:master故障后,sentinal会将slave提升为master
- 通知:sentinal充当Redis客户端的服务发现来源,当集群发生故障转移时,会将最新信息推送到Redis的客户端
服务状态监控
sentinal基于心跳机制监测服务状态,也就是每隔1s向集群的每个示例发送ping命令
- 主观下线:某个哨兵节点发现某个实例未在规定时间内响应,则认为该实例主观下线
- 客观下线:超过指定数量(quorum)的哨兵认为该实例主观下线,则该实例就是客观下线。quorom最好超过哨兵实例数量的一半
选举新的master
选举新的master的依据如下:
- 首先判断slave与master节点断开时间的长短,如果超过指定值则会排除该slave节点
- 然后判断slave节点的slave-priotity,越小优先级就越高,但是当优先级为0时代表永远不会被提升为master节点
- 判断slave的offset,越大代表数据越新,优先级越高
- 前面都一样的情况下判断slave节点的运行id大小,越小则优先级越高
如何实现故障转移
故障转移的步骤如下:
- 哨兵给备选的slave节点发送slave of no one的指令,让该节点成为master
- 哨兵给其它所有的slave节点发送slaveof命令,让这些slave成为新master的从节点,并且从新的master上同步数据
- 最后,哨兵节点将故障节点标记为slave,当故障节点恢复后自动成为新的master的slave节点
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了