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)
カフカ
Zookeeperに正しく接続していないようです。セットアップ(マルチマシン、VM、コンテナー)がわからないため、何が問題なのかを判断するのは困難です。デバッグ出力から、予想される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は、zookeeper.connect
ファイルの$KAFKA_HOME/config/server.properties
構成プロパティで指定されたアドレスでZookeeperを探します。 Kafkaを開始する前に必ず編集してください。また、127.0.0.1
だけでなく、Zookeeperインスタンスの実際のパブリックIPを指定してみてください。これにより、コンテナで実行している場合の多くの混乱が解決します。あなたの場合は次のようになります:zookeeper.connect=192.xxxxxx.110:2182
AWSで実行している場合、またはコンテナで操作している場合は、Kafka構成にも関連します。次の2つの構成プロパティを更新して、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
これらの最後の2つのポート(2888 3888)は、Zookeeperクラスターを実行している場合にのみ必要です(フォロワーがそれぞれリーダーとZookeeperリーダーの選出に接続するため、複数のZookeeperサーバーがある場合は、ファイアウォールのようなものでブロックを解除してください) 。
Telnetコマンドでzookeeperの接続を確認します。
telnet 192.xxxxxx.110 2181
エラーが発生する可能性があります。その場合は、プロセスが実行されていることを確認してください。
ps -ef | grep "zookeeper.properties"
実行されていない場合は、kafkaホームディレクトリに移動して開始します。
bin/zookeeper-server-start.sh config/zookeeper.properties&
Zookeper
構成に問題があります。動物園の飼育係が稼働していることを確認してください。それが実行されるデフォルトのポートは2181
もう少し情報があり、code
が役に立つと思います。
同じ問題が発生しましたが、問題はzookeeperconfigのmaxclientconnectionsプロパティでした。
/ etc/zookeeper/confの設定ファイルに「maxClientCnxns = 20」のようなものが表示された場合は、コメントアウトしてzookeeperを再起動します。
使用可能なすべての接続がすでに使い果たされているかどうかを確認することもできます。 APIを使用してZKに接続している場合は、完了後に接続を解放してください。
私もその問題に直面します。 zkノードのファイアウォールをシャットダウンすると機能します。