zookeeper系列(八)zookeeper運維

zookeeper系列(一)zookeeper必知
zookeeper系列(二)實戰master選舉
zookeeper系列(三)實戰數據發佈訂閱
zookeeper系列(四)實戰負載均衡
zookeeper系列(五)實戰分佈式鎖
zookeeper系列(六)實戰分佈式隊列
zookeeper系列(七)實戰分佈式命名服務
zookeeper系列(八)zookeeper運維java

zookeeper運維

zookeeper配置詳解

1、ZK的最小配置
最小配置是指Zookeeper運行所需的最小配置,Zookeeper只須要配置這些項就能夠正常的運行Zookeeper。算法

  • clientPort
    配置ZK監聽客戶端鏈接的端口
  • dataDir
    內存數據庫快照存放地址,若是沒有指定事務日誌存放地址(dataLogDir),默認也是存放在這個路徑下,建議兩個地址分開存放到不一樣的設備上。
  • tickTime
    心跳基本時間單位,毫秒級,ZK基本上全部的時間都是這個時間的整數倍。

2、ZK的高級配置(可選)
高級配置是指有的須要直接經過系統屬性進行設置)shell

  • dataLogDir
    將事務日誌存儲在該路徑下,比較重要,這個日誌存儲的設備效率會影響ZK的寫吞吐量。
  • globalOutstandingLimit
    (Java system property: zookeeper.globalOutstandingLimit)默認值是1000,限定了全部鏈接到服務器上可是尚未返回響應的請求個數(全部客戶端請求的總數,不是鏈接總數),這個參數是針對單臺服務器而言,設定太大可能會致使內存溢出。
  • preAllocSize
    (Java system property: zookeeper.preAllocSize)默認值64M,以KB爲單位,預先分配額定空間用於後續transactionlog 寫入,每當剩餘空間小於4K時,就會又分配64M,如此循環。若是SNAP作得比較頻繁(snapCount比較小的時候),那麼請減小這個值。
  • snapCount
    (Java system property: zookeeper.snapCount)默認值100,000,當transaction每達到snapCount/2+rand.nextInt(snapCount/2)時,就作一次SNAPSHOT,默認狀況下是50,000~100,000條transactionlog就會作一次,之因此用隨機數是爲了不全部服務器可能在同一時間作snapshot.
  • traceFile (Java system property: requestTraceFile)
  • maxClientCnxns
    默認值是10,一個客戶端可以鏈接到同一個服務器上的最大鏈接數,根據IP來區分。若是設置爲0,表示沒有任何限制。設置該值一方面是爲了防止DoS攻擊。
  • clientPortAddress
    與clientPort匹配,表示某個IP地址,若是服務器有多個網絡接口(多個IP地址),若是沒有設置這個屬性,則clientPort會綁定到全部IP地址上,不然只綁定到該設置的IP地址上。
  • minSessionTimeout
    最小的session time時間,默認值是2個tick time,客戶端設置的session time 若是小於這個值,則會被強制協調爲這個最小值。
  • maxSessionTimeout
    最大的session time 時間,默認值是20個tick time. ,客戶端設置的session time 若是大於這個值,則會被強制協調爲這個最大值。

3、ZK的集羣配置選項數據庫

  • electionAlg
    領導選舉算法,默認是3(fast leader election,基於TCP),0表示leader選舉算法(基於UDP),1表示非受權快速選舉算法(基於UDP),2表示受權快速選舉算法(基於UDP),目前1和2算法都沒有應用,不建議使用,0算法將來也可能會被幹掉,只保留3(fast leader election)算法,所以最好直接使用默認就好。
  • initLimit
    tickTime的個數,表示在leader選舉結束後,followers與leader同步須要的時間,若是followers比較多或者說leader的數據灰常多時,同步時間相應可能會增長,那麼這個值也須要相應增長。固然,這個值也是follower和observer在開始同步leader的數據時的最大等待時間(setSoTimeout)
  • syncLimit
    tickTime的個數,這時間容易和上面的時間混淆,它也表示follower和observer與leader交互時的最大等待時間,只不過是在與leader同步完畢以後,進入正常請求轉發或ping等消息交互時的超時時間。
  • leaderServes
    (Java system property: zookeeper.leaderServes) 若是該值不是no,則表示該服務器做爲leader時是須要接受客戶端鏈接的。爲了得到更高吞吐量,當服務器數三臺以上時通常建議設置爲no。
  • cnxTimeout
    (Java system property: zookeeper.cnxTimeout) 默認值是5000,單位ms 表示leaderelection時打開鏈接的超時時間,只用在算法3中。

4、ZK的不安全配置項apache

  • skipAC
    (Java systemproperty: zookeeper.skipACL) 默認值是no,忽略全部ACL檢查,至關於開放了全部數據權限給任何人。
  • forceSync
    (Java systemproperty: zookeeper.forceSync) 默認值是yes, 表示transactionlog在commit時是否當即寫到磁盤上,若是關閉這個選項可能會在斷電時丟失信息。
  • jute.maxbuffer
    (Java system property: jute.maxbuffer)默認值0xfffff,單位是KB,表示節點數據最多1M。若是要設置這個值,必需要在全部服務器上都須要設置。

受權認證配置項vim

  • DigestAuthenticationProvider.superDigest
    (Java system property only: zookeeper.DigestAuthenticationProvider.superDigest) 設置這個值是爲了肯定一個超級用戶,它的值格式爲

super:<base64encoded(SHA1(idpassword))> ,一旦當前鏈接addAuthInfo超級用戶驗證經過,後續全部操做都不會checkACL.segmentfault

