写点什么

【愚公系列】2022 年 03 月 Docker 容器 Kafka 集群的搭建

作者:愚公搬代码
  • 2022 年 3 月 24 日
  • 本文字数:1239 字

    阅读完需:约 4 分钟

一、Kafka 集群的搭建

1.拉取相关镜像

docker pull wurstmeister/kafkadocker 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
用户头像

还未添加个人签名 2022.03.01 加入

该博客包括:.NET、Java、前端、IOS、Android、鸿蒙、Linux、物联网、网络安全、python、大数据等相关使用及进阶知识。查看博客过程中,如有任何问题,皆可随时沟通。

评论

发布
暂无评论
【愚公系列】2022年03月 Docker容器 Kafka集群的搭建_愚公搬代码_InfoQ写作平台