一廓推、安裝環(huán)境
Zookeeper集群最好至少安裝3個(gè)節(jié)點(diǎn)迄委,端口使用默認(rèn)端口:2181谋梭。
JDK安裝了1.8.0_161互广,JDK安裝鏈接:http://www.reibang.com/p/cff2b88883e4
二、安裝過程
1.下載安裝包焙格,解壓
官網(wǎng)推薦下載地址:https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/
注:下載帶bin的安裝包姻报,已經(jīng)編譯過的。沒有帶bin的為源碼包间螟,需要編譯打包才能使用。
##下載
[root@node01 local]# wget https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.6.3/apache-zookeeper-3.6.3-bin.tar.gz
##解壓
[root@node01 local]# tar -zxvf apache-zookeeper-3.6.3-bin.tar.gz
## 得到apache-zookeeper-3.6.3壓縮包损肛,重命名為zookeeper
[root@node01 local]# mv apache-zookeeper-3.6.3 zookeeper
解壓后的目錄:
2.編輯配置文件
##進(jìn)入conf目錄
[root@node01 zookeeper]# cd conf/
##重命名配置文件為zoo.cfg
[root@node01 conf]# mv zoo_sample.cfg zoo.cfg
##修改配置文件zoo.cfg
[root@node01 conf]# vim zoo.cfg
其他兩臺安裝配置過程一樣厢破。
3.添加myid文件
注:集群模式下需新增一個(gè)myid的文件,存放在配置文件中那個(gè)dataDir指定的目錄下治拿,這個(gè)文件需配置對應(yīng)server.x的這個(gè)x[1,2,3]值摩泪,zookeeper啟動時(shí)會讀取myid文件的這個(gè)值與 zoo.cfg 里面的配置信息比較,從而判斷是哪個(gè)服務(wù)器節(jié)點(diǎn)劫谅。
##進(jìn)入dataDir指定的目錄下編輯myid见坑,server1對應(yīng)寫上1,server2為2捏检,server3為3
[root@node01 zookeeper]# vim myid
[root@node01 zookeeper]# cat myid
1
4.啟動
進(jìn)入zookeeper的bin目錄荞驴,可找到啟動腳本
查看啟動方法,輸入./zkServer.sh贯城,直接回車查看:
啟動zookeeper服務(wù):
[root@node01 bin]# ./zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
輸入 jps熊楼,可查看到已啟動了zk的QuorumPeerMain主進(jìn)程
[root@node01 zookeeper]# jps
7240 Jps
6843 QuorumPeerMain
然后分別啟動其他兩臺zookeeper。
5.查看節(jié)點(diǎn)狀態(tài)
當(dāng)三臺節(jié)點(diǎn)都啟動后能犯,查看他們在集群中的狀態(tài)鲫骗∪埽可看到節(jié)點(diǎn)1被選舉為主節(jié)點(diǎn),其余兩個(gè)為從節(jié)點(diǎn)执泰。
zookeeper集群部署成功
6. 測試集群
若節(jié)點(diǎn)1斷開枕磁,另外兩臺會通過之前設(shè)定的3888這個(gè)端口來重新選舉leader,可看出節(jié)點(diǎn)3被選舉為新的主節(jié)點(diǎn)术吝。
7.一鍵啟動Zookeeper集群
編寫批量啟動zk的腳本
[root@node01 zookeeper]# vim zk_run_all.sh
腳本內(nèi)容:
#!/bin/bash
case $1 in
"start"){
for node in node01 node02 node03
do
echo "---------$node---------"
ssh $node "source /etc/profile;/usr/local/zookeeper/bin/zkServer.sh start"
done
};;
"stop"){
for node in node01 node02 node03
do
echo "---------$node---------"
ssh $node "source /etc/profile;/usr/local/zookeeper/bin/zkServer.sh stop"
done
};;
esac
node01,node02,node03是三臺節(jié)點(diǎn)的hostname计济。先vim /etc/hosts 進(jìn)行節(jié)點(diǎn)ip和hostname的映射。然后通過ssh hostname遠(yuǎn)程登入后進(jìn)行操作顿苇。
給腳本賦權(quán)
[root@node01 zookeeper]# chmod +x zk_run_all.sh
運(yùn)行啟動腳本
[root@node01 zookeeper]# sh zk_run_all.sh start
---------node01---------
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
---------node02---------
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
---------node03---------
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED