macOSでは、dockerを使ってkafkaをインストールし、遭遇したピットとソリューションをインストールします.
macOSでは、dockerを使ってkafkaをインストールします.
ピット:macOSのdockerの底の実現によって、インターネット上の多くの教程はmacOSにおいて成功的に実行できません.主な原因は、macOSのdockerが容器と宿主の間でipで直接通信できないからです.このため、インストール時にはipに関する設定に特に注意が必要であり、容器がホストipにアクセスする必要がある場合は、
鏡像を引き剥がす
起動zookeeper まで
起動kafka
なお、kafkaはzookeeperに依存しており、kafkaを起動する前にzookeeperを起動する必要があります.
以下の構成は、デフォルトのkafkaポートが9092ポートに配置されています. を構成する. に登録する. 例えば、私のパソコンはmacです.host-inpではこのマシンのipを書き込めません.
テスト機能は正常ですか?
kafkaの生産と消費をテストします.
kafkaの容器に入ります
なお、このときはすでに容器中の
kafkaのスクリプトディレクトリに入ります.
kafkaの生産者を立ち上げます.
kafkaを運営しています.生産者がメッセージを送ります.
kafkaの消費者を起動します.
もう一つの端末は、kafka容器に入り、
生産者に
生産者
https://www.jianshu.com/p/e8c29cba9fae https://docs.docker.com/docker-for-mac/networking/ https://yuanmomo.net/2019/06/13/docker-network/ https://www.jianshu.com/p/052f9c6ca664
kafka
はzookeeper
に依存しているので、dockerを使用してzookeeper
およびkafka
を同時にインストールする必要がある.ピット:macOSのdockerの底の実現によって、インターネット上の多くの教程はmacOSにおいて成功的に実行できません.主な原因は、macOSのdockerが容器と宿主の間でipで直接通信できないからです.このため、インストール時にはipに関する設定に特に注意が必要であり、容器がホストipにアクセスする必要がある場合は、
docker.for.mac.host.internal
またはhost.docker.internal
を使用する必要がある.鏡像を引き剥がす
docker pull wurstmeister/zookeeper
docker pull wurstmeister/kafka
起動容器起動zookeeper
docker run -d --name zookeeper -p 2181:2181 wurstmeister/zookeeper
-d
パラメータ設定バックグラウンド運転--name zookeeper
パラメータ指定容器別名-p 2181:2181
パラメータバインディングコンテナポートからホストポート起動kafka
なお、kafkaはzookeeperに依存しており、kafkaを起動する前にzookeeperを起動する必要があります.
以下の構成は、デフォルトのkafkaポートが9092ポートに配置されています.
docker run -d --name kafka -p 9092:9092 -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT={host-ip}:{zookeeper-port}/kafka -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://{host-ip}:9092 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 wurstmeister/kafka
-d
パラメータ指定容器バックグラウンド運転--name kafka
パラメータ指定容器別名-e
パラメータは、docker容器内の環境変数を設定することができ、各変数の解釈:KAFKA_BROKER_ID=0
はkafkaクラスタにおいて、kafka毎にBROOKER_がある.IDで自分を区別するKAFKA_ZOOKEEPER_CONNECT={host-ip}:{zookeeper-port}/kafka
は、zookeeper管理kafkaの経路KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://{host-ip}:9092
kafkaのアドレスポートをzookeeper KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092
kafka傍受アドレスdocker.for.mac.host.internal
を記入したいです.zookeeperポートは2181で起動します.kafkaはもうすぐ9092で起動します.私の命令はこのようなdocker run -d --name kafka -p 9092:9092 -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=docker.for.mac.host.internal:2181/kafka -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://docker.for.mac.host.internal:9092 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 wurstmeister/kafka
です.テスト機能は正常ですか?
kafkaの生産と消費をテストします.
kafkaの容器に入ります
docker exec -it kafka bash
kafka容器に入るスクリプトディレクトリなお、このときはすでに容器中の
bash
に入っているはずである.kafkaのスクリプトディレクトリに入ります.
kafka_2.12-2.5.0
はバージョンによって数字が変わるかもしれません.cd /opt/kafka_2.12-2.5.0/bin
lsを通して多くのshスクリプトを見ることができます.bash-4.4# ls
connect-distributed.sh kafka-delete-records.sh kafka-server-stop.sh
connect-mirror-maker.sh kafka-dump-log.sh kafka-streams-application-reset.sh
connect-standalone.sh kafka-leader-election.sh kafka-topics.sh
kafka-acls.sh kafka-log-dirs.sh kafka-verifiable-consumer.sh
kafka-broker-api-versions.sh kafka-mirror-maker.sh kafka-verifiable-producer.sh
kafka-configs.sh kafka-preferred-replica-election.sh trogdor.sh
kafka-console-consumer.sh kafka-producer-perf-test.sh windows
kafka-console-producer.sh kafka-reassign-partitions.sh zookeeper-security-migration.sh
kafka-consumer-groups.sh kafka-replica-verification.sh zookeeper-server-start.sh
kafka-consumer-perf-test.sh kafka-run-class.sh zookeeper-server-stop.sh
kafka-delegation-tokens.sh kafka-server-start.sh zookeeper-shell.sh
bash-4.4#
kafkaの生産者と消費者をテストします.kafkaの生産者を立ち上げます.
kafkaを運営しています.生産者がメッセージを送ります.
./kafka-console-producer.sh --broker-list localhost:9092 --topic first-topic
会話のヒントが出た小>
を見たらメッセージを送ることができますが、焦らずにまず消費者をスタートさせてください.kafkaの消費者を起動します.
もう一つの端末は、kafka容器に入り、
/opt/kafka_2.12-2.5.0/bin
ディレクトリに入り、kafkaを実行する消費者はメッセージを受信する../kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic first-topic --from-beginning
メッセージの送信と受信をテストします.生産者に
Hello
を送ると、消費者にHello
を受け取ることができるはずです.生産者
jabin@jabindeiMac ~/code/tmp » docker exec -it kafka bash
bash-4.4# cd /opt/kafka_2.12-2.5.0/bin/
bash-4.4# ./kafka-console-producer.sh --broker-list localhost:9092 --topic first-topic
>Hello
>
消費者jabin@jabindeiMac ~/code/tmp » docker exec -it kafka bash
bash-4.4# cd /opt/kafka_2.12-2.5.0/bin/
bash-4.4# ./kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic first-topic --from-beginning
Hello
参考文献https://www.jianshu.com/p/e8c29cba9fae https://docs.docker.com/docker-for-mac/networking/ https://yuanmomo.net/2019/06/13/docker-network/ https://www.jianshu.com/p/052f9c6ca664