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

相關文章
相關標籤/搜索