kafka upを起動すると、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に接続できます。したがって、ネットワークORファイアウォールであるとは思えません。
[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]
これは予想通りです。誰かが私が調査するための角度を持っていますか?
まあ-タイムアウトを変更することは助けになりました。今、私はネットワーク遅延を追跡する必要があります
cat config/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 Zookeeperに接続できないという特定の問題の解決策を探しているときに、このスレッドを見つけました。あなたの場合、Zookeeperを起動して準備するのが遅れているだけだと思います。接続を受信する(ソケットをリッスンする)ため、おそらくより良い解決策は、開始する前に待機することですKafkaまたは、Zookeeperノードが接続を受信する準備ができていることを確認してからKafkaを開始するスクリプトを用意するのが最善です。I構成されたタイムアウトをKafka起動のみに変更するのは良いことではないと思います。たとえば、ネットワークが遅すぎる(より大きな数値が必要になる)と思われる場合は、変更する必要があります。短いタイムアウトを処理するのに十分な速度です。