文章目錄
在 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 1Zookeeper 啟動設定
建立啟動文件
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.propertiesecho 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 台灣 授權條款 釋出。
