下載zookeeper-3.5.8。選用apache-zookeeper-3.5.8-bin.tar.gz。
在物理機下載完之後,通過ftp服務,將壓縮包發送至虛擬機。我習慣放在~/目錄下,然後就地解壓,這樣不會涉及到權限的問題。
一、配置Zookeeper
1、查看配置文件夾:
[xiaoguan@master zookeeper-3.5.8-bin]$ cd conf [xiaoguan@master conf]$ ls configuration.xsl log4j.properties zoo_sample.cfg [xiaoguan@master conf]$
[xiaoguan@slave1 ~]$ ./zookeeper-3.5.8-bin/bin/zkServer.sh status ZooKeeper JMX enabled by default Using config: /home/xiaoguan/zookeeper-3.5.8-bin/bin/../conf/zoo.cfg Client port found: 2181. Client address: localhost. Mode: follower [xiaoguan@slave1 ~]$
2、生成配置文件
[xiaoguan@master conf]$ cp zoo_sample.cfg zoo.cfg [xiaoguan@master conf]$ ls configuration.xsl log4j.properties zoo.cfg zoo_sample.cfg [xiaoguan@master conf]$
3、編輯配置文件
# do not use /tmp for storage, /tmp here is just # example sakes. dataDir=/home/xiaoguan/zookeeper-3.5.8/data dataLogDir=/home/xiaoguan/zookeeper-3.5.8/logs # the port at which the clients will connect clientPort=2181 # the maximum number of client connections. # increase this if you need to handle more clients #maxClientCnxns=60 # # Be sure to read the maintenance section of the # administrator guide before turning on autopurge. # # http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance # # The number of snapshots to retain in dataDir #autopurge.snapRetainCount=3 # Purge task interval in hours # Set to "0" to disable auto purge feature #autopurge.purgeInterval=1 server.1=192.168.48.135:4001:4002 server.2=192.168.48.136:4001:4002 server.3=192.168.48.137:4001:4002
說明:
- dataDir和dataLogDir需要在啓動之前就創建好。
- clientPort 爲 zookeeper的服務端口。
- server.0、server.1、server.2 爲 zk 集羣中三個結的信息,定義格式爲 hostname:port1:port2,其中 port1 是 node 間通信使用的端口,port2 是node 選舉使用的端口,需確保三臺主機的這兩個端口都是互通的。
二、更改日誌配置
Zookeeper 默認會將控制檯信息輸出到啓動路徑下的 zookeeper.out 中,通過如下方法,可以讓Zookeeper 輸出按尺寸切分的日誌文件:
1)修改/opt/zookeeper-3.4.12/conf/log4j.properties文件,將zookeeper.root.logger=INFO, CONSOLE改爲zookeeper.root.logger=INFO, ROLLINGFILE
2)修改/opt/zookeeper-3.4.12/bin/zkEnv.sh文件,將ZOO_LOG4J_PROP=“INFO,CONSOLE” 改爲ZOO_LOG4J_PROP=“INFO,ROLLINGFILE”
三、在master主機的 dataDir 路徑下創建一個文件名爲 myid 的文件
myid的內容爲爲該 zk 節點的編號:編號在zoo.cfg文件最後server.id。id就是編號。
server.1=192.168.48.135:4001:4002 master編號爲1
server.2=192.168.48.136:4001:4002 slave編號爲2
server.3=192.168.48.137:4001:4002 slave1編號爲3
[xiaoguan@master zookeeper-3.5.8-bin]$ cd data [xiaoguan@master data]$ ls [xiaoguan@master data]$ touch myid [xiaoguan@master data]$ vi myid [xiaoguan@master data]$ more myid 1
四、將配置好的zookeeper發送至slave結點
[xiaoguan@master ~]$ ls Desktop hadoop-2.7.2 Pictures spark-2.4.6-bin-hadoop2.7 zookeeper-3.5.8 Documents hadoopdata Public Templates 桌面 Downloads Music scala-2.13.2 Videos [xiaoguan@master ~]$ scp -r zookeeper-3.5.8-bin/ xiaoguan@slave:~/ [xiaoguan@master ~]$ scp -r zookeeper-3.5.8-bin/ xiaoguan@slave1:~/
然後修改下slave的myid文件:
[xiaoguan@master ~]$ ssh slave Last login: Thu Jun 18 23:29:01 2020 from master [xiaoguan@slave ~]$ ls Desktop hadoop-2.7.2 Pictures spark-2.4.6-bin-hadoop2.7 zookeeper-3.5.8 Documents hadoopdata Public Templates 桌面 Downloads Music scala-2.13.2 Videos [xiaoguan@slave ~]$ vi zookeeper-3.5.8-bin/data/myid [xiaoguan@slave ~]$ more zookeeper-3.5.8-bin/data/myid 2 [xiaoguan@slave ~]$ logout Connection to slave closed. [xiaoguan@master ~]$ ssh slave1 Last login: Thu Jun 18 21:40:17 2020 from master [xiaoguan@slave1 ~]$ vi zookeeper-3.5.8-bin/data/myid [xiaoguan@slave1 ~]$ more zookeeper-3.5.8-bin/data/myid 3
五、啓動zookeeper
在每個結點上執行./zkServer.sh start
。該命令再zookeeper的bin目錄下。然後使用jps命令可以看到兩個進程:
[xiaoguan@master logs]$ jps 3440 QuorumPeerMain 3737 Jps
[xiaoguan@slave1 ~]$ jps 3317 QuorumPeerMain 3687 Jps
[xiaoguan@slave ~]$ jps 3851 Jps 3423 QuorumPeerMain
在每個結點上都有查看一下,每個結點上都有兩個進程。這樣集羣就啓動成功了。
六、查看集羣的狀態
使用命令./zkServer.sh status
。如下,可以看到master和slave是follower,而slave1是leader。
[xiaoguan@master bin]$ ./zkServer.sh status ZooKeeper JMX enabled by default Using config: /home/xiaoguan/zookeeper-3.5.8-bin/bin/../conf/zoo.cfg Client port found: 2181. Client address: localhost. Mode: follower [xiaoguan@master bin]$ ssh slave Last login: Fri Jun 19 12:59:07 2020 from master [xiaoguan@slave ~]$ ./zookeeper-3.5.8-bin/bin/zkServer.sh status ZooKeeper JMX enabled by default Using config: /home/xiaoguan/zookeeper-3.5.8-bin/bin/../conf/zoo.cfg Client port found: 2181. Client address: localhost. Mode: follower [xiaoguan@slave ~]$ logout Connection to slave closed. [xiaoguan@master bin]$ ssh slave1 Last login: Fri Jun 19 12:58:43 2020 from master [xiaoguan@slave1 ~]$ ./zookeeper-3.5.8-bin/bin/zkServer.sh status ZooKeeper JMX enabled by default Using config: /home/xiaoguan/zookeeper-3.5.8-bin/bin/../conf/zoo.cfg Client port found: 2181. Client address: localhost. Mode: leader
七、檢查集羣的高可用性
首先關掉集羣中的leader也就是slave1:
[xiaoguan@slave1 ~]$ ./zookeeper-3.5.8-bin/bin/zkServer.sh stop ZooKeeper JMX enabled by default Using config: /home/xiaoguan/zookeeper-3.5.8-bin/bin/../conf/zoo.cfg Stopping zookeeper ... STOPPED
然後查看集羣的狀態:
[xiaoguan@master zookeeper-3.5.8-bin]$ ./bin/zkServer.sh status ZooKeeper JMX enabled by default Using config: /home/xiaoguan/zookeeper-3.5.8-bin/bin/../conf/zoo.cfg Client port found: 2181. Client address: localhost. Mode: leader [xiaoguan@master zookeeper-3.5.8-bin]$ ssh slave Last login: Fri Jun 19 13:07:52 2020 from master [xiaoguan@slave ~]$ ./zookeeper-3.5.8-bin/bin/zkServer.sh status ZooKeeper JMX enabled by default Using config: /home/xiaoguan/zookeeper-3.5.8-bin/bin/../conf/zoo.cfg Client port found: 2181. Client address: localhost. Mode: follower [xiaoguan@slave ~]$
可以看到,此時Master被選爲leader。然後再次打開slave1結點,此時slave1應該爲follower:
[xiaoguan@slave1 ~]$ ./zookeeper-3.5.8-bin/bin/zkServer.sh start ZooKeeper JMX enabled by default Using config: /home/xiaoguan/zookeeper-3.5.8-bin/bin/../conf/zoo.cfg Starting zookeeper ... STARTED [xiaoguan@slave1 ~]$ ./zookeeper-3.5.8-bin/bin/zkServer.sh status ZooKeeper JMX enabled by default Using config: /home/xiaoguan/zookeeper-3.5.8-bin/bin/../conf/zoo.cfg Client port found: 2181. Client address: localhost. Mode: follower [xiaoguan@slave1 ~]$
此時,Zookeeper 集羣的安裝及高可用性驗證已完成!