1. 程式人生 > >Zookeeper命令列操作

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
     path [ watch ]  

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等一些問題在接下來的文章中在進行深入的分析一下。