其他分享
首页 > 其他分享> > zookeeper05-ZooKeeper的相关命令

zookeeper05-ZooKeeper的相关命令

作者:互联网

1、zkCli.sh脚本的使用方法

1.1、连接和退出ZooKeeper服务器

1、连接到ZooKeeper服务器

zkCli.sh -timeout 5000 -r -server ip1:port1[,ip2:port2,ip3:port3]
    -timeout:表示客户端向ZooKeeper服务器发送心跳的时间间隔,单位为毫秒。因为客户端与服务器的连接状态是通过心跳检测来维护的,如果在指定的时间间隔内,客户端没有向服务器发送心跳包,服务器则会断开与客户端的连接。参数5000,表示客户端向服务器发送心跳的间隔为5秒。
    -r:表示客户端以只读模式连接
    -server:指定客户端要连接的服务器IP与端口,服务器默认的端口为2181

示例:

]# zkCli.sh    #相当于zkCli.sh -server 127.0.0.1:2181

]# zkCli.sh -timeout 5000 -r -server 10.1.1.10:2181

--会随机连接到后面三个ZooKeeper服务器之一
]# zkCli.sh -server 10.1.1.10:2181,10.1.1.11:2181,10.1.1.12:2181

2、关闭连接

[zk: localhost:2181(CONNECTED) 0] close

WATCHER::

WatchedEvent state:Closed type:None path:null
2021-12-26 21:48:31,454 [myid:] - INFO  [main:ZooKeeper@1422] - Session: 0x100001117980000 closed
2021-12-26 21:48:31,459 [myid:] - INFO  [main-EventThread:ClientCnxn$EventThread@524] - EventThread shut down for session: 0x100001117980000

3、连接到ZooKeeper服务器

connect [host:port]
    host:port:ZooKeeper服务器IP和端口

示例:

[zk: localhost:2181(CLOSED) 1] connect 127.0.0.1:2181

4、退出zkCli.sh终端

[zk: 127.0.0.1:2181(CONNECTED) 2] quit

WATCHER::

WatchedEvent state:Closed type:None path:null
2021-12-26 21:49:06,266 [myid:] - INFO  [main:ZooKeeper@1422] - Session: 0x100001117980001 closed
2021-12-26 21:49:06,269 [myid:] - INFO  [main-EventThread:ClientCnxn$EventThread@524] - EventThread shut down for session: 0x100001117980001

1.2、查询znode

1、查询子znode列表

ls [-s] [-w] [-R] path
    path:znode路径
    -s:显示path状态(元数据)的详细信息
    -w:监听path的子znode列表变化(如果path下子znode的数量有变化,就会触发监视点)
    -R:递归显示子znode

--ls2已弃用
ls2 path [watch]

示例:

