Zookeeper客戶端命令
zkCli.sh
默認爲本地服務端,連接到服務器
zkCli.sh -server ip:port
指定服務端,連接到服務集羣
help命令
connect host:port
連接到其他的zookeeper服務器
create [-s] [-e] path data acl
創建節點,-s爲創建有序列的節點,-e創建臨時節點,acl爲權限設置,具體Zookeeper-權限
get path [watch]
獲取節點信息,watch=true,則監聽該節點
delete path [version]
刪除節點。version=-1時,不匹配版本號,直接刪除。version爲其他值時,刪除對應版本號的節點。無法刪除有子節點的節點。
刪除,版本號dataVersion不對應的時候,刪除失敗。版本號對了,則刪除成功。
無法刪除有子節點的節點
rmr path
刪除節點命令,此命令與delete命令不同的是delete不可刪除有子節點的節點,但是rmr命令可以刪除,注意路徑爲絕對路徑
stat path[watch]
查看節點狀態信息,watch爲true,添加監聽器
監聽節點
使用客戶端修改water的節點數據
監聽器監聽修改節點事件
注意Stat設置是否監聽只能奏效一次,觸發後監聽就失效
set path data [version]
修改節點數據,version爲待修改數據的版本號。修改後,節點版本dataVersion數據新增
ls path [watch]
列出節點path的子節點,watch爲true,添加節點path的監聽器,如下圖
ls2 path [watch]
列出節點path的節點信息,同時包括狀態信息。wattch爲true時,會監聽該節點的觸發事件,但是觸發完後,該監聽事件就被清除了。
setquota -n|-b val path
設置節點的子節點最大個數或者最大長度。當子節點超過了限制,日誌會打印警告信息。
-n:限制該節點最大能擁有多少個子節點
-b:限制該節點能存儲的數據最大是多少字節
下圖我們創建foo了節點,同時我們限制其最大子節點個數爲3,但我們創建3個節點時候,日誌打印出了警告信息。
警告信息
delquota [-n|-b] path
刪除限制
下圖,當我們再次創建節點/foo/d的時候,日誌系統繼續發出提示。當我們刪除限制/foo,再次創建系欸但/foo/e的時候,日誌系統不再提示。
listquota path
顯示指定路徑下已經設置的限制
history
列出最近使用的命令
redo cmdno
與history配合使用,指定執行歷史某個命令
quit
退出連接
setAcl path acl
Acl表示爲scheme:id:permissions,第一個字段表示採用哪一種機制scheme,第二個id表示用戶user,第三個permissions表示相關權限(如只讀,讀寫,管理等)。zookeeper提供瞭如下幾種機制(scheme):
world: 它下面只有一個id, 叫anyone, world:anyone代表任何人,zookeeper中對所有人有權限的結點就是屬於world:anyone的,
默認情況下爲world。
默認Acl:
設置Acl:
auth: 它不需要id, 只要是通過authentication的user都有權限(zookeeper支持通過kerberos來進行authencation, 也支持username/password形式的authentication)
設置auth的Acl,先得創建使用addauth schema auth創建user:password。注意這裏digest是語法要求,和下面提到得digest不是一個概念。
設置Acl:
digest: 它對應的id爲username:BASE64(SHA1(password)),它需要先通過username:password形式的authentication
setAcl /testAcl/testB digest:user:6DY5WhzOfGsWQ1XFuIyzxkpwdPo=:crwa
ip: 它對應的id爲客戶機的IP地址,設置的時候可以設置一個ip段,比如ip:192.168.1.0/16, 表示匹配前16個bit的IP段
setAcl /testAcl/testB ip:192.168.249.139:crwa
CREATE(c): 創建權限,控制當前節點的子節點是否可以創建的權限
DELETE(d): 刪除權限,控制當前節點的子節點是否可以刪除的權限,不是控制本節點的刪除權限,本節點的刪除權限不受影響。
READ(r): 讀權限,控制當前節點讀的權限
WRITE(w): 寫權限,控制當前節點的權限
ADMIN(a): 管理權限,可以設置當前node的permission
addauth scheme auth
添加id:
close
關閉客戶端
printwatches on|off
printwathes命令用於設置和顯示監視狀態,值爲on或則off
sync path
sync命令用於強制同步,由於請求在半數以上的zk server上生效就表示此請求生效,那麼就會有一些zk server上的數據是舊的。sync命令就是強制同步所有的更新操作