kafkaブローカーと飼育係のドッキング画像があります。現在はz1, b1, b2
と呼んでいます。 彼らはように2台の物理サーバs1
とs2
上に展開されています
s1
が自分docker-compose.yml
ファイルでb2
Docker、Kafka - リモートブローカー間で複製が行われない
をz1
とb1
s2
が含まれて含まれ、飼育係は、次のようにポートを設定しています
- 2181:2181
- 2888:2888
- 3888:3888
次のようにブローカー:
- 9092:9092
トピックは--replication-factor 2
と--partitions 4
と作成できます。
データは常にトピックにプッシュされますが、それでも問題が発生します。
トピック作成の直後にkafka-topics --describe --topic <name_of_topic> --zookeeper <zookeeperIP:port>
を実行すると、すべてがinsync
になります。
2回目の実行で(短い遅延で)、b1
は、からb2
パーティション・レプリカを削除しますが、はinsync
からb1
パーティション・レプリカを削除しません。 b1
からのserver.logで
は、これらの例外の多くが表示されます。
WARN [ReplicaFetcherThread-0-1], Error in fetch [email protected]de3 (kafka.server.ReplicaFetcherThread)
java.io.IOException: Connection to ef447651b07a:9092 (id: 1 rack: null) failed
at kafka.utils.NetworkClientBlockingOps$.awaitReady$1(NetworkClientBlockingOps.scala:83)
at kafka.utils.NetworkClientBlockingOps$.blockingReady$extension(NetworkClientBlockingOps.scala:93)
at kafka.server.ReplicaFetcherThread.sendRequest(ReplicaFetcherThread.scala:248)
at kafka.server.ReplicaFetcherThread.fetch(ReplicaFetcherThread.scala:238)
at kafka.server.ReplicaFetcherThread.fetch(ReplicaFetcherThread.scala:42)
at kafka.server.AbstractFetcherThread.processFetchRequest(AbstractFetcherThread.scala:118)
at kafka.server.AbstractFetcherThread.doWork(AbstractFetcherThread.scala:103)
at kafka.utils.ShutdownableThread.run(ShutdownableThread.scala:63)
スワップのリーダーシップは最後のものだけ、彼らがシャットダウンして、再度起動しているとして、ブローカーb1
とb2
の間で動作しますが、オンラインはトピックを完全に制御しています。つまり、他のブローカーがオンラインに戻ったとしても、すべてのパーティションのリーダーであり、insync
は1つだけです。
すべてのデータを消去し、ブローカーと飼い主の両方をリセットしようとしましたが、問題は解決しません。
パーティションが正しく複製されないのはなぜですか?
お返事ありがとうございます。ドッカーファイルを貼り付けることはできません。ネットワークの設定だけが問題になるため、無意味です。 docker-compose.ymlのポートは問題のようにマッピングされ、zookeepersのクライアントポートは2181に設定されています。両方のカフカブローカーにはリスナー= PLAINTEXT://127.0.0.1:9092があります。私はまた、ブローカが0.0.0.0:9092と0.0.0.0:9093にマッピングされるように、ipと変更ポートを指定しないようにしましたが、問題は依然として続きます。私はPLAINTEXTのみを指定しているので、REPLICATION listenerについても読んでください。 – milkamar
あなたの環境は何ですか?あなたはこれを実行しますか? MacまたはKubernetesのローカルでLinux VMを搭載したドッカーマシンを使用していますか?これはDockerのネットワーク機能にどのような影響を与えますか?また、Dockerの設定に関する質問を続けているので、dockerファイルを表示するのは無意味ではありません。また、完全な画像が表示されないときにデバッグするのは困難です。ホストネットワークモードまたはブリッジネットワークモード?どのようにコンテナの 'ホスト名'を設定しますか? –