文章目錄
使用官方 image 來建立 Kafka
從 Kafka 2.8 發表 KRaft mode (KRaft early access) 以來,我就嘗試將 KRaft 導入團隊,逐步取代 Zookeeper,一開始配合官方建議: KRaft beta 功能只是在開發環境先試用,而團隊在開始環境與自動化測試環境都是使用 container 來建立的,但當時官方並未建立 container image 所以只能退而求其次使用其他第三方建立的 container image (之前筆記 使用 Docker 啟動不依賴 ZooKeeper 的 Kafka、Build 個可以自動建立 topic 又不需依賴 ZooKeeper 的 Kafka image、Build 個可以自動建立 topic 又不需依賴 ZooKeeper 的 Kafka image 更新 中用的都是 strimzi/kafka
),接著 Kafka 3.3 將 KRaft 功能標記為 production-ready、Kafka 3.5 將 ZooKeeper 列為 deprecated、Kafka 3.7 開始提供官方 container image,並且官方已經公告預計在 Kafka 4 開始不再支援 ZooKeeper
既然官方已經提供了 container image,我們就儘量使用官方提供的版本,所以今天就來紀錄一下該如何使用官方 image 來建立 Kafka,順便比較一下與之前使用第三方 image 的差異
基本環境說明
- macOS Sonoma 14.6.1 (Apple M2 Pro)
- OrbStack 1.6.4 (17192)
docker images
- apache/kafka:3.8.0
預設 kafka config
如果沒有特別設定,會使用官方提供的預設設定:
/opt/kafka/config/server.properties
內容如下展開摺疊區塊
使用方式
全部使用預設值
效果等同
docker run -d -p 9092:9092 apache/kafka:3.8.0
docker-compose.yaml
config file
展開摺疊區塊
官方建議 GitHub:docker/examples/docker-compose-files/single-node/plaintext/docker-compose.yml Single Node 設定
我修改了以下項目: 1. 移除 version (version 已淘汰) 2. image 由 {image} 改為
apache/kafka:3.8.0
3. 移除CLUSTER_ID: '4L6g3nShT-eMCtK--X86sw'
docker-compose.yaml
我沒有找到為什麼需要 19092 port,我個人覺得沒有必要,但就忠實呈現官方建議
config file
展開摺疊區塊
官方建議 GitHub:docker/examples/docker-compose-files/cluster/combined/plaintext/docker-compose.yml 3 Node cluster 設定
我修改了以下項目: 1. 移除 version (version 已淘汰) 2. image 由 {image} 改為
apache/kafka:3.8.0
docker-compose.yaml
config file (以 broker 1 為例)
展開摺疊區塊
心得
相較之前使用非官方的 container image 有以下優點:
- dockerfile 中不再需要使用
root
權限 - 不用自行建立 strage directory
體驗完官方的 container image,目前沒有發現明顯的缺點,應該是可以直接轉換
參考資訊
- 使用 Docker 啟動不依賴 ZooKeeper 的 Kafka
- Build 個可以自動建立 topic 又不需依賴 ZooKeeper 的 Kafka image
- Build 個可以自動建立 topic 又不需依賴 ZooKeeper 的 Kafka image 更新
- How to run Apache Kafka without Zookeeper
- GitHub:Kafka Docker Image Usage Guide
- GitHub:docker/examples/docker-compose-files/single-node/plaintext/docker-compose.yml
- GitHub:docker/examples/docker-compose-files/cluster/combined/plaintext/docker-compose.yml
文章作者 Yowko Tsai
上次更新 2024-08-19
授權合約
本部落格 (Yowko's Notes) 所有的文章內容(包含圖片),任何轉載行為,必須通知並獲本部落格作者 (Yowko Tsai) 的同意始得轉載,且轉載皆須註明出處與作者。
Yowko's Notes 由 Yowko Tsai 製作,以創用CC 姓名標示-非商業性-相同方式分享 3.0 台灣 授權條款 釋出。