本文是为了学习如何搭建kafka集群,个人采用的是利用docker部署不同的端口号达成搭建集群,废话不多说,进入正文!!
第一步:分别拉取zookeeper、kafka、kafka-manager的镜像
第二步:运行镜像(因是本机搭建,只创建一个zk)
A.启动zk
docker run -id --name zookeeper -p 2182:2181 zk2
B.分别启动三个kafka
-
name:kafka-1,端口:9092,broker_id:1
docker run -id --name kafka-1 -p 9092:9092 -e KAFKA_BROKER_ID=1 -e ALLOW_PLAINTEXT_LISTENER=yes -e KAFKA_ZOOKEEPER_CONNECT=你的虚拟机地址:2181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://你的虚拟机地址:9092 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 wurstmeister/kafka
2.name:kafka-2,端口:9093,broker_id:2
docker run -id --name kafka-2 -p 9093:9093 -e KAFKA_BROKER_ID=2 -e ALLOW_PLAINTEXT_LISTENER=yes -e KAFKA_ZOOKEEPER_CONNECT=你的虚拟机地址:2181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://你的虚拟机地址:9093 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9093 wurstmeister/kafka
3.name:kafka-3,端口:9094,broker_id:3
docker run -id --name kafka-3 -p 9094:9094 -e KAFKA_BROKER_ID=3 -e ALLOW_PLAINTEXT_LISTENER=yes -e KAFKA_ZOOKEEPER_CONNECT=你的虚拟机地址:2181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://你的虚拟机地址:9094 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9094 wurstmeister/kafka
4.启动kafka-manager服务(为了便于可视化管理,可只在主节点,如你的主节点ip地址是127.0.0.1,那ZK_HOSTS=后就填写127.0.0.1)
docker run -p 9000:9000 --name kafka-manager -id -e ZK_HOSTS=你的虚拟机地址:2182 sheepkiller/kafka-manager
C.创建好后如图:
第三步:网页端打开主节点的9000端口,如下图所示进行集群的添加,设置两项,其他的如无需要可暂时不配置;
创建好后,点击集群名称test-cluster1,查看集群信息;
第四步:创建topic
进入主容器中,创建消息主题topic
docker exec -it kafka-1 /bin/bash
进入opt目录中,选择kafka或者kafka_2.13-2.8.1目录都可以![](https://img-blog.csdnimg.cn/direct/de483441397a4f53baa40b2dafada1df.png)
创建名称为topic-test的主题,成功后通过describe命令查看
bin/kafka-topics.sh --zookeeper 虚拟机地址:2182 --create --topic to
pic-test --partitions 3 --replication-factor 3 Created topic topic-test
bin/kafka-topics.sh --zookeeper 虚拟机地址:2182 --describe --topic
topic-test
在网页管理端查看集群topic已能够查询到消息主题topic-test:
第五步:发送消息测试
创建生产者发送消息(这里用的是主节点kafka-1)
bin/kafka-console-producer.sh --bootstrap-server 虚拟机地址:9092 --
topic topic-test
创建消费者订阅消息并消费(这里是用的kafka-2)
bin/kafka-console-consumer.sh --bootstrap-server 虚拟机地址:9092 --topic topic
-test --from-beginning
指定消费组消费(from-beginning
表示会消费历史消息,如果不配置,只能消费本节点上线之后生产者发送的消息)
bin/kafka-console-consumer.sh --bootstrap-server 虚拟机地址:9093 --from-beginning --consumer-property group.id=testGroup1 --topic topic-test