記錄下自己的操作兄淫,避免下次用的時(shí)候又去踩坑
kafka需要zookeeper管理锦溪,所以需要先安裝zookeeper躏精。
下載wurstmeister/zk和kafka
docker pull wurstmeister/zookeeper
docker pull wurstmeister/kafka
啟動(dòng)zk
docker run -d --name zookeeper -p 2181:2181 -t wurstmeister/zookeeper
進(jìn)入zk容器
docker exec -it zookeeper /bin/sh
這時(shí)查看zk節(jié)點(diǎn)只有一個(gè)zookeeper
插播一條快捷鍵
docker退出當(dāng)前容器 快捷鍵:
先按李丰,ctrl+p
再按惭蟋,ctrl+q
啟動(dòng)kafka
docker run -d --name kafka --publish 9092:9092 --link zookeeper --env KAFKA_ZOOKEEPER_CONNECT=本機(jī)ip:2181 --env KAFKA_ADVERTISED_HOST_NAME=127.0.0.1 --env KAFKA_ADVERTISED_PORT=9092 wurstmeister/kafka
第一次嘗試啟動(dòng)容器是用的第一種方式苗桂,后面發(fā)現(xiàn)在容器外面連接不了kafka,可能是因?yàn)樯傻膋afka地址是容器內(nèi)地址告组。所以換了第二種方式啟動(dòng)煤伟。
-
docker run -d --name kafka -p 9092:9092 -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=本機(jī)ip:2181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://本機(jī)ip:9092 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 -t wurstmeister/kafka
image.png
進(jìn)入kafka容器測試消息
進(jìn)入容器:
docker exec -it {container id} /bin/bash
進(jìn)入到opt/kafka_2.13-2.7.0/bin
創(chuàng)建主題:
./kafka-console-producer.sh --broker-list localhost:9092 --topic {topicName}
,然后發(fā)送消息
{"datas":[{"name":"jianshu","value":"10"}],"ver":"1.0"}
- 運(yùn)行consumer查看是否有消息:
kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic {topicName} --from-beginning
進(jìn)入zk容器查看節(jié)點(diǎn)信息
發(fā)現(xiàn)和圖3相比 創(chuàng)建了很多關(guān)于kafka的節(jié)點(diǎn)
我們可以看到我們創(chuàng)建的主題及其信息
一些坑
kafka在啟動(dòng)時(shí)連接zookeeper失敗,報(bào)錯(cuò)信息如下
kafka.zookeeper.ZooKeeperClientTimeoutException: Timed out waiting for connection while in state: CONNECTING
at kafka.zookeeper.ZooKeeperClient.waitUntilConnected(ZooKeeperClient.scala:262)
at kafka.zookeeper.ZooKeeperClient.<init>(ZooKeeperClient.scala:119)
at kafka.zk.KafkaZkClient$.apply(KafkaZkClient.scala:1881)
at kafka.server.KafkaServer.createZkClient$1(KafkaServer.scala:441)
at kafka.server.KafkaServer.initZkClient(KafkaServer.scala:466)
at kafka.server.KafkaServer.startup(KafkaServer.scala:233)
at kafka.server.KafkaServerStartable.startup(KafkaServerStartable.scala:44)
at kafka.Kafka$.main(Kafka.scala:82)
at kafka.Kafka.main(Kafka.scala)
[2021-07-14 02:36:16,654] INFO shutting down (kafka.server.KafkaServer)
[2021-07-14 02:36:16,666] INFO App info kafka.server for 0 unregistered (org.apache.kafka.common.utils.AppInfoParser)
[2021-07-14 02:36:16,667] INFO shut down completed (kafka.server.KafkaServer)
[2021-07-14 02:36:16,668] ERROR Exiting Kafka. (kafka.server.KafkaServerStartable)
[2021-07-14 02:36:16,670] INFO shutting down (kafka.server.KafkaServer)
上網(wǎng)查了之后木缝,發(fā)現(xiàn)是本機(jī)ip變化導(dǎo)致的...這就很騷便锨。這里我修改一下KAFKA_ZOOKEEPER_CONNECT的ip就可以了。
貼一下別人的解決方案吧:
https://blog.csdn.net/mbshqqb/article/details/91604632
https://blog.csdn.net/qq_41497111/article/details/89923611