文章目錄
在 CentOS 上安裝 Apache Kafka cluster
之前筆記 在 CentOS 上安裝 Apache ZooKeeper cluster 紀錄到如何建立 ZooKeeper 的 cluster,雖然 ZooKeeper 還有其他用途,不過我主要打算用來與 Kafka 搭配做為 Message Queue,單看這個使用情境而言,我必需來紀錄 Kafka + Zookeeper 的安裝過程 方便日後查閱囉
基本環境說明
安裝機 X 1,實際 cluster X 3,皆透過 Azure VM 來建立
- Linux (centos 7.7.1908)
- Kafka 2.3.1
- OpenJDK 11 JDK
安裝 JDK
版本需高於 JVM 8
yum install java-11-openjdk-devel
為執行 Kafka 建立專屬群組與帳號
建立 user 來執行 Kafka
groupadd --system kafka
useradd -s /sbin/nologin --system -g kafka kafka
<!– 1. 建立 kafka
使用者
> `-m` 會連帶建立 `home` 目錄: `/home/kafka`
```bash
useradd kafka -m
```
設定預設執行 shell 的程式
usermod --shell /bin/bash kafka
設定密碼 (optional)
passwd kafka
讓 user
kafka
有sudo
權限usermod -aG wheel kafka
下載並解壓 Kafka
建立下載用資料夾
mkdir /home/kafka/Downloads
下載 Kafka
curl http://apache.stu.edu.tw/kafka/2.3.1/kafka_2.11-2.3.1.tgz -o /home/kafka/Downloads/kafka.tgz
解壓縮
cd /home/kafka && tar -xvzf Downloads/kafka.tgz --strip 1
Zookeeper 啟動設定
建立啟動文件
vi /etc/systemd/system/zookeeper.service
啟動文件內容
[Unit] Requires=network.target remote-fs.target After=network.target remote-fs.target [Service] Type=simple User=kafka ExecStart=/home/kafka/bin/zookeeper-server-start.sh /home/kafka/config/zookeeper.properties ExecStop=/home/kafka/bin/zookeeper-server-stop.sh Restart=on-abnormal [Install] WantedBy=multi-user.target
Kafka 啟動設定
建立啟動文件
vi /etc/systemd/system/kafka.service
啟動文件內容
[Unit] Requires=zookeeper.service After=zookeeper.service [Service] Type=simple User=kafka ExecStart=/bin/sh -c '/home/kafka/bin/kafka-server-start.sh /home/kafka/config/server.properties > /home/kafka/kafka.log 2>&1' ExecStop=/home/kafka/bin/kafka-server-stop.sh Restart=on-abnormal [Install] WantedBy=multi-user.target
Cluster 設定
如果只需要 single node instance,可以略過這個步驟
Zookeeper
依實際 node 來做調整
調整設定
位置在
/home/kafka/config/zookeeper.properties
echo initLimit=10 >> /home/kafka/config/zookeeper.properties echo syncLimit=5 >> /home/kafka/config/zookeeper.properties echo server.1=node1:2888:3888 >> /home/kafka/config/zookeeper.properties echo server.2=node2:2888:3888 >> /home/kafka/config/zookeeper.properties echo server.3=node3:2888:3888 >> /home/kafka/config/zookeeper.properties
加入
myid
設定位置請參照
/home/kafka/config/zookeeper.properties
的dataDir
設定值,每個 node 的 myid 值需要唯一echo 1 >> /tmp/zookeeper/myid
Kafka
位置在
/home/kafka/config/server.properties
,每個 node 都必需執行修改
broker.id
讓不同的 kafka instance 可以做出區隔,每個 node 的 broker.id 值需要唯一sed -i 's/broker.id=0/broker.id=1/g' /home/kafka/config/server.properties
修改
zookeeper.connect
,連線至 Zookeeper cluster 的位置sed -i 's/zookeeper.connect=localhost:2181/zookeeper.connect=node1:2181,node2:2181,node3:2181/g' /home/kafka/config/server.properties
啟動 Kafka
啟動 Kafka 服務
systemctl start kafka
將 Kafka 設為隨開機啟動
systemctl enable kafka
心得
有了上次安裝 ZooKeeper cluster 的經驗後,這次安裝 Kafka cluster 感覺比較上手些,不過安裝後重新看了一次步驟還是覺得相當麻煩,預計改天紀錄將上述各個步驟透過單一 shell script 來完成安裝,想必會方便許多
參考資訊
文章作者 Yowko Tsai
上次更新 2023-02-23
授權合約
本部落格 (Yowko's Notes) 所有的文章內容(包含圖片),任何轉載行為,必須通知並獲本部落格作者 (Yowko Tsai) 的同意始得轉載,且轉載皆須註明出處與作者。
Yowko's Notes 由 Yowko Tsai 製作,以創用CC 姓名標示-非商業性-相同方式分享 3.0 台灣 授權條款 釋出。