Zookeeper客户端zkServer、zkCli命令详解

Zookeeper客户端zkServer、zkCli命令详解

zkServer客户端

  • 1、查看zk服务器状态
1
2
3
4
5
./zkServer.sh status

JMX enabled by default
Using config: /usr/local/zookeeper-server1/bin/../conf/zoo.cfg
Mode: leader
  • 2、启动/关闭zk服务器
1
2
3
4
5
./zkServer.sh start 
./zkServer.sh stop

#可以指定conf
./zkServer.sh start ../conf/zoo_1.cfg
  • 3、查看 zkServer.sh 帮助信息
1
2
3
4
./zkServer.sh help
ZooKeeper JMX enabled by default
Using config: /bigdata/zookeeper-3.4.10/bin/../conf/zoo.cfg
Usage: ./zkServer.sh {start|start-foreground|stop|restart|status|upgrade|print-cmd}

zkCli客户端

  • 1、查看 zkCli.sh 帮助信息
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
./zkCli.sh help

ZooKeeper -server host:port cmd args
stat path [watch]
set path data [version]
ls path [watch]
delquota [-n|-b] path
ls2 path [watch]
setAcl path acl
setquota -n|-b val path
history
redo cmdno
printwatches on|off
delete path [version]
sync path
listquota path
rmr path
get path [watch]
create [-s] [-e] path data acl
addauth scheme auth
quit
getAcl path
close
connect host:port
  • 2、连接zookeeper
1
2
3
4
5
连接本机zookeeper服务
./zkCli.sh

连接远程zookeeper服务,跟上参数:
./zkCli.sh -server ip:port
  • 3、创建节点
1
2
3
4
5
6
7
8
9
create [-s] [-e] path data acl

-s 表示是顺序节点
-e 标识是临时节点
path 节点路径
data 节点数据
acl 节点权限

注:临时节点在客户端结束与服务器的会话后,自动消失
  • 4、修改节点的数据
1
2
set path data [version] 
注:修改当前节点的数据内容 如果指定版本,需要和当前节点的数据版本一致
  • 5、删除指定路径的节点
1
2
3
4
5
delete path [version]
注: 删除指定路径的节点 如果有子节点要先删除子节点

rmr path
注: 删除当前路径节点及其所有子节点
  • 6、列出节点
1
2
3
4
5
6
7
8
9
ls path [watch]
ls2 path [watch]

注:[watch] 添加一个 watch(监视器),如果该节点发生变化,watch 可以使客户端得到通知。
watch 只能被触发一次。如果要一直获得znode的创建和删除的通知,那么就需要不断的在znode上
开启观察模式。如果在该 path 下创建节点,会产生 NodeChildrenChanged 事件;如果在该 path
下删除节点,会产生 NodeDeleted 事件。

使用 ls2 命令来查看某个目录包含的所有文件,与 ls 不同的是它查看到time、version等信息
  • 7、获取节点信息
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
get path [watch]

注:[watch] 添加一个 watch(监视器),如果节点内容发生改变,会产生 NodeDataChanged 事件;如果删除节点,会产生 NodeDeleted 事件。

[zk: localhost:2181(CONNECTED) 4] get /mynode
hello
cZxid = 0x4e8
ctime = Mon Apr 02 17:25:29 CST 2018
mZxid = 0x4e8
mtime = Mon Apr 02 17:25:29 CST 2018
pZxid = 0x4e8
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 5
numChildren = 0

每一个对znode树的更新操作,都会被赋予一个全局唯一的ID,我们称之为zxid(ZooKeeper Transaction ID)。
更新操作的ID按照发生的时间顺序升序排序。例如,z1大于z2,那么z1的操作就早于z2操作。

每个 znode 的状态信息包含以下内容:

czxid,创建(create)该 znode 的 zxid
mzxid,最后一次修改(modify)该 znode 的 zxid
pzxid,最后一次修改该 znode 子节点的 zxid
ctime,创建该 znode 的时间
mtime,最后一次修改该 znode 的时间
dataVersion,该节点内容的版本,每次修改内容,版本都会增加
cversion,该节点子节点的版本
aclVersion,该节点的 ACL 版本
ephemeralOwner,如果该节点是临时节点(ephemeral node),会列出该节点所在客户端的 session id;如果不是临时节点,该值为 0
dataLength,该节点存储的数据长度
numChildren,该节点子节点的个数
  • 8、检查状态 stat
1
2
3
4
5
stat path [watch]

注:[watch] 添加一个 watch(监视器),如果节点内容发生改变,会产生 NodeDataChanged 事件;如果删除节点,会产生 NodeDeleted 事件。

