调研Redis高可用两种方案
这样,哨兵节点就能从info呼吁中自动获取到从节点信息,因此那些后续才插手的从节点信息不必要显式设置就能自动感知。 每隔2秒,每个哨兵节点将会向Redis数据节点的__sentinel__:hello频道同步自身获得的主节点信息以及当前哨兵节点的信息,因为其他哨兵节点也订阅了这个频道,因此现实上这个操纵可以互换哨兵节点之间关于主节点以及哨兵节点的信息。 这一操纵现实上完成了两件工作: * 发明新的哨兵节点:假若有新的哨兵节点插手,此时生涯下来这个新哨兵节点的信息,后续与该哨兵节点成立毗连。 * 互换主节点的状态信息,作为后续客观判定主节点下线的依据。 每隔1秒,每个哨兵节点向主、从数据节点以及其他sentinel节点发送ping呼吁做心跳探测,这个心跳探测是后续主观判定数据节点下线的依据。 上面三个监控使命中的第三个探测心跳使命,假如在设置的down-after-milliseconds之后没有收到有用回覆,那么就以为该数据节点“主观下线(sdown)”。 为什么称为“主观下线”?由于在一个漫衍式体系中,有多个呆板在一路联动事变,收集也许呈现各类状况,仅凭一个节点的判定还不敷以以为一个数据节点下线了,这就必要后头的“客观下线”。 客观下线当一个哨兵节点以为主节点主观下线时,该哨兵节点必要通过”sentinel is-master-down-by addr”呼吁向其他哨兵节点咨询该主节点是否下线了,假若有高出半数的哨兵节点都答复了下线,此时以为主节点“客观下线”。 当主节点客观下线时,必要推举出一个哨兵节点做为哨兵率领者,以完成后续选出新的主节点的事变。 这个推举的概略思绪是:
可以看到,这个推举率领者的流程很像raft中推举leader的流程。 在剩下的Redis从节点中,凭证以下次序来选择新的主节点:
选择了新的主节点之后,还必要最后的流程让该节点成为新的主节点:
原文地点: https://www.codedump.info/post/20190409-redis-sentinel/ 参考阅读:
【编辑保举】
点赞 0 (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |