如何在一臺服務(wù)器上使用docker運行kafka集群
1.拉取鏡像
docker pull wurstmeister/kafka
docker pull wurstmeister/zookeeper
2.創(chuàng)建集群之間通信的網(wǎng)絡(luò)
docker network create kafka-cluster-net
docker network inspect kafka-cluster-net
3.將zookeeper加入到網(wǎng)絡(luò)中
docker network connect kafka-cluster-net zookeeper
4.啟動kafka集群
? docker run -d \ --name kafka-0 \ --network kafka-cluster-net \ -p 9092:9092 \ -e KAFKA_BROKER_ID=0 \ -e KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181 \ -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://localhost:9092 \ -e KAFKA_LISTENERS=PLAINTEXT://:9092 \ wurstmeister/kafka ?
- 首先創(chuàng)建一個自定義網(wǎng)絡(luò),方便容器間通信:
- 運行第一個 Kafka 容器:
- --name kafka-0:給容器命名,這里以 kafka-0 表示第一個節(jié)點,后續(xù)可類推更改數(shù)字來創(chuàng)建不同節(jié)點。
- --network kafka-cluster-net:讓容器接入剛才創(chuàng)建的自定義網(wǎng)絡(luò)。
- -p 9092:9092:映射端口,使得外部能訪問容器內(nèi)的 Kafka 服務(wù)。
- KAFKA_BROKER_ID:指定 broker 的唯一 ID,每個節(jié)點不能相同。
- KAFKA_ZOOKEEPER_CONNECT:指向剛才啟動的 Zookeeper 容器名稱及端口,容器間通過名稱可互相訪問。
- KAFKA_ADVERTISED_LISTENERS:對外暴露的連接地址,這里使用 localhost,根據(jù)實際情況修改。
- KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR:副本因子,這里設(shè)置為 1,可按需調(diào)整。
- 運行第二個 Kafka 容器(類似地修改 broker ID 等參數(shù)):
- 按照上述方法可運行更多的 Kafka 容器來構(gòu)建更大的集群,只需修改相應(yīng)的 ID 和端口等參數(shù)。
docker run -d \ --name kafka-1 \ --network kafka-cluster-net \ -p 9093:9092 \ -e KAFKA_BROKER_ID=1 \ -e KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181 \ -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://localhost:9093 \ -e KAFKA_LISTENERS=PLAINTEXT://:9092 \ wurstmeister/kafka
5.檢查是否運行
docker ps
docker network inspect kafka-cluster-net
檢查網(wǎng)絡(luò)以及容器運行狀態(tài)
6.編寫集群啟動腳本
start_kafka_cluster.sh :
#!/bin/bash docker start zookeeper sleep 4 docker start kafka-0 kafka-1 echo "Kafka cluster containers started successfully."
7.編寫集群關(guān)閉腳本
stop_kafka_cluster.sh:
#!/bin/bash docker stop kafka-0 kafka-1 zookeeper echo "Kafka cluster containers stopped successfully."
8.進(jìn)入容器檢查
docker exec -it kafka-0 /bin/bash
cd /opt/kafka/ #切換到內(nèi)部kafka目錄
9.故障排查
如果在使用Docker過程中遇到任何錯誤, 可以命令:
docker logs 容器ID/容器名稱
10、啟動生產(chǎn)者
./kafka-console-producer.sh --broker-list localhost:9092 --topic [你的topic名稱]
11.啟動消費者
為了看到生產(chǎn)者和消費者之間的消息傳遞效果,這里需要另開一個終端,按照上面的方法進(jìn)入容器對應(yīng)目錄,并執(zhí)行以下命令:
./kafka-console-consumer.sh --bootstrap-server [你的IP地址]:9092 --topic [你的topic名稱]
到此這篇關(guān)于在一臺服務(wù)器上使用docker運行kafka集群的文章就介紹到這了,更多相關(guān)docker運行kafka集群內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
解讀Dockerfile中CMD和ENTRYPOINT是否可以混著用
在Dockerfile中,CMD和ENTRYPOINT可以混著用,CMD指定默認(rèn)命令,ENTRYPOINT指定啟動命令,CMD可以被docker run命令的參數(shù)覆蓋2025-03-03基于Dockerfile創(chuàng)建zabbix監(jiān)控體系代碼實例
這篇文章主要介紹了基于Dockerfile創(chuàng)建zabbix監(jiān)控體系代碼實例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-05-05docker啟動mysql5.7服務(wù)詳細(xì)說明
這篇文章主要給大家介紹了關(guān)于docker啟動mysql5.7服務(wù)的相關(guān)資料,文中通過代碼示例介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考價值,需要的朋友可以參考下2023-09-09Docker部署php運行環(huán)境(php-fpm+nginx)
Docker?是一種流行的容器化平臺,可以幫助開發(fā)人員快速創(chuàng)建、部署和管理容器化應(yīng)用程序,本文將介紹如何使用?Docker?搭建?PHP?開發(fā)環(huán)境服務(wù)器,讓您能夠輕松地開始?PHP?開發(fā)工作,感興趣的可以了解一下2023-11-11Linux服務(wù)器安裝Docker,啟動失敗問題的解決
這篇文章主要介紹了Linux服務(wù)器安裝Docker,啟動失敗問題的解決方案,具有很好的參考價值,希望對大家有所幫助。2023-04-04