從前面一系列的基礎部署教程中,可以看到大數據集羣的部署中,爲了保證集羣的高可用性,一般都會配置 Zookeeper,比如 Kafka 集羣的搭建中,就添加了 Zookeeper 配置。所以這篇補充一下 Zookeeper 集羣的搭建,簡單寫寫 Zookeeper 3.x 的安裝配置、啓動和測試。
一、所需環境
參考《大數據學習初級入門教程(一) —— Hadoop 2.x 完全分佈式集羣的安裝、啓動和測試》中準備的資源環境,這裏將不再細述。
集羣部署規劃爲:node19、node18 和 node11 爲 leader(領導者節點)/follower(跟隨者節點),node12 和 node13 爲 observer(觀察者節點)。
二、上傳部署包
爲了簡單期間,包直接放在機器的 /home 目錄下,上傳後解壓包即可,這裏先直接操作 node19 機器。
三、解壓部署包
# tar -zxvf zookeeper-3.4.6.tar.gz
四、創建配置文件
剛解壓的部署包,可以看到路徑 /home/zookeeper-3.4.6/conf 下沒有 zoo.cfg 文件,但有一個 zoo_sample.cfg 文件,可以重命名該文件,直接修改配置。這裏直接新建一個 zoo.cfg。
# vi zoo.cfg
內容詳細如下:
tickTime=2000
dataDir=/opt/zookeeper/zookeeper-3.4.6
clientPort=2181
initLimit=5
syncLimit=2
server.19=node19:2888:3888
server.18=node18:2888:3888
server.11=node11:2888:3888
server.12=node12:2888:3888:observer
server.13=node13:2888:3888:observer
備註:
tickTime(心跳週期毫秒數)、dataDir(數據目錄)、clientPort(供客戶端連接的端口號)、initLimit(集羣中的 follower 與 leader 之間的初始連接)、syncLimit(集羣中的 follower 與 leader 之間的通信連接)、server.n=host:port1:port2
server.n=host:port1:port2,數字 n 必須是 myid 中的值
port1 爲 leader 端口,作爲 leader 時,供 follower 連接的端口
port2 爲 選舉端口,選舉 leader 時,供其它 follower 連接的端口
五、創建目錄及文件
由於在上一步中,配置了 dataDir 的路徑,所以需要提前在指定位置創建目錄。
# cd /opt
# mkdir -p zookeeper/zookeeper-3.4.6
# cd zookeeper/zookeeper-3.4.6
# vi myid
分別寫入19、18 、11、12 和 13。注意這幾個值,和上一步中的 server.n 中的 n 值要保持一致。
六、部署其它機器節點
# scp -r zookeeper-3.4.6/ root@node18:/home/
# scp -r zookeeper-3.4.6/ root@node11:/home/
# scp -r zookeeper-3.4.6/ root@node12:/home/
# scp -r zookeeper-3.4.6/ root@node13:/home/
七、配置機器環境變量
# vi ~/.bash_profile
在原配置後面追加:
export ZK_HOME=/home/zookeeper-3.4.6
export PATH=$PATH:$ZK_HOME/bin
執行命令 source ~/.bash_profile 使得配置立刻生效。
八、啓動集羣
使用下面命令,啓動每個 zk 節點:
# zkServer.sh start
如果看到下面的日誌信息,說明節點啓動成功:
JMX enabled by default
Using config: /home/zookeeper-3.4.6/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
使用下面命令,可以看看每個節點都是什麼角色:
# zkServer.sh status
[root@node19 conf]# zkServer.sh status
JMX enabled by default
Using config: /home/zookeeper-3.4.6/bin/../conf/zoo.cfg
Mode: leader[root@node18 ~]# zkServer.sh status
JMX enabled by default
Using config: /home/zookeeper-3.4.6/bin/../conf/zoo.cfg
Mode: follower[root@node11 ~]# zkServer.sh status
JMX enabled by default
Using config: /home/zookeeper-3.4.6/bin/../conf/zoo.cfg
Mode: follower[root@node12 ~]# zkServer.sh status
JMX enabled by default
Using config: /home/zookeeper-3.4.6/bin/../conf/zoo.cfg
Mode: observer[root@node13 ~]# zkServer.sh status
JMX enabled by default
Using config: /home/zookeeper-3.4.6/bin/../conf/zoo.cfg
Mode: observer
九、查看集羣進程
輸入 jps 可以查看 zk 的進程信息,輸出如下:
1624 QuorumPeerMain
十、測試集羣
訪問其內存數據庫,是一個內存文件系統,輸入以下命令訪問:
# zkCli.sh
可以看到如下輸出:
ls 命令可以查看根目錄:
get 命令查看 zookeeper 目錄:
-h 命令 查看幫助:
退出用 quit:
十一、測試高可用
如果 master 節點掛掉,則集羣內部會通過選舉,產生新的 master 節點,比如停掉 node19 的 zk 服務,在 node19 機器上執行停止服務命令:
# zkServer.sh stop
再次查看各個節點狀態,信息如下:
[root@node19 conf]# zkServer.sh status
JMX enabled by default
Using config: /home/zookeeper-3.4.6/bin/../conf/zoo.cfg
Error contacting service. It is probably not running.[root@node18 ~]# zkServer.sh status
JMX enabled by default
Using config: /home/zookeeper-3.4.6/bin/../conf/zoo.cfg
Mode: leader[root@node11 ~]# zkServer.sh status
JMX enabled by default
Using config: /home/zookeeper-3.4.6/bin/../conf/zoo.cfg
Mode: follower[root@node12 ~]# zkServer.sh status
JMX enabled by default
Using config: /home/zookeeper-3.4.6/bin/../conf/zoo.cfg
Mode: observer[root@node13 ~]# zkServer.sh status
JMX enabled by default
Using config: /home/zookeeper-3.4.6/bin/../conf/zoo.cfg
Mode: observer
可以看到 node18 被選舉爲 leader 節點。
如果再次啓動 node19 上的 zk 服務,可以看到 node19 上的狀態爲 follower:
Starting zookeeper ... STARTED
[root@node19 conf]# zkServer.sh status
JMX enabled by default
Using config: /home/zookeeper-3.4.6/bin/../conf/zoo.cfg
Mode: follower
十二、停止集羣
依次停用各個機器上的 zk 服務即可,命令還是 zkServer.sh stop。
到此,Zookeeper 集羣的安裝、配置、啓停,以及簡單的內存庫訪問等基本搞定,後續可以在搭建其它集羣時,配置 zk,讓其保證其它集羣的高可用性。