Zookeeper支持某些特定的四字命令字母與其的交互。他們大多數是查詢命令,用來獲取Zookeeper服務的當前狀態及相關信息。用戶在客戶端可以通過telnet或nc 向Zookeeper提交相應的命令。
Shell操作
下面是幾個簡單的示例,這些並不是在Zookeeper客戶端進行的,而是在正常的linux中的shell命令行。
Zookeeper的shell操作
首先,需要進入到Zookeeper的客戶端,連接到相關的服務之後可以輸入help來查看對應的命令:
幾個常用的命令解釋:
命令 | 描述 |
---|---|
ls | 和linux的shell一樣,列出某個路徑下的節點 |
create pathname [data] | 創建一個新的Znode節點,參數爲節點的絕對路徑和它相關的字符(數據) |
get pathname | 獲取節點下的信息,包括3個部分,data,stat,children |
set pathname data | 更新節點的數據 |
delete pathname | 刪除某個節點 |
關於設置權限的命令setAcl,Zookeeper包括四個內置的schema,包括world,auth,digest,ip。默認爲world:
- world:其權限相當於任何人都可操作,有個單一的ID,anyone
- auth:不使用任何ID,表示任何通過驗證的用戶(這裏不知是通過zk驗證的用戶,還是連接到此zk服務器的用戶)
- digest:使用用戶名:密碼,字符串生成的MD5哈希值作爲ACL標識符。權限的驗證通過直接發送用戶名密碼字符串的方式完成。(常用的方式)
- ip:使用客戶端主機ip地址作爲一個ACL標識符,ACL表達式以addr/bites的形式表示,zk服務器會將addr的前bits位與客戶端地址的前bits位來進行匹配驗證權限。
一般會採用digest的方式來進行Zookeeper中的權限控制,在命令行客戶端中,如果密碼採用明文會有問題,網上的其他同胞發現digest的密碼生成方式是Sha1摘要的base64形式,所以可以用其他語言生成密碼摘要再進行操作。
下面是一個使用digest控制權限的簡單示例: