日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Apache ZooKeeper - FourLetterCommands运维命令

發布時間:2025/3/21 编程问答 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Apache ZooKeeper - FourLetterCommands运维命令 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • Pre
  • 安裝nc
  • 常見的四字母命令
    • FourLetterCommands
    • 命令解析
      • confs
      • cons
      • stat
      • mntr
      • srvr
      • ruok
  • Question


Pre

Apache ZooKeeper - JMX監控 ZooKeeper 的運行狀態

除了 JConsole 監控控制臺之外,ZooKeeper 還提供了一些命令,可使我們更加靈活地統計監控 ZooKeeper 服務的狀態信息。

ZooKeeper 提供的這些命令也叫作四字母命令,如它們的名字一樣,每一個命令都是由四個字母組成的。

比如,輸入相關的命令來查詢 ZooKeeper 服務,可以輸入 stat 命令來查看數據節點等信息。

echo {command} | nc 127.0.0.1 2181

安裝nc

netcat(nc)不僅可以通過使用TCP或UDP協議的網絡連接讀寫數據,同時還是一個功能強大的網絡調試和探測工具。

默認未安裝 ,安裝如下

yum install -y nc

常見的四字母命令

FourLetterCommands

org.apache.zookeeper.server.command.FourLetterCommands // specify all of the commands that are availablestatic {cmd2String.put(confCmd, "conf");cmd2String.put(consCmd, "cons");cmd2String.put(crstCmd, "crst");cmd2String.put(dirsCmd, "dirs");cmd2String.put(dumpCmd, "dump");cmd2String.put(enviCmd, "envi");cmd2String.put(getTraceMaskCmd, "gtmk");cmd2String.put(ruokCmd, "ruok");cmd2String.put(setTraceMaskCmd, "stmk");cmd2String.put(srstCmd, "srst");cmd2String.put(srvrCmd, "srvr");cmd2String.put(statCmd, "stat");cmd2String.put(wchcCmd, "wchc");cmd2String.put(wchpCmd, "wchp");cmd2String.put(wchsCmd, "wchs");cmd2String.put(mntrCmd, "mntr");cmd2String.put(isroCmd, "isro");cmd2String.put(telnetCloseCmd, "telnet close");}

命令解析

命令示例描述
confecho conf | nc localhost 2181(New in 3.3.0)輸出相關服務配置的詳細信息。比如端口、zk數據及日志配置路徑、最大連接數,session超時時間、serverId等
consecho cons | nc localhost 2181(New in 3.3.0)列出所有連接到這臺服務器的客戶端連接/會話的詳細信息。包括“接受/發送”的包數量、session id 、操作延遲、最后的操作執行等信息。
crstecho crst | nc localhost 2181(New in 3.3.0)重置當前這臺服務器所有連接/會話的統計信息
dumpecho dump | nc localhost 2181列出未經處理的會話和臨時節點(只在leader上有效)。
enviecho envi | nc localhost 2181輸出關于服務器的環境詳細信息(不同于conf命令),比如zookeeper.version、host.name、java.version、java.home、user.dir=/data/zookeeper-3.4.6/bin之類信息
ruokecho ruok | nc localhost 2181測試服務是否處于正確運行狀態。如果正常返回"imok",否則返回空。
srstecho srst | nc localhost 2181重置服務器的統計信息
srvrecho srvr | nc localhost 2181(New in 3.3.0)輸出服務器的詳細信息。zk版本、接收/發送包數量、連接數、模式(leader/follower)、節點總數。
statecho stat | nc localhost 2181輸出服務器的詳細信息:接收/發送包數量、連接數、模式(leader/follower)、節點總數、延遲。 所有客戶端的列表。
wchsecho wchs | nc localhost 2181(New in 3.3.0)列出服務器watches的簡潔信息:連接總數、watching節點總數和watches總數
wchcecho wchc | nc localhost 2181(New in 3.3.0)通過session分組,列出watch的所有節點,它的輸出是一個與 watch 相關的會話的節點列表。如果watches數量很大的話,將會產生很大的開銷,會影響性能,小心使用。
wchpecho wchp | nc localhost 2181(New in 3.3.0)通過路徑分組,列出所有的 watch 的session id信息。它輸出一個與 session 相關的路徑。如果watches數量很大的話,將會產生很大的開銷,會影響性能,小心使用。
mntrecho mntr | nc localhost 2181(New in 3.4.0)列出集群的健康狀態。包括“接受/發送”的包數量、操作延遲、當前服務模式(leader/follower)、節點總數、watch總數、臨時節點總數。

