Zookeeper-客户端命令

3/13/2024 zookeeper

# 节点操作命令

1.创建节点

create [-s|-e] [-c] [-t ttl] path data [acl]
1
  • -s:创建顺序节点,在节点名后自动添加递增序列号。
  • -e:创建临时节点,当客户端会话结束时,节点会被自动删除。
  • -c:创建容器节点(EPHEMERAL_SEQUENTIAL),即临时有序节点。
  • -t ttl:设置节点存活的超时时间(仅限ZooKeeper 3.5及以上版本)。

2.查看节点内容

get -w path
1
  • w: 监听节点变化

3.设置节点内容

set path data
1

4.列出节点子目录

ls path
1

5.删除节点

delete -v path 
1
  • v 是可选的,用于指定删除前检查的数据版本。

6.递归删除节点以其子节点

deleteall path
1

7.查看节点状态

stat path
1

# 节点权限控制命令

zk的ACL列表构成主要由3部分:[schema : id : permissions]

# ACL Scheme 类型

  • world: 任何人都可以访问;id值唯一,为 anyone
  • auth: 已经过身份验证的任何用户;id 一般为username:password的组合。 eg: admin:123
  • digest: 用户名:密码哈希;id 结构为username:password_hashpassword_hash字段为username:password 通过base64编码后进行hash映射后的内容。 eg digest:username:passwordhash.
  • ip: 根据 IP 地址限制访问;id为对应客户端的ip地址,eg ip:192.168.1.2

# 权限定义

  • C: Create 子节点权限。
  • D: Delete 子节点权限(仅下一级节点)。
  • R: Read 节点数据和子节点列表。
  • W: Write 节点数据。
  • A: Admin 权限,包括设置 ACL 和删除非空节点的权利。

# 例子

# 设置为 world 类型, 任何人都可以访问
setAcl /node world:anyone:cdrwa

# 设置为 auth 类型, 需要通过 addauth 认证后才能访问
setAcl /node auth:admin:123:cdrwa

# [replace] => sha1(base64(admin:123))
# 需要通过 addauth 认证后才能访问
setAcl /node digest:admin:[replace]:cdrwa

# 设置为 ip 类型,在session 连接时,必须为对于的ip 才能访问
setAcl /node ip:192.168.1.6:cdrwa

# 对于 world 类型,不需要验证;
# 对于 ip 类型,客户端建立连接的时候就可以判断当前 session 是否拥有对应的节点权限;
# 对于 digest 和 auth 类型, 通常在客户端连接后需要进行权限认证, 一个session 中 可以进行多次验证并保留之前的认证结果。
# zk 中 的认证命令格式为:[addauth digest id]
addauth digest admin:123
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18