ELASTICSEARCH:裂脑

时间:2016-09-14 11:33:21

标签: elasticsearch configuration

假设我们有两个ElasticSearch服务器A和B,它们都可以成为主服务器。假设A是主人。还假设minimum_master_nodes属性也设置为1。

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

1 个答案:

答案 0 :(得分:7)

任何时候,群集中只有一个主节点。如果A离开或崩溃,B成为主人。当A重新启动时,它将简单地将群集作为新的符合主节点的节点加入,并等待节点B崩溃以便成为新的主节点。

如果A和B之间的网络中断了一小段时间,就会出现裂脑情况。当发生这种情况时,A和B完全活着并且认为它们在群集中是独立的,所以由于A不再看到B,A将选择自己作为主人。那时,你的群集中有两个主人,就是大脑裂开的情况。

为了防止这种情况,您应该拥有奇数个符合主节点的节点,并确保minimum_master_nodes设置为2(符合主节点的节点数/ 2 + 1)。在这种情况下,如果至少有两个符合主节点的节点存在并且可以相互通信以达到法定人数,则只能选择新的主节点。

运行具有两个符合主节点的节点的群集正在调用麻烦,因为如果设置minimum_master_nodes: 1,您可能最终处于我上面描述的裂脑情况。如果设置minimum_master_nodes: 2,则如果一个节点离开或关闭,则群集将变为红色且不可操作。这就是为什么你应该总是运行一个奇数(大于一个因为显而易见的原因)符合主节点的节点。

这是一篇很棒的文章,其中详细介绍了裂脑情况:http://blog.trifork.com/2013/10/24/how-to-avoid-the-split-brain-problem-in-elasticsearch/