discovery.zen.minimum_master_nodes深度解析

 

 

discovery.zen.minimum_master_nodes对集群的稳定性相当重要,防止脑裂的出现。node

脑裂:算法

若是网络的故障致使一个集群被划分红两片,每片都有多个node,以及一个master。由于master是维护集群状态,以及shard的分配。若是出现了两个master,可能致使数据破损。网络

discovery.zen.minimum_master_nodes的做用是只有足够的master候选节点时,才能够选举出一个master。该参数必须设置为集群中master候选节点的quorum数量。spa

quorum的算法=master候选节点数量/2+1ast

举例:class

一、若是有10个节点,都是data node,也是master的候选节点。则quorum=10/2+1=6集群

二、若是有3个master候选节点,100个数据节点。则quorum=3/2+1=2配置

三、若是有2个节点,都是data node,也是master的候选节点。则quorum=2/2+1=2(有问题)im

若是其中一个节点挂了,那么master的候选节点只有一个,没法知足quorum数量。即没法选举出master。此时只能将quorum设置成1,可是设置为1有可能出现脑裂。总结

总结:通常es集群的节点至少要有3个,quorum设置为2

使用例2的场景说明quorum是如何防止脑裂

假设集群中3个节点有一个节点与其余节点没法通讯,

一、若是master是单独的节点,另外2个节点是master候选节点。那么此时单独的master节点由于没有指定数量的候选master node在本身当前所在的集群里。所以会取消当前的master角色,尝试从新选举(没法选举成功)

另一个网络区域内的node由于没法链接到master,就会发起从新选举,有两个候选节点,知足quorum,成功选举出一个master。

二、若是master和一个node在一个网络区域(A),另外一个node单独在一个网络区域(B)。

B区域只有一个node,由于连不上master,会尝试发起选举,但不知足quorum,没法选举

A区域master继续工做,当前网络也知足quorum,不发起选举。

 

discovery.zen.minimum_master_nodes除了在配置文件设置,也能够动态设置

PUT /_cluster/settings {    "persistent":{       "discovery.zen.minimum_master_nodes":2    } }

相关文章
相关标签/搜索