阅读 96

Redis哨兵出了问题怎么办

在 Redis 的主从集群中,哨兵节点可以负责节点状态的监控、新主节点的选择、故障转移结果的通知。

问题

哨兵通过定时 PING 主从库来判断它们的状态是否正常。如果哨兵检测到从库的状态异常,可以判定其下线,对整个系统的影响不大。如果出现状态异常的是主库,那么,就要启动主从切换,需要完成新主节点的选择和所有节点和客户端的通知,需要计算资源和通信资源。

但是,这里存在一个问题。如果由于哨兵节点自身的故障,或者哨兵节点和主库节点之间的网络问题,导致哨兵误判了主库的状态,从而启动主从切换,这将造成大量的计算和通信资源浪费。

哨兵集群

一个哨兵不行,那就让多个少平一起来工作,通过提供冗余来提高可用性。如果一个哨兵出问题的概率是百分之一,那三个哨兵同时出问题的概率就是百万分之一。这就是哨兵集群。

基于 Redis 的 pub/sub 机制,多个哨兵可以在主节点的 __sentinel__:hello 频道互相发现。哨兵通过这个频道发布自己的连接信息,并获取其它哨兵的连接信息。这样,多个哨兵之间就形成了一个哨兵集群。

节点下线的判断

有了哨兵集群,节点下线的判断也更加复杂和严谨。

之前提到的哨兵判定主库下线,被称为「主观下线」,而哨兵集群判定主库下线,需要达到「客观下线」的条件,这个条件就是,需要有一半以上的哨兵节点,判定主库为主管下线的状态。

如此,便能极大降低哨兵对主库状态误判的概率。


作者:Pseudocode
链接:https://juejin.cn/post/7018175432298233892


文章分类
后端
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