elasticsearch 2节点集群:正确设置?

时间:2015-09-24 17:19:01

标签: elasticsearch

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

问题:

1)据我所知,在2节点集群中,两者都应设置为master?

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 个答案:

答案 0 :(得分:7)

Q1:防止大脑裂开的主节点的理想数量是(N/2) + 1主人,所以在你的情况下,由于N = 2,主人的数量也是2。

Q2:配置正确,但您不需要指定node.master: truenode.data: true,因为默认情况下这两者都是true

问题3:那是正确的

问题4:也正确。

最后,找出最佳方法是使用这些配置运行节点并查看其行为方式。

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

答案 1 :(得分:3)

你应该小心两个节点。

例如,discovery.zen.minimum_master_nodes的默认设置为1.这意味着如果网络断开连接,则每个主节点(因为您已将两者都设置为主节点)将检查此设置并将其视为它可以看到自己(默认的最小主节点),它可以形成一个集群。另一个节点也是这样的,你是SPLIT-BRAINED。使用两个节点时,您应将其设置为2,而不是默认值1.

现在假设您已将其设置为2.然后在网络断开连接中,两个符合条件的主节点将停止运行,因为他们需要至少看到一个符合主节点的节点才能开始主选举过程。您的群集将停止工作,直到假定连接为止。

对于双节点情况,我认为只应将一个节点设置为主节点,至少让它在网络问题中起作用。

请查看this link进行类似的讨论。