2016-11-25 36 views
3

我正在設置一個elasticsearch(5.0.1)集羣。節點不會加入集羣:NotMasterException(奇怪的大選錯誤)

它有三個主資格的節點:

el-m01 
el-m02 
el-m03 

羣集無法裝配,每一個主節點獲取日誌以下NotMasterException例外:

[2016-11-21T15:24:13,274][INFO ][o.e.d.z.ZenDiscovery  ] [el-m01] failed to send join request to master [{el-m02}{bBhsu3fJSj-MyiWJGhQmog}{_IzdeUd4Sv6g-rhemGjEVQ}{192.168.110.118}{192.168.110.118:9300}{rack=r1}], reason [RemoteTransportException[[el-m02][192.168.110.118:9300][internal:discovery/zen/join]]; nested: NotMasterException[Node [{el-m02}{bBhsu3fJSj-MyiWJGhQmog}{_IzdeUd4Sv6g-rhemGjEVQ}{192.168.110.118}{192.168.110.118:9300}{rack=r1}] not master for join request]; ], tried [3] times 

啓用允許的調試日誌我瞭解以下內容:

大選正在發生,並且是成功的。但是,儘管每個節點都選擇了主節點,但沒有節點認爲他是主節點。 即:

  • EL-M01認爲EL-M02是主
  • EL-M02認爲EL-M03是主
  • EL-M03認爲EL-M01是主

這裏發生了什麼?

回答

10

以下是這種情況:通過克隆虛擬機來獲取所有主節點,每個節點都有相同的節點ID

這可以用下面的命令來驗證,列出所有節點的ID:

GET /_cat/nodes?v&h=id,ip,name&full_id=true 

注意,因爲你的集羣還沒有形成,每一個節點都需要單獨查詢,即:

curl 192.168.110.111:9200/_cat/nodes?v&h=id,ip,name&full_id=true 
curl 192.168.110.112:9200/_cat/nodes?v&h=id,ip,name&full_id=true 
(...) 

這是不好的。節點id必須是唯一的。

要解決這種情況,您需要刪除每個節點上的索引(位於/var/lib/elasticsearch)。這將刪除elasticsearch中的所有數據,並且還將重置節點id。

爲了避免在第一時間這個問題,您可以:

  • A.後安裝elasticsearch 已經克隆了VMS
  • B.使用自動化的工具來臨客ansible或傀儡來管理elasticsearch。
+1

爲解決方案投票。它經過6天的努力解決了我的羣集形成。謝謝 –