【问题标题】:Elasticsearch cluster configuration is not discovering any nodes under both unicast and multicastElasticsearch 集群配置在单播和多播下都没有发现任何节点
【发布时间】:2023-03-30 13:58:01
【问题描述】:

我一直在尝试使用可爱的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。

【问题讨论】:

    标签: elasticsearch


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 感谢您提醒我 ping 是不够的 - 但是 telnet 也可以连接超过 9300。所有主机都绑定到0.0.0.0 并且publish_host 未设置。
    • 发布主机可能是错误的,您可以将它设置为正确的吗?这应该是集群中其他机器可以访问和可见的 IP 地址。
    • @Dave 我看到你已经接受了我的回答,是publish_host吗?
    • 是的,最终起作用的设置在上面——我认为有几个潜在的问题——我仍然不完全清楚多播 ping 是否在 9300 上,但我认为不是?在这种情况下,它们可能已被阻止。 - 在列出单播主机时,我最初列出了网络中的每个节点,但只需要列出主节点。我现在有三个专用的。 - publish_host 未设置。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多