1.zk 启停操作

1)启动zk
./zkServer.sh  start  zoo1.cfg
#如果使用的是conf 目录下的默认配置文件 zoo.cfg,可以直接执行 ./zkServer.sh  start 启动,否则报如下错误
grep: /usr/local/zookeeper/bin/../conf/zoo.cfg: No such file or directory

2)停止zk
./zkServer.sh stop
3)显示zk状态
./zkServer.sh status
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: standalone

2.连接ck

./zkCli.sh -server 127.0.0.1:2181

3.创建znode

create [-s] [-e] [-c] [-t ttl] path [data] [acl]
3.1 创建持久节点
1)创建空节点
create /test_shao
2)创建节点时同时指定节点内容 
create /test_shao 测试内容

3.2 创建顺序持久节点
[zk: 127.0.0.1:2181(CONNECTED) 51] create -s /test_shao/test
Created /test_shao/test0000000003
[zk: 127.0.0.1:2181(CONNECTED) 52] create -s /test_shao/test
Created /test_shao/test0000000004
##不加 -s 参数第二次创建会报已存在。-s 参数会默认给创建的节点加上序号

3.3 创建临时节点
create -e /test_shao/test_e_node_xx 这是一个临时节点

getEphemerals /test_shao
#查看 /test_shao 节点下的所有临时节点	

3.4 创建顺序临时节点
[zk: 127.0.0.1:2181(CONNECTED) 54] create -es /test_shao/test
Created /test_shao/test0000000005
[zk: 127.0.0.1:2181(CONNECTED) 55] create -es /test_shao/test
Created /test_shao/test0000000006

4.删除znode

delete [-v version] path
deleteall path [-b batch size]
1) delete 删除没有任何子节点的节点
delete /test_shao
#如果/test_shao 节点有子节点的话,报 Node not empty: /test_shao,如果要删除该节点及其子节点可以使用 deleteall

2) deleteall 删除节点及其子节点
zk: 127.0.0.1:2181(CONNECTED) 19] ls -R /test_shao
/test_shao
/test_shao/test_node_xx
[zk: 127.0.0.1:2181(CONNECTED) 20] delete /test_shao
Node not empty: /test_shao

5. 设置或者修改节点内容

set [-s] [-v version] path data
set /test_shao/test_node_xx "修改后的内容"
#如果节点本身没有内容,则给该节点添加相关内容,如果已有内容,则把之前的内容覆盖为当前内容

#set 添加多行数据
如果 set 多行数据,数据使用双引号

6.ACL 权限控制

6.1 ACL特性
1)ZooKeeper 的权限控制是基于每个znode节点的,需要对每个节点设置权限
2)每个 znode 支持设置多种权限控制方案和多个权限
3)子节点不会继承父节点的权限,客户端无权访问某节点,但可能可以访问它的子节点

6.2 查看节点 ACL
getAcl /test_shao/test_node_xx
'world,'anyone
: cdrwa
#这是所有节点的默认acl,表示所有连接到zookeeper 的客户端都能对该节点进行cdrwa操作(即拥有所有权限)

6.3 设置 world 权限模式
1)添加或者修改 world
setAcl /test_shao/test_node_xx world:anyone:cdra
[zk: localhost:2181(CONNECTED) 22] getAcl /test_shao/test_node_xx 
'world,'anyone
: cdra
#当前设置会覆盖节点之前的权限(注意不要轻易去掉节点的a权限,否则所有人都无法对其进行权限设置)

2)取消 world 权限模式的所有权限
setAcl /test_shao/test_node_xx world:anyone:

6.4 设置 ip 权限模式
1)指定ip地址
[zk: localhost:2181(CONNECTED) 8] getAcl /test_shao/test_node_xx
'world,'anyone
: cdrwa
[zk: localhost:2181(CONNECTED) 9] setAcl /test_shao/test_node_xx ip:127.0.0.1:cdrwa
[zk: localhost:2181(CONNECTED) 10] getAcl /test_shao/test_node_xx
'ip,'127.0.0.1
: cdrwa
##设置了ip权限后,原来默认的 world 权限没有了

2)指定ip地址段
setAcl /test_shao/test_node_xx ip:192.168.1.0/16:cdrwa

6.4 设置 auth 权限模式

7.查询节点内容及状态信息

1)查询节点内容
get /test_shao/test_node_xx
修改后的内容

2)查询节点状态信息
stat /test_shao/test_node_xx

2)查询节点内容及状态信息
get -s /test_shao/test_node_xx
修改后的内容
cZxid = 0x6                                ##创建节点的事务 zxid
ctime = Tue Jul 26 09:49:14 CST 2022       ##znode 被创建的毫秒数(从 1970 年开始)
mZxid = 0x9                                ##znode 最后更新的事务 zxid
mtime = Tue Jul 26 09:57:36 CST 2022       ##znode 最后修改的毫秒数(从 1970 年开始)
pZxid = 0x6                                ##znode 最后更新的子节点 zxid
cversion = 0                               ##znode 子节点变化号(增删子节点会递增),znode 子节点修改次数
dataVersion = 1                            ##znode 数据变化号
aclVersion = 0                             ##znode 访问控制列表的变化号
ephemeralOwner = 0x0                       ##如果是临时节点,这个是 znode 拥有者的 session id。如果不是临时节点则是 0
dataLength = 18                            ##znode 的数据长度
numChildren = 0                            ##znode 子节点数量