【问题标题】:testing kafka consumer and producer failed on connection测试kafka消费者和生产者连接失败
【发布时间】:2014-04-09 10:41:46
【问题描述】:

我一直在尝试测试 kafka 安装并使用该指南创建了生产者和消费者。尝试检索消息时出现以下错误:

 WARN Session 0x0 for server null, unexpected error, closing socket connection and 
 attempting reconnect (org.apache.zookeeper.ClientCnxn)
 java.net.ConnectException: Connection refused
    at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
    at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:739)
    at org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:1146)
 [2014-03-04 18:01:20,628] INFO Terminate ZkClient event thread. (org.I0Itec.zkclient.ZkEventThread)
 [2014-03-04 18:01:21,315] INFO Opening socket connection to server kafka-test/192.xxxxxx.110:2182 (org.apache.zookeeper.ClientCnxn)
 [2014-03-04 18:01:21,418] INFO Session: 0x0 closed (org.apache.zookeeper.ZooKeeper)
 Exception in thread "main" org.I0Itec.zkclient.exception.ZkTimeoutException: Unable to connect to zookeeper server within timeout: 6000
    at org.I0Itec.zkclient.ZkClient.connect(ZkClient.java:880)
    at org.I0Itec.zkclient.ZkClient.<init>(ZkClient.java:98)
    at org.I0Itec.zkclient.ZkClient.<init>(ZkClient.java:84)
    at kafka.consumer.ZookeeperConsumerConnector.connectZk(ZookeeperConsumerConnector.scala:151)
    at kafka.consumer.ZookeeperConsumerConnector.<init>(ZookeeperConsumerConnector.scala:112)
    at kafka.consumer.ZookeeperConsumerConnector.<init>(ZookeeperConsumerConnector.scala:123)
    at kafka.consumer.Consumer$.create(ConsumerConnector.scala:89)
    at kafka.consumer.ConsoleConsumer$.main(ConsoleConsumer.scala:178)
    at kafka.consumer.ConsoleConsumer.main(ConsoleConsumer.scala)
 [2014-03-04 18:01:21,419] INFO EventThread shut down (org.apache.zookeeper.ClientCnxn)

【问题讨论】:

    标签: apache-zookeeper apache-kafka


    【解决方案1】:

    卡夫卡

    您似乎没有正确连接到 Zookeeper。我不确定您的设置(多机、虚拟机、容器),所以很难说出了什么问题。从调试输出中,我看到以下行暗示您预期的 Zookeeper IP:

    [2014-03-04 18:01:21,315] INFO Opening socket connection to server kafka-test/192.xxxxxx.110:2182 (org.apache.zookeeper.ClientCnxn)

    Kafka 在$KAFKA_HOME/config/server.properties 文件中zookeeper.connect 配置属性指定的地址查找Zookeeper。请务必在启动 Kafka 之前对其进行编辑。此外,请尝试提供 Zookeeper 实例的实际公共 IP,而不仅仅是 127.0.0.1,因为如果您在容器中运行,这会解决很多混乱。在您的情况下,它看起来像: zookeeper.connect=192.xxxxxx.110:2182

    如果您在 AWS 上运行或在容器中运行,也与 Kafka 配置相关,不要忘记更新以下两个配置属性以确保连接到 Kafka 的客户端看到正确的公共 IP

    • advertised.host.name
    • advertised.port

    Kafka 会看到正确的内部 IP

    • host.name
    • port

    动物园管理员

    Zookeeper 在设置时也有一些问题。在您的 Zookeeper 实例上,不要忘记编辑 zoo.cfg(通常在 /etc/zookeeper/conf)文件中的 server 配置属性以指向您的 Zookeeper 实例的正确 IP。您的情况可能如下:

    server.1=192.xxxxxx.110:2888:3888

    最后两个端口 (2888 3888) 仅在您运行 Zookeeper 集群时才需要(用于分别连接到领导者和 Zookeeper 领导者选举的追随者,因此如果您有多个Zookeeper 服务器)。

    【讨论】:

    • 谢谢@joel-b,这引导我朝着正确的方向前进。 advertised.host.name 现在已弃用,因此您需要为此使用advertising.listeners。
    【解决方案2】:

    使用 telnet 命令检查您的 zookeeper 连接:

    远程登录 192.xxxxxx.110 2181

    您可能会遇到错误,在这种情况下检查进程是否正在运行:

    ps -ef | grep "zookeeper.properties"

    如果它没有运行,进入 kafka 主目录启动它:

    bin/zookeeper-server-start.sh config/zookeeper.properties &

    【讨论】:

      【解决方案3】:

      您的 Zookeper 配置有问题。确保您的 zookeeper 已启动并正在运行。它运行的默认端口是 2181

      我相信更多信息和一些 code 可能会有用。

      【讨论】:

        【解决方案4】:

        我遇到了同样的问题,问题是 zookeeper 配置中的最大客户端连接属性。

        如果您在 /etc/zookeeper/conf 的配置文件中看到类似“maxClientCnxns = 20”的内容,请将其注释掉并重新启动 Zookeeper。

        【讨论】:

          【解决方案5】:

          您还可以检查所有可用的连接是否已经用尽。如果您使用 API 连接到 ZK,请确保在完成后释放连接。

          【讨论】:

            【解决方案6】:

            我也遇到了这个问题。当我关闭zk节点的防火墙时,它会起作用。

            【讨论】:

              猜你喜欢
              • 2019-05-09
              • 1970-01-01
              • 2020-05-21
              • 1970-01-01
              • 2019-01-15
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2018-01-07
              相关资源
              最近更新 更多