zookeeper 在linux上安裝 & 啟動 & 基本操作


一、安裝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的zxid

ctime
  創建此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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM