共計 1966 個字符,預計需要花費 5 分鐘才能閱讀完成。
這篇文章主要為大家展示了“elasticsearch-2.1.1 集群搭建的示例分析”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓丸趣 TV 小編帶領大家一起研究并學習一下“elasticsearch-2.1.1 集群搭建的示例分析”這篇文章吧。
elasticsearch3.x 發布有一段時間了,抽空把集群搭起來,做點實驗
————————————————————————————- 正文 ————————————————————————————
elasticsearch2.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 用戶,設置好密碼,換一個用戶啟動即可
坑二: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 可以不寫
以上是“elasticsearch-2.1.1 集群搭建的示例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注丸趣 TV 行業資訊頻道!