16、Docker Compose 安装Kafka(含Zookeeper)

🚀 在 CentOS 9 上使用 Docker Compose 安装 Kafka(含 Zookeeper)教程

目录

  • 📌 [前言:为什么选择 Kafka](#前言:为什么选择 Kafka)
  • ⚙️ 环境准备
  • 🐳 [安装 Docker 和 Docker Compose](#安装 Docker 和 Docker Compose)
  • 📝 [创建 Kafka Docker Compose 配置(含 Zookeeper)](#创建 Kafka Docker Compose 配置(含 Zookeeper))
  • ▶️ [启动 Kafka 集群](#启动 Kafka 集群)
  • 🔍 [验证 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 来管理集群元数据:

  1. Broker 元数据:每个节点信息、分区、副本都由 Zookeeper 管理
  2. Controller 节点选举:保证集群高可用
  3. 集群管理:Topic 创建、分区分配

Zookeeper 就是 Kafka 集群的"大脑",保证集群节点间协调与元数据一致性。

1️⃣ 创建工作目录

bash 复制代码
mkdir -p /etc/docker/docker-kafka
cd /etc/docker/docker-kafka

说明:创建一个专门的目录来存放 Docker Compose 配置文件和数据卷。

2️⃣ 创建 docker-compose.yml

yaml 复制代码
version: '3.8'

services:
  zookeeper:
    image: bitnami/zookeeper:3.8
    container_name: zookeeper
    ports:
      - "2181:2181"
    environment:
      ALLOW_ANONYMOUS_LOGIN: "yes"
    restart: unless-stopped

  kafka:
    image: bitnami/kafka:3.5
    container_name: kafka
    ports:
      - "9092:9092"
      - "29092:29092"
    environment:
      KAFKA_BROKER_ID: 1
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
      KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9092,PLAINTEXT_HOST://0.0.0.0:29092
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:9092,PLAINTEXT_HOST://0.0.0.0:29092
      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT
      KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
    depends_on:
      - zookeeper
    restart: unless-stopped

详细说明

  • Zookeeper

    • 镜像 bitnami/zookeeper:3.8
    • 端口 2181 对外开放
    • 管理 Kafka 元数据和 Broker 状态
  • Kafka Broker

    • KAFKA_BROKER_ID:唯一 Broker ID
    • KAFKA_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 集群

bash 复制代码
docker compose up -d

说明

  • -d:后台启动容器
  • 使用 docker ps 查看容器状态,确保 zookeeperkafka 正常运行
bash 复制代码
docker ps

🔍 验证 Kafka 集群

1️⃣ 创建测试主题

bash 复制代码
docker exec -it kafka kafka-topics.sh --create --topic test --bootstrap-server kafka:9092 --partitions 1 --replication-factor 1

说明 :创建名为 test-topic 的主题,分区为 1,副本为 1。

2️⃣ 查看主题列表

bash 复制代码
docker exec -it kafka kafka-topics.sh --list --bootstrap-server kafka:9092

说明:确认主题创建成功。

3️⃣ 发送消息

bash 复制代码
docker exec -it kafka kafka-console-producer.sh --topic test --bootstrap-server kafka:9092
> hello kafka
> welcome

说明:向 Kafka 发送消息,用于测试生产者功能。

4️⃣ 消费消息

bash 复制代码
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 基本操作流程。

相关推荐
Joren的学习记录36 分钟前
【Linux运维大神系列】docker详解(四)
linux·运维·docker
louqle2 小时前
docker基本知识及常用命令汇总
运维·docker·容器
叫致寒吧3 小时前
Docker
运维·docker·容器
杨浦老苏3 小时前
现代流媒体聚合播放器冬瓜TV MAX
docker·群晖·多媒体
l1t5 小时前
用docker安装oracle 19c
运维·数据库·docker·oracle·容器
weixin_462446236 小时前
【原创实践】Docker 镜像批量导出镜像与导入镜像
运维·docker·容器
qq7590353666 小时前
Docker快速部署一款堡垒机系统
运维·docker·容器
天下不喵8 小时前
python项目部署之pytandic与.env的使用教程
python·docker
芥子沫9 小时前
Docker安装Blossom笔记
笔记·docker·容器
qq75903536610 小时前
docker一键部署网页版Win11系统
运维·docker·容器