Zookeeper命令列操作
引子
上一篇講了如何快速搭建Zookeeper環境,如何驗證Zookeeper是否啟動成功呢?使用java自帶的Jps檢視QuorumPeerMain程序,其他兩種方法:
telnet方式
telnet 127.0.0.1 2181
客戶端指令碼方式
zkServer.cmd status 檢視
客戶端指令碼
在使用命令列之前有必要了解一下客戶端指令碼的作用
廢話不多說,解釋如下:
zkCleanup: 清理Zookeeper歷史資料,包括日誌檔案和快照資料檔案
zkCli : Zookeeper的一個簡易的可互動的客戶端
zkEnv : 設定Zookeeper的環境變數
zkServer : Zookeeper服務啟停指令碼
如上可知,通過zkCli可以使用命令行了,具體登入辦法:
zkCli.cmd (預設登入本地的zookeeper伺服器)
zkCli.cmd -server ip:port (遠端登入指定的環境)
登入情況如下圖:
命令列的使用
建立 create [ -s ] [ -e ] path data acl
[ -s ] 建立順序節點的 ,指定生效
[ -e ] 建立臨時節點,需要指定生效,會話失效後,節點消失
path 建立節點的名稱
data 該節點存取的資料
acl 許可權控制,預設下不做任何許可權控制
關於acl的使用和分析,後邊的文章會著重介紹,如下是簡單使用不加-s -e 則是永久節點
讀取 ls / get / ls2 stat
watch 是註冊一個事件,當其他客戶端對當前節點進行更改時,這個事件會且只會生效一次進行通知提示
資料簡單說明
第一行是我們存放的資料或者子節點
cZxid 節點建立時的zxid
ctime 節點建立時間戳
mzxid 節點最新一次更新發生時的zxid.
mtime 節點最新一次更新發生時的時間戳.
pZxid 該節點子節點最近一次建立/刪除的時間戳對應
dataVersion 節點資料的更新次數.
cversion 其子節點的更新次數.
aclVersion 節點ACL(授權資訊)的更新次數.
ephemeralOwner 如果該節點為ephemeral節點, ephemeralOwner值表示與該節點繫結的session id. 如果該節點不是ephemeral節點, ephemeralOwner值為0. 至於什麼是ephemeral節點, 請看後面的講述.
dataLength 節點資料的位元組數.
numChildren 子節點個數.
更新 set path data [ version ]
關於資料更新中版本的問題,後邊會進行介紹
刪除 delete path [ version ] / rmr path
delete和rmr命令區別在於rmr會遞迴刪除命令,當znode節點下有子節點時,rmr會首先去刪除子節點,再刪除znode,而delete必須要先手動刪除znode節點下的子節點。
所謂配額就是對於節點進行限制,比如說-b 限制節點值的長度,-n 限制節點的個數,有興趣的童鞋可以自己嘗試一下。
- 顯示配額 listquota path
- 設定配額 setquota -n | -b val path
- 刪除配額 delquota [ -n | -b ] path
- 設定ACL許可權控制
五種許可權:
CREATE、READ、WRITE、DELETE、ADMIN 也就是 增、刪、改、查、管理許可權,這5種許可權簡寫為crwda,這5種許可權中,delete是指對子節點的刪除許可權,其它4種許可權指對自身節點的操作許可權
身份的認證有4種方式:
world:預設方式,相當於全世界都能訪問
auth:代表已經認證通過的使用者(cli中可以通過addauth digest user:pwd 來添加當前上下文中的授權使用者)
digest:即使用者名稱:密碼這種方式認證,這也是業務系統中最常用的
ip:使用Ip地址認證
設定訪問控制方式
方式一:(推薦)
1)增加一個認證使用者
addauth digest 使用者名稱:密碼明文
2)設定許可權
setAcl /path auth:使用者名稱:密碼明文:許可權
3)檢視Acl設定
getAcl /path
方式二:
setAcl /path digest:使用者名稱:密碼密文:許可權
注:這裡的加密規則是SHA1加密,然後base64編碼。
剩下的命令較為簡單,這裡不再介紹,有興趣的童鞋可以度娘一下
- 強制同步 sync path
- 設定和顯示監視狀態 printwatches on|off
- 顯示歷史命令列表 history
- 重複執行history列表中的指令 redo id
- 退出 quit
- 連線其他伺服器 connect host:port
- 關閉連線 close
結尾
關於Zookeeper客戶端命令就暫時講到這裡,客戶端命令中對於ACl,WATCH等一些問題在接下來的文章中在進行深入的分析一下。