1. 程式人生 > >ZooKeeper之(四)配置與命令

ZooKeeper之(四)配置與命令

4.1 配置檔案

ZooKeeper安裝好之後,在安裝目錄的conf資料夾下可以找到一個名為“zoo_sample.cfg”的檔案,是ZooKeeper配置檔案的模板。

ZooKeeper啟動時,會預設載入“conf/zoo.cfg”作為配置檔案,所以需要將“zoo_sample.cfg”複製一份,命名為“zoo.cfg”,然後根據需要設定裡面的配置項。

配置項很簡單,說明如下:

tickTime=2000

這個時間是作為 ZooKeeper伺服器之間或客戶端與伺服器之間維持心跳的時間間隔,也就是每個 tickTime 時間就會發送一個心跳。單位為毫秒。

initLimit=10

這個配置項是用來配置 Leader接受Follower 初始化連線時最長能忍受多少個心跳時間間隔數。當已經超過 10 個心跳的時間(也就是 tickTime)長度後 Leader還沒有收到Follower的返回資訊,那麼表明這個Follower連線失敗。總的時間長度就是 5*2000=10 秒。

syncLimit=5

這個配置項標識 Leader 與 Follower 之間傳送訊息,請求和應答時間長度,最長不能超過多少個tickTime 的時間長度,總的時間長度就是5*2000=10 秒。

dataDir=/tmp/zookeeper

顧名思義就是 ZooKeeper儲存資料的目錄,用於存放記憶體資料庫快照的資料夾,同時用於叢集的myid檔案也存在這個資料夾裡。預設情況下,ZooKeeper 將寫資料的日誌檔案也儲存在這個目錄裡。注意:一個配置檔案只能包含一個dataDir字樣,即使它被註釋掉了。

clientPort=2181

這個埠就是客戶端連線 ZooKeeper伺服器的埠,ZooKeeper 會監聽這個埠,接受客戶端的訪問請求。

maxClientCnxns=60

最大的客戶端連線數,預設為60.

autopurge.snapRetainCount=3

autopurge.purgeInterval=1

客戶端在與ZooKeeper互動過程中會產生非常多的日誌,而且ZooKeeper也會將記憶體中的資料作為snapshot儲存下來,這些資料是不會被自動刪除的,這樣磁碟中這樣的資料就會越來越多。不過可以通過這兩個引數來設定,讓zookeeper自動刪除資料。autopurge.purgeInterval就是設定多少小時清理一次。而autopurge.snapRetainCount是設定保留多少個snapshot,之前的則刪除。

4.2 服務端命令

“zkServer.sh”指令碼用於執行Zookeeper的啟動、停止及狀態檢視等操作

利用“zkServer.sh help”命令,可以檢視支援的引數:


可見,“zkServer.sh”可以附帶的引數有:

(1)start:用於啟動服務端

(2)stop:用於停止服務端

(3)restart:用於重啟服務端

(4)status:用於檢視服務端狀態

以及用於前臺啟動、更新等操作的其他引數。

例如,使用命令“zkServer.sh start”啟動ZooKeeper服務端,該命令後面可以附帶引數,用於指定配置檔案的路徑,比如“zkServer.sh start ../conf/ZooKeeper.cfg”,代表使用ZooKeeper.cfg作為配置檔案,如果不指定路徑,預設載入“conf/zoo.cfg”檔案:


使用“zkServer.sh stop”停止服務端:


4.3 客戶端命令

使用命令“zkCli.sh -server 127.0.0.1:2181”可以連線到IP為“127.0.0.1”,埠為“2181”的ZooKeeper伺服器。如果連線本機的2181埠,則後面的引數可以省略。如:


此時,輸入“help”可以檢視命令引數:


4.3.1 檢視節點列表

在前面已經提到過,ZooKeeper維護者一個樹形的資料結構,根節點為“/”。

ls path”用於檢視路徑path下的所有直接子節點:


可見,系統初始化的時候,根節點下會自動建立一個名為“zookeeper”的節點,用於儲存ZooKeeper的管理資訊。所以使用者不能再根節點下建立同名的子節點。

4.3.2 建立新節點

create path data”用於在path路徑下建立一個新節點,攜帶資料data。

例如,在根節點下新建一個名為“firstNode”節點,儲存的資料為“HelloWorld”:


4.3.3 檢視節點資料

get path”用於獲取path節點下的資料,例如:


除了返回節點儲存的資料之外,還有一系列的元資訊,如代表節點建立時間的“cZxid”、“ctime”(兩種表示方法);節點的修改時間“mZxid”、“mtime”等。

4.3.4 修改節點資料

set path data ”用於將path節點下的資料更改為data。

如,將“/firstNode”下的資料更改為“WorldHello”:


4.3.5 刪除節點

delete path”用於刪除path節點。

如,刪除“/firstNode”節點:

 

此外,還有用於設定節點ACL、檢視節點狀態等其他命令,需要時可以查閱相關手冊。

4.4 ZooKeeper四字命令

ZooKeeper 支援某些特定的四字命令字母與其的互動。它們大多是查詢命令,用來獲取 ZooKeeper 服務的當前狀態及相關資訊。使用者在客戶端可以通過 telnet 或 nc 向 ZooKeeper 提交相應的命令。

ZooKeeper四字命令

功能描述

conf

輸出相關服務配置的詳細資訊

cons

列出所有連線到伺服器的客戶端的完全的連線 / 會話的詳細資訊。包括“接受 / 傳送”的包數量、會話 id 、操作延遲、最後的操作執行等等資訊

dump

列出未經處理的會話和臨時節點

envi

輸出關於服務環境的詳細資訊(區別於 conf 命令)

reqs

列出未經處理的請求

ruok

測試服務是否處於正確狀態。如果確實如此,那麼服務返回“ imok ”,否則不做任何相應

stat

輸出關於效能和連線的客戶端的列表

wchs

列出伺服器 watch 的詳細資訊

wchc

通過 session 列出伺服器 watch 的詳細資訊,它的輸出是一個與 watch 相關的會話的列表

wchp

通過路徑列出伺服器 watch 的詳細資訊。它輸出一個與 session 相關的路徑

例如,檢視配置資訊:

echo conf | nc 127.0.0.1 2181”:

nc為“NetCat”工具提供的命令,通常的Linux發行版中都帶有NetCat。NetCat在網路工具中有“瑞士軍刀”美譽,被設計為一個簡單、可靠的網路工具,可通過TCP或UDP協議傳輸讀寫資料。

該命令的意思為,將“conf”命令傳遞給127.0.0.1的2181埠(即本機的ZooKeeper服務埠),並將響應打印出來: