安裝ZK
下載安裝包
PS: Mac之前下載了3.5.6啓動之後,報錯
找不到或無法加載主類 org.apache.zookeeper.server.quorum.QuorumPeerMain
應該是lib下的jar包缺失,省的麻煩,我就直接下載了3.4.14版本
啓動ZkServer
執行zk的bin下面的啓動腳本;例如
sh ~/Documents/各種安裝包/zookeeper-3.4.14/bin/zkServer.sh start
查看狀態、停止zk服務
##查看zk啓動狀態
sh ~/Documents/各種安裝包/zookeeper-3.4.14/bin/zkServer.sh status
## 停止
sh ~/Documents/各種安裝包/zookeeper-3.4.14/bin/zkServer.sh stop
客戶端連接ZkServer
sh ~/Documents/各種安裝包/zookeeper-3.4.14/bin/zkCli.sh
ls 查看命令
get 獲取數據
get和stat的區別是get比stat多返回了節點數據:
[zk: localhost:2181(CONNECTED) 19] get /zookeeper/quota
cZxid = 0x0 #創建節點的id
ctime = Thu Jan 01 08:00:00 CST 1970 #節點的創建時間
mZxid = 0x0 #修改節點的id
mtime = Thu Jan 01 08:00:00 CST 1970 #修改節點的時間
pZxid = 0x0 #子節點的id
cversion = 0 #子節點的版本
dataVersion = 0 #當前節點數據的版本
aclVersion = 0 #權限的版本
ephemeralOwner = 0x0 #判斷是否是臨時節點
dataLength = 0 #數據的長度
numChildren = 0 #子節點的數量
create 創建節點
- create [-s] [-e] path data acl 可以注意一下各個版本的變化
-s: 創建順序節點 自動累加(全局累加)
-e:創建臨時節點
set path data [version] 修改節點
根據版本號修改
delete path [version] 刪除節點
delete只能用來刪除葉子節點,如果節點下有子節點的話則不能刪除
rmr path
用來刪除節點,與delete的區別是delete只能用來刪除葉子節點,如果節點下有子節點的話則不能刪除,則rmr可以刪除非葉子節點,即節點下有子節點時仍可以刪除節點,zk中的delete類似於Linux下的rmdir,只能用來刪除空目錄,而rmr則類似於rm -rf,不管目錄下面有什麼都遞歸刪除
watch通知機制
關於watcher機制大體的理解可以爲,當每個節點發生變化,都會觸發watcher事件,類似於mysql的觸發器。zk中 watcher是一次性的,觸發後立即銷燬。可以參考https://blog.csdn.net/hohoo1990/article/details/78617336
stat path [watch]
設置watch事件get path [watch]
設置watch事件- 子節點創建和刪除時觸發watch事件,子節點修改不會觸發該事件
stat path [watch] 設置watch事件
ACL權限控制
ZK的節點有5種操作權限:CREATE
、READ
、WRITE
、DELETE
、ADMIN
也就是 增、刪、改、查、管理權限,這5種權限簡寫爲crwda
(即:每個單詞的首字符縮寫)。
注:這5種權限中,delete
是指對子節點的刪除權限,其它4種權限指對自身節點的操作權限
身份的認證有4種方式:
world
:默認方式,相當於全世界都能訪問auth
:代表已經認證通過的用戶(cli中可以通過addauth digest user:pwd 來添加當前上下文中的授權用戶)digest
:即用戶名:密碼這種方式認證,這也是業務系統中最常用的ip
:使用Ip地址認證
使用[scheme:id:permissions]
來表示acl權限
getAcl:獲取某個節點的acl權限信息
setAcl 設置權限
acl Auth 密碼明文設置
acl digest 密碼密文設置
acl ip 控制客戶端
四字命令Four Letter Words
- 使用四字命令需要安裝
nc
命令,(yum install nc
)
stat 查看狀態信息
echo stat | nc 192.168.0.68 2181
ruok 查看zookeeper是否啓動
echo ruok | nc 192.168.0.68 2181
dump 列出沒有處理的節點,臨時節點
echo dump | nc 192.168.0.68 2181
conf 查看服務器配置
echo conf | nc 192.168.0.68 2181
cons 顯示連接到服務端的信息
echo cons | nc 192.168.0.68 2181
envi 顯示環境變量信息
echo envi | nc 192.168.0.68 2181
mntr 查看zk的健康信息
echo mntr | nc 192.168.0.68 2181
wchs 展示watch的信息
echo wchs | nc 192.168.0.68 2181
wchc和wchp 顯示session的watch信息 path的watch信息
- 需要在 配置
zoo.cfg
文件中添加4lw.commands.whitelist=*