如何在一臺服務(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.進入容器檢查
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)者和消費者之間的消息傳遞效果,這里需要另開一個終端,按照上面的方法進入容器對應(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)文章
基于Docker的PHP調(diào)用基于Docker的Mysql數(shù)據(jù)庫
Docker 是一個開源的應(yīng)用容器引擎,自從接觸docker以來,一直想建立基于Docker的PHP調(diào)用基于Docker的Mysql數(shù)據(jù)庫,下面通過本文給大家介紹下,感興趣的朋友參考下2016-11-11
Docker鏡像倉庫的垃圾回收機制深度清理后端存儲空間的實現(xiàn)
本文主要介紹了Docker鏡像倉庫的垃圾回收機制深度清理后端存儲空間的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2026-04-04
Docker Stack部署Java Web項目的實現(xiàn)
本文主要介紹了Docker Stack部署Java Web項目的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-06-06
jenkins中通過Publish Over SSH插件將項目部署到遠程機器上的講解說明
今天小編就為大家分享一篇關(guān)于jenkins中通過Publish Over SSH插件將項目部署到遠程機器上的講解說明,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2019-02-02

