2015-12-21 79 views
0

我有,每一個我啓動節點,開始作爲主用ES 2.1.1一個問題,我不能建立一個實際的集羣。基本上,我最終得到3個羣集中的每個節點,而不是一個3節點羣集。如果我用相同的配置文件啓動ES 1.4.2,這不是問題。elasticsearch 2.1.1 - 不能建立集羣

以爲我是患了腦裂問題,我開始了3個節點,甚至在我的配置有

discovery.zen.minimum_master_nodes: 2 

,但它並沒有發揮作用。沒有任何節點知道任何其他節點,也沒有選舉出主節點。它確實等待其他節點,並不選擇自己作爲主節點,但它從不發現任何其他節點加入。我假設ping根本沒有被髮送出去。

每個節點具有相同的配置文件,以「node.name」是唯一的每個節點,這一切只是正常的ES 1.4.2。不知道該如何處理ES 2.1.1。

完整的配置文件看起來是這樣的:(最後兩行添加試圖消除裂腦的原因是沒有工作的原因之一)

cluster.name: my_test_cluster 
node.name: "my_node1" (diff for each node) 
discovery.zen.ping.timeout: 30s 
network.host: _non_loopback:ipv4_ 
discovery.zen.minimum_master_nodes: 2 
discovery.zen.ping.multicast.enabled: true 

的當我執行CURL查詢來檢查羣集的狀態/健康狀況時,日誌不會顯示除「MasterNotDiscoveredException [等待[30s]]」之外的任何錯誤。這是預期的。

任何人有,爲什麼這兩個怎麼之間的行爲差​​異來獲得2.1.1任何想法。加工?

按照下面的建議我已經包含在配置文件node.host的條目,但行爲並沒有改變。

回答

1

您還需要設置network.host for each node開始Elasticsearch 2.0。

我會建議使用兩種_non_loopback:ipv4__non_loopback:ipv6_。如果您在AWS中運行,那麼the discovery-ec2 plugin has separate options that are specific to that environment

做不到這一點,則默認設置爲只使用_local_,它(如文檔的註釋)並將其設置到環回地址如127.0.0.1::1

根據你的評論,它看起來像節點在不同的機器上,所以你還需要指定主機列表(無論如何它們的一個子集,但是對於3指定所有主機):

discovery.zen.ping.unicast.hosts: ["host1", "host2"] 

從ES 2.x開始,默認情況下,多點傳送處於禁用狀態,因此它將不再發現網絡上的其他節點。

+0

感謝您的回覆!我做了更改,我發現在啓動時,publish_address和bound_address現在更新爲我的IP地址,而不是本地主機。但是,行爲仍然是一樣的。下面是我得到的: 'C:\ Program Files \ cURL \ bin> curl -XGET http://172.16.0.68:9200/_cluster/health?漂亮=真 「 { 」錯誤「:{ 」ROOT_CAUSE「:[{ 」類型「: 」master_not_discovered_exception「, 」原因「: 」等待[30秒]「 }], 」類型「:」 master_not_discovered_exception「, 」reason「:」等待[30s]「 }, 」status「:503 }' –

+0

嘗試network.bind。我發現我必須指定實際的IP地址,因爲它不是自動的綁定0.0.0.0 – hubbardr

+0

@hubbardr這不再是真的ES 2.x.這就是它爲早期版本(ES 1.x) – pickypg