Docker部署Kafka消息隊列系統(tǒng)完整指南
更新時間:2025年07月07日 08:24:47 作者:huingymm
在Docker中設置Kafka集群是一個相對簡單的過程,因為它允許你快速地啟動和配置多個Kafka實例,這篇文章主要介紹了Docker部署Kafka消息隊列系統(tǒng)的相關資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
本指南將詳細介紹如何使用 Docker 部署 Kafka 消息隊列系統(tǒng),包括單節(jié)點和集群模式的部署方式。
1. 單節(jié)點部署 (Zookeeper + Kafka)
1.1 創(chuàng)建 docker-compose.yml 文件
version: '3.8' services: zookeeper: image: bitnami/zookeeper:3.8 container_name: zookeeper ports: - "2181:2181" environment: - ALLOW_ANONYMOUS_LOGIN=yes volumes: - zookeeper_data:/bitnami/zookeeper kafka: image: bitnami/kafka:3.4 container_name: kafka ports: - "9092:9092" environment: - KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181 - ALLOW_PLAINTEXT_LISTENER=yes - KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://${HOST_IP}:9092 - KAFKA_CFG_AUTO_CREATE_TOPICS_ENABLE=true volumes: - kafka_data:/bitnami/kafka depends_on: - zookeeper volumes: zookeeper_data: driver: local kafka_data: driver: local
1.2 啟動服務
export HOST_IP=$(hostname -I | awk '{print $1}') docker-compose up -d
2. KRaft 模式部署 (無 Zookeeper)
2.1 創(chuàng)建 docker-compose.yml 文件
version: '3.8' services: kafka: image: bitnami/kafka:3.4 container_name: kafka ports: - "9092:9092" environment: - KAFKA_CFG_PROCESS_ROLES=controller,broker - KAFKA_CFG_NODE_ID=1 - KAFKA_CFG_CONTROLLER_QUORUM_VOTERS=1@kafka:9093 - KAFKA_CFG_LISTENERS=PLAINTEXT://:9092,CONTROLLER://:9093 - KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://${HOST_IP}:9092 - KAFKA_CFG_AUTO_CREATE_TOPICS_ENABLE=true volumes: - kafka_data:/bitnami/kafka volumes: kafka_data: driver: local
2.2 啟動服務
export HOST_IP=$(hostname -I | awk '{print $1}') docker-compose up -d
3. 集群部署 (3節(jié)點)
3.1 創(chuàng)建 docker-compose.yml 文件
version: '3.8' services: zookeeper: image: bitnami/zookeeper:3.8 container_name: zookeeper ports: - "2181:2181" environment: - ALLOW_ANONYMOUS_LOGIN=yes - ZOO_SERVER_ID=1 - ZOO_SERVERS=0.0.0.0:2888:3888 volumes: - zookeeper_data:/bitnami/zookeeper kafka1: image: bitnami/kafka:3.4 container_name: kafka1 ports: - "9092:9092" environment: - KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181 - ALLOW_PLAINTEXT_LISTENER=yes - KAFKA_CFG_BROKER_ID=1 - KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://${HOST_IP}:9092 - KAFKA_CFG_AUTO_CREATE_TOPICS_ENABLE=true volumes: - kafka1_data:/bitnami/kafka depends_on: - zookeeper kafka2: image: bitnami/kafka:3.4 container_name: kafka2 ports: - "9093:9093" environment: - KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181 - ALLOW_PLAINTEXT_LISTENER=yes - KAFKA_CFG_BROKER_ID=2 - KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://${HOST_IP}:9093 - KAFKA_CFG_AUTO_CREATE_TOPICS_ENABLE=true volumes: - kafka2_data:/bitnami/kafka depends_on: - zookeeper kafka3: image: bitnami/kafka:3.4 container_name: kafka3 ports: - "9094:9094" environment: - KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181 - ALLOW_PLAINTEXT_LISTENER=yes - KAFKA_CFG_BROKER_ID=3 - KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://${HOST_IP}:9094 - KAFKA_CFG_AUTO_CREATE_TOPICS_ENABLE=true volumes: - kafka3_data:/bitnami/kafka depends_on: - zookeeper volumes: zookeeper_data: driver: local kafka1_data: driver: local kafka2_data: driver: local kafka3_data: driver: local
3.2 啟動集群
export HOST_IP=$(hostname -I | awk '{print $1}') docker-compose up -d
4. 基本操作驗證
4.1 創(chuàng)建主題
docker exec -it kafka kafka-topics.sh --create \ --bootstrap-server localhost:9092 \ --replication-factor 1 \ --partitions 3 \ --topic test-topic
4.2 生產(chǎn)消息
docker exec -it kafka kafka-console-producer.sh \ --bootstrap-server localhost:9092 \ --topic test-topic
4.3 消費消息
docker exec -it kafka kafka-console-consumer.sh \ --bootstrap-server localhost:9092 \ --topic test-topic \ --from-beginning
4.4 查看主題列表
docker exec -it kafka kafka-topics.sh --list \ --bootstrap-server localhost:9092
5. 管理技巧
5.1 數(shù)據(jù)持久化
所有數(shù)據(jù)卷都配置在 volumes
部分,確保數(shù)據(jù)不會因容器重啟而丟失。
5.2 監(jiān)控配置
docker stats kafka zookeeper
5.3 日志查看
docker logs -f kafka
5.4 停止和清理
docker-compose down # 如需刪除數(shù)據(jù)卷 docker-compose down -v
6. 注意事項
- 生產(chǎn)環(huán)境建議使用 KRaft 模式或至少 3 個節(jié)點的集群
- 根據(jù)實際需求調整
KAFKA_CFG_ADVERTISED_LISTENERS
- 數(shù)據(jù)卷路徑可根據(jù)需要修改
- 內存限制可通過
-m
參數(shù)設置 - 安全配置建議添加認證機制
通過以上配置,您可以快速部署適用于開發(fā)和測試環(huán)境的 Kafka 服務。生產(chǎn)環(huán)境請根據(jù)實際需求調整配置參數(shù)和安全設置。
到此這篇關于Docker部署Kafka消息隊列系統(tǒng)的文章就介紹到這了,更多相關Docker部署Kafka內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
docker-compose啟動redis集群的實現(xiàn)步驟
本文主要介紹了docker-compose啟動redis集群的實現(xiàn)步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-07-07