Docker部署Kafka消息隊(duì)列系統(tǒng)完整指南
本指南將詳細(xì)介紹如何使用 Docker 部署 Kafka 消息隊(duì)列系統(tǒng),包括單節(jié)點(diǎn)和集群模式的部署方式。
1. 單節(jié)點(diǎn)部署 (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 啟動(dòng)服務(wù)
export HOST_IP=$(hostname -I | awk '{print $1}')
docker-compose up -d
2. KRaft 模式部署 (無(wú) 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 啟動(dòng)服務(wù)
export HOST_IP=$(hostname -I | awk '{print $1}')
docker-compose up -d
3. 集群部署 (3節(jié)點(diǎn))
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 啟動(dòng)集群
export HOST_IP=$(hostname -I | awk '{print $1}')
docker-compose up -d
4. 基本操作驗(yàn)證
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 消費(fèi)消息
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ù)不會(huì)因容器重啟而丟失。
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. 注意事項(xiàng)
- 生產(chǎn)環(huán)境建議使用 KRaft 模式或至少 3 個(gè)節(jié)點(diǎn)的集群
- 根據(jù)實(shí)際需求調(diào)整
KAFKA_CFG_ADVERTISED_LISTENERS - 數(shù)據(jù)卷路徑可根據(jù)需要修改
- 內(nèi)存限制可通過(guò)
-m參數(shù)設(shè)置 - 安全配置建議添加認(rèn)證機(jī)制
通過(guò)以上配置,您可以快速部署適用于開(kāi)發(fā)和測(cè)試環(huán)境的 Kafka 服務(wù)。生產(chǎn)環(huán)境請(qǐng)根據(jù)實(shí)際需求調(diào)整配置參數(shù)和安全設(shè)置。
到此這篇關(guān)于Docker部署Kafka消息隊(duì)列系統(tǒng)的文章就介紹到這了,更多相關(guān)Docker部署Kafka內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
如何解決docker commit后鏡像越來(lái)越大問(wèn)題
解決Docker Commit后鏡像變大問(wèn)題的方法:方法1直接打包容器并導(dǎo)入為鏡像;方法2將容器根目錄文件壓縮后導(dǎo)入為鏡像,方法1更優(yōu),在其他設(shè)備運(yùn)行時(shí)可能出現(xiàn)內(nèi)存不足錯(cuò)誤2025-03-03
教你使用Docker搭建gitlab社區(qū)漢化版的詳細(xì)過(guò)程
很多朋友不太清楚使用Docker搭建gitlab社區(qū)漢化版的過(guò)程,總是容易出現(xiàn)錯(cuò)誤,今天小編抽空給大家分享使用Docker搭建gitlab社區(qū)漢化版的詳細(xì)過(guò)程,一起看看吧2021-09-09
docker下elasticsearch安裝證書(shū)全過(guò)程
本文介紹了如何在Docker容器中安裝和配置Elasticsearch 7.6集群,并設(shè)置密碼,包括生成證書(shū)、拷貝證書(shū)、修改配置文件和創(chuàng)建密碼等步驟2025-11-11
解決Docker啟動(dòng)Elasticsearch7.x報(bào)錯(cuò)的問(wèn)題
這篇文章主要介紹了解決Docker啟動(dòng)Elasticsearch7.x報(bào)錯(cuò)的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-11-11
如何在centos的docker里安裝jupyter并開(kāi)放端口
上次有一朋友問(wèn)小編如何在centos的docker里安裝jupyter并開(kāi)放端口呢?在這就不一一回復(fù)大家了,下面小編把我的個(gè)人經(jīng)驗(yàn)分享到腳本之家平臺(tái),感興趣的朋友一起看看吧2021-08-08
docker的iptables策略詳解和用戶自定義策略的添加方式
在Docker環(huán)境下,直接修改iptables以允許特定主機(jī)訪問(wèn)指定端口時(shí),需要考慮Docker自身的iptables規(guī)則,Docker通過(guò)修改nat表的PREROUTING鏈和filter表的FORWARD鏈來(lái)處理外部對(duì)Docker容器的訪問(wèn),繞過(guò)了filter表的INPUT鏈2024-10-10
docker?Desktop安裝WSL?--update報(bào)錯(cuò)問(wèn)題成功解決辦法
這篇文章主要介紹了如何在Windows?11上設(shè)置WSL2為默認(rèn)版本,解決WSL2安裝和卸載過(guò)程中遇到的問(wèn)題,包括強(qiáng)制中斷命令、wsl--uninstall命令無(wú)效以及手動(dòng)刪除Linux發(fā)行版的方法,需要的朋友可以參考下2025-02-02

