ZooKeeper安裝筆記

五柳-先生發表於2015-07-21

ZookKeeper 是Apache的頂級專案之一,我們可用它來做配置管理叢集管理訊息佇列等。

安裝相對簡單,同樣有單機和分散式倆種安裝模式,單機少一些配置,本文給出安裝方法和一些常用管理命令等。

環境要求

  1. linux 或者 windows(生產環境最好不用)

  2. jdk1.6 以上

設定Java heap 大小。避免記憶體與磁碟空間的交換,能夠大大提升ZK的效能,設定合理的heap大小則能有效避免此類空間交換的觸發。在正式釋出上線之前,建議是針對使用場景進行一些壓力測試,確保正常執行後記憶體的使用不會觸發此類交換。通常在一個實體記憶體為4G的機器上,最多設定-Xmx為3G。

  1. 下載ZK,http://zookeeper.apache.org/releases.html
    並解壓到usr/local/zookeeper
  2. 三臺虛擬機器:
    server.1=zoo1:2888:3888
    server.2=zoo2:2888:3888
    server.3=zoo3:2888:3888

Zookeeper配置

編輯配置檔案,在conf目錄:

move ./zoo_sample.cfg ./zoo.cfg
vim zoo.cfg

內容如下:

tickTime=2000
dataDir=/var/lib/zookeeper/data
clientPort=2181
initLimit=5
syncLimit=2

##單機不需要以下配置
server.1=zoo1:2888:3888
server.2=zoo2:2888:3888
server.3=zoo3:2888:3888

設定Myid,單機不需要

server.id=host:port:port 的格式,server固定,後面的數字是此伺服器在叢集中的序號[1~255],並需要data目錄下建立檔案myid來儲存當前server的id。

設定伺服器id:

echo 1 >> /var/lib/zookeeper/data/myid

其他倆臺分別執行:

echo 2 >> /var/lib/zookeeper/data/myid

echo 3 >> /var/lib/zookeeper/data/myid

啟動ZK

cd /usr/local/zookeeper/bin
./zkServer.sh start (windows下是zkServer.cmd)

檢視啟動狀態:

./zkServer.sh status

通過ZK客戶端連線ZK

./zkCli.sh 或者 ./zkCli.sh -server 127.0.0.1:2181

需要注意的是在叢集模式下,ZK不能像Hadoop那樣只需要在master下執行啟動命令Hadoop自動啟動slaves,ZK需要手動去啟動每個節點!

至此,ZK安裝配置結束!

Zookeeper配置引數說明

  1. tickTime:這個時間是作為 Zookeeper 伺服器之間或客戶端與伺服器之間維持心跳的時間間隔,單位毫秒。

  2. dataDir:是 Zookeeper 儲存資料和日誌的目錄。

  3. clientPort:這個埠就是客戶端連線 Zookeeper 伺服器的埠。

  4. initLimit:這個配置項是用來配置 Zookeeper 接受客戶端(這裡所說的客戶端不是使用者連線 Zookeeper 伺服器的客戶端,而是 Zookeeper 伺服器叢集中連線到 Leader 的 Follower 伺服器)初始化連線時最長能忍受多少個心跳時間間隔數。當已經超過 5個心跳的時間(也就是 tickTime)長度後 Zookeeper 伺服器還沒有收到客戶端的返回資訊,那麼表明這個客戶端連線失敗。總的時間長度就是 5*2000=10 秒

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

  6. server.id=host:port1:port2:其中 id 是一個數字,表示這個是第幾號伺服器;
    host 是這個伺服器的 ip 地址;
    port1 表示的是這個伺服器與叢集中的 Leader 伺服器交換資訊的埠;
    port2 表示的是萬一叢集中的 Leader 伺服器掛了,需要一個埠來重新進行選舉,選出一個新的 Leader,而這個埠就是用來執行選舉時伺服器相互通訊的埠。

JMX遠端支援

Zookeeper預設開啟JMX,只限本地連線,遠端連線需要修改啟動指令碼

開啟 ./bin/zkServer.sh找到:

ZOOMAIN="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.local.only=$JMXLOCALONLY org.apache.zookeeper.server.quorum.QuorumPeerMain"

加入啟動引數:

-Dcom. sun.management.jmxremote.port=5000 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false

如:

ZOOMAIN="-Dcom. sun.management.jmxremote.port=5000 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false org.apache.zookeeper.server.quorum.QuorumPeerMain"

Zookeeper四字命令

ZK服務提供了下列命令讓管事員來測試服務的執行情況。

  1. stat: 檢視ZK結點follower或leader情況。
  2. srst: 重置通過stat檢視的統計結果資訊。
  3. ruok: 測試Server,若回覆imok表示已經啟動。
  4. dump: 列出未經處理的會話和臨時節點。
  5. kill: 關掉server, 必須在ZK服務執行的機器上執行。
  6. conf: 輸出相關服務配置的詳細資訊。
  7. cons: 列出所有連線到伺服器的客戶端的完全的連線 / 會話的詳細資訊。
  8. crst: 重置 connection/session 所有連線的統計資訊。
  9. envi: 輸出關於服務環境的詳細資訊。
  10. reqs: 列出未經處理的請求。
  11. wchs: 列出伺服器 watch 的詳細資訊。
  12. wchc: 通過 session 列出伺服器 watch 的詳細資訊,它的輸出是一個與 watch 相關的會話的列表。
  13. wchp: 通過路徑列出伺服器 watch 的詳細資訊。它輸出一個與 session 相關的路徑。
  14. srvr: 列出服務的詳細資訊。
  15. mntr: 列印所有可以用來監控叢集服務健康狀態資訊的變數。

用法:
linux: echo mntr|nc 127.0.0.1 2181

zk_version  3.4.0
zk_avg_latency  0
zk_max_latency  0
zk_min_latency  0
zk_packets_received 70
zk_packets_sent 69
zk_outstanding_requests 0
zk_server_state leader
zk_znode_count   4
zk_watch_count  0
zk_ephemerals_count 0
zk_approximate_data_size    27
zk_followers    4                   - only exposed by the Leader
zk_synced_followers 4               - only exposed by the Leader
zk_pending_syncs    0               - only exposed by the Leader
zk_open_file_descriptor_count 23    - only available on Unix platforms
zk_max_file_descriptor_count 1024   - only available on Unix platforms

windows: telnet 127.0.0.1 2181 然後輸入:stat等四字命令。

更多ZK管理內容請參考:http://zookeeper.apache.org/doc/trunk/zookeeperAdmin.html

Zookeeper客戶端常用命令

進入zkCli後敲入help,或者隨便敲幾個字元ZK會列印出如下資訊:

get path [watch]
ls path [watch]
set path data [version]
rmr path
delquota [-n|-b] path
quit 
printwatches on|off
create [-s] [-e] path data acl
stat path [watch]
close 
ls2 path [watch]
history 
listquota path
setAcl path acl
getAcl path
sync path
redo cmdno
addauth scheme auth
delete path [version]
setquota -n|-b val path

注:path 要以 / 打頭;使用監聽如:get /t watch

參考網址

http://zookeeper.apache.org/doc/trunk/zookeeperStarted.html
http://zookeeper.apache.org/doc/trunk/zookeeperAdmin.html
http://www.cnblogs.com/haippy/archive/2012/07/19/2599989.html

轉載地址: http://www.cnblogs.com/xguo/archive/2013/05/18/3086143.html

相關文章