ポート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
コンシューマーがローカルホストから読み取ろうとしているのはなぜですか?これが読み取られるオプション、コマンドライン、またはデフォルトファイルはありますか。そして私はそれを変えることができますか?
どんな助けでもいただければ幸いです!
同じ問題がありました。 kafka構成(config/server.properties)のコメントの指示に従って、プロパティ 'advertised.Host.name'を設定し、kafkaサーバーを再起動することで修正しました。
同じ問題が発生しました。使用しています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でした)
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
私はKafkaとZookeeperを同様の(そしてさらに複雑な)配置でセットアップしましたが、kafka-console-consumer.shは宣伝どおりに機能します。
これは、誤って構成されたKafkaインスタンス(サーバー構成でそのzookeeperノードを指定する)である可能性が非常に高いです。
Kafka構成を確認してください。デフォルトでは、zookeeperインスタンスが指定されていない場合は、単一のlocalhostインスタンスと見なされます。それ以外の場合は、「server.1」... 2など動物園管理者インスタンスを定義するには、規則を使用する必要があります(適切なクォーラムを取得するには、最低3つが推奨/必須です)。