15年的老文章,花点时间用MarkDown重刷一遍,看起来舒服些,强迫症没办法。。。

内容摘要

本文介绍了zookeeper命令行工具zkCli.sh、zkServer.sh的使用及四字命令。

总览

zookeeper提供了很多方便的功能,方便我们查看服务器的状态,增加,修改,删除数据(入口是 zkServer.sh 和 zkCli.sh)。

还提供了一系列四字命令,方便我们跟服务器进行各种交互,来确认服务器当前的工作情况(这也是服务器监控告警的基础)。

本文所讲的zkCli.sh和zkServer.sh均位于以下目录中:

/usr/local/zookeeper-server1

目录分布情况请参考我的另一篇文章:【zookeeper】zookeeper伪集群搭建

命令行工具使用

zkServer.sh

  • 查看服务状态
1
2
3
4
[root@rocket zookeeper-server1]# bin/zkServer.sh status
JMX enabled by default
Using config: /usr/local/zookeeper-server1/bin/../conf/zoo.cfg
Mode: leader
  • 启停服务器
1
2
3
4
[root@rocket zookeeper-server1]# bin/zkServer.sh help
JMX enabled by default
Using config: /usr/local/zookeeper-server1/bin/../conf/zoo.cfg
Usage: bin/zkServer.sh {start|start-foreground|stop|restart|status|upgrade|print-cmd}

zkCli.sh

连接zookeeper

1
2
3
4
5
[root@rocket zookeeper-server1]# bin/zkCli.sh -server localhost:2181
Connecting to localhost:2181
此处省略1W字。。
WatchedEvent state:SyncConnected type:None path:null
[zk: localhost:2181(CONNECTED) 0]

常用命令

  • 键入help查看所有支持的命令
1
2
3
4
5
6
7
8
[zk: localhost:2181(CONNECTED) 0] help
ZooKeeper -server host:port cmd args
        stat path [watch]
        set path data [version]
        ls path [watch]
        delquota [-n|-b] path
        此处省略1W字。。
        connect host:port
  • 查看当前节点列表
1
2
[zk: localhost:2181(CONNECTED) 1] ls /
[zookeeper]
  • 创建节点
1
2
3
4
[zk: localhost:2181(CONNECTED) 2] create /test "test"
Created /test
[zk: localhost:2181(CONNECTED) 3] ls /
[zookeeper, test]
  • 查看节点数据
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
[zk: localhost:2181(CONNECTED) 4] get /test
"test"
cZxid = 0x300000007
ctime = Thu Sep 24 05:54:51 PDT 2015
mZxid = 0x300000007
mtime = Thu Sep 24 05:54:51 PDT 2015
pZxid = 0x300000007
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 6
numChildren = 0
  • 设置节点数据
 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
[zk: localhost:2181(CONNECTED) 7] set /test "111111" 
cZxid = 0x300000007
ctime = Thu Sep 24 05:54:51 PDT 2015
mZxid = 0x300000008
mtime = Thu Sep 24 05:57:40 PDT 2015
pZxid = 0x300000007
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 8
numChildren = 0

[zk: localhost:2181(CONNECTED) 8] get /test
"111111"
cZxid = 0x300000007
ctime = Thu Sep 24 05:54:51 PDT 2015
mZxid = 0x300000008
mtime = Thu Sep 24 05:57:40 PDT 2015
pZxid = 0x300000007
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 8
numChildren = 0
  • 删除节点
1
2
3
[zk: localhost:2181(CONNECTED) 9] delete /test
[zk: localhost:2181(CONNECTED) 10] ls /
[zookeeper]

四字命令

传递四个字母的字符串给zookeeper,zookeeper会返回一些有用的信息。

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

四字命令举例

  • 查看连接到结点上所有的client信息,被选作leader还是follower
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
[root@rocket zookeeper-server1]# echo stat|nc 127.0.0.1 2181
Zookeeper version: 3.4.6-1569965, built on 02/20/2014 09:09 GMT
Clients:
 /127.0.0.1:52547[0](queued=0,recved=1,sent=0)
 /0:0:0:0:0:0:0:1:53913[1](queued=0,recved=4,sent=4)

Latency min/avg/max: 0/3/9
Received: 13
Sent: 12
Connections: 2
Outstanding: 0
Zxid: 0x300000005
Mode: leader
Node count: 4
  • 测试是否启动了该Server,若回复imok表示已经启动
1
2
[root@rocket zookeeper-server1]# echo ruok|nc 127.0.0.1 2181
Imok
  • 查看连接到服务器的所有客户端的会话信息
1
2
3
[root@rocket zookeeper-server1]# echo cons|nc 127.0.0.1 2181
 /127.0.0.1:52552[0](queued=0,recved=1,sent=0)
 /0:0:0:0:0:0:0:1:53913[1](queued=0,recved=88,sent=88,sid=0x14ffe63e9ce0001,lop=PING,est=1443098949817,to=30000,lcxid=0x2,lzxid=0x30000000a,lresp=1443099814079,llat=0,minlat=0,avglat=0,maxlat=3)

其它命令的使用留待读者自己去研究:)

(完)