Zookeeper 之 常用命令
命令基本语法:
help :显示所有操作命令
客户端基础命令:
客户端基本指令
1、查看特定节点下面的子节点
ls path
2、创建一个节点。并给节点绑定数据(默认是持久性节点)
create path data
3、创建持久节点(默认是持久节点)
create path data
4、创建持久性顺序节点
create -s path data
5、创建临时性节点(注意:临时节点不能含有任何子节点)
create -e path data
6、创建临时顺序节点(注意:临时节点不能含有任何子节点)
create -e -s path data
7、查看节点状态
stat path
8、修改节点数据
set path data
9、查看节点下孩子和当前节点的状态
ls2 path
10、查看操作历史
history
11、获得节点上绑定的数据信息
get path
12、删除节点(注意:删除节点不能含有子节点)
delete path
13、递归删除节点(注意:会将当前节点下所有节点删除)
rmr path
14、退出当前会话(会话失效)
quit
数据操作练习
分别创建 2 个普通节点
1、使用 ls 命令来查看当前 znode 中所包含的内容 :ls path [watch]
47.243.87.144:2181 $ ls /
[zookeeper]
2、查看当前节点数据并能看到更新次数等数据,ls2 path [watch]
47.243.87.144:2181 $ ls2 / [zookeeper]cZxid = 0x0 ctime = Thu Jan 01 08:00:00 CST 1970 mZxid = 0x0 mtime = Thu Jan 01 08:00:00 CST 1970 pZxid = 0x0 cversion = -1 dataVersion = 0 aclVersion = 0 ephemeralOwner = 0x0 dataLength = 0 numChildren = 1
3、create :
create [-s] [-e] path data data_info 数据可以不填写,如下所示
普通创建
-s 含有序列
-e 临时( 重启或者超时消失 )
47.243.87.144:2181 $ create /data # 创建持久节点 Created /data 47.243.87.144:2181 $ create -s /data/data_info # 创建持久顺序节点 Created /data/data_info0000000000 47.243.87.144:2181 $ create -e /data/temp_znode # 创建临时节点 Created /data/temp_znode 47.243.87.144:2181 $ create -e -s /data/temp_znode_ # 创建临时顺序节点 Created /data/temp_znode_0000000002 47.243.87.144:2181 $ ls /data # 展示节点 [temp_znode, temp_znode_0000000002, data_info0000000000]
4、获得节点的值: get path [watch]
47.243.87.144:2181 $ get /zookeeper cZxid = 0x0 # 创建节点的 Id ctime = Thu Jan 01 08:00:00 CST 1970 # 节点的创建时间 mZxid = 0x0 # 修改节点的 id mtime = Thu Jan 01 08:00:00 CST 1970 # 修改节点的时间 pZxid = 0x0 # 最新插入的子节点的 id cversion = -2 # 子节点的版本 dataVersion = 0 # 当前节点的数据版本 aclVersion = 0 # 权限版本 ephemeralOwner = 0x0 # 是否为临时节点 dataLength = 0 # 数据长度 numChildren = 2 # 子节点的个数
5、set path data [version] 修改节点
47.243.87.144:2181 $ create /data info_1 Created /data 47.243.87.144:2181 $ get /data info_1 cZxid = 0x34 ctime = Wed Jun 02 18:01:25 CST 2021 mZxid = 0x34 mtime = Wed Jun 02 18:01:25 CST 2021 pZxid = 0x34 cversion = 0 dataVersion = 0 aclVersion = 0 ephemeralOwner = 0x0 dataLength = 6 numChildren = 0
修改为新的值:
47.243.87.144:2181 $ set /data data_info_2_new # 修改为新的值 cZxid = 0x34 ctime = Wed Jun 02 18:01:25 CST 2021 mZxid = 0x35 mtime = Wed Jun 02 18:02:58 CST 2021 pZxid = 0x34 cversion = 0 dataVersion = 1 aclVersion = 0 ephemeralOwner = 0x0 dataLength = 15 numChildren = 0
set 根据版本号更新 dataVersion 乐观锁,(修改值,当版本号与给定的 版本号值相等时)
47.243.87.144:2181 $ set /data data_info_3_new 1 # 修改成功,修改前,版本号为 1 cZxid = 0x34 ctime = Wed Jun 02 18:01:25 CST 2021 mZxid = 0x36 mtime = Wed Jun 02 18:06:48 CST 2021 pZxid = 0x34 cversion = 0 dataVersion = 2 aclVersion = 0 ephemeralOwner = 0x0 dataLength = 15 numChildren = 0 47.243.87.144:2181 $ set /data data_info_4_new 1000 # 修改失败,修改前,版本号为 2,与 指定的 1000 不相等 version No is not valid : /data 47.243.87.144:2181 $ get /data data_info_3_new cZxid = 0x34 ctime = Wed Jun 02 18:01:25 CST 2021 mZxid = 0x36 mtime = Wed Jun 02 18:06:48 CST 2021 pZxid = 0x34 cversion = 0 dataVersion = 2 aclVersion = 0 ephemeralOwner = 0x0 dataLength = 15 numChildren = 0
6、stat stat 查看状态信息
47.243.87.144:2181 $ stat /zookeeper cZxid = 0x0 ctime = Thu Jan 01 08:00:00 CST 1970 mZxid = 0x0 mtime = Thu Jan 01 08:00:00 CST 1970 pZxid = 0x0 cversion = -2 dataVersion = 0 aclVersion = 0 ephemeralOwner = 0x0 dataLength = 0 numChildren = 2
47.243.87.144:2181 $ stat /data cZxid = 0xb9 ctime = Thu Jun 03 20:57:09 CST 2021 mZxid = 0xb9 mtime = Thu Jun 03 20:57:09 CST 2021 pZxid = 0xb9 cversion = 0 dataVersion = 0 aclVersion = 1 ephemeralOwner = 0x0 dataLength = 9 numChildren = 0
7、delete path [version] 删除节点,加 version 则为乐观锁当节点不为空时,delete 命令无法删除,使用 rmr 命令
47.243.87.144:2181 $ ls /data [data_01]
47.243.87.144:2181 $ delete /data 0 Node not empty: /data
47.243.87.144:2181 $ delete /data 0 Node not empty: /data
8、ACL权限控制
ZK的节点有5种操作权限:CREATE、READ、WRITE、DELETE、ADMIN 也就是 增、删、改、查、管理权限,这5种权限简写为crwda(即:每个单词的首字符缩写)。
注:这5种权限中,delete是指对子节点的删除权限,其它4种权限指对自身节点的操作权限
身份的认证有4种方式:
- world:默认方式,相当于全世界都能访问
- auth:代表已经认证通过的用户(cli中可以通过addauth digest user:pwd 来添加当前上下文中的授权用户)
- digest:即用户名:密码这种方式认证,这也是业务系统中最常用的
- ip:使用Ip地址认证
使用[scheme:id:permissions]来表示acl权限
getAcl:获取某个节点的acl权限信息
47.243.87.144:2181 $ create /data data_info Created /data 47.243.87.144:2181 $ getAcl /data 'world,'anyone : cdrwa
setAcl 设置权限
47.243.87.144:2181 $ setAcl /data world:anyone:crwa cZxid = 0x43 ctime = Wed Jun 02 18:36:02 CST 2021 mZxid = 0x43 mtime = Wed Jun 02 18:36:02 CST 2021 pZxid = 0x43 cversion = 0 dataVersion = 0 aclVersion = 1 ephemeralOwner = 0x0 dataLength = 9 numChildren = 0 47.243.87.144:2181 $ getAcl /data 'world,'anyone : crwa
# 查询刚才设置的 setAcl 权限信息 crwa 没有删除权限 47.243.87.144:2181 $ create /data/test1 test1_info Created /data/test1 47.243.87.144:2181 $ delete /data/test1 # 没有权限,删除失败 Authentication is not valid : /data/test1 # 再次设置收取 /data 删除的权限 47.243.87.144:2181 $ setAcl /data world:anyone:crda # 查看权限,已经具备删除的权限 47.243.87.144:2181 $ getAcl /data 'world,'anyone : cdra 47.243.87.144:2181 $ delete /data/test1 # 成功删除 # 修改节点权限为 admin 后 47.243.87.144:2181 $ setAcl /data world:anyone:a cZxid = 0x54 ctime = Thu Jun 03 19:49:32 CST 2021 mZxid = 0x54 mtime = Thu Jun 03 19:49:32 CST 2021 pZxid = 0x54 cversion = 0 dataVersion = 0 aclVersion = 1 ephemeralOwner = 0x0 dataLength = 9 numChildren = 0 # 权限仅仅是管理权限 47.243.87.144:2181 $ getAcl /data 'world,'anyone : a # 没有读取查看的权限 47.243.87.144:2181 $ get /data Authentication is not valid : /data
acl Auth 密码明文设置
# 创建默认权限节点数据 47.243.87.144:2181 $ create /data data_info Created /data 47.243.87.144:2181 $ getAcl /data 'world,'anyone : cdrwa # 注册账号密码,明文的密码:账号:密码 47.243.87.144:2181 $ addauth digest testuser:pwdtest # 使用auth设置节点权限信息 47.243.87.144:2181 $ setAcl /data auth:testuser:pwdtest:cdrwa cZxid = 0x88 ctime = Thu Jun 03 20:21:27 CST 2021 mZxid = 0x88 mtime = Thu Jun 03 20:21:27 CST 2021 pZxid = 0x88 cversion = 0 dataVersion = 0 aclVersion = 1 ephemeralOwner = 0x0 dataLength = 9 numChildren = 0 # 查看节点权限信息 47.243.87.144:2181 $ getAcl /data 'digest,'testuser:fCxrHIVaINLWCCMKG8gNSPXMbCg= : cdrwa
acl digest 密码密文设置
# 创建默认权限节点数据 47.243.87.144:2181 $ create /data data_info Created /data # 查看权限 47.243.87.144:2181 $ getAcl /data 'world,'anyone : cdrwa # 使用digest设置节点的权限信息 密码为testpwd 密文 47.243.87.144:2181 $ setAcl /data digest:testuser:fCxrHIVaINLWCCMKG8gNSPXMbCg=:cdra cZxid = 0x9b ctime = Thu Jun 03 20:37:47 CST 2021 mZxid = 0x9b mtime = Thu Jun 03 20:37:47 CST 2021 pZxid = 0x9b cversion = 0 dataVersion = 0 aclVersion = 1 ephemeralOwner = 0x0 dataLength = 9 numChildren = 0 #获取节点信息提示权限不足 47.243.87.144:2181 $ get /data Authentication is not valid : /data # 注册用户然后可以正常访问 47.243.87.144:2181 $ addauth digest testuser:pwdtest
acl ip 控制客户端,本次测试本机 IP :183.225.3.0
47.243.87.144:2181 $ create /data data_info Created /data 47.243.87.144:2181 $ setAcl /data ip:183.225.3.0:cdrwa cZxid = 0xb9 ctime = Thu Jun 03 20:57:09 CST 2021 mZxid = 0xb9 mtime = Thu Jun 03 20:57:09 CST 2021 pZxid = 0xb9 cversion = 0 dataVersion = 0 aclVersion = 1 ephemeralOwner = 0x0 dataLength = 9 numChildren = 0 # 本机可以正常访问 47.243.87.144:2181 $ get /data data_info cZxid = 0xb9 ctime = Thu Jun 03 20:57:09 CST 2021 mZxid = 0xb9 mtime = Thu Jun 03 20:57:09 CST 2021 pZxid = 0xb9 cversion = 0 dataVersion = 0 aclVersion = 1 ephemeralOwner = 0x0 dataLength = 9 numChildren = 0
#本机无法访问,IP 不允许 47.243.87.144:2181 $ create /data1 data1_info Created /data1 47.243.87.144:2181 $ setAcl /data1 ip:183.25.3.1:cdrwa cZxid = 0xbb ctime = Thu Jun 03 20:58:57 CST 2021 mZxid = 0xbb mtime = Thu Jun 03 20:58:57 CST 2021 pZxid = 0xbb cversion = 0 dataVersion = 0 aclVersion = 1 ephemeralOwner = 0x0 dataLength = 10 numChildren = 0 47.243.87.144:2181 $ get /data1 Authentication is not valid : /data1
acl super超级管理员
使用super权限需要修改zkServer.sh,添加super管理员,重启zkServer.sh
>>>>>>>>>>>>>>>> 接下一篇 : https://www.cnblogs.com/Alay/p/15488057.html <<<<<<<<<<<<<<<<
本文来自博客园,作者:Vermeer,转载请注明原文链接:https://www.cnblogs.com/chxlay/p/15488050.html

浙公网安备 33010602011771号