Mac上使用Docker搭建kafka集群

该博客详细介绍了如何使用Docker部署一个包含Zookeeper和三个Kafka节点的集群,包括拉取镜像、运行容器、设置topic以及进行生产者和消费者的测试。通过设置环境变量配置Kafka的监听端口和连接Zookeeper,并创建并描述了TestTopic的分区和副本分布。最后,演示了在不同Broker上运行生产者和消费者进行数据交互的过程。
摘要由CSDN通过智能技术生成

1、拉取镜像

// 拉取 kafka 镜像
docker pull wurstmeister/kafka
// 拉取 zookeeper 镜像
docker pull zookeeper

2、运行zookeeper

docker run -d --name zookeeper -p 2181:2181 -t zookeeper

3.运行kafka

注意:192.168.124.11 为宿主机IP

Kafka0:

docker run -d --name kafka0 -p 9092:9092 -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=192.168.124.11:2181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.124.11: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.124.11:2181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.124.11: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.124.11:2181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.124.11: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=192.168.124.11:2181/kafka  配置zookeeper管理kafka的路径192.168.124.11:2181/kafka
  • -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.124.11:9092  把kafka的地址端口注册给zookeeper,如果是远程访问要改成外网IP。
  • -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092   配置kafka的监听端口:这个不能改
  • -v  /etc/localtime:/etc/localtime  容器时间同步虚拟机的时间

 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.124.11:2181 --replication-factor 3 --partitions 5 --topic TestTopic

查看topic:

// 查看指定 topic
kafka-topics.sh --zookeeper 192.168.124.11:2181 --topic TestTopic --describe 
// 查看 topic 集合
kafka-topics.sh --zookeeper 192.168.124.11:2181 --list

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.124.11:9092 --topic TestTopic

kafka-console-consumer.sh --bootstrap-server 192.168.124.11:9093 --topic TestTopic --from-beginning

kafka-console-consumer.sh --bootstrap-server 192.168.124.11:9094 --topic TestTopic --from-beginning

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值