discovery.zen.minimum_master_nodes两个节点的集群的值

时间:2016-02-29 03:50:48

标签: elasticsearch

我有两个专用的Windows服务器(Windows Server 2012R2,每台服务器上128GB内存),用于ES(2.2.0)。如果我在每个服务器上有一个节点,并且这两个节点组成一个集群。

的正确值是什么?
discovery.zen.minimum_master_nodes

我在elasticsearch.yml中读到了这个一般规则:

  

预防"分裂大脑"通过配置大多数节点(总计   节点数/ 2 + 1):

我看到了这个SO线程:

Proper value of ES_HEAP_SIZE for a dedicated machine with two nodes in a cluster

有一个答案说:

  

如Elasticsearch飞行前检查表中所述,您可以进行设置   在群集上发现至少(N / 2)+1的discovery.zen.minimum_master_nodes   用N> 2个节点。

请注意" N > 2"。在我的案例中,适当的价值是什么?

2 个答案:

答案 0 :(得分:5)

N是可以成为群集一部分的ES节点(不是物理机,而是ES进程)的数量。

在你的情况下,在两台机器上有一个节点,N = 2(注意它是4 here),所以公式N/2 + 1得到2,这意味着你的两个节点必须是如果要阻止split brain situations,则可以作为主节点使用。

如果您将该值设置为1(这是默认值!)并且您遇到网络问题并且您的两个节点可以在短时间内看到彼此,则每个节点都会认为它在群集中是独立的,并且两者都将选举自己为主人。你最终会遇到两个主人,这不是一件好事。如果您将该值设置为2并且遇到网络问题,则当前主节点将保持选举状态,而第二个节点将永远不会决定将其自身选为新主节点。每当网络备份时,第二个节点将重新加入群集并继续提供请求。

理想的拓扑结构是拥有3个专用主节点(即master: truedata:false)并将discovery.zen.minimum_master_nodes设置为2.这样您就不必更改设置无论数据节点的数量是集群的一部分。

所以N > 2约束确实应该是N >= 2,但我猜它是以某种方式隐含的,因为否则你会为分裂大脑的情况创造一个肥沃的土壤。

答案 1 :(得分:0)

有趣的是,在ES 7中,不再需要定义zen.minimum_master_nodes。

两个节点的群集的

discovery.zen.minimum_master_nodes值 https://www.elastic.co/blog/a-new-era-for-cluster-coordination-in-elasticsearch