我在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。
在此先感谢