我有两个节点,但它们不在同一个子网上。
问题:
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个节点集群。
答案 0 :(得分:7)
Q1:防止大脑裂开的主节点的理想数量是(N/2) + 1
主人,所以在你的情况下,由于N = 2,主人的数量也是2。
Q2:配置正确,但您不需要指定node.master: true
和node.data: true
,因为默认情况下这两者都是true
。
问题3:那是正确的
问题4:也正确。
最后,找出最佳方法是使用这些配置运行节点并查看其行为方式。
答案 1 :(得分:3)
你应该小心两个节点。
例如,discovery.zen.minimum_master_nodes的默认设置为1.这意味着如果网络断开连接,则每个主节点(因为您已将两者都设置为主节点)将检查此设置并将其视为它可以看到自己(默认的最小主节点),它可以形成一个集群。另一个节点也是这样的,你是SPLIT-BRAINED。使用两个节点时,您应将其设置为2,而不是默认值1.
现在假设您已将其设置为2.然后在网络断开连接中,两个符合条件的主节点将停止运行,因为他们需要至少看到一个符合主节点的节点才能开始主选举过程。您的群集将停止工作,直到假定连接为止。
对于双节点情况,我认为只应将一个节点设置为主节点,至少让它在网络问题中起作用。
请查看this link进行类似的讨论。