1. 程式人生 > >關於elasticsearch node 節點不可用的故障分析

關於elasticsearch node 節點不可用的故障分析

內核內核內核內核內核

開發那邊在搭建集群的時候,無論如何測試,node 節點就是連不上,始終報錯誤

org.elasticsearch.client.transport.NoNodeAvailableException: No node available

後開看了下,本地環境,原因是回話時間太多,而他的本地環境並沒有做內核優化,而線上都做了統一的內核優化,其中一條就是吧,檢測tcp 連接探測間隔在5秒,對es 來說,太斷了,

google 搜到一片文章,連接如下

https://blog.trifork.com/2015/04/08/dealing-with-nodenotavailableexceptions-in-elasticsearch/

大概內容是,這根本因為系統沒有調優內核,導致無法連接,與我們相反,他是保持連接時間探測過長導致的

那麽我們可以推測,tcp 內核連接,要保持在一定的數值範圍內,而且必須與es 連接的工作原理相符,不然linux 系統的防火機制,和tcp 連接探測機制,會把還需要繼續保持的連接給幹掉,結果就會變成了,沒有節點可用

具體操作如下

centos 系統

修改內核參數

net.ipv4.tcp_keepalive_time=7200(默認值)

改為

net.ipv4.tcp_keepalive_time=600(具體看情況)

關於elasticsearch node 節點不可用的故障分析