如果一个盒子关闭,双节点(每个盒子上一个)群集可以提供不间断的服务吗?

时间:2016-03-09 06:09:33

标签: elasticsearch

在我的生产环境中,我有一个双节点集群(ES 2.2.0),每个节点都位于不同的物理盒子上。在elasticsearch.yml里面,我有以下内容:

discovery.zen.minimum_master_nodes: 2

我的问题是:如果一个盒子关闭,另一个节点是否可以继续正常运行以提供不间断的搜索服务(索引和搜索,写入和读取)?

谢谢!

3 个答案:

答案 0 :(得分:2)

如果你有两个节点并且每个节点都符合主节点并且你有discovery.zen.minimum_master_nodes: 2,那么如果网络发生故障并且这两个节点暂时没有看到对方,你就会得到进入split brain situation,因为每个节点都会选择自己作为主人。

但是,如果设置为2,则有两种可能的情况:

  • 如果非主设备发生故障,另一个节点将继续正常运行(因为它已经是主设备)
  • 如果主人失败,另一个人不能选择自己作为主人(因为它会等待第二个符合主人资格的节点可见)。

因此,只有两个节点,您需要选择分裂大脑(minimum_master_nodes: 1)或潜在RED群集(minimum_master_nodes: 2)的可能性。解决此问题的最佳方法是包含第三个仅限主节点,然后minimum_master_nodes: 2才有意义。

试一试:

  1. 启动群集,关闭主节点,会发生什么?
  2. 启动群集,关闭非主节点,会发生什么?

答案 1 :(得分:1)

最小主节点的目的是保持集群的稳定性。

如果群集中只有2个节点,并且设置了2个最小主节点。

如果您将最小主设备设置为2,则群集将需要2个节点才能启动以提供各种搜索服务。

如果一个节点在2节点集群中出现故障(其中有2个最小主节点设置),理论上集群将会关闭。

答案 2 :(得分:1)

首先,此设置有助于防止分裂大脑,单个群集中存在两个主人。 如果您有两个节点,设置为1将允许您的群集运行,但不能防止裂脑。在情况下最好至少有三个节点。