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    <<<<<<<<<<<<<<<<

 

posted @ 2021-10-31 00:02  Vermeer  阅读(58)  评论(0)    收藏  举报