elasticSearch 2.0搭建集羣注意事項

elasticsearch2.x發佈有一段時間了,抽空把集羣搭起來,做點實驗
-------------------------------------------------------------------------------------正文------------------------------------------------------------------------------------
elasticsearch1.7的搭建非常簡單,只需要把tar.gz的包下載到linux服務器上解壓縮,然後在bin目錄下啓動es即可,
集羣的搭建也非常簡單,保證cluster_name一致, node_name不一致就好了,
可以在同一個網段自動發現新節點,也可以在配置文件的discovery.zen.ping.unicast.hosts屬性中指定集羣的節點IP;

----------------------------------------------------------------------------------接下來開始填坑------------------------------------------------------------------------------
啓動失敗---->
坑一:Exception in thread "main" java.lang.RuntimeException: don't run elasticsearch as root.
填坑:解釋爲“防止attacker 獲取root權限”, 如果是RPM包安裝,會自動創建elastsearch組和elastsearch用戶,設置好密碼,換一個用戶啓動即可
意思就是不要用root用戶
坑二:Increase RLIMIT_MEMLOCK, soft limit: XXXXX, hard limit: XXXXX

填坑:es爲了性能考慮,推薦關掉swap,並鎖定一部分mem,按照日誌中的指引操作即可

一般處理好這兩個,注意一下文件和日誌的權限,基本就能正常的啓動了;

搭建集羣失敗-->
首先要注意的一點,在1.7的時候,es判斷集羣是否可用時,會用index.number_of_replicas去判斷,
但是在2.1.1中,這個變成了discovery.zen.minimum_master_nodes,當集羣的node低於設定值的時候,集羣會無法訪問
PS:這個參數在介紹中是用來防止選舉master發生腦裂的一個參數,實際上當存活節點數低於這個值,就選舉不出master了;

測試中採用四個node來搭建集羣
坑三:手動把四個host寫進了discovery.zen.ping.unicast.hosts,但是沒有手動指定discovery.zen.minimum_master_nodes的值,每一個node啓動以後都把自己設置爲Master
填坑:network.host默認採用的是127.0.0.1,這個問題可能會受到hosts的影響,爲了意義明確,寫成機器的IP,問題解決

坑四:手動把四個host寫進discovery.zen.ping.unicast.hosts,並且手動指定discovery.zen.minimum_master_nodes的值,啓動node以後出現報錯,ping其他的node超時 or 不停的等待初始化;

填坑:推測es自身應該是自動計算這個discovery.zen.minimum_master_nodes的, 如果手動指定以後,往集羣中添加機器時,數量小於discovery.zen.minimum_master_nodes就會出現這種現象,
只需要繼續往裏面添加節點,直到超過手動指定的
值,集羣會自動選舉Master,並正常運轉起來。

總結:
不要用root啓動,修改memlock的設置,手動指定network.host的值,discovery.zen.minimum_master_nodes可以手動寫,也可以不寫,保證cluster_name一致, node_name不一致,es2.1.1的集羣就可以正常啓動了
PS:jdk至少是1.7, 作爲測試用的話,ES_HEAP_SIZE
可以不寫


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章