Zookeeper --------操作命令篇
目錄
1、基礎命令操作
服務端常見命令:
(1)啓動服務命令:./zkServer.sh start
[root@localhost bin]# ./zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED //表示啓動服務成功
(2)查看服務狀態:./zkServer.sh status
[root@localhost bin]# ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Mode: standalone //代表是單集羣狀態
(3)關閉服務:./zkServer.sh stop
客戶端常見命令:
(1)連接服務器: ./zkCli.sh
[root@localhost bin]# ./zkCli.sh
Connecting to localhost:2181
2020-04-18 17:40:31,026 [myid:] - INFO [main:Environment@100] - Client environment:zookeeper.version=3.4.11-。。。。。。。。
WATCHER::
WatchedEvent state:SyncConnected type:None path:null //連接服務器成功
(2)查詢幫助命令:help
[zk: localhost:2181(CONNECTED) 0] help
ZooKeeper -server host:port cmd args
stat path [watch] //查詢某節點的狀態信息
set path data [version] //設置某個節點的值
ls path [watch] //查看某個路徑下的節點
delquota [-n|-b] path
ls2 path [watch] //ls命令和stat命令的整合
setAcl path acl //設置某個節點的權限
setquota -n|-b val path
history
redo cmdno
printwatches on|off
delete path [version] //刪除某個節點
sync path
listquota path
rmr path
get path [watch] //獲取某個節點的值
create [-s] [-e] path data acl //創建某個節點 -s表示順序創建 -e表示創建一個臨時節點
addauth scheme auth //新加用戶
quit //退出當前客戶端
getAcl path //獲取某個節點的權限信息
close
connect host:port //連接某個主機
(3)查看路徑下的節點:ls path
[zk: localhost:2181(CONNECTED) 1] ls / //查看根路徑下的節點
[zookeeper, imooc]
(4)獲取某個節點的信息: get path
[zk: localhost:2181(CONNECTED) 2] get /imooc //獲取imooc節點的值
123 //值爲123
cZxid = 0x19 //創建節點的id
ctime = Fri Apr 17 20:37:16 CST 2020 //節點的創建時間
mZxid = 0x19 //修改節點的id
mtime = Fri Apr 17 20:37:16 CST 2020 //修改節點的時間
pZxid = 0x32 //子節點的id
cversion = 9 //子節點的版本
dataVersion = 0 //當前節點數據的版本
aclVersion = 0 //權限的版本
ephemeralOwner = 0x0 //判斷是否是臨時節點
dataLength = 3 //數據的長度
numChildren = 1 //子節點的數量
2、watch機制命令操作
關於watcher
機制大體的理解可以爲,當每個節點發生變化,都會觸發watcher
事件,類似於mysql
的觸發器。zk
中 watcher
是一次性的,觸發後立即銷燬。
由help命令可以知道可以設置watch事件的有以下四種:
stat path [watch]
get path [watch]ls path [watch]
ls2 path [watch]
例如: stat path [watch] 設置watch事件
[zk: localhost:2181(CONNECTED) 16] ls /
[zookeeper]
[zk: localhost:2181(CONNECTED) 17] stat /imooc watch
Node does not exist: /imooc
[zk: localhost:2181(CONNECTED) 18] create /imooc 123WATCHER::
WatchedEvent state:SyncConnected type:NodeCreated path:/imooc
Created /imooc
[zk: localhost:2181(CONNECTED) 19]
get path [watch] 設置watch事件(該方式創建時,只有該節點的變化纔會觸發watch;其路徑上的子節點的一切變化都不會觸發事件)
[zk: localhost:2181(CONNECTED) 19] get /imooc watch
123
cZxid = 0x3e
ctime = Sat Apr 18 19:26:41 CST 2020
mZxid = 0x3e
mtime = Sat Apr 18 19:26:41 CST 2020
pZxid = 0x3e
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 3
numChildren = 0
[zk: localhost:2181(CONNECTED) 20] set /imooc 456WATCHER::
WatchedEvent state:SyncConnected type:NodeDataChanged path:/imooc
cZxid = 0x3e
ctime = Sat Apr 18 19:26:41 CST 2020
mZxid = 0x3f
mtime = Sat Apr 18 19:29:15 CST 2020
pZxid = 0x3e
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 3
numChildren = 0
[zk: localhost:2181(CONNECTED) 21]
ls path [watch]
3、ACL權限控制操作
ZK的節點有5種操作權限:CREATE、READ、WRITE、DELETE、ADMIN 也就是 增、刪、改、查、管理權限,這5種權限簡寫爲crwda(即:每個單詞的首字符縮寫)。
注:這5種權限中,delete是指對子節點的刪除權限,其它4種權限指對自身節點的操作權限
身份的認證有4種方式:
(1)world:默認方式,相當於全世界都能訪問
(2)auth:代表已經認證通過的用戶(cli中可以通過addauth digest user:pwd 來添加當前上下文中的授權用戶)
(3)digest:即用戶名:密碼這種方式認證,這也是業務系統中最常用的
(4)ip:使用Ip地址認證
使用 [scheme:id:permissions] 來表示acl權限
(1)getAcl:獲取某個節點的acl權限信息
[zk: localhost:2181(CONNECTED) 36] getAcl /imooc
'world,'anyone
: cdrwa
[zk: localhost:2181(CONNECTED) 37]
(2)setAcl:設置某個節點的acl權限
[zk: localhost:2181(CONNECTED) 37] setAcl /imooc world:anyone:cdwa //設置權限爲cdwa,即不可以讀該節點
cZxid = 0x3e
ctime = Sat Apr 18 19:26:41 CST 2020
mZxid = 0x45
mtime = Sat Apr 18 19:39:00 CST 2020
pZxid = 0x47
cversion = 4
dataVersion = 3
aclVersion = 1
ephemeralOwner = 0x0
dataLength = 3
numChildren = 0
[zk: localhost:2181(CONNECTED) 38] getAcl /imooc
'world,'anyone
: cdwa
[zk: localhost:2181(CONNECTED) 39] get /imooc
Authentication is not valid : /imooc //權限不夠,讀該節點失敗
[zk: localhost:2181(CONNECTED) 40]
(3)acl Auth 密碼明文設置
[zk: localhost:2181(CONNECTED) 48] getAcl /imooc
'world,'anyone
: cdrwa
[zk: localhost:2181(CONNECTED) 49] setAcl /imooc auth:lisi:123:cdrwa
cZxid = 0x3e
ctime = Sat Apr 18 19:26:41 CST 2020
mZxid = 0x45
mtime = Sat Apr 18 19:39:00 CST 2020
pZxid = 0x47
cversion = 4
dataVersion = 3
aclVersion = 3
ephemeralOwner = 0x0
dataLength = 3
numChildren = 0
[zk: localhost:2181(CONNECTED) 50] getAcl /imooc
'digest,'lisi:a1lTJf90grZbyldpZ2TMqcoQheU=
: cdrwa
[zk: localhost:2181(CONNECTED) 51]
(4)acl digest 密碼密文設置,他跟第(3)的區別就是:一個是明文輸入,一個是密文輸入
[zk: localhost:2181(CONNECTED) 52] ls /imooc
[]
[zk: localhost:2181(CONNECTED) 53] ls
[zk: localhost:2181(CONNECTED) 54] create /imooc/test 123
Created /imooc/test
[zk: localhost:2181(CONNECTED) 55] getAcl /imooc/test
'world,'anyone
: cdrwa
[zk: localhost:2181(CONNECTED) 56] setAcl /imooc/test digest:lisi:a1lTJf90grZbyldpZ2TMqcoQheU:cdraw
cZxid = 0x50
ctime = Sat Apr 18 20:06:13 CST 2020
mZxid = 0x50
mtime = Sat Apr 18 20:06:13 CST 2020
pZxid = 0x50
cversion = 0
dataVersion = 0
aclVersion = 1
ephemeralOwner = 0x0
dataLength = 3
numChildren = 0
[zk: localhost:2181(CONNECTED) 57] getAcl /imooc/test
'digest,'lisi:a1lTJf90grZbyldpZ2TMqcoQheU
: cdrwa
[zk: localhost:2181(CONNECTED) 58]
(5)acl ip 控制客戶端
[zk: localhost:2181(CONNECTED) 62] getAcl /imooc/test
'world,'anyone
: cdrwa
[zk: localhost:2181(CONNECTED) 63] setAcl /imooc/test ip:192.138.137.3:cdraw
cZxid = 0x54
ctime = Sat Apr 18 20:24:36 CST 2020
mZxid = 0x54
mtime = Sat Apr 18 20:24:36 CST 2020
pZxid = 0x54
cversion = 0
dataVersion = 0
aclVersion = 1
ephemeralOwner = 0x0
dataLength = 3
numChildren = 0
[zk: localhost:2181(CONNECTED) 64] getAcl /imooc/test
'ip,'192.138.137.3
: cdrwa
[zk: localhost:2181(CONNECTED) 65]
(6)acl super超級管理員