因爲嗅探機制致使集羣連不上的問題

最近在弄數據分析,須要發到內網開發機的測試環境,但又須要鏈接到線上的elasticsearch集羣查詢線上數據。因而讓運維開通集羣機器對內網機器的訪問限制,但部署上去後居然鏈接不了線上es,運維也很肯定端口已開放,一時之間不清楚什麼緣由。node

查看程序啓動日誌,報錯信息顯示:NoNodeAvailableException[None of the configured nodes are available]   這個異常,找不到節點,並且返回了一個線上內網ip地址,但配置裏明明寫的是公網ip,一時懵圈,和運維討論說是否是程序裏有返回集羣的 ip 地址致使的。服務器

後來網上看到有人說把es的嗅探機制設置爲false,因而就嘗試一下,在內網那臺服務器上/etc/hosts 文件加上線上es集羣的ip地址和內網域名的映射,同時配置裏改成域名標識,成功了!!!運維

 

來看看es的嗅探機制:elasticsearch

能夠設置 client.transport.sniff 爲 true 來使客戶端去嗅探整個集羣的狀態,把集羣中其它機器的ip地址加到客戶端中,因此上面報錯信息中有顯示內網ip地址,原來是在嗅探整個集羣的時候返回了其餘節點的ip地址,而測試環境裏只能用公網ip去訪問,因此報找不到有效節點的錯誤。測試

但這樣作的好處是:通常你不用手動設置集羣裏全部集羣的ip到鏈接客戶端,它會自動幫你添加,而且自動發現新加入集羣的機器,我的以爲線上仍是加上嗅探機制比較好。日誌

相關文章
相關標籤/搜索