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