前言 apache
kafka是一款高吞吐量的分布式消息系统,配合zookeeper可实现集群化部署。本文通过docker容器技术,3分钟快速搭建3节点kafka集群并完成消息生产消费测试。
一、环境准备
系统要求:linux/macos(windows需安装docker desktop)
docker版本:建议使用20.10+
网络配置:确保2181(zookeeper)、9092-9094(kafka)端口开放
二、安装zookeeper服务
1. 拉取镜像
docker search zookeeper # 查看可用镜像 docker pull wurstmeister/zookeeper # 拉取官方推荐镜像
2. 启动容器
docker run -d --name zookeeper \ -p 2181:2181 \ -t wurstmeister/zookeeper
三、搭建kafka集群
1. 拉取kafka镜像
docker search kafka --limit=50 # 查找镜像 docker pull wurstmeister/kafka # 拉取镜像
2. 启动3个broker节点
注意:将下方所有xxx替换为服务器真实ip地址
# broker 0(端口9092) docker run -d --name kafka0 \ -p 9092:9092 \ -e kafka_broker_id=0 \ -e kafka_zookeeper_connect=xxx:2181 \ -e kafka_advertised_listeners=plaintext://xxx:9092 \ -e kafka_listeners=plaintext://0.0.0.0:9092 \ wurstmeister/kafka # broker 1(端口9093) docker run -d --name kafka1 \ -p 9093:9093 \ -e kafka_broker_id=1 \ -e kafka_zookeeper_connect=xxx:2181 \ -e kafka_advertised_listeners=plaintext://xxx:9093 \ -e kafka_listeners=plaintext://0.0.0.0:9093 \ wurstmeister/kafka # broker 2(端口9094) docker run -d --name kafka2 \ -p 9094:9094 \ -e kafka_broker_id=2 \ -e kafka_zookeeper_connect=xxx:2181 \ -e kafka_advertised_listeners=plaintext://xxx:9094 \ -e kafka_listeners=plaintext://0.0.0.0:9094 \ wurstmeister/kafka
3. 验证集群状态
docker ps # 应显示4个容器(1个zookeeper + 3个kafka)
四、测试消息生产与消费
测试准备
打开两个终端窗口,分别执行以下操作:
窗口1:生产者(发送消息)
# 进入任意kafka容器 docker exec -it kafka0 /bin/bash # 进入脚本目录(注意版本号可能不同) cd /opt/kafka_2.13-2.7.0/bin # 启动生产者并创建test主题 ./kafka-console-producer.sh \ --broker-list localhost:9092 \ --topic test
窗口2:消费者(接收消息)
# 进入同一kafka容器 docker exec -it kafka0 /bin/bash # 进入脚本目录 cd /opt/kafka_2.13-2.7.0/bin # 启动消费者 ./kafka-console-consumer.sh \ --bootstrap-server localhost:9092 \ --topic test \ --from-beginning
测试结果
- 生产者窗口输入任意文本(如hello kafka!)
- 消费者窗口将实时显示接收的消息
五、关键参数说明
环境变量 | 作用 |
---|---|
kafka_broker_id | 节点唯一标识(集群内不可重复) |
kafka_zookeeper_connect | zookeeper服务地址 |
kafka_advertised_listeners | 对外暴露的访问地址 |
kafka_listeners | 容器内部监听地址 |
六、常见问题排查
1. 连接超时
检查服务器安全组/防火墙是否开放端口
确认ip地址是否正确替换
2. 消费者无数据
添加–from-beginning参数读取历史消息
检查topic是否创建成功:
./kafka-topics.sh --list --bootstrap-server localhost:9092
3. 容器启动失败
查看日志定位问题:
docker logs -f kafka0
以上就是docker快速搭建kafka集群及测试的技术指南的详细内容,更多关于docker搭建kafka集群的资料请关注代码网其它相关文章!
发表评论