Docker快速搭建Kafka集群及测试的技术指南

 更新时间:2025年04月22日 09:20:26   作者:开拖拉机的小鑫  
Kafka是一款高吞吐量的分布式消息系统,配合Zookeeper可实现集群化部署,本文将通过Docker容器技术快速搭建3节点Kafka集群并完成消息生产消费测试,感兴趣的可以了解下

前言 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_CONNECTZookeeper服务地址
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集群的资料请关注脚本之家其它相关文章!

相关文章

  • Docker 常用命令整理及使用注意事项总结

    Docker 常用命令整理及使用注意事项总结

    这篇文章主要介绍了Docker 常用命令整理及使用注意事项总结的相关资料,这里整理了Docker 的常用命令,说明这些命令是什么意思及使用方法,需要的朋友可以参考下
    2016-12-12
  • 清理docker占用磁盘过大问题终极方案(亲测有效!)

    清理docker占用磁盘过大问题终极方案(亲测有效!)

    Docker很占用空间每当我们运行容器、拉取镜像、部署应用、构建自己的镜像时我们的磁盘空间会被大量占用,这篇文章主要给大家介绍了关于清理docker占用磁盘过大问题终极方案,需要的朋友可以参考下
    2024-04-04
  • 详解Docker挂载本地目录

    详解Docker挂载本地目录

    这篇文章主要介绍了详解Docker挂载本地目录,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • Docker创建enrollment token错误异常解析及解决方案

    Docker创建enrollment token错误异常解析及解决方案

    部署完kibana,需要通过enrollment token方式来连接elasticsearch,此时需要在elasticsearch中创建enrollment token,这篇文章主要介绍了Docker创建enrollment token错误异常解析及解决方案,需要的朋友可以参考下
    2024-04-04
  • Navicat 连接服务器端中的docker数据库的方法

    Navicat 连接服务器端中的docker数据库的方法

    这篇文章主要介绍了Navicat 连接服务器端中的docker数据库,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-03-03
  • docker 如何搭建私有仓库(ubuntu 14.04,Docker版本1.6.4)详细介绍

    docker 如何搭建私有仓库(ubuntu 14.04,Docker版本1.6.4)详细介绍

    这篇文章主要介绍了docker 如何搭建私有仓库(ubuntu 14.04,Docker版本1.6.4)详细介绍的相关资料,需要的朋友可以参考下
    2017-01-01
  • 在Ubuntu上使用Grafana监控Docker的方法

    在Ubuntu上使用Grafana监控Docker的方法

    如今越来越多的公司开始使用Docker,一谈起Docker总是会跟着让人联想到轻量这个词,甚至会有一种通过Docker启动一个服务会节省很多资源的错觉。然而Docker的「轻」也只是相对于传统虚拟机而已。Docker如何监控呢?本文就给大家介绍在Ubuntu上如何使用Grafana监控Docker。
    2016-12-12
  • 在docker中部署k8s的方法

    在docker中部署k8s的方法

    这篇文章主要介绍了在docker中部署k8s的方法,包括K8S的基本概念介绍,docker容器的下载方法及k8s相关命令介绍,感兴趣的朋友一起看看吧
    2021-07-07
  • docker下安装confluence全过程

    docker下安装confluence全过程

    文章详细介绍了如何在虚拟机上安装和配置Docker、Java环境、MySQL和Confluence,首先,文章指导如何卸载并安装Docker,然后配置虚拟机的IP和网络设置,接着,介绍如何在虚拟机上安装JDK,并配置MySQL和Confluence,最后,提供了完整的安装步骤和一些注意事项
    2025-02-02
  • Docker中iptables规则在iptables重启后丢失的完整过程

    Docker中iptables规则在iptables重启后丢失的完整过程

    这篇文章主要给大家介绍了关于Docker中iptables规则在iptables重启后丢失的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Docker具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2020-05-05

最新评论