首先我們先將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來訪問以上的命令列表。