【Kafka精进系列003】Docker环境下搭建Kafka集群

在上一节【Kafka精进系列002】Docker环境下Kafka的安装启动与消息发送中我们已经演示了如何在Docker中进行Kafka的安装与启动,以及成功地测试了Kafka消息的发送与接收过程。

在实际生产环境中,Kafka都是集群部署的,常见的架构如下:
在这里插入图片描述

Kafka集群由多个Broker组成,每个Broker对应一个Kafka实例。Zookeeper负责管理Kafka集群的Leader选举以及Consumer Group发生变化的时候进行reblance操作。

本文将演示如何在Docker环境中搭建Zookeeper + Kafka集群。

通过本文,你将了解到:

  • 如何使用Docker进行Kafka集群搭建;
  • 如何使用Docker-compose一键构建Kakfa单节点和集群服务;
  • 使用docker-compose down -v解决docker-compose初始化创建topic时无法创建多分区问题记录;

一、Kafka集群搭建

1、首先运行Zookeeper(本文并未搭建ZK集群):
docker run -d --name zookeeper -p 2181:2181 -t wurstmeister/zookeeper
2、分别创建3个Kafka节点,并注册到ZK上:

不同Kafka节点只需要更改端口号即可。

Kafka0:

docker run -d --name kafka0 -p 9092:9092 -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=192.168.0.104:2181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.0.104: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.0.104:2181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.0.104: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.0.104:2181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.0.104:9094 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9094 -t wurstmeister/kafka

注意:以上节点均需换成自己的IP。

启动3个Kafka节点之后,查看是否启动成功:

这样Kafka集群就算搭建完毕。

3、在Broker 0节点上创建一个用于测试的topic:

在Broker 0上创建一个副本为3、分区为5的topic用于测试。

(Kafka的topic所有分区会分散在不同Broker上,所以该topic的5个分区会被分散到3个Broker上,其中有两个Broker得到两个分区,另一个Broker只有1个分区。该结论在下面将会得到验证。)

cd /opt/kafka_2.12-2.4.0/bin


kafka-topics.sh --create --zookeeper 192.168.0.104:2181 --replication-factor 3 --partitions 5 --topic TestTopic

在这里插入图片描述
查看新创建的topic信息:

kafka-topics.sh --describe --zookeeper 192.168.0.104:2181 --topic TestTopic

在这里插入图片描述
上面的topic信息是什么意思呢?
上面提到过,“该topic的5个分区会被分散到3个Broker上,其中有两个Broker得到两个分区,另一个Broker只有1个分区”。看了这句话应该就能理解上图中的topic信息的含义。
首先,

  • 11
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值