Elasticsearch 2节点集群:正确的设置?

12

我有两个节点,但它们不在同一个子网中。

问题:

1)据我理解,在2个节点的集群中,两个节点都应该设置为主节点?

2)下面的配置是让节点相互发现的正确方法吗?(因为节点不在同一个子网中)

3)客户端应用程序可以连接到任一节点,并执行读取和写入操作吗?

4)下面的建议配置是否正确?(我可以在两个配置中指定“node.master:true”吗?这会使发现发生吗?)

建议配置:

节点1:

    cluster.name: mycluster
    node.name: "node1"
    node.master: true
    node.data: true
    discovery.zen.ping.multicast.enabled: false
    discovery.zen.ping.unicast.hosts: ["192.168.100.103"]  # IP of node2

节点 2:

    cluster.name: mycluster
    node.name: "node2"
    node.master: true
    node.data: true
    discovery.zen.ping.multicast.enabled: false
    discovery.zen.ping.unicast.hosts: ["192.168.101.103"]   #IP of node1

2018更新:

我们现在只使用3个和5个节点的集群。

2个回答

13

问题1:为防止大脑分裂情况的理想主节点数量为 (N/2) + 1,因此在您的情况下,由于N=2,主节点的数量也是2。请注意,虽然有两个主节点不理想,因为它可能导致大脑分裂的情况。

问题2:配置是正确的,尽管您不需要指定node.master: truenode.data: true,因为两者默认都是true

问题3:那是对的。

问题4:也是正确的。

最后,找到答案的最佳方法是使用这些配置运行节点,并查看它的行为方式。

  1. 您启动节点1,检查日志并查看节点1是否为主节点(因为它是唯一的节点)
  2. 然后您启动节点2,检查日志并查看节点2加入了群集
  3. 然后您关闭节点1,检查日志并验证节点2成为主节点
  4. 然后您再次启动节点1并验证它加入了群集
  5. 然后您关闭节点2并验证节点1再次成为主节点。
  6. 等等...

给未来的读者提醒:请注意2个节点集群的缺陷:https://blog.trifork.com/2013/10/24/how-to-avoid-the-split-brain-problem-in-elasticsearch/ - emmdee
1
嗨@Val,我尝试停止主节点时遇到了“master_not_discovered_exception”,我在这里做错了什么?我正在使用elasticsearch 7.9,并且在两个节点上都设置了“cluster.initial_master_nodes”。 - Tri Nguyen
只有两个主节点并不是一个好主意。请参考@emmdee上面的链接。 在这种情况下,使用2个节点应该放弃HA并设置一个主节点。 如果可以的话,请使用至少3个节点。 - lunaferie
@lunaferie 当然不是,但由于原帖只有两个节点,这几乎是唯一的方法。但是你说得好,我已经更新了我的答案来指出这一点。 - Val

13

在两个节点上需要小心。

例如,discovery.zen.minimum_master_nodes 的默认设置是1。这意味着如果网络断开连接,每个主节点(因为您已经设置了两个都可以成为主节点)将检查此设置并将其视为可以形成集群(默认最小主节点数)因为它可以看到自己。另一个节点也会这样操作,这时你就会出现“脑裂”问题。对于两个节点,您应该将其设置为2,而不是默认值1。

现在假设您已将其设置为2。然后,在网络未连接的情况下,两个主节点都将停止工作,因为它们需要看到至少一个更多的主节点才能开始选举过程。直到重新连接,您的集群停止工作。

对于两个节点的情况,我认为只有一个节点应该被设置为主节点,至少让它在网络问题时继续工作。

请参考[1]以获取类似讨论的信息。

更新: @Eitanmg分享了完全相同讨论的官方文档[2],你应该阅读一下。

[1] https://blog.trifork.com/2013/10/24/how-to-avoid-the-split-brain-problem-in-elasticsearch/

[2] https://www.elastic.co/guide/en/elasticsearch/reference/current/high-availability-cluster-small-clusters.html#high-availability-cluster-design-two-nodes


2
没错,还可以参考官方文档:https://www.elastic.co/guide/en/elasticsearch/reference/current/high-availability-cluster-small-clusters.html#high-availability-cluster-design-two-nodes - Eitanmg

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接