常用shell腳本操作命令
shell腳本在zookeeper安裝根目錄的bin/路徑下。
- 啟動zk : bin/zkServer.sh start
- 查看ZK服務狀態: bin/zkServer.sh status
- 停止ZK服務: bin/zkServer.sh stop
- 重啟ZK服務: bin/zkServer.sh restart
- 連接服務器 : bin/zkCli.sh -server 127.0.0.1:2181
常用操作命令
使用help查看常用命令
常用命令介紹
ls /
使用 ls 命令來查看某個目錄包含的所有文件,例如:
[zk: localhost:2181(CONNECTED) 1] ls /
[zookeeper]
ls2 /
使用 ls2 命令來查看某個目錄包含的所有文件,與ls不同的是它查看到其他一些信息,例如:
[zk: localhost:2181(CONNECTED) 2] ls2 / [zookeeper] cZxid = 0x0 #節點創建的Zxid ctime = Thu Jan 01 08:00:00 CST 1970 #節點創建時間 mZxid = 0x0 #節點最新一次更新時的Zxid mtime = Thu Jan 01 08:00:00 CST 1970 #節點最新一次更新發生時的時間 pZxid = 0x0 #子節點最后一次被修改的zxid cversion = -1 #其子節點的更新次數 dataVersion = 0 #節點數據的更新次數 aclVersion = 0 #節點ACL授權的更新次數 ephemeralOwner = 0x0 #如果該節點為ephemeral節點, ephemeralOwner值表示與該節點綁定的session id. 如果該節點不是ephemeral節點, ephemeralOwner值為0. 至於什么是ephemeral節點, 請看后面的講述. dataLength = 0 #節點數據的字節數 numChildren = 1 #子節點的個數
zxid:致使ZooKeeper節點狀態改變的每一個操作都將使節點接收到一個遞增的事務id號,並且這個時間戳全局有序。也就是說,也就是說,每個對節點的改變都將產生一個唯一的Zxid。如果Zxid1的值小於Zxid2的值,那么Zxid1所對應的事件發生在Zxid2所對應的事件之前。實際上,ZooKeeper的每個節點維護者三個Zxid值,為別為:cZxid、mZxid、pZxid。
stat /
查看節點狀態屬性,不包含節點數據信息,例如:
[zk: localhost:2181(CONNECTED) 39] stat /
create
創建znode,並設置初始內容, 默認內容也可以是空串,附加參數 :-s:順序節點 ,-e:臨時節點 例如:
get
獲取znode節點數據,例如:
[zk: localhost:2181(CONNECTED) 17] get /test
set
修改znode節點內容,修改數據也可攜帶版本號,修改的時候要么不攜帶版本號,要么攜帶的版本號要跟dataVersion的版本號一致,否則就會報錯,例如:
delete
刪除沒有子節點的節點,如果有子節點將報Node not empty: /test 例如:
[zk: localhost:2181(CONNECTED) 36] delete /test
Node not empty: /test
rmr
已過時的方法,推薦使用deleteall
刪除節點,有子節點一並刪除
deleteall
刪除節點,有子節點一並刪除
setquota
配額,給節點限制值,比如限制子節點個數、節點數據的長度
-n:限制子節點個數
-b:限制值的長度
當創建節點超出配額時,zookeeper不會拋出異常,會在bin/zookeeper.out記錄警告信息。
listquota
listquota,查看配額,以及節點的配額狀態,例如:
delquota:刪除配額
close:關閉當前連接
history:查看歷史執行指令
redo命令
再次執行某命令。
如redo 10
其中10為命令ID,需與history配合使用。
sync:
由於請求在半數以上的zk server上生效就表示此請求生效,那么就會有一些zk server上的數據是舊的。sync命令就是強制同步所有的更新操作。
printwatches
在獲取節點數據、子節點列表等操作時,都可以添加watch參數監聽節點的變化,從而節點數據更改、子節點列表變更時收到通知,並輸出到控制台。默認是打開,可以設置參數將其關閉。 例如:
常用ACL命令
常用ACL命令參考下一篇博客:
https://blog.csdn.net/qq_34021712/article/details/82871976
運維四字命令
zk可以通過它自身提供的簡寫命令來和服務器進行交互,需要使用到nc命令.
安裝命令:
yum install nc
使用echo conf |nc 127.0.0.1 2181 查看zookeeper配置信息,報如下異常:
conf is not executed because it is not in the whitelist.
解決辦法,修改 conf/zoo.cfg 添加以下屬性
#開啟四字命令
4lw.commands.whitelist=*
再執行上面的命令,出現如下信息:
上圖中還有一種方式就是使用 telnet 127.0.0.1 2181 然后使用四字命令,下面列出四字命令信息:
conf
conf命令用於輸出 ZooKeeper服務器運行時使用的基本配置信息,包括clientPort、dataDir和tickTime等,以便運維人員能快速查看 ZooKeeper當前運行時的一些參數,如上圖所示。注意,conf命令輸出的配置信息僅僅是輸出一些最基本的配置參數。
另外,conf命令會根據當前的運行模式來決定輸出的信息。上圖所示的輸出信息是針對集群模式下的樣例,如果是單機模式(standalone),就不會輸出諸如initLimit、syncLimit、electionAlg和electionPort等集群相關的配置信息。
cons
cons命令用於輸出當前這台服務器上所有客戶端連接的詳細信息,包括每個客戶端的客戶端IP、會話ID和最后一次與服務器交互的操作類型等。
crst
crst命令是一個功能性命令,用於重置所有的客戶端連接統計消息
dump
dump命令用於輸出當前集群的所有會話信息,包括這些會話的會話ID,以及每個會話創建的臨時節點等信息。如果在Leader服務器上執行該命令的話,我們還能夠看到每個會話的超時時間。
envi
envi命令用於輸出 ZooKeeper所在服務器運行時的環境信息,包括os.version、java.version和user.home等。
ruok
ruok命令用於輸出當前 ZooKeeper服務器是否正在運行。該命令的名字非常有趣,其協議正好是“Are you ok”。執行該命令后,如果當前 ZooKeeper服務器正在運行,那么返回“imok”,否則沒有任何響應輸出。
請注意,ruok命令的輸出僅僅只能表明當前服務器是否正在運行,准確的講,只能說明2181端口打開着,同時四字命令執行流程正常,但是不能代表 ZooKeeper服務器是否運行正常。在很多時候,如果當前服務器無法正常處理客戶端的讀寫請求,甚至已經無法和集群中的其他機器進行通信,ruok命令依然返回“imok”。因此,一般來說,該命令並不是一個特別有用的命令,他不能反映 ZooKeeper服務器的工作狀態,想要更可靠的獲取更多 ZooKeeper運行狀態信息,可以使用下面馬上要講到的stat命令。
stat
stat命令用於獲取 ZooKeeper服務器的運行時狀態信息,包括基本的 ZooKeeper版本、打包信息、運行時角色、集群數據節點個數等消息,另外還會將當前服務器的客戶端連接信息打印出來。
除了一些基本的狀態信息外,stat命令還會輸出一些服務器的統計信息,包括延遲情況、收到請求數和返回的響應數等。注意,所有這些統計數據都可以通過srst命令進行重置。
srvr
srvr命令和stat命令的功能一致,唯一的區別是srvr不會將客戶端的連接情況輸出,僅僅輸出服務器的自身信息
srst
stst命令是一個功能行命令,用於重置所有服務器的統計信息。
wchs
wchs命令用於輸出當前服務器上管理的Watcher的概要信息。
wchc
wchc命令用於輸出當前服務器上管理的Watcher的詳細信息,以會話為單位進行歸組,同時列出被該會話注冊了Watcher的節點路徑。
wchp
wchp命令和wchc命令非常類似,也是用於輸出當前服務器上管理的Watcher的詳細信息,不同點在於wchp命令的輸出信息以節點路徑為單位進行歸組。
mntr
mntr命令用於輸出比stat命令更為詳盡的服務器統計信息,包括請求處理的延遲情況,服務器內存數據庫大小和集群的數據同步情況。在輸出結果中,每一行都是一個key-value的鍵值對,運維人員可以,根據這些輸出信息進行 ZooKeeper的運行時狀態監控。
如果在Leader服務器上執行該命令的話,可以獲取比Follower服務器更多的信息。
轉自:https://blog.csdn.net/qq_34021712/article/details/82871697