连接操作:
zkCli.sh -timeout 1000 -r -server 127.0.0.1
# -timeout 设置客户端和服务器之间的超时时长,单位毫秒
# -r 只读模式,不加就是读写模式
# -server IP:PORT 要连接的服务器
查询操作:
ls / # 查看指定路径下的节点
stat PATH # 查看指定节点的状态信息
get PATH # 获取指定节点的数据,它会包括状态信息
ls2 PATH # 列出子节点同时输出当前节点的状态信息
创建节点:
create [-s] [-e] PATH DATA acl # 路径和数据,数据可以为空 -s是顺序节点(会自动在名称后面加序列号) -e是临时节点,不加则是永久节点
修改节点:
set PATH DATA [version] # 路径和数据,可以设置版本号也可以不设置
删除操作:
delete PATH [version] # 删除指定路径的节点,且节点必须为空,如果要删除含有子节点的节点则不行
rmr PATH # 递归删除
配额设置:
比如数据内容不能无限的大,子节点不能无限的多这类设置。
setquota -n|-b val path # -n 是限制子节点个数 -b是限制节点数据长度 val是额度 path 是节点
# 删除配额设置
delquota [-n|-b] PATH
# 显示节点配额信息
listquota PATH
节点Acl:
设置节点Acl,acl由大部分组成:1为scheme,2为user,3为permission,一般情况下表示为scheme:id:permissions。
其中scheme和id是相关的,下面将scheme和id一起说明。
scheme和id
- world: 它下面只有一个id, 叫anyone, world:anyone代表任何人,zookeeper中对所有人有权限的结点就是属于world:anyone的
- auth: 它不需要id, 只要是通过authentication的user都有权限(zookeeper支持通过kerberos来进行authencation, 也支持username/password形式的authentication)
- digest: 它对应的id为username:BASE64(SHA1(password)),它需要先通过username:password形式的authentication
- ip: 它对应的id为客户机的IP地址,设置的时候可以设置一个ip段,比如ip:192.168.1.0/16, 表示匹配前16个bit的IP段
- super: 在这种scheme情况下,对应的id拥有超级权限,可以做任何事情(cdrwa)
permissions
- CREATE(c): 创建权限,可以在在当前node下创建child node
- DELETE(d): 删除权限,可以删除当前的node
- READ(r): 读权限,可以获取当前node的数据,可以list当前node所有的child nodes
- WRITE(w): 写权限,可以向当前node写数据
- ADMIN(a): 管理权限,可以设置当前node的permission
综上,一个简单使用setAcl命令,则可以为:
setAcl /zookeeper/node1 world:anyone:cdrw