Docker快速搭建Kafka集群及測(cè)試的技術(shù)指南
前言 Apache
Kafka是一款高吞吐量的分布式消息系統(tǒng),配合Zookeeper可實(shí)現(xiàn)集群化部署。本文通過(guò)Docker容器技術(shù),?3分鐘快速搭建3節(jié)點(diǎn)Kafka集群并完成消息生產(chǎn)消費(fèi)測(cè)試。
一、環(huán)境準(zhǔn)備
?系統(tǒng)要求:Linux/macOS(Windows需安裝Docker Desktop)
?Docker版本:建議使用20.10+
?網(wǎng)絡(luò)配置:確保2181(Zookeeper)、9092-9094(Kafka)端口開(kāi)放
二、安裝Zookeeper服務(wù)
1. 拉取鏡像
docker search zookeeper # 查看可用鏡像 docker pull wurstmeister/zookeeper # 拉取官方推薦鏡像
2. 啟動(dòng)容器
docker run -d --name zookeeper \ -p 2181:2181 \ -t wurstmeister/zookeeper
三、搭建Kafka集群
1. 拉取Kafka鏡像
docker search kafka --limit=50 # 查找鏡像 docker pull wurstmeister/kafka # 拉取鏡像
2. 啟動(dòng)3個(gè)Broker節(jié)點(diǎn)
注意:將下方所有xxx替換為服務(wù)器真實(shí)IP地址
# Broker 0(端口9092) docker run -d --name kafka0 \ -p 9092:9092 \ -e KAFKA_BROKER_ID=0 \ -e KAFKA_ZOOKEEPER_CONNECT=xxx:2181 \ -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://xxx:9092 \ -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 \ wurstmeister/kafka # Broker 1(端口9093) docker run -d --name kafka1 \ -p 9093:9093 \ -e KAFKA_BROKER_ID=1 \ -e KAFKA_ZOOKEEPER_CONNECT=xxx:2181 \ -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://xxx:9093 \ -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9093 \ wurstmeister/kafka # Broker 2(端口9094) docker run -d --name kafka2 \ -p 9094:9094 \ -e KAFKA_BROKER_ID=2 \ -e KAFKA_ZOOKEEPER_CONNECT=xxx:2181 \ -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://xxx:9094 \ -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9094 \ wurstmeister/kafka
3. 驗(yàn)證集群狀態(tài)
docker ps # 應(yīng)顯示4個(gè)容器(1個(gè)Zookeeper + 3個(gè)Kafka)
四、測(cè)試消息生產(chǎn)與消費(fèi)
測(cè)試準(zhǔn)備
打開(kāi)兩個(gè)終端窗口,分別執(zhí)行以下操作:
窗口1:生產(chǎn)者(發(fā)送消息)
# 進(jìn)入任意Kafka容器 docker exec -it kafka0 /bin/bash # 進(jìn)入腳本目錄(注意版本號(hào)可能不同) cd /opt/kafka_2.13-2.7.0/bin # 啟動(dòng)生產(chǎn)者并創(chuàng)建test主題 ./kafka-console-producer.sh \ --broker-list localhost:9092 \ --topic test
窗口2:消費(fèi)者(接收消息)
# 進(jìn)入同一Kafka容器 docker exec -it kafka0 /bin/bash # 進(jìn)入腳本目錄 cd /opt/kafka_2.13-2.7.0/bin # 啟動(dòng)消費(fèi)者 ./kafka-console-consumer.sh \ --bootstrap-server localhost:9092 \ --topic test \ --from-beginning
測(cè)試結(jié)果
- 生產(chǎn)者窗口輸入任意文本(如Hello Kafka!)
- 消費(fèi)者窗口將實(shí)時(shí)顯示接收的消息
五、關(guān)鍵參數(shù)說(shuō)明
環(huán)境變量 | 作用 |
---|---|
KAFKA_BROKER_ID | 節(jié)點(diǎn)唯一標(biāo)識(shí)(集群內(nèi)不可重復(fù)) |
KAFKA_ZOOKEEPER_CONNECT | Zookeeper服務(wù)地址 |
KAFKA_ADVERTISED_LISTENERS | 對(duì)外暴露的訪問(wèn)地址 |
KAFKA_LISTENERS | 容器內(nèi)部監(jiān)聽(tīng)地址 |
六、常見(jiàn)問(wèn)題排查
1. 連接超時(shí)
檢查服務(wù)器安全組/防火墻是否開(kāi)放端口
確認(rèn)IP地址是否正確替換
2. 消費(fèi)者無(wú)數(shù)據(jù)
添加–from-beginning參數(shù)讀取歷史消息
檢查topic是否創(chuàng)建成功:
./kafka-topics.sh --list --bootstrap-server localhost:9092
3. 容器啟動(dòng)失敗
查看日志定位問(wèn)題:
docker logs -f kafka0
以上就是Docker快速搭建Kafka集群及測(cè)試的技術(shù)指南的詳細(xì)內(nèi)容,更多關(guān)于Docker搭建Kafka集群的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Docker 常用命令整理及使用注意事項(xiàng)總結(jié)
這篇文章主要介紹了Docker 常用命令整理及使用注意事項(xiàng)總結(jié)的相關(guān)資料,這里整理了Docker 的常用命令,說(shuō)明這些命令是什么意思及使用方法,需要的朋友可以參考下2016-12-12清理docker占用磁盤過(guò)大問(wèn)題終極方案(親測(cè)有效!)
Docker很占用空間每當(dāng)我們運(yùn)行容器、拉取鏡像、部署應(yīng)用、構(gòu)建自己的鏡像時(shí)我們的磁盤空間會(huì)被大量占用,這篇文章主要給大家介紹了關(guān)于清理docker占用磁盤過(guò)大問(wèn)題終極方案,需要的朋友可以參考下2024-04-04Docker創(chuàng)建enrollment token錯(cuò)誤異常解析及解決方案
部署完kibana,需要通過(guò)enrollment token方式來(lái)連接elasticsearch,此時(shí)需要在elasticsearch中創(chuàng)建enrollment token,這篇文章主要介紹了Docker創(chuàng)建enrollment token錯(cuò)誤異常解析及解決方案,需要的朋友可以參考下2024-04-04Navicat 連接服務(wù)器端中的docker數(shù)據(jù)庫(kù)的方法
這篇文章主要介紹了Navicat 連接服務(wù)器端中的docker數(shù)據(jù)庫(kù),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-03-03docker 如何搭建私有倉(cāng)庫(kù)(ubuntu 14.04,Docker版本1.6.4)詳細(xì)介紹
這篇文章主要介紹了docker 如何搭建私有倉(cāng)庫(kù)(ubuntu 14.04,Docker版本1.6.4)詳細(xì)介紹的相關(guān)資料,需要的朋友可以參考下2017-01-01在Ubuntu上使用Grafana監(jiān)控Docker的方法
如今越來(lái)越多的公司開(kāi)始使用Docker,一談起Docker總是會(huì)跟著讓人聯(lián)想到輕量這個(gè)詞,甚至?xí)幸环N通過(guò)Docker啟動(dòng)一個(gè)服務(wù)會(huì)節(jié)省很多資源的錯(cuò)覺(jué)。然而Docker的「輕」也只是相對(duì)于傳統(tǒng)虛擬機(jī)而已。Docker如何監(jiān)控呢?本文就給大家介紹在Ubuntu上如何使用Grafana監(jiān)控Docker。2016-12-12Docker中iptables規(guī)則在iptables重啟后丟失的完整過(guò)程
這篇文章主要給大家介紹了關(guān)于Docker中iptables規(guī)則在iptables重啟后丟失的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Docker具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-05-05