文章目錄
Ubuntu 安裝 Kafka KRaft cluster
之前筆記 在 CentOS 上安裝 Apache Kafka cluster 紀錄到如何在 CentOS 上安裝基於 Zookeeper 的 Kafka cluster,最近團隊正在準備將 CentOS 以 Ubuntu 取代,另外也曾在 試試不依賴 ZooKeeper 的 Kafka 測試過沒有 ZooKeeper (KRaft mode) 的 kafka,當時並沒有遇到什麼問題,剛好搭上 KRaft 已經在 October 3, 2022 的 Kafka 3.3.1 被標記成 Production Ready,所以趁著這個機會,一併更新安裝語法:Ubuntu + Kraft
基本環境說明
Azure VM Standard B2s (2 vcpu,4 GiB 記憶體) X3
- 10.1.0.4
- 10.1.0.5
- 10.1.0.6
Linux (ubuntu 22.04)
Kafka 3.4.0
OpenJDK 11 JDK
安裝步驟
安裝 JDK
版本需高於 JVM 8
sudo apt install -y openjdk-11-jdk
建立 user 來執行 Kafka
-U
:建立相同 group-m
:建立/home/kafka
useradd --system -m -U kafka
使用 kafka user 來設定
su -l kafka
下載 Kafka
curl https://downloads.apache.org/kafka/3.4.0/kafka_2.13-3.4.0.tgz --create-dirs -o /home/kafka/Downloads/kafka.tgz
解壓縮
tar -xvzf Downloads/kafka.tgz --strip 1
Kafka config
每個 Kafka node 的 id 與 ip (advertised.listeners) 都是不同的,設定時要特別留意
cat <<EOF > /home/kafka/config/kraft/server.properties process.roles=broker,controller node.id=1 offsets.topic.replication.factor=1 [email protected]:9093,[email protected]:9093,[email protected]:9093 listeners=PLAINTEXT://:9092,CONTROLLER://:9093 advertised.listeners=PLAINTEXT://10.1.0.4:9092 controller.listener.names=CONTROLLER listener.security.protocol.map=CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT log.dirs=/home/kafka/kafka_data EOF
建立 cluster id
每個 node 的 cluster id 要相同
kafka_cluster_id=$(./bin/kafka-storage.sh random-uuid)
使用 cluster id 建立 storage
如果 cluster id 不是在該 node 上建立的,記得替換成統一的 cluster id
./bin/kafka-storage.sh format -t $kafka_cluster_id -c ./config/kraft/server.properties
建立 log 資料夾並退出使用 kafka user
mkdir logs && exit
建立 Kafka service 啟動定義
cat <<EOF > /etc/systemd/system/kafka.service [Unit] Description=Kafka After=network.target [Service] Type=simple User=kafka ExecStart=/bin/sh -c '/home/kafka/bin/kafka-server-start.sh /home/kafka/config/kraft/server.properties > /home/kafka/logs/kafka.log 2>&1' ExecStop=/home/kafka/bin/kafka-server-stop.sh Restart=on-abnormal LimitNOFILE=10000000 LimitCORE=infinity LimitNPROC=infinity LimitMEMLOCK=infinity [Install] WantedBy=multi-user.target EOF
啟動 Kafka 服務
systemctl start kafka
將 Kafka 設為隨開機啟動
systemctl enable kafka
心得
之前筆記 試試不依賴 ZooKeeper 的 Kafka 在 2.8 版 (Early Access Release) 中嘗試過 KRaft mode,加上也有 在 CentOS 上安裝 Apache Kafka cluster 的安裝經驗,原本以為會輕鬆寫意,結果東卡西卡,我沒有細究是之前的筆記沒有寫完整還是 CentOS 跟 Ubuntu 間的差異,不過終究是搞定了,相信下次需要建環境時我會很慶幸有做筆記的
參考資訊
文章作者 Yowko Tsai
上次更新 2023-02-23
授權合約
本部落格 (Yowko's Notes) 所有的文章內容(包含圖片),任何轉載行為,必須通知並獲本部落格作者 (Yowko Tsai) 的同意始得轉載,且轉載皆須註明出處與作者。
Yowko's Notes 由 Yowko Tsai 製作,以創用CC 姓名標示-非商業性-相同方式分享 3.0 台灣 授權條款 釋出。