ELASTICSEARCH:裂脑
假设我们有两个ElasticSearch服务器A和B,两者都可以成为主人。还假定A是主人。还假定minimum_master_nodes属性也设置为1。ELASTICSEARCH:裂脑
如果服务器A(主站)由于某种原因而崩溃,则B成为主站。当A再次运行并加入群集时,它会再次作为主节点加入吗?我不明白为什么会出现这种分裂的大脑。如果B成为主人,然后A重新加入集群,那么为什么如果B成为主人,A也会成为主人?
在任何时候,集群中只有一个主节点。如果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
,那么如果一个节点离开或关闭,则该集群将变为红色且不可操作。这就是为什么你应该总是运行一个奇数(出于显而易见的原因大于1)符合条件的节点。
下面是用在脑裂情况更多详情,一个伟大的文章:http://blog.trifork.com/2013/10/24/how-to-avoid-the-split-brain-problem-in-elasticsearch/
我不明白为什么有主有资格节点的'odd'数量是必要的。你可以有4与minimum_master_nodes = 3来防止这个问题,对吧? – Cemre