一、下载zookeeper的包

地址:https://mirrors.bfsu.edu.cn/apache/zookeeper/zookeeper-3.8.0/ 需要下载该目录下的两个文件

 

二、部署安装

1.安装jdk

2.解压下载的文件

3.需要将apache-zookeeper-3.8.0-bin目录下的lib文件夹拷贝到apache-zookeeper-3.8.0下

4.复制 zoo_sample.cfg为zoo.cfg,并修改配置文件

复制代码
#时间配置的基本单位(毫秒),2秒initLimit=10 
tickTime=2000 
#允许从节点初始化连接到主节点的最大时长,它表示tickTime的倍数,默认20秒
initLimit=10
#允许从节点与主节点数据同步的最大时长,它表示tickTime的倍数,默认10秒
syncLimit=5

#持久化机制:事务持久化跟快照持久化
#数据存储目录和日志保存目录,如果没有指明dataLogDir,则日志也保存在这个文件中
dataDir=/tmp/zookeeper
dataLogDir=/tmp/zookeeper

#对客户端提供的端口
clientPort=2181

#设置admin的服务端口,默认会占用8080
admin.serverPort=8888
#单个客户端与zookeeper最大并发连接数 
maxClientCnxns
=60 #保存数据的快照数量,之外的将会被清除 autopurge.anapRetainCount=3 #自动触发清除任务时间间隔,小时为单位,默认为0,表示不自动清除 autopurge.purgeInterval=1
复制代码

 

5.zookeeper的基本命令

 

 

 6.启动服务

./zkServer.sh start ../conf/zoo.cfg ,启动服务时候如果保存,可以用./zkServer.sh start-foreground查看输出错误信息去排查错误

 7.查看zookeeper启动的状态

8.zk的客户端连接工具

./zkCli.sh

zookeeper内部的数据模型:zk的数据是保存在节点上的,节点就是znode,多个znode组成一个树的目录结构

9.zk的客户端的命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
ZooKeeper -server host:port -client-configuration properties-file cmd args
        addWatch [-m mode] path # optional mode is one of [PERSISTENT, PERSISTENT_RECURSIVE] - default is PERSISTENT_RECURSIVE
        addauth scheme auth
        close
        config [-c] [-w] [-s]
        connect host:port
        create [-s] [-e] [-c] [-t ttl] path [data] [acl]
        delete [-v version] path
        deleteall path [-b batch size]
        delquota [-n|-b|-N|-B] path
        get [-s] [-w] path
        getAcl [-s] path
        getAllChildrenNumber path
        getEphemerals path
        history
        listquota path
        ls [-s] [-w] [-R] path
        printwatches on|off
        quit
        reconfig [-s] [-v version] [[-file path] | [-members serverID=host:port1:port2;port3[,...]*]] | [-add serverId=host:port1:port2;port3[,...]]* [-remove serverId[,...]*]
        redo cmdno
        removewatches path [-c|-d|-a] [-l]
        set [-s] [-v version] path data
        setAcl [-s] [-v version] [-R] path acl
        setquota -n|-b|-N|-B val path
        stat [-w] path
        sync path
        version
        whoami

  (1)创建节点

    create /test1

    create /test1/sub1

    

 

 

   (2)创建数据,获取数据

    create /test2 abc

    get /test2

    

   (3)创建持久节点与持久序号节点

     create /test3       #创建持久节点

     create -s /test3   #创建持久序号节点

   (4)创建临时节点,回话结束后,自动被删除,zk可以实现服务的注册与发现。

     zk客户端  -> 创建连接请求 ->zk服务器

     zk客户端 <- 返回session_id <-zk服务器

     zk客户端  -> 持续回话,续约session_id的时间 ->zk服务器

     zk客户端(回话断开)  zk服务器(删除没有续约的session-id的对应的临时节点)

       create -e /test5

  (5)查询节点信息     

cZxid   创建节点的事务ID
ctime   节点创建的时间
mZxid   修改节点的事务ID
mtime  节点最近修改的时间
pZxid   添加和删除节点的事务ID
cversion  
dataVersion 
aclVersion    此节点的权限版本
ephemeralOwner  如果当前节点是临时节点,该值是当前所有者的session_id,如果不是临时节点该值为0
dataLength = 0
numChildren = 0

(6)创建容器节点

  create -c /mycontainer   #创建的容器节点,在子节点被删除之后,60s后该容器节点会被删除

  create /mycontainer/a

  create /mycontainer/b

delete /mycontainer/a

delete /mycontainer/b

10.zk的数据持久化

  • 事务日志
  • 数据快照

  存放在配置文件zoo.cfg中dataDir的值的路径下

  恢复:先通过快照文件数据到内存中,再用日志文件中的数据作增量恢复,这样的恢复速度会更快

  迁移和恢复参考:https://blog.51cto.com/tianshili/2072339?ivk_sa=1024320u