当前位置: 首页 > news >正文

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 来管理集群元数据:

  1. Broker 元数据:每个节点信息、分区、副本都由 Zookeeper 管理
  2. Controller 节点选举:保证集群高可用
  3. 集群管理: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 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 集群

docker compose up -d

说明

  • -d:后台启动容器
  • 使用 docker ps 查看容器状态,确保 zookeeperkafka 正常运行
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 基本操作流程。

http://www.dtcms.com/a/490408.html

相关文章:

  • QT(c++)开发自学笔记:2.TCP/IP
  • C语言基础语法进阶
  • 池州网站建设公司好的网站你知道
  • 从零起步学习MySQL || 第五章:select语句的执行过程是怎么样的?(结合源码深度解析)
  • 专业的家居网站建设网站单页支付宝支付怎么做的
  • CC10-判断链表中是否有环
  • 【ZEGO即构开发者日报】谷歌推出新款视频生成模型 Veo 3.1;腾讯开源通用文本表示模型Youtu-Embedding;AI 陪伴赛道观察……
  • [Sora] 视频自动编码器(VAE) | `encode_``decode`
  • 算法沉淀第四天(Winner)
  • 西藏地图飞线html
  • 网站建设与管理课程代码做徽章标牌的企业网站
  • selenium实现自动化脚本的常用函数
  • 大语言模型,一个巨大的矩阵
  • 衡阳营养师报考网站大宗贸易交易平台
  • Azure API Management 负载均衡与故障转移策略完整指南
  • TI CCS软件安装
  • 内存映射文件
  • 网站开发开发语言企业网站做seo的优势
  • 资料片:R语言中常见的英文术语及其含义
  • 企业出海的挑战与应对方案
  • 架构术语:什么是东西流量和南北流量
  • 电子电器架构——车载网关转发buffer心得汇总
  • (Python)终端着色进阶:256色基础及色码效果展示
  • 《R for Data Science (2e)》免费中文翻译 (第10章) --- Exploratory data
  • 简述对网站进行评析的几个方面.wordpress 内涵
  • Python自动化从入门到实战(23):Python打地鼠游戏开发
  • (论文速读)ECLIPSE:突破性的轻量级文本到图像生成技术
  • dede 网站入侵新媒体h5是什么
  • 嵌入式系统守护者:复位IC详解与选型指南
  • 实战指南:用Cliproxy实现Reddit多账号安全运营的完整方案