ZooKeeper:03---zkServer.sh、zkCli.sh、zkCleanup.sh、zkEnv.sh、zkSnapShotToolkit.sh、zkTxnLogToolkit.sh

  • 在源碼包的bin/目錄下包含一系列的腳本,其中:
    • .sh:在Linux系統下使用的腳本工具(本文介紹的)
    • .cmd:在Windows系統下使用的腳本工具

一、zkServer.sh

  • 功能:用來操作zooKeeper服務器的
  • 參數如下:

--config

  • 說明:在啓動服務器時通過該參數來指定配置文件
  • 備註:
    • 這個參數指定的是路徑,而非文件
    • 配置文件名稱必須爲zoo.cfg,其他配置文件名不能接受
    • 並且路徑不能以/結尾,例如配置文件爲/etc/zoo.cfg,那麼傳遞時參數必須爲“/etc”而不能是“/etc/”
    • 如果沒有指定該參數,那麼默認會在./conf目錄下查找一個名爲zoo.cfg的配置文件
  • 演示案例:
./bin/zkServer.sh --config ./conf start

start

  • 說明:用來啓動服務器
  • 備註:
    • 該參數啓動的服務器是以守護進程方式運行的
    • 啓動時默認端口爲2181
  • 演示案例:
./bin/zkServer.sh --config ./conf start

start-foreground

  • 說明:用來啓動服務器,與start的區別是其啓動的服務器是在前臺運行的,因此信息都會輸出到前臺
  • 演示案例:
# 停止服務器
./bin/zkServer.sh --config ./conf stop

# 在前臺啓動服務器
./bin/zkServer.sh --config ./conf start-foreground

restart

  • 說明:重啓服務器
  • 演示案例:
./bin/zkServer.sh restart

stop

  • 說明:用來停止服務器
  • 演示案例:
./bin/zkServer.sh --config ./conf stop

version

  • 說明:顯示服務器的版本
  • 演示案例:
./bin/zkServer.sh version

status

  • 說明:顯示服務器的狀態、模式和角色
  • 演示案例:
./bin/zkServer.sh status

print-cmd

  • 說明:打印服務器的啓動參數
  • 演示案例:
./bin/zkServer.sh print-cmd

二、zkCli.sh

  • ZooKeeper客戶端工具

-timeout

  • 功能:連接服務器的超時時間,單位爲毫秒
  • 例如:連接服務器,超時等待時間爲3秒
./bin/zkCli.sh -timeout 3000

-server

  • 功能:指定要連接服務器
  • 例如:連接服務器的地址爲127.0.0.1:2181
./bin/zkCli.sh -server 127.0.0.1:2181

-client-configuration

  • 功能:指定連接服務器時使用的配置文件
  • 例如:連接服務器的地址爲127.0.0.1:2181
./bin/zkCli.sh -client-configuration /path/to/client.properties

連接信息分析

  • 當我們連接到服務端的時候會有一些詳細的信息輸出,我們來分析一下:
    • ①客戶端啓動程序來建立一個會話
    • ②客戶端嘗試連接到localhost/127.0.0.1:2181
    • ③客戶端連接成功,服務器開始初始化這個會話
    • ④會話初始化完成,會話ID爲0x10007b4f27d0000
    • ⑤服務器向客戶端發送一個SyncConnected事件

查看命令列表

  • 輸入任意錯誤的命令即可查看命令列表

close

  • 功能:關閉當前客戶端/會話與服務端的連接
  • 關閉之後還可以再次進行連接
  • 演示案例:
close

quit

  • 功能:退出當前客戶端
  • 演示案例:
quit

connect

  • 功能:關閉當前客戶端/會話
  • 格式:
connect host:port
  • 備註:
    • 如果當前會話已斷開(調用了close),可以使用這個命令連接到服務器
    • 如果當前會話未斷開,可以調用這個命令來切換連接到其他服務節點
  • 演示案例,接着上面的演示案例,我們重新去連接
connect 127.0.0.1:2181

config

  • 功能:關閉當前客戶端/會話
  • 格式:
config [-c] [-w] [-s]
  • 演示案例:

version

  • 功能:顯示zookeeper客戶端的版本
  • 演示案例:
version

create

  • 功能:用來創建一個znode節點
  • 格式:
create [-s] [-e] [-c] [-t ttl] path [data] [acl]
  • 參數:
    • 默認情況下,忽略任何參數時:創建的是持久性節點
    • -s:創建持久有序節點
    • -e:創建臨時節點
    • -s -e組合:創建臨時有序節點
    • -c:創建容器節點。當容器的最後一個子容器被刪除時,該容器將被刪除
    • -t :創建ttl node節點,節點在ttl時間之後會自動刪除,時間單位爲毫秒
    • path:創建節點的路徑
    • data:創建節點時給節點指定的數據(可選)
    • acl:acl規則
  • 演示案例:創建持久性節點
