白话Elasticsearch65-最少master候选节点以及ES集群脑裂问题
文章目錄
- 概述
- 腦裂的成因分析
- 重要參數:discovery.zen.minimum_master_nodes
- 舉例說明
- 3個節點,discovery.zen.minimum_master_nodes設置為2,是如何避免腦裂?
- 動態設置discovery.zen.minimum_master_nodes
概述
繼續跟中華石杉老師學習ES,第65篇
課程地址: https://www.roncoo.com/view/55
腦裂的成因分析
如果因為網絡的故障,導致一個集群被劃分成了兩片,每片都有多個node,以及一個master,那么集群中就出現了兩個master了。
但是因為master是集群中非常重要的一個角色,主宰了集群狀態的維護,以及shard的分配,因此如果有兩個master的化,可能會導致破壞數據。
重要參數:discovery.zen.minimum_master_nodes
discovery.zen.minimum_master_nodes參數對于集群的可靠性來說,是非常重要的。這個設置可以預防腦裂問題,也就是一個集群中存在兩個master。
配置文件中的注釋如下:
這個參數的作用,就是告訴es直到有足夠的master候選節點時,才可以選舉出一個master,否則就不要選舉出一個master。
這個參數必須被設置為集群中master候選節點的quorum數量,也就是大多數。至于quorum的算法,就是:master候選節點數量 / 2 + 1。
舉例說明
比如我們有10個節點,都能維護數據,也可以是master候選節點,那么quorum就是10 / 2 + 1 = 6。
如果我們有三個master候選節點,還有100個數據節點,那么quorum就是3 / 2 + 1 = 2
如果我們有2個節點,都可以是master候選節點,那么quorum是2 / 2 + 1 = 2。此時就有問題了,因為如果一個node掛掉了,那么剩下一個master候選節點,是無法滿足quorum數量的,也就無法選舉出新的master,集群就掛掉了(可讀不可寫)。此時就只能將這個參數設置為1,但是這就無法阻止腦裂的發生了。
2個節點,discovery.zen.minimum_master_nodes分別設置成2和1會怎么樣?
見下圖
設置成2的場景, 無法發起選舉,沒有master了。
設置為1的場景,不可避免腦裂
綜上所述,一個生產環境的es集群,至少要有3個節點,同時將這個參數設置為quorum,也就是2。discovery.zen.minimum_master_nodes設置為2,如何避免腦裂呢?
3個節點,discovery.zen.minimum_master_nodes設置為2,是如何避免腦裂?
那么這個是參數是如何避免腦裂問題的產生的呢?比如我們有3個節點,quorum是2.現在網絡故障,1個節點在一個網絡區域,另外2個節點在另外一個網絡區域,不同的網絡區域內無法通信。這個時候有兩種情況情況:
(1)如果master是單獨的那個節點,另外2個節點是master候選節點,那么此時那個單獨的master節點因為沒有指定數量的候選master node在自己當前所在的集群內,因此就會取消當前master的角色,嘗試重新選舉,但是無法選舉成功。然后另外一個網絡區域內的node因為無法連接到master,就會發起重新選舉,因為有兩個master候選節點,滿足了quorum,因此可以成功選舉出一個master。此時集群中就會還是只有一個master。
(2)如果master和另外一個node在一個網絡區域內,然后一個node單獨在一個網絡區域內。那么此時那個單獨的node因為連接不上master,會嘗試發起選舉,但是因為master候選節點數量不到quorum,因此無法選舉出master。而另外一個網絡區域內,原先的那個master還會繼續工作。這也可以保證集群內只有一個master節點。
綜上所述,通過在elasticsearch.yml中配置discovery.zen.minimum_master_nodes: 2,就可以避免腦裂問題的產生。
動態設置discovery.zen.minimum_master_nodes
但是因為es集群是可以動態增加和下線節點的,所以可能隨時會改變quorum。所以這個參數也是可以通過api隨時修改的,特別是在節點上線和下線的時候,都需要作出對應的修改。而且一旦修改過后,這個配置就會持久化保存下來。
PUT /_cluster/settings {"persistent" : {"discovery.zen.minimum_master_nodes" : 2} }總結
以上是生活随笔為你收集整理的白话Elasticsearch65-最少master候选节点以及ES集群脑裂问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 白话Elasticsearch64-ze
- 下一篇: 白话Elasticsearch66-针对