真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Elasticsearch集群的腦裂問題該怎么解決

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

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

#Elasticsearch集群的腦裂問題 正常情況下,集群中的所有的節(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ù)載較大(確實也較大)時,導(dǎo)致對應(yīng)的ES實例停止響應(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"]
  1. 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)需要注意)。

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"]

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

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

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

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

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

ps: es的優(yōu)點(diǎn):因為它的開箱即用、天生集群、自動容錯、擴(kuò)展性強(qiáng)等優(yōu)點(diǎn),還是選擇它來做全文檢索

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


名稱欄目:Elasticsearch集群的腦裂問題該怎么解決
鏈接分享:http://weahome.cn/article/pssihc.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部