美文网首页
kafka入门系列:在docker上安装kafka及使用

kafka入门系列:在docker上安装kafka及使用

作者: yichen_china | 来源:发表于2023-08-19 15:29 被阅读0次

第一步你需要装个docker

安装docker可参考该链接:

第二步 搭建zookeeper环境:

拉取zookeeper镜像

docker pull zookeeper:<version> 这里是版本号 如果不加就是拉取最新的版本

启动zookeeper容器

docker run -d --name zookeeper -p 2181:2181 -t zookeeper

拉取kafka镜像:

docker pull wurstmeister/kafka:<version> 这里是版本号 如果不加就是拉取最新的版本
或者 
docker pull bitnami/kafka

启动kafka容器:

docker run -d --name kafka -p 9092:9092 -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=172.17.0.2:2181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://localhost:9092 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 wurstmeister/kafka
注意:这里的KAFKA_ZOOKEEPER_CONNECT不一定是172.17.0.2:2181这个值。这个KAFKA_ZOOKEEPER_CONNECT如果设置不对,则会报下面的这个错:

Opening socket connection to server 0.0.0.0/0.0.0.0:2181. Will not attempt to authenticate using SASL (unknown error) (org.apache.zookeeper.ClientCnxn)
[2022-09-18 04:45:47,331] INFO Socket error occurred: 0.0.0.0/0.0.0.0:2181: Connection refused (org.apache.zookeeper.ClientCnxn)
...#最终是kafka启动不起来
kafka.zookeeper.ZooKeeperClientTimeoutException: Timed out waiting for connection while in state: CONNECTING
at kafka.zookeeper.ZooKeeperClient.waitUntilConnected(ZooKeeperClient.scala:271)
at kafka.zookeeper.ZooKeeperClient.<init>(ZooKeeperClient.scala:125)
at kafka.zk.KafkaZkClient$.apply(KafkaZkClient.scala:1948)
at kafka.server.KafkaServer.createZkClient$1(KafkaServer.scala:431)
at kafka.server.KafkaServer.initZkClient(KafkaServer.scala:456)
at kafka.server.KafkaServer.startup(KafkaServer.scala:191)
at kafka.Kafka$.main(Kafka.scala:109)
at kafka.Kafka.main(Kafka.scala)
[2022-09-18 04:46:05,421] INFO shutting down (kafka.server.KafkaServer)

最好的方式是通过:

docker inspect zookeeper --format="{{ .NetworkSettings.IPAddress }}"

或者

docker inspect --format="{{ .NetworkSettings.IPAddress }}" <zookeeper容器ID>

例如,我用的命令是:

C:\Users\stoic>docker inspect zookeeper --format='{{ .NetworkSettings.IPAddress }}'
Template parsing error: template: :1: unclosed action

C:\Users\stoic>docker inspect zookeeper --format="{{ .NetworkSettings.IPAddress }}"
172.17.0.2

第三步 验证kafka环境:
1.新建一个topic:

./kafka-topics.sh --zookeeper 172.17.0.2:2181 --create --topic mytestTopic1 --replication-factor 1 --partitions 3

新建一个副本数为1,分区为3的 mytestTopic1 主题。

2.启动一个生产者向这个主题发送消息:(开启一个新的terminal)

首先进入目录:

cd opt/kafka_<version号>/bin#

然后在目录下:启动一个生产者

./kafka-console-producer.sh --bootstrap-server localhost:9092 --topic mytestTopic1

3.启动一个消费者向这个主题获取消息:(再开启一个新的terminal)

首先进入目录:

cd opt/kafka_<version号>/bin#

然后在该目录下:启动一个消费者

./kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic mytestTopic1

注意:这里的--bootstrap-server的值要和启动kafka容器时:KAFKA_ADVERTISED_LISTENERS的值保持一致,并且能够ping通,否则会报:

Connection to node -1 (/192.168.1.1:9092) could not be established. Broker may not be available. (org.apache.kafka.clients.NetworkClient)

第四步 搭建kafka管理平台

docker pull sheepkiller/kafka-manager
docker run -it -d --rm -p 9000:9000 -e ZK_HOSTS=" 172.17.0.2:2181" sheepkiller/kafka-manager

创建成后,在浏览器中访问http://192.168.31.200:9000

相关文章

网友评论

      本文标题:kafka入门系列:在docker上安装kafka及使用

      本文链接:https://www.haomeiwen.com/subject/abejmdtx.html