【问题标题】:Zookeeper's 3888 listen on localhost if using hostname instead of IP如果使用主机名而不是 IP,Zookeeper 的 3888 会在 localhost 上侦听
【发布时间】:2020-11-12 01:53:38
【问题描述】:

如果在 zookepeer 的配置中我将服务器设置为:

clientPort=2181
server.1=kafka-test-01:2888:3888
server.2=kafka-test-02:2888:3888
server.3=kafka-test-03:2888:3888

kafka-test-0X 是一个实例,并且可以从任何实例进行域解析,我注意到 Zookeeper 的端口正在侦听 127.0.1.1。事实上,由于无法通过 3888 进行通信,因此“领导端口”2888 也没有监听。

tcp6       0      0 127.0.1.1:3888          :::*                    LISTEN      26951/java

但是,如果我使用实际 IP 而不是主机名,例如:

server.1=192.168.0.11:2888:3888
server.2=192.168.0.12:2888:3888
server.3=192.168.0.13:2888:3888

它在每个 IP 上都可以正常监听,并且可以从一个 IP 连接到另一个。

tcp6       0      0 192.168.0.13:2888       :::*                    LISTEN      26926/java
tcp6       0      0 192.168.0.13:3888       :::*                    LISTEN      26926/java

我见过很多使用主机名的例子,甚至官方documentation也使用主机名,那可能是什么原因呢?

【问题讨论】:

    标签: apache-kafka apache-zookeeper distributed-computing


    【解决方案1】:

    您需要从 /etc/hosts 文件中删除以下条目

    127.0.1.1 kafka-test-01 
    

    然后重启你的 zookeeper 集群。

    zookeeper 重启前

    ]# netstat -tunlp | grep 3888
    tcp6       0      0 127.0.1.1:3888          :::*                    LISTEN      23512/java 
    

    zookeeper重启后

    netstat -tunlp | grep 3888
    tcp6       0      0 <SERVER_IP>:3888        :::*                    LISTEN      30103/java 
    

    【讨论】:

      【解决方案2】:

      这可能是因为在您的 /etc/hosts 中,您的主机名可能针对 127.0.0.1 将其注释掉,如下所示 #127.0.1.1

      【讨论】:

        【解决方案3】:

        正如其他人提到的,这可能是因为您的主机名解析为环回地址而不是真实 IP。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2015-03-12
          • 2015-06-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-04-30
          • 2020-02-06
          相关资源
          最近更新 更多