使用Docker搭建Apache Kafka環(huán)境的詳細過程
Docker是最受歡迎的容器引擎之一,軟件行業(yè)用于創(chuàng)建、打包、部署應用。本教程學習如何使用Docker搭建Apache Kafka。
安裝單個節(jié)點
安裝單節(jié)點Kafka代理需能夠滿足本地開發(fā)需求,我們首先學習單節(jié)點安裝。
docker-compose.yml 配置
使用Apache Kafka服務,首先需要啟動Zookeeper 服務。這可以通過在docker-compose.yml 文件配置依賴實現(xiàn),但要確保Zookeeper服務總是在Kafka服務之前啟動,反之zookeeper最后停止。
首先創(chuàng)建docker-compose.yml文件,增加兩個服務:zookeeper和kafka:
version: '2'
services:
zookeeper:
image: confluentinc/cp-zookeeper:latest
environment:
ZOOKEEPER_CLIENT_PORT: 2181
ZOOKEEPER_TICK_TIME: 2000
ports:
- 22181:2181
kafka:
image: confluentinc/cp-kafka:latest
depends_on:
- zookeeper
ports:
- 29092:29092
environment:
KAFKA_BROKER_ID: 1
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:9092,PLAINTEXT_HOST://localhost:29092
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT
KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
Zookeeper服務監(jiān)聽2181端口為Kafka提供服務,但對于運行在本機的客戶端,暴露的端口為22181.
類似的,kafka通過端口29092暴露給主機應用,但實際上在容器中的端口9092。有KAFKA_ADVERTISED_LISTENERS屬性來配置。
下面通過使用命令啟動容器、開啟kafka服務:
$ docker-compose up -d Creating network "kafka_default" with the default driver Creating kafka_zookeeper_1 ... done Creating kafka_kafka_1 ... done
下面通過nc命令嚴重兩個服務正在監(jiān)聽各自的端口:
$ nc -z localhost 22181 Connection to localhost port 22181 [tcp/*] succeeded! $ nc -z localhost 29092 Connection to localhost port 29092 [tcp/*] succeeded!
另外,也可以檢查日志,當容器正在運行時驗證kafka服務是否啟動:
$ docker-compose logs kafka | grep -i started
可以看到Kafka服務已經(jīng)啟動。
最后可以使用Kafka Tool Gui 工具連接已安裝的Kafka服務:

安裝集群環(huán)境
生產(chǎn)環(huán)境需要更穩(wěn)定的環(huán)境,下面擴展 docker-compose.yml文件創(chuàng)建多節(jié)點集群環(huán)境:
docker-compose.yml配置
集群安裝需要zookeeper和Kafka有多個實例,下面為zookeeper和kafka增加多個服務:
---
version: '2'
services:
zookeeper-1:
image: confluentinc/cp-zookeeper:latest
environment:
ZOOKEEPER_CLIENT_PORT: 2181
ZOOKEEPER_TICK_TIME: 2000
ports:
- 22181:2181
zookeeper-2:
image: confluentinc/cp-zookeeper:latest
environment:
ZOOKEEPER_CLIENT_PORT: 2181
ZOOKEEPER_TICK_TIME: 2000
ports:
- 32181:2181
kafka-1:
image: confluentinc/cp-kafka:latest
depends_on:
- zookeeper-1
- zookeeper-2
ports:
- 29092:29092
environment:
KAFKA_BROKER_ID: 1
KAFKA_ZOOKEEPER_CONNECT: zookeeper-1:2181,zookeeper-2:2181
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka-1:9092,PLAINTEXT_HOST://localhost:29092
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT
KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
kafka-2:
image: confluentinc/cp-kafka:latest
depends_on:
- zookeeper-1
- zookeeper-2
ports:
- 39092:39092
environment:
KAFKA_BROKER_ID: 2
KAFKA_ZOOKEEPER_CONNECT: zookeeper-1:2181,zookeeper-2:2181
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka-2:9092,PLAINTEXT_HOST://localhost:39092
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT
KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
必須要確保kafka服務名稱唯一,通過KAFKA_BROKER_ID 屬性設置。而且每個服務必須暴露唯一主機端口。雖然zookeeper-1 和 zookeeper-2 監(jiān)聽2181端口,但對于主機端口分別為 22181 和 32181。類似的,kafka-1 和 kafka-2 services對應主機端口分別為 29092 和 39092。
啟動kafka集群
現(xiàn)在通過docker-compose命令啟動集群:
$ docker-compose up -d Creating network "kafka_default" with the default driver Creating kafka_zookeeper-1_1 ... done Creating kafka_zookeeper-2_1 ... done Creating kafka_kafka-2_1 ... done Creating kafka_kafka-1_1 ... done
啟動完成,使用Kafka Tool連接集群,地址通過逗號分割只讀多個zookeeper地址和端口:
總結
本文使用Docker技術創(chuàng)建單個Kafka節(jié)點和Kafka集群環(huán)境,并且使用可視化工具連接服務查看代理服務器的配置信息。
到此這篇關于使用Docker搭建Apache Kafka環(huán)境的文章就介紹到這了,更多相關Docker Apache Kafka環(huán)境內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
詳解Docker下使用Elasticsearch可視化Kibana
本篇文章主要介紹了詳解Docker下使用Elasticsearch可視化Kibana,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-04-04
如何使用docker+frp進行內(nèi)網(wǎng)穿透
這篇文章主要介紹了使用docker+frp進行內(nèi)網(wǎng)穿透,在公網(wǎng)上的ubuntu系統(tǒng)需要配置相關操作,本文給大家介紹的非常詳細,需要的朋友可以參考下2024-04-04
啟動docker的時候如何把參數(shù)傳遞給docker里面的項目(推薦)
這篇文章主要介紹了啟動docker的時候如何把參數(shù)傳遞給docker里面的項目,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧2024-01-01
如何通過Docker容器創(chuàng)建一個Web服務器
這篇文章主要介紹了如何通過Docker容器創(chuàng)建一個Web服務器的相關資料,并對Nginx進行基本配置和測試,文中通過代碼介紹的非常詳細,需要的朋友可以參考下2025-03-03

