Kafka は Zookeeper に依存しているため、Docker を使用して Zookeeper と Kafka を同時にインストールする必要があります。
x01 動物園キーパーをインストールする
1) 最初にZookeeperイメージをダウンロードします
> docker search zookeeper
> docker pull wurstmeister/zookeeper
2) Zookeeper サービスを開始します
> docker run -d --restart=always --log-driver json-file --log-opt max-size=100m --log-opt max-file=2 --name zookeeper -p 2181:2181 -v /etc/localtime:/etc/localtime wurstmeister/zookeeper
x02 カフカをインストールする
1) 最初にkafkaイメージをダウンロードします
> docker search kafka
> docker pull wurstmeister/kafka
2) Kafkaサービスを開始します
> docker run -d --restart=always --log-driver json-file --log-opt max-size=100m --log-opt max-file=2 --name kafka -p 9092:9092 -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=host.docker.internal:2181/kafka -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://host.docker.internal:9092 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 -v /etc/localtime:/etc/localtime wurstmeister/kafka
x03 メッセージの検証
1) カクファコンテナに入る
> dcker exec -it kafka bash
> cd /opt/kafka/bin
たくさんのスクリプトが表示されます。
> ls
connect-distributed.sh kafka-console-producer.sh kafka-leader-election.sh kafka-run-class.sh trogdor.sh
connect-mirror-maker.sh kafka-consumer-groups.sh kafka-log-dirs.sh kafka-server-start.sh windows
connect-standalone.sh kafka-consumer-perf-test.sh kafka-mirror-maker.sh kafka-server-stop.sh zookeeper-security-migration.sh
kafka-acls.sh kafka-delegation-tokens.sh kafka-preferred-replica-election.sh kafka-streams-application-reset.sh zookeeper-server-start.sh
kafka-broker-api-versions.sh kafka-delete-records.sh kafka-producer-perf-test.sh kafka-topics.sh zookeeper-server-stop.sh
kafka-configs.sh kafka-dump-log.sh kafka-reassign-partitions.sh kafka-verifiable-consumer.sh zookeeper-shell.sh
kafka-console-consumer.sh kafka-features.sh kafka-replica-verification.sh kafka-verifiable-producer.sh
2) テストプロデューサーとコンシューマー
プロデューサー
> ./kafka-console-producer.sh --broker-list localhost:9092 --topic test-topic
コンシューマ(別の端末が必要)
./kafka-console-consumer.sh --bootstrap-server host.docker.internal:9092 --topic test-topic --from-beginning
注 ⚠️:
ここで Zookeeper に登録するときは、host.docker.internal が使用されます。プログラムで kafka に接続するときに、localhost を直接使用すると、次のようなエラーが報告されます: ノード host.docker.internal:9092 への接続エラー、およびその処理方法:
- このマシンのホスト ファイルにマッピングを追加し、127.0.0.1 host.docker.internal を設定できます。
- host.docker.internal は使用せず、独自のホスト IP を使用しますが、IP が変更された場合は再構成が必要です。
x04 Kafka クラスターモードの構築
新しい Kafka インスタンスを作成します。
> docker run -d --restart=always --log-driver json-file --log-opt max-size=100m --log-opt max-file=2 --name kafka -p 9093:9093 -e KAFKA_BROKER_ID=1 -e KAFKA_ZOOKEEPER_CONNECT=host.docker.internal:2181/kafka -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://host.docker.internal:9093 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9093 -v /etc/localtime:/etc/localtime wurstmeister/kafka
- ブローカー ID の変更: KAFKA_BROKER_ID 0、1、2
- ポート番号の変更: 9092、9093、9094
x05 kafka-manger のインストール
1) インストールする
> docker pull sheepkiller/kafka-manager
2) 開始
docker run -d --name kfk-manager --restart always -p 9000:9000 -e ZK_HOSTS=<这里换成你的zookeeper地址和端口> sheepkiller/kafka-manager
3) アドレス localhost:9000
にアクセスして、独自の Zookeeper アドレスを設定します。
注 ⚠️:
最初に localhost:2181 を設定しましたが、自分のブローカー情報をクエリできないことがわかりました。その後、Zookeeper にアクセスして確認し、追加する必要がありました。パス
localhost: 2181/kafka で十分です。