【愚公系列】2022 年 03 月 Docker 容器 Kafka 集群的搭建
一、Kafka 集群的搭建
1.拉取相关镜像
docker pull wurstmeister/kafka
docker pull zookeeper
复制代码
2.运行 zookeeper
docker run -d --name zookeeper -p 2181:2181 -t zookeeper
复制代码
3.运行 kafka
Kafka0:
docker run -d --name kafka0 -p 9092:9092 -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=192.168.16.129:2181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.16.129:9092 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 -t wurstmeister/kafka
复制代码
Kafka1:
docker run -d --name kafka1 -p 9093:9093 -e KAFKA_BROKER_ID=1 -e KAFKA_ZOOKEEPER_CONNECT=192.168.16.129:2181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.16.129:9093 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9093 -t wurstmeister/kafka
复制代码
Kafka2:
docker run -d --name kafka2 -p 9094:9094 -e KAFKA_BROKER_ID=2 -e KAFKA_ZOOKEEPER_CONNECT=192.168.16.129:2181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.16.129:9094 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9094 -t wurstmeister/kafka
复制代码
参数说明:
-e KAFKA_BROKER_ID=0
在 kafka 集群中,每个 kafka 都有一个 BROKER_ID 来区分自己
-e KAFKA_ZOOKEEPER_CONNECT=10.20.8.50:2181/kafka
配置 zookeeper 管理 kafka 的路径 10.20.8.50:2181/kafka
-e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://10.20.8.50:9092
把 kafka 的地址端口注册给 zookeeper,如果是远程访问要改成外网 IP。
-e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092
配置 kafka 的监听端口:这个不能改
-v /etc/localtime:/etc/localtime
容器时间同步虚拟机的时间
启动 3 个 Kafka 节点
4.设置 topic
进入 kafka0
docker exec -it kafka0 /bin/bash
复制代码
进入 bin 目录
cd /opt/kafka_2.13-2.8.1/bin
复制代码
创建 topic
kafka-topics.sh --create --zookeeper 192.168.16.129:2181 --replication-factor 3 --partitions 5 --topic TestTopic
复制代码
查看 topic
kafka-topics.sh --describe --zookeeper 192.168.16.129:2181 --topic TestTopic
复制代码
Kafka 的 topic 所有分区会分散在不同 Broker 上,所以该 topic 的 5 个分区会被分散到 3 个 Broker 上,其中有两个 Broker 得到两个分区,另一个 Broker 只有 1 个分区,如图所示:
集群节点说明:
Topic: TestTopic PartitionCount: 5 ReplicationFactor:3
代表 TestTopic 有 5 个分区,3 个副本节点;
Topic
: 代表主题名称
Leader
代表主题节点号,
Replicas
代表他的副本节点有 Broker.id = 2、0、1(包括 Leader Replica 和 Follower Replica,且不管是否存活),
Isr
表示存活并且同步 Leader 节点的副本有 Broker.id = 2、0、1
5.进行生产者和消费者测试
分别在 Broker0 上运行一个生产者,Broker1、2 上分别运行一个消费者:
kafka-console-producer.sh --broker-list 192.168.16.129:9092 --topic TestTopic
kafka-console-consumer.sh --bootstrap-server 192.168.16.129:9093 --topic TestTopic --from-beginning
kafka-console-consumer.sh --bootstrap-server 192.168.16.129:9094 --topic TestTopic --from-beginning
复制代码
发布于: 2022 年 03 月 24 日阅读数: 18
评论