[zk: localhost:2181(CONNECTED) 0] ls /
[zookeeper]
[zk: localhost:2181(CONNECTED) 1] ls -s /
[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

[zk: localhost:2181(CONNECTED) 2] ls -R /
/
/zookeeper
/zookeeper/config
/zookeeper/quota
[zk: localhost:2181(CONNECTED) 3] ls -w /
[zookeeper]

2、获取znode状态

stat [-w] path
    path:znode路径
    -w:监听path znode的状态(元数据)变化

示例:

[zk: localhost:2181(CONNECTED) 8] stat /test1
cZxid = 0x100000011                     --cZxid:创建znode的事务id
ctime = Sun Dec 26 19:33:43 CST 2021    --ctime:创建znode的时间
mZxid = 0x100000011                     --mZxid:修改znode的事务id
mtime = Sun Dec 26 19:33:43 CST 2021    --mtime:修改znode的时间
pZxid = 0x100000011                     --pZxid:子znode列表最后一次修改的事务id。删除或添加子znode,不包含修改子znode的数据。
cversion = 0                            --cversion:子znode的版本号,删除或添加子znode,版本号会自增
dataVersion = 0                         --dataVersion:znode数据版本号,数据写入操作,版本号会递增
aclVersion = 0                          --aclVersion:znode ACL权限版本,权限写入操作,版本号会递增
ephemeralOwner = 0x0                    --ephemeralOwner:临时znode创建时的事务id,如果是永久znode,则它的值为0
dataLength = 0                          --dataLength:znode数据长度(单位:byte),中文占3个byte
numChildren = 0                         --numChildren:子znode数量

1.3、创建、删除znode

1、创建znode

create [-s] [-e] [-c] [-t ttl] path [data] [acl]
    path:znode路径
    -s:创建有序znode。(自动为有序znode加上编号)
    -e:创建临时znode,默认是持久znode。(会话断开时,该会话的临时znode被删除)
    -c:创建容器znode。当容器的最后一个子容器被删除时,该容器将被删除
    -t:创建TTL节点。需要在zoo.cfg中设置zookeeper.extendedTypesEnabled=true
    data:存储在znode中的数据
    acl:设置子znode访问权限,默认所有人都可以对该znode进行读写操作

示例:

--创建持久znode
[zk: localhost:2181(CONNECTED) 0] create /test1
Created /test1
--创建临时znode
[zk: localhost:2181(CONNECTED) 1] create -e /test2
Created /test2
--创建持久有序的znode
[zk: localhost:2181(CONNECTED) 2] create -s /test3
Created /test30000000001
--创建临时有序的znode
[zk: localhost:2181(CONNECTED) 3] create -e -s /test4
Created /test40000000001

2、删除znode

--删除znode,该znode不能有子znode
delete [-v version] path
    path:znode路径
    -v:znode版本号(znode状态cversion的值)。如果传递了版本号,则必须保证和服务器上的版本号一致,否则会报错:version No is not valid

--删除znode,包含其子znode(会递归删除子znode,再删除znode本身)
deleteall path

--已弃用
rmr path

示例:

[zk: localhost:2181(CONNECTED) 0] delete /test1
[zk: localhost:2181(CONNECTED) 1] delete /test2
Node not empty: /test2
[zk: localhost:2181(CONNECTED) 2] deleteall /test2

1.4、查看、设置znode数据

1、获取znode数据

get [-s] [-w] path
    path:znode路径
    -s:显示path状态(元数据)的详细信息
    -w:监视path znode中的数据变化

2、设置znode数据

set [-s] [-v version] path data
    path:znode路径
    data:znode数据
    -s:显示path状态(元数据)的详细信息
    -v:数据版本号(znode状态dataVersion的值)。如果传递了版本号,则必须保证和服务器上的版本号一致,否则会报错。

1.5、znode配额

1、查询znode配额

listquota path 
    path:znode路径

2、设置znode配额

setquota -n|-b val path 
    path:znode路径
    -n:限制子znode的数量
    -b:限制znode的数据长度
    val:如果参数是-n,val表示限制子znode的数量。如果参数是-b,val表示限制znode的数据长度

3、删除znode配额

delquota [-n|-b] path 
    path:znode路径
    -n:删除子znode数量配额限制
    -b:删除znode数据长度配额限制

示例:

[zk: localhost:2181(CONNECTED) 0] create /test1
Created /test1
--查看/test1的配额
[zk: localhost:2181(CONNECTED) 1] listquota /test1 
absolute path is /zookeeper/quota/test1/zookeeper_limits
quota for /test1 does not exist.
--设置/test1的配额
[zk: localhost:2181(CONNECTED) 2] setquota -n 2 /test1
[zk: localhost:2181(CONNECTED) 3] listquota /test1 
absolute path is /zookeeper/quota/test1/zookeeper_limits
Output quota for /test1 count=2,bytes=-1    --表示znode的配额信息,限制该znode最多有2个子znode,znode数据为-1,表示不限制
Output stat for /test1 count=1,bytes=0      --表示当前znode的状态信息,该znode有1个子znode,znode数据长度为0
--删除/test1的配额
[zk: localhost:2181(CONNECTED) 4] delquota /test1
[zk: localhost:2181(CONNECTED) 5] listquota /test1 
absolute path is /zookeeper/quota/test1/zookeeper_limits
quota for /test1 does not exist.

1.6、znode的ACL

1、获取znode ACL

getAcl [-s] path
    path:znode路径
    -s:显示path状态(元数据)的详细信息

2、设置znode ACL

setAcl [-s] [-v version] [-R] path acl
    path:znode路径
    acl:设置子znode访问权限,默认所有人都可以对该znode进行读写操作
    -s:显示path状态(元数据)的详细信息
    -v:acl版本号(znode状态aclVersion的值)。如果传递了版本号,则必须保证和服务器上的版本号一致,否则会报错。
    -R:递归设置acl

示例:

[zk: localhost:2181(CONNECTED) 0] create /test1
Created /test1
[zk: localhost:2181(CONNECTED) 1] getAcl /test1 
'world,'anyone
: cdrwa
[zk: localhost:2181(CONNECTED) 2] setAcl /test1 ip:10.1.1.12:cdrwa
[zk: localhost:2181(CONNECTED) 3] getAcl /test1    --要操作该znode,需要登录zkCli.sh -server 10.1.1.12:2181
Authentication is not valid : /test1

1.7、历史命令

1、查看历史命令

history

2、执行历史命令

redo cmdno
    cmdno:历史命令编号

示例:

[zk: localhost:2181(CONNECTED) 0] ls /
[test1, zookeeper]
[zk: localhost:2181(CONNECTED) 1] get /zookeeper 
ss
[zk: localhost:2181(CONNECTED) 2] history    --查看历史命令
0 - ls /
1 - get /zookeeper 
2 - history
[zk: localhost:2181(CONNECTED) 3] redo 0     --执行历史命令
[test1, zookeeper]

1.8、服务器配置

1、配置信息

config [-c] [-w] [-s]

2、重新配置信息

reconfig [-s] [-v version] [[-file path] | [-members serverID=host:port1:port2;port3[,...]*]] | [-add serverId=host:port1:port2;port3[,...]]* [-remove serverId[,...]*]
    -s:
    -v:如果传递了版本号,则必须保证和服务器上的版本号一致,否则会报错。
    -file:使用文件进行重配置。
    -members:全量重配置。
    -add...-remove:增量重配置。

示例:

--将服务器2改为观察者,并将其端口从2182更改为12182;将服务器5添加到集群中,并设置为观察者;将服务器4从集群中移除。
reconfig --add 2=localhost:2781:2786:observer;12182 --add 5=localhost:2781:2786:observer;2185 -remove 4

--全量重配置
reconfig -members server.1=localhost:2780:2785:participant;0.0.0.0:2181,server.2=localhost:2781:2786:observer;0.0.0.0:12182,server.3=localhost:2782:2787:participant;0.0.0.0:12183

--将当前配置更改为myNewConfig.txt中的配置
reconfig -file /data/software/zookeeper/zookeeper-test/conf/myNewConfig.txt
    /data/software/zookeeper/zookeeper-test/conf/myNewConfig.txt
    server.1=localhost:2780:2785:participant;0.0.0.0:2181
    server.2=localhost:2781:2786:observer;0.0.0.0:12182
    server.3=localhost:2782:2787:participant;0.0.0.0:2183
    server.5=localhost:2784:2789:observer;0.0.0.0:2185

1.9、其他命令

1、给当前客户端添加授权信息

addauth scheme auth
    scheme:授权方式
    auth:权限

2、与leader同步数据

sync path
    path:znode路径

3、打开或关闭监听日志

printwatches on|off
on:打开
off:关闭

4、删除监听器

removewatches path [-c|-d|-a] [-l]

2、四字母命令

1、ruok

2、stat

3、srvr

4、mntr

5、dump

6、conf

7、envi

8、wchs

9、wchc

10、wchp

11、cons, crst

示例:

]# echo conf | nc 127.0.0.1 2181
conf is not executed because it is not in the whitelist.
#开启四字母命令,要重启服务
4lw.commands.whitelist=*
]# echo ruok | nc 127.0.0.1 2181
imok
]# telnet 127.0.0.1 2181
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
ruok                     --四字母命令
imok                     --命令的输出
Connection closed by foreign host.

标签:zk,--,ZooKeeper,命令,2181,path,znode,zookeeper05,localhost
来源: https://www.cnblogs.com/maiblogs/p/15832271.html