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ù)實際需求調(diào)整
KAFKA_CFG_ADVERTISED_LISTENERS - 數(shù)據(jù)卷路徑可根據(jù)需要修改
- 內(nèi)存限制可通過
-m參數(shù)設置 - 安全配置建議添加認證機制
通過以上配置,您可以快速部署適用于開發(fā)和測試環(huán)境的 Kafka 服務。生產(chǎn)環(huán)境請根據(jù)實際需求調(diào)整配置參數(shù)和安全設置。
到此這篇關(guān)于Docker部署Kafka消息隊列系統(tǒng)的文章就介紹到這了,更多相關(guān)Docker部署Kafka內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
如何使用docker+frp進行內(nèi)網(wǎng)穿透
這篇文章主要介紹了使用docker+frp進行內(nèi)網(wǎng)穿透,在公網(wǎng)上的ubuntu系統(tǒng)需要配置相關(guān)操作,本文給大家介紹的非常詳細,需要的朋友可以參考下2024-04-04
docker-compose啟動redis集群的實現(xiàn)步驟
本文主要介紹了docker-compose啟動redis集群的實現(xiàn)步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-07-07

