记录下自己的操作,避免下次用的时候又去踩坑
kafka需要zookeeper管理,所以需要先安装zookeeper。
下载wurstmeister/zk和kafka
docker pull wurstmeister/zookeeper
docker pull wurstmeister/kafka
启动zk
docker run -d --name zookeeper -p 2181:2181 -t wurstmeister/zookeeper
进入zk容器
docker exec -it zookeeper /bin/sh
这时查看zk节点只有一个zookeeper
插播一条快捷键
docker退出当前容器 快捷键:
先按,ctrl+p
再按,ctrl+q
启动kafka
docker run -d --name kafka --publish 9092:9092 --link zookeeper --env KAFKA_ZOOKEEPER_CONNECT=本机ip:2181 --env KAFKA_ADVERTISED_HOST_NAME=127.0.0.1 --env KAFKA_ADVERTISED_PORT=9092 wurstmeister/kafka
第一次尝试启动容器是用的第一种方式,后面发现在容器外面连接不了kafka,可能是因为生成的kafka地址是容器内地址。所以换了第二种方式启动。
-
docker run -d --name kafka -p 9092:9092 -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=本机ip:2181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://本机ip:9092 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 -t wurstmeister/kafka
进入kafka容器测试消息
进入容器:
docker exec -it {container id} /bin/bash
进入到opt/kafka_2.13-2.7.0/bin
创建主题:
./kafka-console-producer.sh --broker-list localhost:9092 --topic {topicName}
,然后发送消息
{"datas":[{"name":"jianshu","value":"10"}],"ver":"1.0"}
- 运行consumer查看是否有消息:
kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic {topicName} --from-beginning
进入zk容器查看节点信息
发现和图3相比 创建了很多关于kafka的节点
我们可以看到我们创建的主题及其信息
一些坑
kafka在启动时连接zookeeper失败,报错信息如下
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)
上网查了之后,发现是本机ip变化导致的...这就很骚。这里我修改一下KAFKA_ZOOKEEPER_CONNECT的ip就可以了。
贴一下别人的解决方案吧:
https://blog.csdn.net/mbshqqb/article/details/91604632
https://blog.csdn.net/qq_41497111/article/details/89923611