首先說明一下如何打開zk服務端和客戶端,cd到zk安裝目錄下,運行bin/zkServer.shstart即可啟動服務端,運行bin/zkCli.sh –server ip:port即可啟動客戶端。
help命令
顯示客戶所支持的所有命令,如:
ZooKeeper -server host:port cmd args
connecthost:port
getpath [watch]
lspath [watch]
setpath data [version]
rmrpath
delquota[-n|-b] path
quit
printwatcheson|off
create[-s] [-e] path data acl
statpath [watch]
close
ls2path [watch]
history
listquotapath
setAclpath acl
getAclpath
syncpath
redocmdno
addauthscheme auth
deletepath [version]
setquota-n|-b val path
connect命令
連接zk服務端,與close命令配合使用可以連接或者斷開zk服務端。
如connect 127.0.0.1:2181
get命令
獲取節點信息,注意節點的路徑皆為絕對路徑,也就是說必要要從/(根路徑)開始。
如get /
hello world
cZxid = 0x0
ctime = Thu Jan 01 08:00:00 CST 1970
mZxid = 0x5
mtime = Thu Apr 27 15:09:00 CST 2017
pZxid = 0xc
cversion = 1
dataVersion = 2
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 11
numChildren = 1
詳解:
hello world為節點數據信息
cZxid節點創建時的zxid
ctime節點創建時間
mZxid節點最近一次更新時的zxid
mtime節點最近一次更新的時間
cversion子節點數據更新次數
dataVersion本節點數據更新次數
aclVersion節點ACL(授權信息)的更新次數
ephemeralOwner如果該節點為臨時節點,ephemeralOwner值表示與該節點綁定的session id. 如果該節點不是臨時節點,ephemeralOwner值為0
dataLength節點數據長度,本例中為hello world的長度
numChildren子節點個數
ls命令
獲取路徑下的節點信息,注意此路徑為絕對路徑,類似於linux的ls命令。
如ls /zookeeper
set命令
設置節點的數據。
如set /zookeeper "hello world"
rmr命令
刪除節點命令,此命令與delete命令不同的是delete不可刪除有子節點的節點,但是rmr命令可以刪除,注意路徑為絕對路徑。
如rmr /zookeeper/znode
delquota命令
刪除配額,-n為子節點個數,-b為節點數據長度。
如delquota –n 2,請參見listquota和setquota命令。
quit命令
退出。
printwatches命令
設置和顯示監視狀態,on或者off。
如printwatches on
create命令
創建節點,其中-s為順序充點,-e臨時節點。
如create /zookeeper/node1"test_create" world:anyone:cdrwa
其中acl處,請參見getAcl和setAcl命令。
stat命令
查看節點狀態信息。如stat /
cZxid = 0x0
ctime = Thu Jan 01 08:00:00 CST 1970
mZxid = 0x1f
mtime = Thu Apr 27 16:05:14 CST 2017
pZxid = 0xc
cversion = 1
dataVersion = 3
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 5
numChildren = 1
與get命令大體相同,請參見get命令。
close命令
斷開客戶端與服務端的連接。
ls2命令
ls2為ls命令的擴展,比ls命令多輸出本節點信息。
如 ls /zookeeper
history命令
列出最近的歷史命令。
如history
0 - ls /
1 - ls /
2 - ls2 /
3 - history
4 - listquota /zookeeper
5 – history
基本格式為:命令ID-命令,可以與redo命令配合使用。
listquota命令
顯示配額。
如listquota /zookeeper
absolute path is/zookeeper/quota/zookeeper/zookeeper_limits
Output quota for /zookeepercount=2,bytes=-1
解釋:
/zookeeper節點個數限額為2,長度無限額。
setAcl命令
設置節點Acl。
此處重點說一下acl,acl由大部分組成:1為scheme,2為user,3為permission,一般情況下表示為scheme:id:permissions。
其中scheme和id是相關的,下面將scheme和id一起說明。
scheme和id
world: 它下面只有一個id, 叫anyone, world:anyone代表任何人,zookeeper中對所有人有權限的結點就是屬於world:anyone的
auth: 它不需要id, 只要是通過authentication的user都有權限(zookeeper支持通過kerberos來進行authencation, 也支持username/password形式的authentication)
digest: 它對應的id為username:BASE64(SHA1(password)),它需要先通過username:password形式的authentication
ip: 它對應的id為客戶機的IP地址,設置的時候可以設置一個ip段,比如ip:192.168.1.0/16, 表示匹配前16個bit的IP段
super: 在這種scheme情況下,對應的id擁有超級權限,可以做任何事情(cdrwa)
permissions
CREATE(c): 創建權限,可以在在當前node下創建child node
DELETE(d): 刪除權限,可以刪除當前的node
READ(r): 讀權限,可以獲取當前node的數據,可以list當前node所有的child nodes
WRITE(w): 寫權限,可以向當前node寫數據
ADMIN(a): 管理權限,可以設置當前node的permission
綜上,一個簡單使用setAcl命令,則可以為:
setAcl /zookeeper/node1 world:anyone:cdrw
getAcl命令
獲取節點Acl。
如getAcl /zookeeper/node1
'world,'anyone
: cdrwa
注:可參見setAcl命令。
sync命令
強制同步。
如sync /zookeeper
由於請求在半數以上的zk server上生效就表示此請求生效,那么就會有一些zk server上的數據是舊的。sync命令就是強制同步所有的更新操作。
redo命令
再次執行某命令。
如redo 10
其中10為命令ID,需與history配合使用。
addauth命令
節點認證。
如addauth digest username:password,可參見setAcl命令digest處。
使用方法:
一、通過setAcl設置用戶名和密碼
setAcl pathdigest:username:base64(sha1(password)):crwda
二、認證
addauth digest username:password
delete命令
刪除節點。
如delete /zknode1
setquota命令
設置子節點個數和數據長度配額。
如setquota –n 4 /zookeeper/node 設置/zookeeper/node子節點個數最大為4
setquota –b 100 /zookeeper/node 設置/zookeeper/node節點長度最大為100
轉自https://blog.csdn.net/heihei36/article/details/70871074