Elasticsearch集群的腦裂問(wèn)題該怎么解決

這篇文章給大家介紹Elasticsearch集群的腦裂問(wèn)題該怎么解決,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助。

專(zhuān)注于為中小企業(yè)提供成都做網(wǎng)站、網(wǎng)站建設(shè)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)辰溪免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了1000多家企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過(guò)網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。

#Elasticsearch集群的腦裂問(wèn)題 正常情況下,集群中的所有的節(jié)點(diǎn),應(yīng)該對(duì)集群中master的選擇是一致的,這樣獲得的狀態(tài)信息也應(yīng)該是一致的,不一致的狀態(tài)信息,說(shuō)明不同的節(jié)點(diǎn)對(duì)master節(jié)點(diǎn)的選擇出現(xiàn)了異常——也就是所謂的腦裂問(wèn)題。這樣的腦裂狀態(tài)直接讓節(jié)點(diǎn)失去了集群的正確狀態(tài),導(dǎo)致集群不能正常工作。

可能導(dǎo)致的原因:

  1. 網(wǎng)絡(luò):由于是內(nèi)網(wǎng)通信,網(wǎng)絡(luò)通信問(wèn)題造成某些節(jié)點(diǎn)認(rèn)為master死掉,而另選master的可能性較小;進(jìn)而檢查Ganglia集群監(jiān)控,也沒(méi)有發(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í)也較大)時(shí),導(dǎo)致對(duì)應(yīng)的ES實(shí)例停止響應(yīng),而這臺(tái)服務(wù)器如果正充當(dāng)著master節(jié)點(diǎn)的身份,那么一部分節(jié)點(diǎn)就會(huì)認(rèn)為這個(gè)master節(jié)點(diǎn)失效了,故重新選舉新的節(jié)點(diǎn),這時(shí)就出現(xiàn)了腦裂;同時(shí)由于data節(jié)點(diǎn)上ES進(jìn)程占用的內(nèi)存較大,較大規(guī)模的內(nèi)存回收操作也能造成ES進(jìn)程失去響應(yīng)。所以,這個(gè)原因的可能性應(yīng)該是最大的。

應(yīng)對(duì)問(wèn)題的辦法:

  1. 對(duì)應(yīng)于上面的分析,推測(cè)出原因應(yīng)該是由于節(jié)點(diǎn)負(fù)載導(dǎo)致了master進(jìn)程停止響應(yīng),繼而導(dǎo)致了部分節(jié)點(diǎn)對(duì)于master的選擇出現(xiàn)了分歧。為此,一個(gè)直觀的解決方案便是將master節(jié)點(diǎn)與data節(jié)點(diǎn)分離。為此,我們添加了三臺(tái)服務(wù)器進(jìn)入ES集群,不過(guò)它們的角色只是master節(jié)點(diǎn),不擔(dān)任存儲(chǔ)和搜索的角色,故它們是相對(duì)輕量級(jí)的進(jìn)程??梢酝ㄟ^(guò)以下配置來(lái)限制其角色:

node.master: true  
node.data: false

當(dāng)然,其它的節(jié)點(diǎn)就不能再擔(dān)任master了,把上面的配置反過(guò)來(lái)即可。這樣就做到了將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"]
  1. discovery.zen.ping_timeout(默認(rèn)值是3秒):默認(rèn)情況下,一個(gè)節(jié)點(diǎn)會(huì)認(rèn)為,如果master節(jié)點(diǎn)在3秒之內(nèi)沒(méi)有應(yīng)答,那么這個(gè)節(jié)點(diǎn)就是死掉了,而增加這個(gè)值,會(huì)增加節(jié)點(diǎn)等待響應(yīng)的時(shí)間,從一定程度上會(huì)減少誤判。 discovery.zen.minimum_master_nodes(默認(rèn)是1):這個(gè)參數(shù)控制的是,一個(gè)節(jié)點(diǎn)需要看到的具有master節(jié)點(diǎn)資格的最小數(shù)量,然后才能在集群中做操作。官方的推薦值是(N/2)+1,其中N是具有master資格的節(jié)點(diǎn)的數(shù)量(我們的情況是3,因此這個(gè)參數(shù)設(shè)置為2,但對(duì)于只有2個(gè)節(jié)點(diǎn)的情況,設(shè)置為2就有些問(wèn)題了,一個(gè)節(jié)點(diǎn)DOWN掉后,你肯定連不上2臺(tái)服務(wù)器了,這點(diǎn)需要注意)。

discovery.zen.ping.multicast.enabled: false
discovery.zen.ping_timeout: 120s
discovery.zen.minimum_master_nodes: 2 
client.transport.ping_timeout: 60s
discovery.zen.ping.unicast.hosts: ["10.0.31.2", "10.0.33.2"]

真的高枕無(wú)憂了? 其實(shí)問(wèn)題依然存在,ES的issue空間也在討論一個(gè)特例情況《#2488》:即使 minimum_master_nodes 設(shè)置了一個(gè)正確的值,腦裂也有可能發(fā)生。

如何識(shí)別這個(gè)問(wèn)題? 在您的集群里面盡快識(shí)別這個(gè)問(wèn)題非常重要。一個(gè)比較容易的方法是定時(shí)獲取每一個(gè)節(jié)點(diǎn)/_nodes響應(yīng),它返回了集群中所有節(jié)點(diǎn)的狀態(tài)報(bào)告,如果兩個(gè)節(jié)點(diǎn)返回的集群狀態(tài)不一樣,就是一個(gè)腦裂情況發(fā)生的警示信號(hào)。

新增解決方案 對(duì)于一個(gè)具有全功能的ES節(jié)點(diǎn),必須要有一個(gè)活動(dòng)的Master節(jié)點(diǎn)。ES1.4.0.Beta1后,新增了一項(xiàng)沒(méi)有Master時(shí)阻塞集群操作設(shè)置:discovery.zen.no_master_block。

當(dāng)集群中沒(méi)有活動(dòng)的Master節(jié)點(diǎn)后,該設(shè)置指定了哪些操作(read、write)需要被拒絕(即阻塞執(zhí)行)。有兩個(gè)設(shè)置值:all和write,默認(rèn)為wirte。

這項(xiàng)配置不會(huì)對(duì)基本api(例如集群狀態(tài)、節(jié)點(diǎn)信息和狀態(tài)API)產(chǎn)生影響,這些節(jié)點(diǎn)在任何節(jié)點(diǎn)上執(zhí)行都不會(huì)被阻塞。

ps: es的優(yōu)點(diǎn):因?yàn)樗拈_(kāi)箱即用、天生集群、自動(dòng)容錯(cuò)、擴(kuò)展性強(qiáng)等優(yōu)點(diǎn),還是選擇它來(lái)做全文檢索

關(guān)于Elasticsearch集群的腦裂問(wèn)題該怎么解決就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。

網(wǎng)頁(yè)題目:Elasticsearch集群的腦裂問(wèn)題該怎么解決
標(biāo)題來(lái)源:http://bm7419.com/article42/pssihc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)建站、品牌網(wǎng)站制作ChatGPT、網(wǎng)站維護(hù)、建站公司靜態(tài)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

商城網(wǎng)站建設(shè)