elasticsearch 弹性搜索:分裂大脑,elasticsearch,configuration,elasticsearch,Configuration" /> elasticsearch 弹性搜索:分裂大脑,elasticsearch,configuration,elasticsearch,Configuration" />

elasticsearch 弹性搜索:分裂大脑

elasticsearch 弹性搜索:分裂大脑,elasticsearch,configuration,elasticsearch,Configuration,假设我们有两个ElasticSearch服务器A和B,它们都可以成为主服务器。还假设A是主控。还假设“最小主节点”属性也设置为1 如果服务器A(主服务器)由于某种原因崩溃,B将成为主服务器。当A重新启动并运行并加入集群时,它是否会再次作为主节点加入?我不明白为什么会出现这种大脑分裂。如果B成为主节点,然后A重新加入集群,那么如果B成为主节点,为什么A也会成为主节点?在任何时候,集群中都只有一个主节点。如果A离开或崩溃,B将成为主机。当A恢复时,它将作为新的主节点加入集群,并等待节点B崩溃后成为新

假设我们有两个ElasticSearch服务器A和B,它们都可以成为主服务器。还假设A是主控。还假设“最小主节点”属性也设置为1


如果服务器A(主服务器)由于某种原因崩溃,B将成为主服务器。当A重新启动并运行并加入集群时,它是否会再次作为主节点加入?我不明白为什么会出现这种大脑分裂。如果B成为主节点,然后A重新加入集群,那么如果B成为主节点,为什么A也会成为主节点?

在任何时候,集群中都只有一个主节点。如果A离开或崩溃,B将成为主机。当A恢复时,它将作为新的主节点加入集群,并等待节点B崩溃后成为新的主节点

如果A和B之间的网络短暂中断,则可能出现大脑分裂的情况。当这种情况发生时,A和B完全处于活动状态,并且认为它们在集群中是单独的,因此,由于A不再看到B,A将选择自己作为主节点。在这一点上,你的群集中有两位大师,这就是大脑分裂的情况

为了防止出现这种情况,您应该有奇数个符合主节点条件的节点,并确保
最小\u主节点\u节点
设置为2(符合主节点条件的节点数/2+1)。在这种情况下,只有当至少有两个符合主节点资格的节点存在并且可以相互通信以达到仲裁时,才可能选择新的主节点

运行具有两个主节点的集群会带来麻烦,因为如果您设置
最小主节点:1
,则可能会出现我上面描述的大脑分裂情况。如果设置
最小\u主\u节点:2
,则如果一个节点离开或关闭,集群将变为红色且不可操作。这就是为什么您应该始终运行奇数个符合主节点条件的节点(由于明显的原因,大于1个)


这是一篇关于大脑分裂情况的详细文章:

我不明白为什么需要
奇数个符合条件的主节点。你可以用4个最小的主节点来防止这个问题,对吗?我想他是从zookeeper那里得到奇数的想法的。“一个集合是一组2n+1个ZooKeeper服务器,其中n是大于0的任意数字。奇数个服务器允许ZooKeeper执行多数选举以获得领导权。在任何给定时间,集合中最多可以有n个失败的服务器,ZooKeeper群集将保持仲裁。”——@Cemre在您的配置中。,单个符合条件的主节点出现故障将使整个集群无法运行。尽管这样的配置可以防止大脑分裂,但从纯粹的高可用性角度来看,它将是低效和浪费的。/failover