- 常用命令:
- get -s /path 和 stat /path 查看指定路径的节点信息
| 属性 | 解译 |
|---|---|
| cZxid | 数据节点创建时的事务ID |
| ctime | 据节点创建时的时间 |
| mZxid | 数据节点最后一次更新时的事务 ID |
| mtime | 数据节点最后一次更新时的时间 |
| pZxid | 数据节点的子节点最后一次被修改时的事务 ID |
| cversion | 子节点的更改次数 |
| dataVersion | 节点数据的更改次数 |
| aclVersion | 节点的 ACL 的更改次数 |
| ephemeralOwner | 如果节点是临时节点,则表示创建该节点的会话的 |
| dataLength | 如果节点是持久节点,则该属性值为 0 |
| numChildren | 数据节点当前的子节点个数 |
-
ls /(查看所有节点) ls /path(查看节点下的节点) ls -R /(递归查询所有节点)
-
get /path 查询节点的值
get -s /path 查询节点信息 -
create /path(持久化节点) create -s /path(持久化有序节点)
create -s -e /path(有序临时节点) create -e /path(临时节点)
注:临时节点不能创建子节点,临时节点依赖于客户端会话,一旦会话结束临时节点将被自动删除(会话结束会有几秒滞后性) -
delete /path 删除节点
(如果节点下存在子节点的话将无法删除该节点)
delete -v(dataVersion) /path
(根据数据版本号删除,如果当前节点的数据版本号不符合时,将拒绝删除)
-
set /path 修改节点
set -v(dataVersion) /path
(根据数据版本号修改,如果当前节点的数据版本号不符合时,将拒绝修改)
(以上根据版本删除或修改时是为了防止并未问题) -
get -w /path 监听器
(注册的监听器能过在节点内容发生改变的时候,向客户端发出通知。触发一次就会立即失效)
- zookeeper类似文件系统,client可以创建节点、更新节点、删除节点
- zookeeper的Access Control List访问控制列表可以做到这一点
- acl权限控制,使用scheme:id :permission 来标识
- 权限模式(scheme):授权的策略
- 授权对象(id):授权的对象
- 权限(permission):授予的权限
| 方案 | |
|---|---|
| World | 只有一个用户:anyone |
| Ip | 对客户端使用ip地址认证 |
| Auth | 使用已添加认证的用户认证 |
| Digest | 使用“用户名:密文”方式认证 |
Create:添加(可以创建子节点) Delete:删除(可以删除子节点) Write: 修改(可以设置子节点数据) Read: 查看(可以读取节点数据以及子节点数据) Admin:管理权限(可以设置节点访问控制列表的权限)
(简称cdwra)
- 授权相关命令:
getAcl /path # (读取Acl权限) setAcl /path #(设置Acl权限) addauth digest(密文) zjw:123456 #(创建用户)
加密代码:
echo -n [ auth ]:[ pwd ] |openssl dgst -binary -sha1 | openssl base64 # (Linux加密)单例设置权限:
给节点授权
setAcl /path auth:[ username ]:cdwra # 明文 setAcl /path digest: [ username ]:[ 密文 ]:cdwra # 密文多例设置权限:
setAcl /path world:anyone:cdwra,ip:[ username ]:cdwra,auth: [ username ]:cdwra,digest: [ username ]:[ 密文]:cdwra # (逗号隔开)超级管理员:
利用加密器将zjw:admin加密得到乱码 [ Zi/5oeJEdKnVGULxFcB9CtxSc3E= ]
- 然后进入zkServer.sh文件中搜索nohup(在第二个添加以下代码)
“-Dzookeeper.DigestAuthenticationProvider.superDigest=zjw:Zi/5oeJEdKnVGULxFcB9CtxSc3E=”
添加之后关闭客户端重启服务器
Addauth digest zjw:admin 注册之后会直接变成超级管理
注:超级管理的密码要与添加到zkServer.sh文件里的密码一致(未加密的原密码)
这样多例授权就完成了



