首先我们先将ZooKeeper的服务启动
进入ZooKeeper的bin目录执行以下命令
./zkServer.sh start
启动成功
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper-3.4.9/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
ZooKeeper 命令
我们通过nc
或者telnet
命令访问2181
端口,通过执行ruok
(Are you OK?) 命令来检查ZooKeeper是否启动成功。
echo ruok | nc localhost 2181
结果:
imok
那么我们看见zookeeper回答我们imok。下面我们将来介绍zookeeper的所有命令,它们都是由4个字符组成的。
命令使用格式
echo 命令 | nc IP地址 端口
- echo - Shell 的
echo
指令与 PHP 的echo
指令类似,都是用于字符串的输出。语法为echo string
- 命令 - ZooKeeper的命令。例如
ruok
。 - nc - Linux
nc
命令用于设置路由器。执行本指令可设置路由器的相关参数。语法为nc IP地址 端口号
。 - IP地址 - 即ZooKeeper所在的服务器IP地址
- 端口 - 即ZooKeeper的端口号。
有关服务器状态命令
ruok
如果ZooKeeper正在运行且未处于错误状态,则打印imok。
示例:
echo ruok | nc localhost 2181
结果:
imok
出现imok
证明ZooKeeper启动成功。
conf
打印ZooKeeper的zoo.cfg配置文件信息。
示例:
echo conf | nc localhost 2181
结果:
clientPort=2181
dataDir=/var/lib/zookeeper/version-2
dataLogDir=/var/lib/zookeeper/version-2
tickTime=2000
maxClientCnxns=60
minSessionTimeout=4000
maxSessionTimeout=40000
serverId=0
- clientPort - 客户端连接server的端口,即对外服务端口,一般设置为2181吧。
- dataDir - 存储快照的目录。
- 默认情况下,事务日志也会存储在这里。建议同时配置参数
dataLogDir
, 事务日志的写性能直接影响ZooKeeper性能。 - 默认存放目录是
/tmp
。注意:快照目录不要使用/tmp
进行存储,因为/tmp
这个目录是用来存放一些临时文件的。(/tmp
目录下的内容默认保留10天,这个天数可通过修改CentOS的tmp.conf
配置来改变)。所以在安装完ZooKeeper时最好修改该配置。
- 默认情况下,事务日志也会存储在这里。建议同时配置参数
- dataLogDir -事务日志输出目录。尽量给事务日志的输出配置单独的磁盘或是挂载点,这将极大的提升ZooKeeper性能。
- tickTime - ZooKeeper的一个时间单元(毫秒值)。所有时间都是以这个时间单元为基础,进行整数倍配置的。例如,
session
的最小超时时间是2*tickTime
。 - maxClientCnxns - 最大客户端连接数。默认是
60
,如果设置为0
,那么表明不作任何限制。 - minSessionTimeout - Session最小超时时间限制,如果不设置则为
2 * tickTime
- maxSessionTimeout - Session最大超时时间限制,如果不设置则为
20 * tickTime
- serverId - 服务器ID
envi
打印服务器环境,包括ZooKeeper版本,Java版本和其他系统属性。
示例:
echo envi | nc localhost 2181
结果:
Environment:
zookeeper.version=3.4.9-1757313, built on 08/23/2016 06:50 GMT
host.name=bogon
java.version=1.8.0_181
java.vendor=Oracle Corporation
java.home=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.181-7.b13.el7.x86_64/jre
java.class.path=/opt/zookeeper-3.4.9/bin/../build/classes:/opt/zookeeper-3.4.9/bin/../build/lib/*.jar:/opt/zookeeper-3.4.9/bin/../lib/slf4j-log4j12-1.6.1.jar:/opt/zookeeper-3.4.9/bin/../lib/slf4j-api-1.6.1.jar:/opt/zookeeper-3.4.9/bin/../lib/netty-3.10.5.Final.jar:/opt/zookeeper-3.4.9/bin/../lib/log4j-1.2.16.jar:/opt/zookeeper-3.4.9/bin/../lib/jline-0.9.94.jar:/opt/zookeeper-3.4.9/bin/../zookeeper-3.4.9.jar:/opt/zookeeper-3.4.9/bin/../src/java/lib/*.jar:/opt/zookeeper-3.4.9/bin/../conf:
java.library.path=/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
java.io.tmpdir=/tmp
java.compiler=<NA>
os.name=Linux
os.arch=amd64
os.version=3.10.0-957.el7.x86_64
user.name=root
user.home=/root
user.dir=/opt/zookeeper-3.4.9/bin
srvr
打印服务器统计信息,包括延迟统计信息,znode数量和服务器模式(standalone(独立), leader(领导者), or follower(跟随者))。
- standalone - 即ZooKeeper为单机架构。
- leader - 即ZooKeeper为集群架构,并该服务器为主服务器。
- follower - 即ZooKeeper为集群架构,并该服务器为从服务器。
示例:
echo srvr | nc localhost 2181
结果:
Zookeeper version: 3.4.9-1757313, built on 08/23/2016 06:50 GMT
Latency min/avg/max: 0/0/0
Received: 6
Sent: 5
Connections: 1
Outstanding: 0
Zxid: 0x5
Mode: standalone
Node count: 4
stat
打印服务器统计信息和连接的客户端。
示例:
echo stat | nc localhost 2181
结果:
Zookeeper version: 3.4.9-1757313, built on 08/23/2016 06:50 GMT
Clients:
/0:0:0:0:0:0:0:1:43486[0](queued=0,recved=1,sent=0)
Latency min/avg/max: 0/0/0
Received: 7
Sent: 6
Connections: 1
Outstanding: 0
Zxid: 0x5
Mode: standalone
Node count: 4
srst
重置服务器统计信息。
示例:
echo srst | nc localhost 2181
结果:
Server stats reset.
isro
显示服务器是处于只读(ro)模式(由于网络分区)还是读/写模式(rw)。
示例:
echo isro | nc localhost 2181
结果:
rw
有关客户连接信息命令
dump
列出集合的所有会话和临时znode。您必须连接到leader(领导者)(请参阅srvr)以获取此命令。
示例:
echo dump | nc localhost 2181
结果:
SessionTracker dump:
#会话集
Session Sets (4):
0 expire at Sat Aug 24 05:26:06 HKT 2019:
0 expire at Sat Aug 24 05:26:16 HKT 2019:
0 expire at Sat Aug 24 05:26:26 HKT 2019:
1 expire at Sat Aug 24 05:26:36 HKT 2019:
0x16cc029862a0003
ephemeral nodes dump:
#会话的临时Znode
Sessions with Ephemerals (0):
cons
列出所有服务器客户端的连接统计信息。包括接受或者发送包的数量,会话ID,操作延迟,最后的操作执行等等信息。
示例:
echo cons | nc localhost 2181
结果:
/127.0.0.1:47584[1](queued=0,recved=39,sent=39,sid=0x16cc029862a0003,lop=PING,est=1566595224110,to=30000,lcxid=0x0,lzxid=0xc,lresp=1566595604453,llat=0,minlat=0,avglat=0,maxlat=4)
/0:0:0:0:0:0:0:1:43856[0](queued=0,recved=1,sent=0)
crst
重置连接统计信息。
示例:
echo crst | nc localhost 2181
结果:
Connection stats reset.
有关Watches的命令
wchs
列出服务器watch
的详细信息。
显示带有watch
的节点数量。
示例:
echo wchs | nc localhost 2181
结果:
connections watching 1 paths
# 监视器数量为1
Total watches:1
wchc
通过 session 列出服务器 watch 的详细信息,输出session下带有watch
的所有节点。可能会影响大量Watches的服务器性能。
示例:
echo wchc | nc localhost 2181
结果:
0x16cc029862a0004
/zookeeper
我在/zookeeper
节点中设置一个watch
(监视器),所以显示/zookeeper
节点
wchp
通过带有watch
的节点路径列出服务器的详细信息。输出带有watch
的所有节点下的session信息。可能会影响大量Watches的服务器性能。
示例:
echo wchp | nc localhost 2181
结果:
/zookeeper
0x16cc029862a0004
有关Monitoring的命令
mntr
列出Java属性格式的服务器统计信息,适合作为监控系统(如Ganglia和Nagios)的源。
示例:
echo mntr | nc localhost 2181
结果:
zk_version 3.4.9-1757313, built on 08/23/2016 06:50 GMT
zk_avg_latency 0
zk_max_latency 10
zk_min_latency 0
zk_packets_received 1629
zk_packets_sent 1630
zk_num_alive_connections 2
zk_outstanding_requests 0
zk_server_state standalone
zk_znode_count 4
zk_watch_count 1
zk_ephemerals_count 0
zk_approximate_data_size 29
zk_open_file_descriptor_count 29
zk_max_file_descriptor_count 4096
3.5.0以上的版本会有一个内嵌的web服务,通过访问http://localhost:8080/commands来访问以上的命令列表。