常用shell脚本操作命令
shell脚本在zookeeper安装根目录的bin/路径下。
- 启动zk : bin/zkServer.sh start
- 查看ZK服务状态: bin/zkServer.sh status
- 停止ZK服务: bin/zkServer.sh stop
- 重启ZK服务: bin/zkServer.sh restart
- 连接服务器 : bin/zkCli.sh -server 127.0.0.1:2181
常用操作命令
使用help查看常用命令
常用命令介绍
ls /
使用 ls 命令来查看某个目录包含的所有文件,例如:
[zk: localhost:2181(CONNECTED) 1] ls /
[zookeeper]
ls2 /
使用 ls2 命令来查看某个目录包含的所有文件,与ls不同的是它查看到其他一些信息,例如:
[zk: localhost:2181(CONNECTED) 2] ls2 / [zookeeper] cZxid = 0x0 #节点创建的Zxid ctime = Thu Jan 01 08:00:00 CST 1970 #节点创建时间 mZxid = 0x0 #节点最新一次更新时的Zxid mtime = Thu Jan 01 08:00:00 CST 1970 #节点最新一次更新发生时的时间 pZxid = 0x0 #子节点最后一次被修改的zxid cversion = -1 #其子节点的更新次数 dataVersion = 0 #节点数据的更新次数 aclVersion = 0 #节点ACL授权的更新次数 ephemeralOwner = 0x0 #如果该节点为ephemeral节点, ephemeralOwner值表示与该节点绑定的session id. 如果该节点不是ephemeral节点, ephemeralOwner值为0. 至于什么是ephemeral节点, 请看后面的讲述. dataLength = 0 #节点数据的字节数 numChildren = 1 #子节点的个数
zxid:致使ZooKeeper节点状态改变的每一个操作都将使节点接收到一个递增的事务id号,并且这个时间戳全局有序。也就是说,也就是说,每个对节点的改变都将产生一个唯一的Zxid。如果Zxid1的值小于Zxid2的值,那么Zxid1所对应的事件发生在Zxid2所对应的事件之前。实际上,ZooKeeper的每个节点维护者三个Zxid值,为别为:cZxid、mZxid、pZxid。
stat /
查看节点状态属性,不包含节点数据信息,例如:
[zk: localhost:2181(CONNECTED) 39] stat /
create
创建znode,并设置初始内容, 默认内容也可以是空串,附加参数 :-s:顺序节点 ,-e:临时节点 例如:
get
获取znode节点数据,例如:
[zk: localhost:2181(CONNECTED) 17] get /test
set
修改znode节点内容,修改数据也可携带版本号,修改的时候要么不携带版本号,要么携带的版本号要跟dataVersion的版本号一致,否则就会报错,例如:
delete
删除没有子节点的节点,如果有子节点将报Node not empty: /test 例如:
[zk: localhost:2181(CONNECTED) 36] delete /test
Node not empty: /test
rmr
已过时的方法,推荐使用deleteall
删除节点,有子节点一并删除
deleteall
删除节点,有子节点一并删除
setquota
配额,给节点限制值,比如限制子节点个数、节点数据的长度
-n:限制子节点个数
-b:限制值的长度
当创建节点超出配额时,zookeeper不会抛出异常,会在bin/zookeeper.out记录警告信息。
listquota
listquota,查看配额,以及节点的配额状态,例如:
delquota:删除配额
close:关闭当前连接
history:查看历史执行指令
redo命令
再次执行某命令。
如redo 10
其中10为命令ID,需与history配合使用。
sync:
由于请求在半数以上的zk server上生效就表示此请求生效,那么就会有一些zk server上的数据是旧的。sync命令就是强制同步所有的更新操作。
printwatches
在获取节点数据、子节点列表等操作时,都可以添加watch参数监听节点的变化,从而节点数据更改、子节点列表变更时收到通知,并输出到控制台。默认是打开,可以设置参数将其关闭。 例如:
常用ACL命令
常用ACL命令参考下一篇博客:
https://blog.csdn.net/qq_34021712/article/details/82871976
运维四字命令
zk可以通过它自身提供的简写命令来和服务器进行交互,需要使用到nc命令.
安装命令:
yum install nc
使用echo conf |nc 127.0.0.1 2181 查看zookeeper配置信息,报如下异常:
conf is not executed because it is not in the whitelist.
解决办法,修改 conf/zoo.cfg 添加以下属性
#开启四字命令
4lw.commands.whitelist=*
再执行上面的命令,出现如下信息:
上图中还有一种方式就是使用 telnet 127.0.0.1 2181 然后使用四字命令,下面列出四字命令信息:
conf
conf命令用于输出 ZooKeeper服务器运行时使用的基本配置信息,包括clientPort、dataDir和tickTime等,以便运维人员能快速查看 ZooKeeper当前运行时的一些参数,如上图所示。注意,conf命令输出的配置信息仅仅是输出一些最基本的配置参数。
另外,conf命令会根据当前的运行模式来决定输出的信息。上图所示的输出信息是针对集群模式下的样例,如果是单机模式(standalone),就不会输出诸如initLimit、syncLimit、electionAlg和electionPort等集群相关的配置信息。
cons
cons命令用于输出当前这台服务器上所有客户端连接的详细信息,包括每个客户端的客户端IP、会话ID和最后一次与服务器交互的操作类型等。
crst
crst命令是一个功能性命令,用于重置所有的客户端连接统计消息
dump
dump命令用于输出当前集群的所有会话信息,包括这些会话的会话ID,以及每个会话创建的临时节点等信息。如果在Leader服务器上执行该命令的话,我们还能够看到每个会话的超时时间。
envi
envi命令用于输出 ZooKeeper所在服务器运行时的环境信息,包括os.version、java.version和user.home等。
ruok
ruok命令用于输出当前 ZooKeeper服务器是否正在运行。该命令的名字非常有趣,其协议正好是“Are you ok”。执行该命令后,如果当前 ZooKeeper服务器正在运行,那么返回“imok”,否则没有任何响应输出。
请注意,ruok命令的输出仅仅只能表明当前服务器是否正在运行,准确的讲,只能说明2181端口打开着,同时四字命令执行流程正常,但是不能代表 ZooKeeper服务器是否运行正常。在很多时候,如果当前服务器无法正常处理客户端的读写请求,甚至已经无法和集群中的其他机器进行通信,ruok命令依然返回“imok”。因此,一般来说,该命令并不是一个特别有用的命令,他不能反映 ZooKeeper服务器的工作状态,想要更可靠的获取更多 ZooKeeper运行状态信息,可以使用下面马上要讲到的stat命令。
stat
stat命令用于获取 ZooKeeper服务器的运行时状态信息,包括基本的 ZooKeeper版本、打包信息、运行时角色、集群数据节点个数等消息,另外还会将当前服务器的客户端连接信息打印出来。
除了一些基本的状态信息外,stat命令还会输出一些服务器的统计信息,包括延迟情况、收到请求数和返回的响应数等。注意,所有这些统计数据都可以通过srst命令进行重置。
srvr
srvr命令和stat命令的功能一致,唯一的区别是srvr不会将客户端的连接情况输出,仅仅输出服务器的自身信息
srst
stst命令是一个功能行命令,用于重置所有服务器的统计信息。
wchs
wchs命令用于输出当前服务器上管理的Watcher的概要信息。
wchc
wchc命令用于输出当前服务器上管理的Watcher的详细信息,以会话为单位进行归组,同时列出被该会话注册了Watcher的节点路径。
wchp
wchp命令和wchc命令非常类似,也是用于输出当前服务器上管理的Watcher的详细信息,不同点在于wchp命令的输出信息以节点路径为单位进行归组。
mntr
mntr命令用于输出比stat命令更为详尽的服务器统计信息,包括请求处理的延迟情况,服务器内存数据库大小和集群的数据同步情况。在输出结果中,每一行都是一个key-value的键值对,运维人员可以,根据这些输出信息进行 ZooKeeper的运行时状态监控。
如果在Leader服务器上执行该命令的话,可以获取比Follower服务器更多的信息。
转自:https://blog.csdn.net/qq_34021712/article/details/82871697