confs

屬性說明默認值、配置說明補充說明
clientPort客戶端端口號2181客戶端所連接的服務器所監聽的TCP端口
dataDir數據文件目錄${zkDir}/data/version-2用于配置內存數據庫保存的快照目錄,(文件名snapshot.xxxxx)
dataLogDir日志文件目錄${zkDir}/data/version-2記錄的是事務日志 (文件名如log.xxxx), 服務端會順序寫入事務日志,由于快照的寫入可能會影響事務日志的寫入吞吐能力,可以將dataLogDir指向專用的日志存儲設備
tickTimeZk使用的基本時間度量單位3000 (單位毫秒)客戶端的最小會話超時時間為兩個tickTime
更低的tickTime可以更快的發現超時問題,但也會導致更高的網絡流量(心跳消息)和更高的CPU利用率(會話存儲器的處理)
maxClientCnxns客戶端最大連接數60個允許每個IP地址的并發socket連接的最大連接數。為了解決某些錯誤的客戶端每秒創建很多個Zookeeper連接,最后導致Dos而添加的選項。
minSessionTimeout最小會話超時2個tickTime時間客戶端建立連接后會請求一個明確的超時值,此值不能低于minSessionTimeout
該參數配置過低可能會導致錯誤的客戶端故障檢測,過高會延遲客戶端故障的檢測時間
maxSessionTimeout最大會話超時20個tickTime時間客戶端建立連接后會請求一個明確的超時值,此值不能高于maxSessionTimeout
該參數不會影響系統的性能,但卻可以限制一個客戶端消耗系統資源的時間
serverIdid
initLimitfollower最初連接到master時的超時值沒有默認值,單位是tickTime的倍數當某個follower最初與master建立連接時,之間會傳輸大量的數據,尤其是follower落后整體很多的時候。此參數的配置取決于follower與master之間的網絡速度情況,以及傳輸的數據量大小,如果Zookeeper中保存的數據量很大,例如存在大量的znode節點或者傳輸網絡很慢,就需要增大時initLimit值,可以配置initLimit值為2倍你所期待的值,此值最好在網絡中進行follower和master之間進行網絡基準測試后再決定
屬于集群配置
syncLimitfollower與master進行sync操作時的超時值沒有默認值,單位為tickTime的倍數當master與follower無法進行sync操作,而且超過了syncLimit的tickTime,就會放棄該follower
屬于集群配置與initLimit不同的是,syncLimit 并不依賴于Zk中保存的數據量大小,而是依賴于網絡的延遲和吞吐量
高延遲的網絡中或者相對較大的事務傳輸時,都需要提高syncLimit值
electionAlg選舉算法默認3此配置不需要更改,目前其他的選舉算法已被棄用
0基于UDP的LeaderElection
屬于集群配置1基于UDP的FastLeaderElection
2基于UDP和認證的FastLeaderElection
3基于TCP的FastLeaderElection
electionPort選舉端口在ZK的配置文件中配置,格式為:
server.x=[hostname]:port1:port2[:observer]
配置文件可拷貝conf/zoo_sample.cfg文件,加入如上格式的配置,其中
x表示服務器的ID(需要是整數),必須配置在data/myid文件中
hostname表示當前服務器在網絡中的名稱
port1表示用于事務發送的端口號,如2888
port2表示用于master選舉的端口號,如3888
observer表示將當前服務器設置為觀察者模式。此選項可選
quorumPort法人端口
peerType角色類型對應的序號默認0,表示參與者的角色在源碼中使用LearnerType枚舉類來表示,有2種類型 PARTICIPANT(0), OBSERVER(1)
可選值有0和1分別表示參與者和觀察者,默認是參與者,可以參與投票進行選舉的角色
若需要修改為觀察者,需要在ZK配置文件中加入
peerType=observer
以及
server.x=[hostname]:port1:port2
后加入:observer

cons

cons 命令用于輸出當前這臺服務器上所有客戶端連接的詳細信息,包括每個客戶端的客戶端 IP 、會話 ID 和最后一次與服務器交互的操作類型等。

屬性說明
ip+portip地址+端口
[interestOps]netty/NIO中定義的interestOps
queued已經提交但未響應的請求數
recved收到的包數量
sent發送的數據包數量(包括通知)
sidsession id
lop即 last operation 此連接執行的上一個操作
est即 Established 建立連接的時間戳
to會話超時時間,單位毫秒值
lcxid此連接的最后一個 cxid (指客戶端發送一個數據包到服務器之前在服務器生成一個單調遞增的整數)
lzxid此連接的最后一個 zxid (事務ID)
lresp上次服務器在此連接上向客戶端發送的響應時間
llat即 LastLatency 此連接對應客戶端的上次響應的延遲 (單位ms)
minlat最小延遲 ms
avglat平均延遲 ms
maxlat最大延遲 ms

