【问题标题】:Kafka startup fails with zookeeper timeout (remote server), yet the machine can connect to zookeeper directlyKafka 启动失败,zookeeper 超时(远程服务器),但机器可以直接连接到 zookeeper
【发布时间】:2016-06-07 09:41:07
【问题描述】:

当我启动 kafka 时,它很快就失败了,同时抱怨它无法连接到 zookeeper。我将 zookeeper 作为一个独立的集群/集合运行。我很困惑,因为服务器之间没有防火墙(由 zookeeper-shell.sh 测试证明)。

来自 /var/log/kafka/server.log

2016-02-24 16:07:12,101 INFO kafka.server.KafkaServer: [Kafka Server 1], Connecting to zookeeper on 10.7.20.100:2181,10.7.20.101:2181,10.7.20.102:2181
2016-02-24 16:07:20,291 FATAL kafka.server.KafkaServerStartable: Fatal error during KafkaServerStable startup. Prepare to shutdown
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.server.KafkaServer.initZk(KafkaServer.scala:113)
    at kafka.server.KafkaServer.startup(KafkaServer.scala:69)
    at kafka.server.KafkaServerStartable.startup(KafkaServerStartable.scala:34)
    at kafka.Kafka$.main(Kafka.scala:46)
    at kafka.Kafka.main(Kafka.scala)
2016-02-24 16:07:20,294 INFO kafka.server.KafkaServer: [Kafka Server 1], shutting down
2016-02-24 16:07:20,312 INFO kafka.server.KafkaServer: [Kafka Server 1], shut down completed
2016-02-24 16:07:20,317 INFO kafka.server.KafkaServer: [Kafka Server 1], shutting down

但是从 /opt/kafka 安装目录我可以使用 esemble 连接字符串连接到 zookeeper - 所以我真的怀疑它是网络还是防火墙。

[me@dckafka01 kafka]$ cd /opt/kafka
[me@dckafka01 kafka]$ bin/zookeeper-shell.sh 10.7.20.100:2181,10.7.20.101:2181,10.7.20.102:2181

Connecting to 10.7.20.100:2181,10.7.20.101:2181,10.7.20.102:2181
Welcome to ZooKeeper!
JLine support is disabled
WATCHER::WatchedEvent state:SyncConnected type:None path:null

get /blah
null
cZxid = 0x400000009
ctime = Tue Feb 16 09:00:28 EST 2016
mZxid = 0x400000009
mtime = Tue Feb 16 09:00:28 EST 2016
pZxid = 0x40000017e
cversion = 2
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 0
numChildren = 2

ls /blah
[applications, registry]

正如预期的那样。有没有人有角度让我研究一下?

【问题讨论】:

    标签: apache-kafka apache-zookeeper


    【解决方案1】:

    嗯 - 更改超时有所帮助。现在我需要消除网络延迟

    猫配置/server.properties

    # coding: UTF-8 
    # This file created by Chef from template. Do not hand edit this file
    
    log.dirs=/var/kafka
    port=9092
    num.partitions=4
    default.replication.factor=3
    log.flush.interval.messages=1
    log.retention.minutes=43200
    log.retention.check.interval.ms=3600000
    num.replica.fetchers=4
    replica.fetch.wait.max.ms=5000
    replica.lag.max.messages=10000
    auto.leader.rebalance.enable=true
    num.network.threads=8
    advertised.host.name=10.7.20.71
    zookeeper.connection.timeout.ms=16000
    broker.id=1
    zookeeper.connect=10.7.20.100:2181,10.7.20.101:2181,10.7.20.102:2181
    

    【讨论】:

    • 您是否设法找到您的 kafka 超时的任何原因?
    • @radoslaw.busz 不幸的是,没有
    • @akaphenom 就我而言,我注意到每次让 Kafka 空闲时,它都会超时,并且不会重新连接
    • @JohnStrood:您在哪个版本的 Kafka 中看到了这一点,您是否知道 JIRA 问题中记录的问题?
    【解决方案2】:

    就我而言,我刚刚发现运行 zookeepers 的命令提示符有点挂起(通常发生在 Windows 中)。

    我只需要随机按下某个键,cmd 就会再次处于活动状态。然后运行命令没有给我任何错误。

    【讨论】:

    • 你在什么操作系统上运行?
    • 它在 Windows 上
    【解决方案3】:

    我在寻找 Kafka 无法连接到 Zookeeper 的特定问题的解决方案时发现了这个线程。在您的情况下,我认为这只是 Zookeeper 启动并准备接收连接(侦听套接字)的延迟。所以可能一个更好的解决方案是在启动 Kafka 之前等待,或者最好有一个脚本来检查 Zookeeper 节点是否准备好接收连接,然后启动 Kafka。我认为只为 Kafka 启动更改配置的超时并不好。应该更改它,例如,如果您认为您的网络太慢(您需要更大的数字)或者它足够快以处理较短的超时。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-12-23
      • 1970-01-01
      • 1970-01-01
      • 2015-08-08
      • 1970-01-01
      • 1970-01-01
      • 2019-09-12
      相关资源
      最近更新 更多