主流的Kafka使用Zookeeper,但最近Kafka将会逐步舍弃Zookeeper而使用自带的KRaft。所以以下步骤是基于Docker安装无Zookeeper的Kafka。
一、创建Kafka容器
docker run \
--cpus 1 -m 1g \
-d \
-p 9092:9092 \
-v /tmp/kraft-combined-logs:/tmp/kraft-combined-logs \
--name kafka-raft-3.0.0 kubebiz/kafka:2.13-3.0.0 \
/bin/bash -c "kafka-storage.sh format --cluster-id AAAAAAAAAAAAAAAAAAAAAA \
--config /opt/kafka/config/kraft/server.properties && \
exec kafka-server-start.sh /opt/kafka/config/kraft/server.properties"
二、获取容器IP
$ docker inspect --format='{{.NetworkSettings.IPAddress}}' kafka-raft-3.0.0
172.17.0.3
三、测试
1. 进入容器(需要两个终端)
docker exec -it kafka-raft-3.0.0 bash
2. 生产者
cd opt/kafka_2.13-3.0.0/
bin/kafka-console-producer.sh --broker-list 172.17.0.3:9092 --topic test
3. 消费者
cd opt/kafka_2.13-3.0.0/
bin/kafka-console-consumer.sh --bootstrap-server 172.17.0.3:9092 --from-beginning --topic test --consumer.config config/consumer.properties
4. 消息发送
生产者发送消息后,消费者就会收到
通常来说,Kafka 发布的 Docker 镜像中,Kafka 安装在 /opt/kafka 目录下。而为了区分不同版本的 Kafka,可能会在目录名称中包含版本号和 Scala 版本。所以 /opt/kafka_2.13-3.0.0 目录就是为了安装 Kafka 2.13-3.0.0 版本而创建的。
参考文章
Docker部署Kafka Raft模式(单机版) - OrcHome
【Kafka】基于Docker的KRaft模式(无Zookeeper)集群安装及测试_docker kafka不用zookeeper-CSDN博客