大數據學習初級入門教程(十一) —— Zookeeper 3.4.6 完全分佈式集羣的安裝、配置、啓動和測試

從前面一系列的基礎部署教程中,可以看到大數據集羣的部署中,爲了保證集羣的高可用性,一般都會配置 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,讓其保證其它集羣的高可用性。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章