我被告知使用奇数的节点来避免分裂的大脑问题,如果配置主节点的奇数,主节点的投票也很容易。
但是,假设集群配置了5个节点,并且有一个主节点处于下降状态,那么,将有效地有4个节点(同样是偶数)
PS :它不仅限于弹性搜索,而且适用于所有的分布式系统,在这些系统中,主选举通过选举过程进行。
发布于 2020-04-23 09:20:05
请记住,需要超过一半 (合格的主节点)才能保持集群的可操作性。
场景(3个主节点,仲裁的最小数量为2)
节点A退出,B和C可以决定一个新的主,而A不能成为主
场景(4个主节点,仲裁的最小数目为3)
节点A退出,B,C和D可以决定一个新的主,而A不能成为主。您可以在这里看到,从3个节点到4个节点,没有增加您的弹性。你不能失去两个节点。
场景(5个主节点,仲裁的最小数目为3)节点A和B退出,C、D和E可以决定一个新的主节点,而A和B不能。您可以在这里看到,从3个节点到5个节点,您确实提高了您的弹性。
这不仅仅是集群中节点的数量。正是这个具有仲裁策略的数字使主节点的奇数成为更好的选择。此外,分裂的大脑问题是由最小的主节点来解决的,这样才能达到法定人数。您将不会有一个分裂的大脑,只要超过一半的主节点(可以投票)是需要选择一个新的主节点。
发布于 2022-03-02 11:11:30
简单的答案是:“奇数大小的集群可以容忍与相同大小的集群相同的故障次数,但节点较少。”
正如您所知道的,经验法则是discovery.zen.minimum_master_nodes应该设置为N/2 + 1,其中N是集群中合格主节点的数目。例如,对于3节点集群,minimum_master_nodes应该设置为3/2 +1=2(舍入到最近的整数)。
简单的解释是(参考:);如果我有一个3或4个节点集群,集群只能容忍一个主节点的丢失。如果我有一个5或6个节点集群,它可以容忍2个主节点的丢失。
那么,为什么我要使用偶数节点呢?
这将导致1)增加一台机器的成本,而不增加容错能力。2)随着创建更多节点,单个节点的故障更有可能发生。3)主要是将节点划分为两个不同的可用区域。如果在一个AZ中发生一些网络故障,具有均匀分布的集群将很快成为不可操作的。分裂的大脑是不会发生的,但可用性受到损害。
希望这个答案有帮助!
https://stackoverflow.com/questions/61381604
复制相似问题