ZooKeeper 4字命令

ZooKeeper支持某些特定的四字命令字母與其的交互。它們大可能是查詢命令,用來獲取 ZooKeeper 服務的當前狀態及相關信息。用戶在客戶端能夠經過 telnet 或 nc 向 ZooKeeper 提交相應的命令。 其中stat、srvr、cons三個命令比較相似:"stat"提供服務器統計和客戶端鏈接的通常信息;"srvr"只有服務的統計信息,"cons"提供客戶端鏈接的更加詳細的信息。
使用方式,在shell終端輸入:echo mntr | nc localhost 2181安全

命令 示例 描述
conf echo conf nc localhost 2181 (New in 3.3.0)輸出相關服務配置的詳細信息。好比端口、zk數據及日誌配置路徑、最大鏈接數,session超時時間、serverId等
cons echo cons nc localhost 2181 (New in 3.3.0)列出全部鏈接到這臺服務器的客戶端鏈接/會話的詳細信息。包括「接受/發送」的包數量、session id 、操做延遲、最後的操做執行等信息。
crst echo crst nc localhost 2181 (New in 3.3.0)重置當前這臺服務器全部鏈接/會話的統計信息
dump echo dump nc localhost 2181 列出未經處理的會話和臨時節點(只在leader上有效)。
envi echo envi nc localhost 2181 輸出關於服務器的環境詳細信息(不一樣於conf命令),好比host.name、java.version、java.home、user.dir=/data/zookeeper-3.4.6/bin之類信息
ruok echo ruok nc localhost 2181 測試服務是否處於正確運行狀態。若是正常返回"imok",不然返回空。
srst echo srst nc localhost 2181 重置服務器的統計信息
srvr echo srvr nc localhost 2181 (New in 3.3.0)輸出服務器的詳細信息。zk版本、接收/發送包數量、鏈接數、模式(leader/follower)、節點總數。
stat echo stat nc localhost 2181 輸出服務器的詳細信息:接收/發送包數量、鏈接數、模式(leader/follower)、節點總數、延遲。 全部客戶端的列表。
wchs echo wchs nc localhost 2181 (New in 3.3.0)列出服務器watches的簡潔信息:鏈接總數、watching節點總數和watches總數
wchc echo wchc nc localhost 2181 (New in 3.3.0)經過session分組,列出watch的全部節點,它的輸出是一個與 watch 相關的會話的節點列表。若是watches數量很大的話,將會產生很大的開銷,會影響性能,當心使用。
wchp echo wchp nc localhost 2181 (New in 3.3.0)經過路徑分組,列出全部的 watch 的session id信息。它輸出一個與 session 相關的路徑。若是watches數量很大的話,將會產生很大的開銷,會影響性能,當心使用。
mntr echo mntr nc localhost 2181 (New in 3.4.0)列出集羣的健康狀態。包括「接受/發送」的包數量、操做延遲、當前服務模式(leader/follower)、節點總數、watch總數、臨時節點總數。

運維中使用JMX

開啓JMX監控:
修改zookeeper的啓動腳本vim zkServer.sh。找到啓動參數ZOOMAIN,修改成下面值。
其中local.only=false,設爲false才能在遠程創建鏈接。服務器

ZOOMAIN="-Dcom.sun.management.jmxremote  -Dcom.sun.management.jmxremote.local.only=false
 -Djava.rmi.server.hostname=127.0.0.1
 -Dcom.sun.management.jmxremote.port=9991
 -Dcom.sun.management.jmxremote.ssl=true
 -Dcom.sun.management.jmxremote.authenticate=true
 -Dcom.sun.management.jmxremote.access.file=/data/zookeeper/conf/jmxremote.access
 -Dcom.sun.management.jmxremote.password.file=/data/zookeeper/conf/jmxremote.password
 -Dzookeeper.jmx.log4j.disable=true
 org.apache.zookeeper.server.quorum.QuorumPeerMain"

在/data/zookeeper/conf目錄下創建2個訪問受權文件, 修改文件權限chmod 600 jmxremote.*網絡

-rw-------  1 deploy deploy  149 Aug  6 13:44 jmxremote.access
-rw-------  1 deploy deploy   40 Aug  6 13:46 jmxremote.password
[deploy@liutp conf]$ pwd
/data/zookeeper/conf
[deploy@liutp conf]$ cat jmxremote.access
monitorRole   readonly
controlRole   readwrite \
              create javax.management.monitor.*,javax.management.timer.* \
              unregister
[deploy@liutp conf]$ cat jmxremote.password
monitorRole  1234567
controlRole  1234567
[deploy@liutp conf]$

重啓zookeeper

使用Java自帶的JConsole
在命令行輸入JConsole,再回車。
在彈出的界面選擇「遠程進程」,輸入「服務器IP:9991」(zookeeper服務器的IP和端口)

監控平臺

exhibitor:可以配置zookeeper而且自由瀏覽、修改節點數據,查看運行狀態信息,自動或手動重啓;
zabbix:對CPU負載,內存使用,磁盤使用、網絡狀態作監控;

zookeeper系列(一)zookeeper必知
zookeeper系列(二)實戰master選舉
zookeeper系列(三)實戰數據發佈訂閱
zookeeper系列(四)實戰負載均衡
zookeeper系列(五)實戰分佈式鎖
zookeeper系列(六)實戰分佈式隊列
zookeeper系列(七)實戰分佈式命名服務
zookeeper系列(八)zookeeper運維

相關文章
相關標籤/搜索