我有两个专用的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
"。在我的案例中,适当的价值是什么?
答案 0 :(得分:5)
N
是可以成为群集一部分的ES节点(不是物理机,而是ES进程)的数量。
在你的情况下,在两台机器上有一个节点,N = 2(注意它是4 here),所以公式N/2 + 1
得到2,这意味着你的两个节点必须是如果要阻止split brain situations,则可以作为主节点使用。
如果您将该值设置为1(这是默认值!)并且您遇到网络问题并且您的两个节点可以在短时间内看到彼此,则每个节点都会认为它在群集中是独立的,并且两者都将选举自己为主人。你最终会遇到两个主人,这不是一件好事。如果您将该值设置为2并且遇到网络问题,则当前主节点将保持选举状态,而第二个节点将永远不会决定将其自身选为新主节点。每当网络备份时,第二个节点将重新加入群集并继续提供请求。
理想的拓扑结构是拥有3个专用主节点(即master: true
和data:false
)并将discovery.zen.minimum_master_nodes
设置为2.这样您就不必更改设置无论数据节点的数量是集群的一部分。
所以N > 2
约束确实应该是N >= 2
,但我猜它是以某种方式隐含的,因为否则你会为分裂大脑的情况创造一个肥沃的土壤。
答案 1 :(得分:0)
discovery.zen.minimum_master_nodes值 https://www.elastic.co/blog/a-new-era-for-cluster-coordination-in-elasticsearch