es配置中防止脑裂的配置
Master和DataNode未分離,導(dǎo)致集群不穩(wěn)定
在ES集群中,節(jié)點分為Master、DataNode、Client等幾種角色,任何一個節(jié)點都可以同時具備以上所有角色,其中比較重要的角色為Master和DataNode:
- Master主要管理集群信息、primary分片和replica分片信息、維護index信息。
- DataNode用來存儲數(shù)據(jù),維護倒排索引,提供數(shù)據(jù)檢索等。
可以看到元信息都在Master上面,如果Master掛掉了,該Master含有的所有Index都無法訪問,文檔中說,為了保證Master穩(wěn)定,需要將Master和Node分離。而構(gòu)建master集群可能會產(chǎn)生一種叫做腦裂的問題,為了防止腦裂,需要設(shè)置最小master的節(jié)點數(shù)為eligible_master_number/2 + 1
腦裂的概念:
如果你有2個Master候選節(jié)點,并設(shè)置最小Master節(jié)點數(shù)為1,則當(dāng)網(wǎng)絡(luò)抖動或偶然斷開時,2個Master都會認為另一個Master掛掉了,他們都被選舉為主Master,則此時集群中存在兩個主Master,即物理上1個集群變成了邏輯上的2個集群,而當(dāng)其中一個Master再次掛掉時,即便它恢復(fù)后回到了原有的集群,在它作為主Master期間寫入的數(shù)據(jù)都會丟失,因為它上面維護了Index信息。
根據(jù)以上理論,我對集群做了如下更改,額外選取3個獨立的機器作為Master節(jié)點,修改elasticsearch.yml配置
node.master = true node.data = false discovery.zen.minimum_master_nodes = 2修改其他節(jié)點配置,將其設(shè)置為DataNode,最后挨個重啟
node.master = false node.data = true總結(jié)
以上是生活随笔為你收集整理的es配置中防止脑裂的配置的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: redis集群环境安装(参照redis中
- 下一篇: Linux个人用户安装JDK(与root