create /persistent_node "persistent_node"

  • 演示案例:創建持久有序節點
create -s /test_node "HelloWorld"

  • 演示案例:創建臨時節點
create -e /tempnode "tempnode"

  • 演示案例:創建臨時有序節點
create -s -e /ephemeral-sequential_node "ephemeral-sequential_node"

  • 演示案例:創建容器節點。當容器的最後一個子容器被刪除時,該容器將被刪除
create -c /container_node "container_node"

  • 演示案例:創建ttl節點,ttl時間爲5秒
# 創建ttl節點,ttl時間爲5秒
create -t 5000 /ttl_node "ttl_node"

# 5秒之內查看
get /ttl_node

# 5秒之後查看
get /ttl_node

delete

  • 功能:用刪除一個znode節點
  • 格式:
delete [-v version] path
  • 選項:
    • -v:指定一個版本,當且僅當節點的版本號與version相等時才刪除
  • 演示案例:將上面我們創建的節點全部刪除

deleteall

  • 功能:刪除特定路徑下的所有節點
  • 格式:
deleteall path [-b batch size]

get

  • 功能:獲取特定路徑的數據
  • 格式:
get [-s] [-w] path
  • 參數:
    • -s:查看節點的狀態信息
    • -w:監視(watch)節點上數據的變化。備註:要將printwatches設置爲on纔可以使用
  • 演示案例:默認情況下,輸出節點的數據
create /latest_producer_id_block "latest_producer_id_block"
get /latest_producer_id_block

create /test_node
get /test_node

  • 演示案例:查看節點的狀態信息
get -s /latest_producer_id_block

  • 演示案例:監視(watch)節點上數據的變化
printwatches on

# 添加監視
get -w /latest_producer_id_block

# 刪除該節點時,會有信息輸出
delete /latest_producer_id_block

getAllChildrenNumber

  • 功能:獲取特定路徑下的所有子節點數
  • 格式:
getAllChildrenNumber path
  • 演示案例:

getEphemerals

  • 功能:獲取此會話創建的所有臨時節點
  • 格式:
getEphemerals path
  • 演示案例:
# 創建一個臨時節點
create -e /temporary_node

getEphemerals

history

  • 功能:顯示您最近執行的11個命令的歷史
  • 當前會話結束之後,歷史全部消失
  • 演示案例:
history

addWatch

  • 功能:對一個節點添加監視
  • 格式:
addWatch [-m mode] path
  • 選項:
    • -m:可選的值有PERSISTENT,PERSISTENT_RECURSIVE。默認爲PERSISTENT_RECURSIVE

removewatches

  • 功能:刪除節點下的監視
  • 格式:
removewatches path [-c|-d|-a] [-l]
  • 演示案例:
create /test_node

get -w /test_node

removewatches /test_node

 

listquota

  • 功能:列出一個路徑的配額
  • 格式:
listquota path
  •  演示案例:
listquota /zookeeper

delquota

  • 功能:刪除路徑下的配額
  • 格式:
delquota [-n|-b] path

setquota

  • 功能:在一個路徑中設置配額
  • 格式:
setquota -n|-b val path
  • 選項:
    • -n:限制子節點的數量(包括它本身) 
    • -b:限制一個路徑的字節(數據長度)
  • 備註:-n和-b不是強制約束,當超過指定的值時只會給出一個警告。例如下面分別爲超出子節點數量和路徑長度時給出的警告

  • 演示案例:
setquota -n 2 /quota_test
  • 演示案例:
setquota -b 5 /brokers

ls

  • 功能:列出一個路徑的子節點
  • 格式:
ls [-s] [-w] [-R] path
  • 選項如下:
    • -s:列出節點的狀態信息(與get -s的功能是一樣的)
    • -w:監視(watch)節點上數據的變化。備註:要將printwatches設置爲on纔可以使用(與get -w的功能是一樣的)
    • -R: 遞歸地顯示子節點
  • 演示案例:列出/zookeeper節點的狀態信息
ls -s /zookeeper

  • 演示案例:監視/zookeeper節點上數據的變化
printwatches on

ls -w /zookeeper

  • 演示案例:遞歸地顯示子節點
ls -R /zookeeper

printwatches

  • 功能:開關,用來是否打印監視(watchers)信息
  • 格式:
