web-dev-qa-db-ja.com

テストkafkaコンシューマとプロデューサが接続に失敗しました

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)
9
vbNewbie

カフカ

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サーバーがある場合は、ファイアウォールのようなものでブロックを解除してください) 。

9
Joel B

Telnetコマンドでzookeeperの接続を確認します。

telnet 192.xxxxxx.110 2181

エラーが発生する可能性があります。その場合は、プロセスが実行されていることを確認してください。

ps -ef | grep "zookeeper.properties"

実行されていない場合は、kafkaホームディレクトリに移動して開始します。

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

7
nafooesi

Zookeper構成に問題があります。動物園の飼育係が稼働していることを確認してください。それが実行されるデフォルトのポートは2181

もう少し情報があり、codeが役に立つと思います。

4
user2720864

同じ問題が発生しましたが、問題はzookeeperconfigのmaxclientconnectionsプロパティでした。

/ etc/zookeeper/confの設定ファイルに「maxClientCnxns = 20」のようなものが表示された場合は、コメントアウトしてzookeeperを再起動します。

3
user3321437

使用可能なすべての接続がすでに使い果たされているかどうかを確認することもできます。 APIを使用してZKに接続している場合は、完了後に接続を解放してください。

1
nucatus

私もその問題に直面します。 zkノードのファイアウォールをシャットダウンすると機能します。

1
Dazhuang