
Redis哨兵机制
哨兵本身也是分布式的,作为一个哨兵集群去运行,互相协同工作。判断一个master node是宕机了,需要大部分的哨兵都同意才行,涉及到了分布式选举的问题
发布日期:2021-05-06 23:31:01
浏览次数:35
分类:技术文章
本文共 1113 字,大约阅读时间需要 3 分钟。
文章目录
1.分布式哨兵的作用
- 集群监控,监控master、slave进程是否正常工作
- 故障转移,master故障(哨兵按照过半机制),自动转移到Slave上。并通知Client新的master地址
- 消息通知,若某个Redis实例故障,就发消息给管理员
2.sdown和odown的转换机制
sdown:主观宕机,就1个哨兵ping1个master,超过is-master-down-after-milliseconds指定的毫秒数之后,认为master宕机了
odown:客观宕机,quorum数量的哨兵都觉得master宕机了
3.哨兵集群的自动发现机制
哨兵之间的互相发现,通过redis的pub/sub系统实现。哨兵向sentinel:hello这个channel里发送一个消息(自己的host、ip、runid和监控下的master的配置信息),且彼此之间相互共享
4.哨兵自动纠正slave
如果slave是master的候选人,哨兵会确保它能复制master的数据。一旦slave连接到错误的master,哨兵会对其进行纠正
5.slave —> master选举算法
如果master被认定为odown了,且majority哨兵也允许主备切换,某个哨兵就会执行切换。选举slave:
- 跟master断开连接的时间
- slave优先级
- 复制offset
- run id
如果S和M之间断开连接超过(down-after-milliseconds * 10) + master宕机时间,该slave就会被认定不合适。接着会进行slave排序:
- slave priority越低,优先级就越高
- 如果slave priority相同,那么看replica offset,哪个slave复制了越多的数据,offset越靠后,优先级就越高
- 如果上面两个条件都相同,那么选择一个run id比较小的那个slave
如果某个哨兵要执行主备切换,必须满足过半机制。如果某个哨兵要切换,就会从master候选人那获取configuration epoch作为version号,每次切换的verison唯一。如果第一个哨兵失败了,其他哨兵会等待failover-timeout时间后继续执行切换,并重新获取version号。
哨兵执行主备切换完毕后,会在本地更新生成最新的master配置,并通过pub/sub共享给其他哨兵。其他哨兵根据version号来更新自己的master配置
发表评论
最新留言
初次前来,多多关照!
[***.217.46.12]2025年03月21日 06时56分31秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
php教程--案例20(用户登录)
2019-03-03
jQuery练习t76
2019-03-03
jQuery练习t78
2019-03-03
jQuery练习t80
2019-03-03
jQuery练习t81
2019-03-03
jQuery中使用animate方法替代其他动画方法
2019-03-03
jQuery练习t85
2019-03-03
jQuery练习t86
2019-03-03
jQuery练习t88
2019-03-03
jQuery练习t90
2019-03-03
jQuery练习t110
2019-03-03
jQuery练习t123
2019-03-03
jQuery练习t167,从0到1
2019-03-03
jQuery练习t271,从0到1
2019-03-03
jQuery练习t310,从0到1
2019-03-03
asp.net代码练习 work015 回调技术
2019-03-03
asp.net代码练习 work016 fileupload文件上传
2019-03-03
asp.net代码练习 work021 DataReader的使用
2019-03-03
PHP7.0--如何使用函数的引用
2019-03-03
Java基础--01--数据类型/方法/数组
2019-03-03