1. 程式人生 > 其它 >ZooKeeper 叢集環境搭建

ZooKeeper 叢集環境搭建

由 node-01、node-02 和 node-03 三個節點組成 ZooKeeper 叢集環境,搭建步驟如下:

步驟一:上傳 zookeeper-3.4.6.tar.gz 安裝包到 node-01 並解壓
[root@node-01 ~]# ll
總用量 17288
drwxr-xr-x. 6 root root       86 3月  26 17:32 apps
-rw-r--r--. 1 root root 17699306 3月  30 16:19 zookeeper-3.4.6.tar.gz #上傳的zookeeper壓縮包
[root@node-01 ~]# tar -zxvf zookeeper-3.4.6.tar.gz -C apps/
[root@node-01 ~]# rm -rf zookeeper-3.4.6.tar.gz
步驟二:修改 conf/zoo.cfg 配置檔案
[root@node-01 ~]# cd apps/zookeeper-3.4.6/conf/
[root@node-01 conf]# ll
總用量 12
-rw-rw-r--. 1 1000 1000  535 2月  20 2014 configuration.xsl
-rw-rw-r--. 1 1000 1000 2161 2月  20 2014 log4j.properties
-rw-rw-r--. 1 1000 1000  922 2月  20 2014 zoo_sample.cfg
# 拷貝 zoo_sample.cfg 檔案並改名為 zoo.cfg
[root@hdp-01 conf]# cp zoo_sample.cfg zoo.cfg
[root@hdp-01 conf]# vi zoo.cfg 
#修改第 12 行檔案儲存路徑
dataDir=/root/apps/zookeeper-3.4.6/data

#行尾新增ZooKeeper叢集節點
server.1=node-01:2888:3888
server.2=node-02:2888:3888
server.3=node-03:2888:3888
步驟三:到 node-01 上新建 zookeeper 資料儲存目錄 data,並在 data 目錄中建立一個檔案 myid,內容為 1

myid 檔案存放 Zookeeper 叢集節點的唯一標識

[root@node-01 conf]# cd /root/apps/zookeeper-3.4.6
[root@node-01 zookeeper-3.4.6]# mkdir data
[root@node-01 zookeeper-3.4.6]# cd data/
[root@node-01 data]# echo "1" > myid
步驟四:將 node-01 的 zookeeper 安裝包拷貝給 node-02 、node-03
[root@node-01 data]# cd /root/apps/
[root@node-01 apps]# scp -r zookeeper-3.4.6/ node-02:$PWD
[root@node-01 apps]# scp -r zookeeper-3.4.6/ node-03:$PWD
步驟五:到 node-02 上,修改 zookeeper 資料儲存目錄 data 下的 myid 檔案,將其內容改為 2
[root@node-02 ~]# cd /root/apps/zookeeper-3.4.6/data
[root@node-02 data]# echo "2" > myid
步驟六:到 node-03 上,修改 zookeeper 資料儲存目錄 data 下的 myid 檔案,將其內容改為 3
[root@node-03 ~]# cd /root/apps/zookeeper-3.4.6/data
[root@node-03 data]# echo "3" > myid
步驟七:啟動 zookeeper 叢集(node-01、node-02、node-03)
### node-01
[root@node-01 ~]# cd /root/apps/zookeeper-3.4.6/
[root@node-01 zookeeper-3.4.6]# bin/zkServer.sh start
JMX enabled by default
Using config: /root/apps/zookeeper-3.4.6/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

#檢視zookeeper執行狀態
[root@node-01 zookeeper-3.4.6]# bin/zkServer.sh status
JMX enabled by default
Using config: /root/apps/zookeeper-3.4.6/bin/../conf/zoo.cfg
Error contacting service. It is probably not running. #只有一票無法當選 Leader

### node-02
[root@node-02 ~]# cd /root/apps/zookeeper-3.4.6/
[root@node-02 zookeeper-3.4.6]# bin/zkServer.sh start
JMX enabled by default
Using config: /root/apps/zookeeper-3.4.6/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