printwatches on|off
  • 演示案例:
printwatches on

reconfig

  • 功能:在運行時更改集合的成員
  • 在使用之前,可以參閱有關重新配置功能的詳細信息,尤其是“安全性”部分:https://zookeeper.apache.org/doc/current/zookeeperReconfig.html
  • 使用條件:
    • 在配置文件zoo.cfg中設置了reconfigEnabled = true
    • 添加超級用戶或skipAcl,否則將顯示“身份驗證無效”。例如:addauth digest zookeeper:admin
  • 格式:
reconfig [-s] [-v version] [[-file path] | 
[-members serverID=host:port1:port2;port3[,...]*]] |
 [-add serverId=host:port1:port2;port3[,...]]* [-remove serverId[,...]*]
  • 演示案例:
    • 將跟隨者2(Follower)更改爲觀察者(Observer),同時指定其端口從2182更改爲12182
    • 將觀察者5(Observer)添加到集合中
    • 將觀察者4(Observer)移除到集合中
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中的配置,當且僅當前配置版本爲2100000010時纔會說呢過小

reconfig -file /data/software/zookeeper/zookeeper-test/conf/myNewConfig.txt -v 2100000010

redo

  • 功能:從歷史記錄重做cmd
  • 格式:
redo cmdno
  •  演示案例:重新執行history ID爲1的命令

 

set

  • 功能:設置/更新路徑上的數據
  • 格式:
set [-s] [-v version] path data
  • 選項:
    • -s:顯示此節點的狀態
    • -v:使用CAS設置數據,當且僅當節點的dataVersion=version才能修改,dataVersion可以i使用stat命令查看
  • 演示案例:更改一個節點的數據
set /test_node "World"

  • 演示案例:更改一個節點的數據時,同時顯示此節點的狀態
set -s /test_node "Hello"

  • 演示案例:更更改/test_node節點的數據,修改前它數據版本dataVersion爲2,更改之後加1
set -v 0 /test_node "World"

addauth

  • 功能:添加ACL的授權用戶
  • 格式:
addauth scheme auth
  •  演示案例(待續):
create /acl_digest_test

getAcl /acl_digest_test

addauth digest user1:12345

getAcl /acl_digest_test

setAcl

  • 功能:設置一個節點的Acl權限
  • 格式:
setAcl [-s] [-v version] [-R] path acl
  • 選項:
    • -R:設置Acl遞歸
    • -v:當且僅當節點所屬的aclVersion與version相等時才設置Acl
  • 演示案例:
setAcl -R /acl_auth_test auth:user1:12345:crwad
  • 演示案例: 
setAcl -v 3 /acl_auth_test auth:user1:12345:crwad

getAcl

  • 功能:獲取一個路徑的ACL權限
  • 格式:
getAcl [-s] path
  • 演示案例:
create /acl_test mydata ip:127.0.0.1:crwd

getAcl /acl_test

stat

  • 功能:顯示一個節點的統計/元數據
  • 格式:
stat [-w] path
  • 選項:
    • -w:顯示數據時同時在節點上設置觀察點
  • 演示案例:
stat /zookeeper

sync

  • 功能:在leader和follower之間同步一個節點的數據(異步同步)
  • 格式:
sync path
  • 演示案例:
sync /

三、zkCleanup.sh

  • 功能:清理舊的快照和事務日誌

演示案例

  • 保持最新的5個日誌和快照
./bin/zkCleanup.sh -n 5

四、zkEnv.sh

  • 功能:ZooKeeper服務器的環境設置

日誌屬性的設置

  • ZOO_LOG_DIR:存儲日誌的目錄

五、zkSnapShotToolkit.sh

  • 功能:將快照文件轉儲到stdout,顯示每個zk節點的詳細信息

-d

  • 功能:顯示帶有數據內容的每個zk節點信息
  • 後面的路徑爲dataDir選項所指定的路徑
  • 演示案例(內容過多,截圖不完整):
./bin/zkSnapShotToolkit.sh -d /tmp/zookeeper/version-2/snapshot.4

-json

  • 功能:以json格式顯示每個zk節點信息
  • 後面的路徑爲dataDir選項所指定的路徑
  • 演示案例(內容過多,截圖不完整):
./bin/zkSnapShotToolkit.sh -json /tmp/zookeeper/version-2/snapshot.4

六、zkTxnLogToolkit.sh

  • 功能:是ZooKeeper附帶的命令行工具,可以恢復CRC損壞的事務日誌條目

  • 詳細請參考文檔

七、zkServer-initialize.sh

  • 待續
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章