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 } }