#檢視zookeeper執行狀態
[root@node-02 zookeeper-3.4.6]# bin/zkServer.sh status
JMX enabled by default
Using config: /root/apps/zookeeper-3.4.6/bin/../conf/zoo.cfg
Mode: leader # leader 領導者(相當於 master)

### node-03
[root@node-03 ~]# cd /root/apps/zookeeper-3.4.6/
[root@node-03 zookeeper-3.4.6]# bin/zkServer.sh start
JMX enabled by default
Using config: /root/apps/zookeeper-3.4.6/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED  

#檢視zookeeper執行狀態
[root@node-03 zookeeper-3.4.6]# bin/zkServer.sh status
JMX enabled by default
Using config: /root/apps/zookeeper-3.4.6/bin/../conf/zoo.cfg
Mode: follower # follower 跟隨者(相當於 slave)

#再次檢視 node-01 zookeeper執行狀態
[root@node-01 zookeeper-3.4.6]# bin/zkServer.sh status
JMX enabled by default
Using config: /root/apps/zookeeper-3.4.6/bin/../conf/zoo.cfg
Mode: follower # 現在變為 follower 狀態
步驟八:分別在 node-01、node-02 和 node-03 檢視 ZooKeeper 程序
[root@node-01 ~]# jps
1825 QuorumPeerMain #zookeeper 程序
1915 Jps

[root@node-02 ~]# jps
1825 QuorumPeerMain #zookeeper 程序
1915 Jps

[root@node-03 ~]# jps
1825 QuorumPeerMain #zookeeper 程序
1915 Jps

以上說明 ZooKeeper 叢集中三個 ZooKeeper 伺服器程序都已正常啟動

步驟九:在 node -01 建立自動批量啟動 zookeeper 叢集指令碼 zkCluster.sh
[root@node-01 zookeeper-3.4.6]# cd /root/apps/zookeeper-3.4.6/bin
[root@node-01 bin]# vim zkCluster.sh
#!/bin/bash
for host in node-01 node-02 node-03
do
echo "${host}:${1}ing....."
ssh $host "source /etc/profile;/root/apps/zookeeper-3.4.6/bin/zkServer.sh $1"
done

sleep 2

for host in node-01 node-02 node-03
do
ssh $host "source /etc/profile; /root/apps/zookeeper-3.4.6/bin/zkServer.sh status"
done

#新增指令碼執行許可權
[root@node-01 bin]# chmod +x zkCluster.sh
步驟十:在 node-01 配置 ZooKeeper 環境變數
[root@node-01 bin]# vim /etc/profile
#行尾新增如下配置
export ZOOKEEPER_HOME=/root/apps/zookeeper-3.4.6
export PATH=$PATH:$ZOOKEEPER_HOME/bin
#執行指令碼讓環境變數生效
[root@node-01 bin]# source /etc/profile
步驟十一:將 node-01 的 ZooKeeper 叢集指令碼 zkCluster.sh 和 環境配置檔案 profile 拷貝到 node-02、node-03
[root@node-01 bin]# cd /root/apps/zookeeper-3.4.6/bin
[root@node-01 bin]# scp zkCluster.sh node-02:$PWD
[root@node-01 bin]# scp zkCluster.sh node-03:$PWD
[root@node-01 etc]# scp /etc/profile node-02:$PWD
[root@node-01 etc]# scp /etc/profile node-03:$PWD

#新增指令碼執行許可權
[root@node-02 bin]# cd /root/apps/zookeeper-3.4.6/bin
[root@node-02 bin]# chmod +x zkCluster.sh
#執行指令碼讓環境變數生效
[root@node-02 bin]# source /etc/profile

#新增指令碼執行許可權
[root@node-03 bin]# cd /root/apps/zookeeper-3.4.6/bin
[root@node-03 bin]# chmod +x zkCluster.sh
#執行指令碼讓環境變數生效
[root@node-03 bin]# source /etc/profile
步驟十二:啟動客戶端
[root@node-01 ~]# zkCli.sh
[zk: localhost:2181(CONNECTED) 0]