与 get 的区别是,不回列出 znode 的值。
  • 9、打开和关闭连接
1
2
3
4
5
打开连接 connect 指定 host:port 可以连接远程的 zk 服务。缺省的时候,会连接本地的 2181 端口。
connect host:port

关闭连接 close
close
  • 10、退出连接 quit
1
2
quit
直接退出当前的 zkCli 命令行。
  • 11、ACL命令
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
一个znode中不仅包含了存储的数据,还有 ACL(Access Control List)。
znode的创建时,可以给它设置一个ACL(Access Control List),来决定谁可以对znode做哪些操作。

ACL 具有以下特点:

ZooKeeper的权限控制是基于每个znode节点的,需要对每个节点设置权限
每个znode支持设置多种权限控制方案和多个权限
子节点不会继承父节点的权限,客户端无权访问某节点,但可能可以访问它的子节点
所以任何一个客户端都可以通过exists 操作来获得任何znode的状态,从而得知znode是否真的存在。

ACL Permissions:

ACL 权限 ACL 简写 允许的操作
CREATE c 创建子节点
READ r 获取节点的数据和它的子节点
WRITE w 设置节点的数据
DELETE d 删除子节点 (仅下一级节点)
ADMIN a 设置 ACL 权限

权限相关命令:

命令 语法 描述
getAcl getAcl path 读取ACL权限
setAcl setAcl path acl 设置ACL权限
addauth addauth scheme auth 添加认证用户
create create [-s] [-e] path data acl 创建节点时指明 ACL 权限

ACL Schemes:
ZooKeeper内置了一些权限控制方案,可以用以下方案为每个节点设置权限:

方案 描述
world 只有一个用户:anyone,代表所有人(默认)
ip 使用IP地址认证
auth 使用已添加认证的用户认证
digest 使用“用户名:密码”方式认证

1.world 方案
设置方式:setAcl <path> world:anyone:<acl>

注:默认情况下时 world 方法,任何人有所有权限:

2.IP 方案
设置方式:setAcl <path> ip:<ip>:<acl>

注:<ip>:可以是具体IP也可以是IP/bit格式,即IP转换为二进制,匹配前bit位,如192.168.0.0/16匹配192.168.*.*

3.auth 方案

设置方式
addauth digest <user>:<password> #添加认证用户
setAcl <path> auth:<user>:<acl>

4.digest 方案

设置方式
setAcl <path> digest:<user>:<password>:<acl>

这里的密码是经过SHA1及BASE64处理的密文,在SHELL中可以通过以下命令计算:
echo -n <user>:<password> | openssl dgst -binary -sha1 | openssl base64
先来算一个密文密码:
echo -n admin:admin | openssl dgst -binary -sha1 | openssl base64
x1nq8J5GOJVPY6zgzhtTtA9izLc=

5.创建节点时指定 ACL

create /mynode hello auth:admin:cdrwa
  • 12、其他命令
1
2
3
4
5
6
7
历史记录 history
history
注:列出最近的10条历史记录

重复之前的命令 redo
redo cmdno
根据 cmdno 重复之前的命令,cmdno 就是方括号里面最后的数字,每次执行命令都会自增。

使用ZooKeeper四字命令

ZooKeeper四字命令 功能描述
conf 输出相关服务配置的详细信息。
cons 列出所有连接到服务器的客户端的完全的连接 / 会话的详细信息。包括“接受 / 发送”的包数量、会话 id 、操作延迟、最后的操作执行等等信息。
dump 列出未经处理的会话和临时节点。
envi 输出关于服务环境的详细信息(区别于 conf 命令)。
reqs 列出未经处理的请求
ruok 测试服务是否处于正确状态。如果确实如此,那么服务返回“imok ”,否则不做任何相应。
stat 输出关于性能和连接的客户端的列表。
wchs 列出服务器 watch 的详细信息。
wchc 通过 session 列出服务器 watch 的详细信息,它的输出是一个与watch 相关的会话的列表。
wchp 通过路径列出服务器 watch 的详细信息。它输出一个与 session相关的路径。

参考链接:
https://blog.csdn.net/zhang123456456/article/details/78243658
https://blog.csdn.net/feixiang2039/article/details/79810102

-------------已经触及底线 感谢您的阅读-------------

本文标题:Zookeeper客户端zkServer、zkCli命令详解

文章作者:趙小傑~~

发布时间:2019年06月28日 - 00:08:12

最后更新:2019年07月26日 - 23:32:12

原始链接:https://cnsyear.com/posts/66ab0831.html

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

0%