我在3個AWS主機上運行Docker容器內的3節點Elasticsearch 2.1集羣。 Elasticsearch.yml包含除了其他一些東西以下:AWS中的Docker化Elasticsearch集羣 - 每個節點選擇自己
network.host: 0.0.0.0
discovery.type: "ec2"
discovery.ec2.ping_timeout: "30s"
discovery.zen.ping.multicast.enabled: false
cloud.aws.access_key: ...
cloud.aws.secret_key: ...
cloud.aws.region: ...
在命令行我有:
-Des.network.bind_host=0.0.0.0 -Des.cluster.name=XXX -Des.node.name=XXX-1 (up to -XXX-3)
數據存儲在動態安裝在節點的啓動EBS卷; AWS雲插件已安裝。
一切工作正常,包括重新啓動和更新,直到整個系統通過一般網絡問題。不知道那裏發生了什麼。 之後,每個節點啓動時,要求它在XXX集羣中運行但declairs本身作爲主:
[cluster.service] [XXX-3] new_master {XXX-3} {5oQHbq_KS8-JrIuFfTTBdw} {192.168.AAA.BB} {192.168.CCC.DD:9300}, 原因:禪宗迪斯科加入(elected_as_master,聯接接受[0])」}
我成功通過設置來解決這個問題network.host: _ec2_
在一個主機上啓動時,該主機成功連接到其中一個正在運行的實例,並且只有在第三個節點成功連接到集羣后,即使使用network.host: 0.0.0.0
。現在它再次運行得很好。
我想了解爲什麼我有這個問題 - 在AWS中使用0.0.0.0是否合法?在將僅一個節點network.host更改爲_ec2_
後,它如何再次工作。 另一點是我想在本地環境中使用相同的命令行(vagrant),但在這種情況下我不能使用ec2。
在此先感謝