? ? ? ? 想学习kafka集群的知识,却没有那么多的服务器来部署kafka集群,docker容器技术给希望,本文整理了各位大神的文章,记录下使用docker技术在一台机器上搭建kafka集群。
系统环境:
- 服务器一台,2核8G,ubuntu18.04操作系统
- docker版本:20.10.8
部署
?2.1 修改docker镜像源
? ? ? ? 国外镜像源下载比较慢,所以修改docker的镜像源为国内镜像。
vim /etc/docker/daemon.json
? ? ? ? 添加以下内容
{ ? "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"] } ? ? ? ? 重新加载docker daemon,并且重启docker服务
systemctl daemon-reload
service docker restart
? 2.2 安装docker容器版kafka集群
? ? ? ? 具体安装命令如下:
# docker直接拉取kafka和zookeeper的镜像
docker pull wurstmeister/kafka
docker pull wurstmeister/zookeeper
# 首先需要启动zookeeper,如果不先启动,启动kafka没有地方注册消息
docker run -it --name zookeeper -p 12181:2181 -d wurstmeister/zookeeper:latest
# 启动kafka容器,注意需要启动三台,注意端口的映射,都是映射到9092
# 第一台
docker run -it --name kafka01 -p 19092:9092 -d -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=${本机IP}:12181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://${本机IP}:19092 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 wurstmeister/kafka:latest
# 第二台
docker run -it --name kafka02 -p 19093:9092 -d -e KAFKA_BROKER_ID=1 -e KAFKA_ZOOKEEPER_CONNECT=${本机IP}:12181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://${本机IP}:19093 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 wurstmeister/kafka:latest
# 第三台
docker run -it --name kafka03 -p 19094:9092 -d -e KAFKA_BROKER_ID=2 -e KAFKA_ZOOKEEPER_CONNECT=${本机IP}:12181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://${本机IP}:19094 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 wurstmeister/kafka:latest
? ? ? ? ? 测试是否部署成功
docker ps -a
? ? ? ?测试kafka命令,新建?topic,并向topic发送消息,使用消费者命令获取消费消息。kafka命令的安装,可以请教百度,直接安装个kafka版本,进入到bin目录下即可。
# 创建topic名称为first,3个分区,1个副本
./kafka-topics.sh --zookeeper ${本机IP}:12181 --create --topic first --replication-factor 1 --partitions 3
# 查看first此topic信息
./kafka-topics.sh --zookeeper ${本机IP}:12181 --describe --topic first
Topic: first PartitionCount: 3 ReplicationFactor: 1 Configs:
Topic: first Partition: 0 Leader: 2 Replicas: 2 Isr: 2
Topic: first Partition: 1 Leader: 0 Replicas: 0 Isr: 0
Topic: first Partition: 2 Leader: 1 Replicas: 1 Isr: 1
# 调用生产者生产消息
./kafka-console-producer.sh --broker-list ${本机IP}:19092,${本机IP}:19093,${本机IP}:19094 --topic first
# 调用消费者消费消息,from-beginning表示读取全部的消息
./kafka-console-consumer.sh --bootstrap-server ${本机IP}:19092,${本机IP}:19093,${本机IP}:19094 --topic first --from-beginning
小Tip
????????删除Topic
./kafka-topic.sh --zookeeper 192.168.233.129:12181 --delete --topic second
? ? ? ? ?可以看到second这个topic并没有真正删除,只是标记为deletion,如果需要真正删除,可以修改配置文件/config/server.properties中delete.topic.enable=true
|