16、Docker Compose 安装Kafka(含Zookeeper)
🚀 在 CentOS 9 上使用 Docker Compose 安装 Kafka(含 Zookeeper)教程
目录
- 📌 前言:为什么选择 Kafka
- ⚙️ 环境准备
- 🐳 安装 Docker 和 Docker Compose
- 📝 创建 Kafka Docker Compose 配置(含 Zookeeper)
- ▶️ 启动 Kafka 集群
- 🔍 验证 Kafka 集群
- ⚠️ 生产环境注意事项
- ✅ 总结
📌 前言:为什么选择 Kafka
Kafka 是一个 高吞吐、可扩展、分布式消息队列,在大数据、日志收集、实时分析和微服务通信中非常常用。
选择 Kafka 的理由:
- 高吞吐量:每秒可处理百万级消息
- 持久化存储:消息存储在磁盘上,保证可靠性
- 可扩展性:支持集群扩展和分区(Partition)
- 实时性:适合流处理和事件驱动架构
- 生态丰富:与 Flink、Spark、Spring Boot 等轻松集成
Kafka 是企业级消息中间件的首选。
⚙️ 环境准备
- 操作系统:CentOS 9 Stream
- 内存:至少 2GB
- 网络:可访问 Docker Hub 镜像
确保服务器网络畅通,否则镜像下载会失败。
🐳 安装 Docker 和 Docker Compose
Centos9 安装Docker
📝 创建 Kafka Docker Compose 配置(含 Zookeeper)
为什么需要 Zookeeper
Kafka 传统模式依赖 Zookeeper 来管理集群元数据:
- Broker 元数据:每个节点信息、分区、副本都由 Zookeeper 管理
- Controller 节点选举:保证集群高可用
- 集群管理:Topic 创建、分区分配
Zookeeper 就是 Kafka 集群的“大脑”,保证集群节点间协调与元数据一致性。
1️⃣ 创建工作目录
mkdir -p /etc/docker/docker-kafka
cd /etc/docker/docker-kafka
说明:创建一个专门的目录来存放 Docker Compose 配置文件和数据卷。
2️⃣ 创建 docker-compose.yml
version: '3.8'services:zookeeper:image: bitnami/zookeeper:3.8container_name: zookeeperports:- "2181:2181"environment:ALLOW_ANONYMOUS_LOGIN: "yes"restart: unless-stoppedkafka:image: bitnami/kafka:3.5container_name: kafkaports:- "9092:9092"- "29092:29092"environment:KAFKA_BROKER_ID: 1KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9092,PLAINTEXT_HOST://0.0.0.0:29092KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:9092,PLAINTEXT_HOST://0.0.0.0:29092KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXTKAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXTKAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1depends_on:- zookeeperrestart: unless-stopped
详细说明:
-
Zookeeper:
- 镜像
bitnami/zookeeper:3.8
- 端口
2181
对外开放 - 管理 Kafka 元数据和 Broker 状态
- 镜像
-
Kafka Broker:
KAFKA_BROKER_ID
:唯一 Broker IDKAFKA_ZOOKEEPER_CONNECT
:连接 Zookeeper 地址KAFKA_ADVERTISED_LISTENERS
:客户端访问地址KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR
:Kafka 内部主题副本数
-
volumes
:映射 Docker socket,方便 Kafka 创建 Broker -
depends_on
:确保 Kafka 在 Zookeeper 启动后启动
通过 Zookeeper 模式可以保证 Kafka 0.x~3.x 版本的稳定集群管理。
▶️ 启动 Kafka 集群
docker compose up -d
说明:
-d
:后台启动容器- 使用
docker ps
查看容器状态,确保zookeeper
和kafka
正常运行
docker ps
🔍 验证 Kafka 集群
1️⃣ 创建测试主题
docker exec -it kafka kafka-topics.sh --create --topic test --bootstrap-server kafka:9092 --partitions 1 --replication-factor 1
说明:创建名为 test-topic
的主题,分区为 1,副本为 1。
2️⃣ 查看主题列表
docker exec -it kafka kafka-topics.sh --list --bootstrap-server kafka:9092
说明:确认主题创建成功。
3️⃣ 发送消息
docker exec -it kafka kafka-console-producer.sh --topic test --bootstrap-server kafka:9092
> hello kafka
> welcome
说明:向 Kafka 发送消息,用于测试生产者功能。
4️⃣ 消费消息
docker exec -it kafka kafka-console-consumer.sh --topic test --from-beginning --bootstrap-server kafka:9092
说明:从头开始消费消息,验证 Kafka 正常工作。
⚠️ 生产环境注意事项
-
集群扩展:部署多 Broker,
KAFKA_ADVERTISED_LISTENERS
使用宿主机 IP -
持久化存储:挂载数据卷到宿主机磁盘,保证重启不丢失数据
-
安全加固:
- 启用 SSL/TLS
- 配置 SASL 用户认证
- 设置 ACL 访问控制
-
监控告警:
- Prometheus + Grafana
- Kafka JMX 指标监控
✅ 总结
- Docker Compose 快速搭建 Zookeeper + Kafka 单机环境
- Zookeeper 保证 Kafka 元数据管理和 Broker 集群稳定
- 易于测试和学习 Kafka 原理
- 支持生产环境扩展到多 Broker、多宿主机集群
Kafka 是企业级消息中间件首选,Docker Compose 能快速构建开发和测试环境,熟悉 Kafka 基本操作流程。