這篇文章將為大家詳細(xì)講解有關(guān)Elasticsearch集群所謂腦裂的問題是怎樣的,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關(guān)知識有一定的了解。
站在用戶的角度思考問題,與客戶深入溝通,找到東昌府網(wǎng)站設(shè)計(jì)與東昌府網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗(yàn)好的作品,建站類型包括:網(wǎng)站制作、成都網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、主機(jī)域名、網(wǎng)頁空間、企業(yè)郵箱。業(yè)務(wù)覆蓋東昌府地區(qū)。
所謂腦裂問題(類似于精神分裂),就是同一個集群中的不同節(jié)點(diǎn),對于集群的狀態(tài)有了不一樣的理解。
今天,Elasticsearch集群出現(xiàn)了查詢極端緩慢的情況,通過以下命令查看集群狀態(tài):
curl -XGET 'es-1:9200/_cluster/health'
發(fā)現(xiàn),集群的總體狀態(tài)是red,本來9個節(jié)點(diǎn)的集群,在結(jié)果中只顯示了4個;但是,將請求發(fā)向不同的節(jié)點(diǎn)之后,我卻發(fā)現(xiàn)即使是總體狀態(tài)是red的,但是可用的節(jié)點(diǎn)數(shù)量卻不一致。
正 常情況下,集群中的所有的節(jié)點(diǎn),應(yīng)該對集群中master的選擇是一致的,這樣獲得的狀態(tài)信息也應(yīng)該是一致的,不一致的狀態(tài)信息,說明不同的節(jié)點(diǎn)對 master節(jié)點(diǎn)的選擇出現(xiàn)了異?!簿褪撬^的腦裂問題。這樣的腦裂狀態(tài)直接讓節(jié)點(diǎn)失去了集群的正確狀態(tài),導(dǎo)致集群不能正常工作。
可能導(dǎo)致的原因:
1. 網(wǎng)絡(luò):由于是內(nèi)網(wǎng)通信,網(wǎng)絡(luò)通信問題造成某些節(jié)點(diǎn)認(rèn)為master死掉,而另選master的可能性較??;進(jìn)而檢查Ganglia集群監(jiān)控,也沒有發(fā)現(xiàn)異常的內(nèi)網(wǎng)流量,故此原因可以排除。
2. 節(jié)點(diǎn)負(fù)載:由于master節(jié)點(diǎn)與data節(jié)點(diǎn)都是混合在一起的,所以當(dāng)工作節(jié)點(diǎn)的負(fù)載較大(確實(shí)也較大)時,導(dǎo)致對應(yīng)的ES實(shí)例停止響應(yīng),而這臺服務(wù)器 如果正充當(dāng)著master節(jié)點(diǎn)的身份,那么一部分節(jié)點(diǎn)就會認(rèn)為這個master節(jié)點(diǎn)失效了,故重新選舉新的節(jié)點(diǎn),這時就出現(xiàn)了腦裂;同時由于data節(jié)點(diǎn) 上ES進(jìn)程占用的內(nèi)存較大,較大規(guī)模的內(nèi)存回收操作也能造成ES進(jìn)程失去響應(yīng)。所以,這個原因的可能性應(yīng)該是最大的。
應(yīng)對問題的辦法:
1. 對應(yīng)于上面的分析,推測出原因應(yīng)該是由于節(jié)點(diǎn)負(fù)載導(dǎo)致了master進(jìn)程停止響應(yīng),繼而導(dǎo)致了部分節(jié)點(diǎn)對于master的選擇出現(xiàn)了分歧。為此,一個直觀 的解決方案便是將master節(jié)點(diǎn)與data節(jié)點(diǎn)分離。為此,我們添加了三臺服務(wù)器進(jìn)入ES集群,不過它們的角色只是master節(jié)點(diǎn),不擔(dān)任存儲和搜索 的角色,故它們是相對輕量級的進(jìn)程??梢酝ㄟ^以下配置來限制其角色:
node.master: true
node.data: false
當(dāng)然,其它的節(jié)點(diǎn)就不能再擔(dān)任master了,把上面的配置反過來即可。這樣就做到了將master節(jié)點(diǎn)與data節(jié)點(diǎn)分離。當(dāng)然,為了使新加入的節(jié)點(diǎn)快速確定master位置,可以將data節(jié)點(diǎn)的默認(rèn)的master發(fā)現(xiàn)方式有multicast修改為unicast:
discovery.zen.ping.multicast.enabled: false
discovery.zen.ping.unicast.hosts: ["master1", "master2", "master3"]
2. 還有兩個直觀的參數(shù)可以減緩腦裂問題的出現(xiàn):
discovery.zen.ping_timeout(默認(rèn)值是3秒):默認(rèn)情況下,一個節(jié)點(diǎn)會認(rèn)為,如果master節(jié)點(diǎn)在3秒之內(nèi)沒有應(yīng)答,那么這個節(jié)點(diǎn)就是死掉了,而增加這個值,會增加節(jié)點(diǎn)等待響應(yīng)的時間,從一定程度上會減少誤判。
discovery.zen.minimum_master_nodes(默認(rèn)是1):這個參數(shù)控制的是,一個節(jié)點(diǎn)需要看到的具有master節(jié)點(diǎn)資格的 最小數(shù)量,然后才能在集群中做操作。官方的推薦值是(N/2)+1,其中N是具有master資格的節(jié)點(diǎn)的數(shù)量(我們的情況是3,因此這個參數(shù)設(shè)置為2, 但對于只有2個節(jié)點(diǎn)的情況,設(shè)置為2就有些問題了,一個節(jié)點(diǎn)DOWN掉后,你肯定連不上2臺服務(wù)器了,這點(diǎn)需要注意)。
以上的解決方法只能是減緩這種現(xiàn)象的發(fā)生,并不能從根本上杜絕。
關(guān)于Elasticsearch集群所謂腦裂的問題是怎樣的就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
分享文章:Elasticsearch集群所謂腦裂的問題是怎樣的
網(wǎng)址分享:http://www.rwnh.cn/article32/jipdpc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供面包屑導(dǎo)航、小程序開發(fā)、App設(shè)計(jì)、網(wǎng)站營銷、外貿(mào)網(wǎng)站建設(shè)、App開發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)