discovery.zen.minimum_master_nodes對集群的穩定性至關重要,防止腦裂的出現。


discovery.zen.minimum_master_nodes對集群的穩定性至關重要,防止腦裂的出現。

腦裂:

如果網絡的故障導致一個集群被划分成兩片,每片都有多個node,以及一個master。因為master是維護集群狀態,以及shard的分配。如果出現了兩個master,可能導致數據破損。

discovery.zen.minimum_master_nodes的作用是只有足夠的master候選節點時,才可以選舉出一個master。該參數必須設置為集群中master候選節點的quorum數量。

quorum的算法=master候選節點數量/2+1

舉例:

1、如果有10個節點,都是data node,也是master的候選節點。則quorum=10/2+1=6

2、如果有3個master候選節點,100個數據節點。則quorum=3/2+1=2   

3、如果有2個節點,都是data node,也是master的候選節點。則quorum=2/2+1=2(有問題)

如果其中一個節點掛了,那么master的候選節點只有一個,無法滿足quorum數量。即無法選舉出master。此時只能將quorum設置成1,但是設置為1有可能出現腦裂。

總結:一般es集群的節點至少要有3個,quorum設置為2

使用例2的場景說明quorum是如何防止腦裂

假設集群中3個節點有一個節點與其他節點無法通信,

1、如果master是單獨的節點,另外2個節點是master候選節點。那么此時單獨的master節點因為沒有指定數量的候選master node在自己當前所在的集群里。因此會取消當前的master角色,嘗試重新選舉(無法選舉成功)

另外一個網絡區域內的node因為無法連接到master,就會發起重新選舉,有兩個候選節點,滿足quorum,成功選舉出一個master。

2、如果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
   }
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM