一、安裝java
sudo apt-get update sudo apt-get install default-jre
二、安裝zookeeper
下載
wget "http://mirrors.hust.edu.cn/apache/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz"
解壓
tar -xf zookeeper-3.4.14.tar.gz
創建配置文件
cd zookeeper-3.4.14/conf/ cp zoo_sample.cfg zoo.cfg
啟動
cd zookeeper-3.4.14/bin/ ./zkServer.sh start
三、偽集群模式
拷貝zookeeper
cp zookeeper-3.4.14 zookeeper-1 -r cp zookeeper-3.4.14 zookeeper-2 -r cp zookeeper-3.4.14 zookeeper-3 -r
修改配置:修改的為各自目錄conf下的zoo.cfg,將dataDir、dataLogDir及clientPort修改為各自不同的,並增加ip列表。如zk1的配置:
# The number of milliseconds of each tick tickTime=2000 # The number of ticks that the initial # synchronization phase can take initLimit=10 # The number of ticks that can pass between # sending a request and getting an acknowledgement syncLimit=5 # the directory where the snapshot is stored. # do not use /tmp for storage, /tmp here is just # example sakes. dataDir=/mnt/zookeeper-1/data dataLogDir=/mnt/zookeeper-1/log # the port at which the clients will connect clientPort=12181 # 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=127.0.0.1:12888:13888 server.2=127.0.0.1:14888:15888 server.2=127.0.0.1:16888:17888
創建data、log目錄與myid文件
mkdir -p /mnt/zookeeper-1/data mkdir -p /mnt/zookeeper-2/data mkdir -p /mnt/zookeeper-3/data mkdir -p /mnt/zookeeper-1/log mkdir -p /mnt/zookeeper-2/log mkdir -p /mnt/zookeeper-3/log echo 1 > /mnt/zookeeper-1/data/myid echo 2 > /mnt/zookeeper-2/data/myid echo 3 > /mnt/zookeeper-3/data/myid
分別啟動三個zk
./zookeeper-1/bin/zkServer.sh start ./zookeeper-2/bin/zkServer.sh start ./zookeeper-3/bin/zkServer.sh start
查看狀態
root@iZwz9hextk0ee6gik32377Z:~/zookeeper# for((idx=1;idx<=3;++idx)); do ./zookeeper-${idx}/bin/zkServer.sh start; done ZooKeeper JMX enabled by default Using config: /root/zookeeper/zookeeper-1/bin/../conf/zoo.cfg Starting zookeeper ... STARTED ZooKeeper JMX enabled by default Using config: /root/zookeeper/zookeeper-2/bin/../conf/zoo.cfg Starting zookeeper ... STARTED ZooKeeper JMX enabled by default Using config: /root/zookeeper/zookeeper-3/bin/../conf/zoo.cfg Starting zookeeper ... STARTED root@iZwz9hextk0ee6gik32377Z:~/zookeeper# for((idx=1;idx<=3;++idx)); do ./zookeeper-${idx}/bin/zkServer.sh status; done ZooKeeper JMX enabled by default Using config: /root/zookeeper/zookeeper-1/bin/../conf/zoo.cfg Mode: follower ZooKeeper JMX enabled by default Using config: /root/zookeeper/zookeeper-2/bin/../conf/zoo.cfg Mode: leader ZooKeeper JMX enabled by default Using config: /root/zookeeper/zookeeper-3/bin/../conf/zoo.cfg Mode: follower
四、集群模式
與偽集群模式類似,區別是部署在不同機器。
五、基本操作
連接zk。執行bin目錄下的zkCli.sh。由於部署時ip已不是默認ip 2181,需要指定ip port
./zkCli.sh -server 127.0.0.1:12181
[zk: 127.0.0.1:12181(CONNECTED) 5] ls / [zookeeper] [zk: 127.0.0.1:12181(CONNECTED) 6] create /test test Created /test [zk: 127.0.0.1:12181(CONNECTED) 7] ls / [zookeeper, test] [zk: 127.0.0.1:12181(CONNECTED) 8] get /test test cZxid = 0x400000006 ctime = Mon Apr 06 22:01:48 CST 2020 mZxid = 0x400000006 mtime = Mon Apr 06 22:01:48 CST 2020 pZxid = 0x400000006 cversion = 0 dataVersion = 0 aclVersion = 0 ephemeralOwner = 0x0 dataLength = 4 numChildren = 0 [zk: 127.0.0.1:12181(CONNECTED) 9] delete /test [zk: 127.0.0.1:12181(CONNECTED) 10] ls / [zookeeper] [zk: 127.0.0.1:12181(CONNECTED) 11] get /test Node does not exist: /test [zk: 127.0.0.1:12181(CONNECTED) 12] quit Quitting...
六、字段含義
cZxid
創建此znode的zxidctime
創建此znode的時間。
mZxid
最后修改此znode的zxid。
mtime
最后一次修改此znode的時間。pZxid
最后一次修改子節點的zxid。
cversion
此znode的子節點的更改次數。(實際操作發現是創建/刪除一級子節點)
dataVersion
此znode的數據更改的次數。
aclVersion
更改此znode的ACL的次數。
ephemeralOwner
如果znode是臨時節點,則此znode所有者的會話id。如果它不是一個臨時節點,則為零。
dataLength
此znode的數據字段的長度。
numChildren
這個znode的子節點的數目。
參考鏈接:
http://zookeeper.apache.org/doc/r3.3.3/zookeeperProgrammers.html