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. 连接问题-Ping不是检查节点是否可以相互连接的好工具。使用telnet并尝试从主机1连接到端口9300上的主机2。

  2. 您的elasticsearch.yml设置为绑定127.0.0.1或错误的主机(如果您不确定,请绑定0.0.0.0,看看这是否解决了您的连接问题,然后重要的是将其更改为仅绑定内部主机,以避免弹性搜索直接暴露在互联网上)。

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

最新更新