Elasticsearch集群配置未发现单播和多播

时间:2015-12-19 00:35:10

标签: elasticsearch

我一直在尝试使用这个可爱的ansible-elasticsearch项目来设置一个九节点的Elasticsearch集群。

每个节点都已启动并运行......但它们并未相互通信。主节点认为没有数据节点。数据节点未连接到主节点。

他们都有相同的cluster.name。我已尝试启用多播(discovery.zen.ping.multicast.enabled: true)并禁用(先前设置为false,discovery.zen.ping.unicast.hosts:["host1","host2",..."host9"]),但在任何一种情况下节点都不通信。

他们之间有网络连接 - 通过端口9300通过telnet验证。

示例输出: $ curl host1:9200/_cluster/health {"error":{"root_cause":[{"type":"master_not_discovered_exception","reason":"waited for [30s]"}],"type":"master_not_discovered_exception","reason":"waited for [30s]"},"status":503}

我想不出他们为什么不能联系的更多理由 - 寻找更多关于尝试什么的想法。

编辑:我终于解决了这个问题。有效的设置为publish_host"_non_loopback:ipv4_",单播discovery.zen.ping.unicast.hosts设置为["host1:9300","host2:9300","host3:9300"] - 仅列出专用主节点。我的最小主节点数为2.

1 个答案:

答案 0 :(得分:6)

我认为可能导致这种行为的唯一原因是:

  1. 连接问题 - Ping不是检查节点是否可以相互连接的好工具。使用telnet并尝试在端口9300上从host1连接到host2。

  2. 您的elasticsearch.yml设置为绑定127.0.0.1或错误的主机(如果您不确定,请绑定0.0.0.0以查看是否能解决您的连接问题,然后将其与#39;重要的是将其更改为仅绑定内部主机以避免将elasticsearch直接暴露给互联网。)

  3. 您的publish_host不正确 - 这通常发生在Docker容器中运行ES时,例如,您需要确保将publish_host设置为可以通过其他主机访问的地址。