重新将分离的数据节点重新加入集群

时间:2019-01-09 18:38:30

标签: elasticsearch elastic-stack

我有3个elasticsearch节点,所有这些节点都充当主数据节点。 由于连接问题,一个节点离开了群集,并将iteslf提升为主节点。现在我有两个群集,第一个群集有两个节点,另一个群集有一个节点。由于所有节点都处于负载均衡器之下,因此所有节点都收到了logstash的请求。如果我重新启动单节点集群并将其重新添加回原始集群,会发生什么?

1 个答案:

答案 0 :(得分:0)

您遇到的问题称为裂脑问题。

这是它的描述

  

当节点崩溃或发生故障时出现问题   由于某种原因在节点之间进行通信。如果奴隶之一   节点无法与主节点通信,它启动   从仍与之连接的主节点中选择一个新的主节点。   然后,新的主节点将接管先前的节点   主节点。如果较旧的主节点重新加入群集,或者   恢复通信后,新的主节点会将其降级为   奴隶,所以没有冲突。在大多数情况下,此过程是   无缝且“行之有效”。

     

但是,请考虑一个只有两个节点的场景:一个主节点   和一个奴隶。如果两者之间的通讯中断,   奴隶将被提升为主人,但一旦沟通   恢复后,您将拥有两个主节点。原始主节点   认为奴隶掉了,应该重新加入奴隶,而新的   主人认为原来的主人掉落了,应该重新加入   奴隶。因此,据说您的集群大脑裂。

指向它的引用链接:https://qbox.io/blog/split-brain-problem-elasticsearch

为避免此问题,请将其添加到主节点上的yml文件中: discovery.zen.minimum_master_nodes: 2

The formulae for this is : Prevent the "split brain" by configuring the 

majority of nodes (total number of master-eligible nodes / 2 + 1)