web-dev-qa-db-ja.com

Kafka:kafka-console-consumerを接続してリモートブローカーのトピックコンテンツを取得する方法は?

ポート9092..9094のec2の1台のマシンにkafka zookeeperと3つのブローカーをセットアップし、別のマシンからトピックコンテンツを消費しようとしています。ポート2181(zk)、9092、 9093と9094(サーバー)はコンシューマーマシンに公開されています。bin/kafka-topics.sh --describe --zookeeper 172.X.X.X:2181 --topic remotetopicそれは私に

トピック:リモートトピックPartitionCount:1 ReplicationFactor:3構成:トピック:リモートトピックパーティション:0リーダー:2レプリカ:2,0,1 Isr:2,0,1 Blockquote

しかし、私がするときbin/kafka-console-consumer.sh --zookeeper 172.X.X.X:2181 --from-beginning --topic remotetopic私は得る

警告ブローカー[id:0、Host:localhost、port:9092]からのトピック[Set(remotetopic)]の相関ID 0のトピックメタデータのフェッチに失敗しました(kafka.client.ClientUtils $)Java.nio .channels.ClosedChannelException

コンシューマーがローカルホストから読み取ろうとしているのはなぜですか?これが読み取られるオプション、コマンドライン、またはデフォルトファイルはありますか。そして私はそれを変えることができますか?

どんな助けでもいただければ幸いです!

7
notrai

同じ問題がありました。 kafka構成(config/server.properties)のコメントの指示に従って、プロパティ 'advertised.Host.name'を設定し、kafkaサーバーを再起動することで修正しました。

7
r2d3

同じ問題が発生しました。使用していますkafka 0.11そしてUbuntu VM)でプロデューサーとブローカーを開始し、Windows10でコンシューマーを開始しました。

私は変わった(そしてコメントされていない)

advertised.listeners=PLAINTEXT://your.Host.name:9092

advertised.listeners=PLAINTEXT://<myActual IP address>:9092

例:

advertised.listeners=PLAINTEXT://192.168.150.150:9092

ファイルからconfig/server.propertiesサーバー/ブローカー側(つまり、私の場合はUbuntu VMでした)

5
Sukumaar

pythonスクリプトを作成しました。これにより、sshトンネルを介してkafka/zookeeperにアクセスし、ローカルマシンからメッセージを消費および生成できます。

LinuxおよびMacと互換性があります

Usage: kafkatunnel.py [OPTIONS] COMMAND [ARGS]...

  Access kafka/zookeeper via ssh tunnel to consume and produce messages from
  your local machine

Commands:
  aws     retrieve kafka/zookeeper ip's from AWS...
  manual  provide the IP's of your zookeeper/kafka

試してみてください: https://github.com/simple-machines/kafka-tunnel

2
Felix

私はKafkaとZookeeperを同様の(そしてさらに複雑な)配置でセットアップしましたが、kafka-console-consumer.shは宣伝どおりに機能します。

これは、誤って構成されたKafkaインスタンス(サーバー構成でそのzookeeperノードを指定する)である可能性が非常に高いです。

Kafka構成を確認してください。デフォルトでは、zookeeperインスタンスが指定されていない場合は、単一のlocalhostインスタンスと見なされます。それ以外の場合は、「server.1」... 2など動物園管理者インスタンスを定義するには、規則を使用する必要があります(適切なクォーラムを取得するには、最低3つが推奨/必須です)。

0
Darrell Teague