stat

stat 命令的作用是監控 ZooKeeper 服務器的狀態,我們通過 stat 命令統計 ZooKeeper 服務器的 ZooKeeper 版本信息、集群數節點等信息

屬性說明
Zookeeper versionzookeeper版本號
Clients客戶端相關信息
Latency min/avg/max最小/平均/最大延遲 ms
Received收包數
Sent發包數
Connections已連接的客戶端數量
Outstanding隊列中尚未完成的請求數
Zxid上次處理的zxid
Mode所屬角色
Node count節點數
[root@localhost ~]# echo stat | nc 192.168.126.136 2181 Zookeeper version: 3.5.8-f439ca583e70862c3068a1f2a7d4d068eec33315, built on 05/04/2020 15:07 GMT Clients:/192.168.126.136:54644[0](queued=0,recved=1,sent=0)Latency min/avg/max: 0/0/0 Received: 3 Sent: 2 Connections: 1 Outstanding: 0 Zxid: 0x69ce Mode: standalone Node count: 5 [root@localhost ~]#

mntr

屬性說明
zk_version版本信息
zk_avg_latency平均延遲
zk_max_latency最大延遲
zk_min_latency最小延遲
zk_packets_received收包數
zk_packets_sent發包數
zk_num_alive_connections存活的連接數
zk_outstanding_requests堆積的請求數
zk_server_state服務器的狀態,包括:leader, follower, observer, read-only, standalone
zk_znode_countznode節點總數
zk_watch_countwatch總數
zk_ephemerals_count臨時節點總數(znode)
zk_approximate_data_size數據的近似大小
zk_open_file_descriptor_count打開的文件描述符數量
zk_max_file_descriptor_count最大文件描述符數量
zk_followersfollower數量
zk_synced_followers已同步的follower數量
zk_pending_syncs等待同步請求的數量
[root@localhost ~]# echo mntr | nc 192.168.126.136 2181 zk_version 3.5.8-f439ca583e70862c3068a1f2a7d4d068eec33315, built on 05/04/2020 15:07 GMT zk_avg_latency 0 zk_max_latency 0 zk_min_latency 0 zk_packets_received 4 zk_packets_sent 3 zk_num_alive_connections 1 zk_outstanding_requests 0 zk_server_state standalone zk_znode_count 5 zk_watch_count 0 zk_ephemerals_count 0 zk_approximate_data_size 44 zk_open_file_descriptor_count 74 zk_max_file_descriptor_count 65536 [root@localhost ~]#

srvr

srvr 命令與 stat 命令的功能十分相似,唯一不同的地方是 srvr 命令不會將與客戶端的連接情況輸出,通過 srvr 命令只會查詢服務器的自身信息。

[root@localhost ~]# echo srvr | nc 127.0.0.1 2181 Zookeeper version: 3.5.8-f439ca583e70862c3068a1f2a7d4d068eec33315, built on 05/04/2020 15:07 GMT Latency min/avg/max: 0/0/0 Received: 5 Sent: 4 Connections: 1 Outstanding: 0 Zxid: 0x69ce Mode: standalone Node count: 5 [root@localhost ~]# [root@localhost ~]#

ruok

ruok 命令的主要作用是查詢 ZooKeeper 服務器是否正常運行。如果 ZooKeeper 服務器正常運行,執行完 ruok 命令后,會得到 “imok” 返回值。如果 ZooKeeper 服務沒有正常運行,則不會有任何返回值。在使用 ruok 命令的時候,在這里我們要注意的一點是,有些時候即使返回了 “imok” 字段,ZooKeeper 服務也可能沒有正常運行,唯一能確定的是該臺服務器的 2181 端口是打開的.

[root@localhost ~]# echo ruok | nc 127.0.0.1 2181 imok [root@localhost ~]#

Question

[root@localhost bin]# echo stat | nc 192.168.126.136 2181 stat is not executed because it is not in the whitelist.

需要加入白名單才能使用 , 開啟 -Dzookeeper.4lw.commands.whitelist=*

解析類 org.apache.zookeeper.server.NettyServerCnxn#checkFourLetterWord

總結

以上是生活随笔為你收集整理的Apache ZooKeeper - FourLetterCommands运维命令的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。