文章目錄
在 CentOS 上安裝 Apache ZooKeeper cluster
之前開發時都透過 dcoker 來啟動,最近才猛然想起我沒有實際安裝過 Apache ZooKeeper cluster,趕緊趁著假日空閒時間惡補一下 Apache ZooKeeper cluster 安裝
只是小弟既不熟 Linux 也不是 Apache ZooKeeper cluster 的熟手,不正確的部份還有勞各位大大指教了
基本環境說明
- CentOS Linux release 7.6.1810 (Core)
ZooKeeper 3.5.6
版本可以自行從 ZooKeeper Releases 挑選
OpenJDK 11 JDK
安裝 Java
yum install java-11-openjdk-devel
建立 Zookeeper 用的 user
建立 user 來執行 Zookeeper
建立
zookeeper
使用者-m
會連帶建立home
目錄:/home/zookeeper
useradd zookeeper -m
設定預設執行 shell 的程式
usermod --shell /bin/bash zookeeper
設定密碼
passwd zookeeper
讓 user
zookeeper
有sudo
權限usermod -aG wheel zookeeper
建立 Zookeeper 用資料夾
建立儲存 config 與資料的資料夾
mkdir -p /data/zookeeper
設定資料夾權限
chown -R zookeeper:zookeeper /data/zookeeper
下載並解壓 ZooKeeper
在
/opt
路徑中,下載 ZooKeeper 3.5.6想選用其他版本可以看 ZooKeeper Releases
cd /opt curl https://archive.apache.org/dist/zookeeper/zookeeper-3.5.6/apache-zookeeper-3.5.6-bin.tar.gz -o zookeeper.tar.gz
解壓
zookeeper
tar -xvf zookeeper.tar.gz
換掉原始資料夾名稱
mv apache-zookeeper-3.5.6-bin zookeeper
為 user
zookeeper
加上執行權限chown -R zookeeper:zookeeper /opt/zookeeper
設定 ZooKeeper
在
/opt/zookeeper/conf
中建立zoo.cfg
nano /opt/zookeeper/conf/zoo.cfg
加入設定值
tickTime=2000 dataDir=/data/zookeeper clientPort=2181 maxClientCnxns=60
啟動 ZooKeeper 並測試單一安裝
啟動
/opt/zookeeper/bin/zkServer.sh start
成功啟動
測試連線
/opt/zookeeper/bin/zkCli.sh -server 127.0.0.1:2181
順利連線
停止
/opt/zookeeper/bin/zkServer.sh stop
將 ZooKeeper 設為為服務
新增服務設定
nano /etc/systemd/system/zookeeper.service
加入設定內容
這邊安裝時一直遇到
zookeeper
有權限問題,暫時先改用root
執行,之後再查[Unit] Description=Zookeeper Daemon Documentation=http://zookeeper.apache.org Requires=network.target After=network.target [Service] Type=forking WorkingDirectory=/opt/zookeeper User=root ExecStart=/opt/zookeeper/bin/zkServer.sh start /opt/zookeeper/conf/zoo.cfg ExecStop=/opt/zookeeper/bin/zkServer.sh stop /opt/zookeeper/conf/zoo.cfg ExecReload=/opt/zookeeper/bin/zkServer.sh restart /opt/zookeeper/conf/zoo.cfg TimeoutSec=30 Restart=on-failure [Install] WantedBy=default.target
啟動服務
systemctl start zookeeper
設定開機預設啟動
systemctl enable zookeeper
設定 ZooKeeper cluster
在 ZooKeeper cluster 每個 node 執行上述每個步驟
修改 ZooKeeper 設定值
nano /opt/zookeeper/conf/zoo.cfg
設定內容
tickTime=2000 dataDir=/data/zookeeper clientPort=2181 maxClientCnxns=60 initLimit=10 syncLimit=5 server.1=node1:2888:3888 server.2=node2:2888:3888 server.3=node3:2888:3888
設定 Zookeeper 識別用 id
每個 node 都不同
node1
echo "1" > /data/zookeeper/myid
node2
echo "2" > /data/zookeeper/myid
node3
echo "3" > /data/zookeeper/myid
重新啟動每個 node 上的 Zookeeper
systemctl restart zookeeper
測試實際效果
連線至任一 Zookeeper node 中
/opt/zookeeper/bin/zkCli.sh -server 127.0.0.1:2181
建立資料
create /yowkotest
至其他 node 中確認是否可以看到新增的 topic
/opt/zookeeper/bin/zkCli.sh -server 127.0.0.1:2181 ls /
心得
安裝前我還以為很簡單,但實際上眉眉角角比想的還多不少,不知道是我對 Linux 的權限系統不熟悉造成的,還是 Linux 的安裝就是這樣
就以安裝的步驟而言,我覺得並不太直覺,這些動作叫我不看文件我一定無法完成,不過先求有再求好,有機會再來改善囉
此外,現在是不是 Ubuntu 比較受歡迎呀? 網路上的 blog 較新資料都是 Ubuntu 上的安裝,CentOS 並不多,讓我只好自己踩雷了
參考資訊
文章作者 Yowko Tsai
上次更新 2019-11-02
授權合約
本部落格 (Yowko's Notes) 所有的文章內容(包含圖片),任何轉載行為,必須通知並獲本部落格作者 (Yowko Tsai) 的同意始得轉載,且轉載皆須註明出處與作者。
Yowko's Notes 由 Yowko Tsai 製作,以創用CC 姓名標示-非商業性-相同方式分享 3.0 台灣 授權條款 釋出。