ZooKeeper 是一個分布式應用協調服務,分布式應用程序可以基于 ZooKeeper 實現諸如數據發布/訂閱、負載均衡、命名服務、分布式協調/通知、集群管理、Master 選舉、分布式鎖和分布式隊列等功能。
zookeeper組件只有一個服務名字Server,安裝在多個節點組成集群使用(一般建議3或5個),zookeeper是一個java進程,使用jps命令可以快速找出zk的進程id。一般名為QuorumPeerMain。如果主機跑了多個zk,這里也會顯示多個QuorumPeerMain(但官方建議最好不要出現跑多個zk實例合用一個磁盤的情況,容易出現IO問題)
使用ps -ef命令或find查看當前服務器中存在的zk實例節點目錄,再通過dir/logs中最后一條log的最近時間來判斷此zk是不是當前正在運行的。最后通過查看conf/zoo.cfg的配置信息,查看此zk集群的規模(幾個節點)、客戶端端口等信息來判斷出問題的是否是此zk集群。
在zookeeper默認配置文件zoo.cfg(可以修改文件名)中有一個配置項dataDir,該配置項用于配置zookeeper快照日志和事務日志的存儲地址。在官方提供的默認參考配置文件zoo_sample.cfg中,只有dataDir配置項。其實在實際應用中,還可以為事務日志專門配置存儲地址,配置項名稱為dataLogDir,在zoo_sample.cfg中并未體現出來。在沒有dataLogDir配置項的時候,zookeeper默認將事務日志文件和快照日志文件都存儲在dataDir對應的目錄下。建議將事務日志(dataLogDir)與快照日志(dataLog)多帶帶配置,因為當zookeeper集群進行頻繁的數據讀寫操作,會產生大量的事務日志信息,將兩類日志分開存儲會提高系統性能,而且,可以允許將兩類日志存在在不同的存儲介質上,減少磁盤壓力。log4j用于記錄zookeeper集群服務器運行日志,該日志的配置地址在conf/目錄下的log4j.properties文件中,該文件中有一個配置項為“zookeeper.log.dir=.錯誤! 超鏈接引用無效?!?/span> 時,在該文件夾下會產生zookeeper.out日志文件。下面主要介紹事務日志與快照日志。
事務日志:
zookeeper的數據在內存中是以樹形結構進行存儲的,而快照就是每隔一段時間就會把整個DataTree的數據序列化后存儲在磁盤中,這就是zookeeper的快照文件。
zookeeper快照日志的存儲路徑同樣可以在zoo.cfg中查看,如上文截圖所示。訪問dataDir路徑可以看到version-2文件夾:
從截圖中可以看出,zookeeper快照文件的命名規則為snapshot.**,其中**表示zookeeper觸發快照的那個瞬間,提交的最后一個事務的ID。
log4j日志,服務的運行日志。
Clientport:客戶端連接端口
Ticktime:心跳時間(zk時間的基本單位,單位毫秒)
initLimit:zk啟動的初始化時間,本例10表示10*Ticktime=4000毫秒
syncLimit:zk進行sync同步的時間
maxClientCnxns:最大客戶端連接數,0表示無顯示(此參數值為IP級別,默認60)
dataDir:zk快照數據目錄
dataLogDir:zk操作記錄數據目錄
Autopurge.* :表示快照及日志的保留策略,本例24小時和500個。
snapCount:表示進行多少次update操作,進行一次快照,默認是100000
服務操作命令:
一旦確認集群服務異常,就使用bin/zkServer.sh stop先在所有節點運行停止zk集群服務(如果leader運行正常,只重啟單個異常服務即可);
啟動完成后,使用bin/zkServer.sh status查看是否角色是否正常(一個leader,多個follower)
zkCli.sh命令
使用bin/zkCli.sh命令可以進入到zk-shell內部進行操作,直接操作zk的文件系統。
注意如果zk進行了acl配置,直接zkCli.sh可能會進入失敗,此時需使用zkCli.sh -server IP:port 命令進入,ip:port為zk的服務地址和端口;
zk-shell內部命令十分有限,合起來不到50個,常用的有
create 創建znode
delete 刪除節點
connect 連接其他zk節點
addauth 添加認證,通常添加用戶密碼認證用這個
setAcl 添加acl認證,通常添加ip白名單等
getAcl 查看路徑的權限情況
get 查看zk路徑中的具體值
zk的監控主要采用自帶四字命令實現,運行方法有多種,基礎方法是
echo 【四字命令】 |nc IP:port,如 echo mntr |nc localhost 2181
因服務器系統不同,有些可能沒有nc命令,可嘗試使用nc6、netcat等替換nc命令也可以。如以上命令都沒有又想查看,可直接使用telnet IP:port,然后在等待命令處直接輸入四字命令:(如下圖srvr即為我們輸入的四字命令)
常用四字命令有mntr、srvr、conf、cons、envi等,具體會根據zk版本不同有增減,新版支持的命令會更多。
監控常使用mntr,運行結果可監控以下字段:
zk_outstanding_requests指標(即zk連接排隊情況)使用監控工具監控文件中的值如果 >10則報警num_alive_connections存儲zk_num_alive_connections指標(即當前節點活動的連接數),使用監控工具監控此文件中值如果>1500則報警
max_latency存儲當前所有連接中的延遲最大的連接指標,當延遲毫秒數超過10個ticktime=20000時,進行報警
具體的監控指標及方法一定是經過業務的調試和反復測試后才能發揮應有的效果的。
更多精彩干貨分享
點擊下方名片關注
IT那活兒
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/129926.html
摘要:大家好,我是冰河有句話叫做投資啥都不如投資自己的回報率高。馬上就十一國慶假期了,給小伙伴們分享下,從小白程序員到大廠高級技術專家我看過哪些技術類書籍。 大家好,我是...
摘要:鑒于目前大多數服務器環境都是,提前接觸能夠相輔相成。正則也是必須要掌握的一個知識點。有多種創建多線程的方式,不過目前使用線程池的多一些。 原創:小姐姐味道(微信公眾號ID:xjjdog),歡迎分享,轉載請保留出處。 你可能有所感悟。零散的資料讀了很多,但是很難有提升。到處是干貨,但是并沒什么用,簡單來說就是缺乏系統化。另外,噪音太多,雷同的框架一大把,我不至于全都要去學了吧。 這里,我...
摘要:實戰高并發程序設計推薦豆瓣評分書的質量沒的說,推薦大家好好看一下。推薦,豆瓣評分,人評價本書介紹了在編程中條極具實用價值的經驗規則,這些經驗規則涵蓋了大多數開發人員每天所面臨的問題的解決方案。 很早就想把JavaGuide的書單更新一下了,昨晚加今天早上花了幾個時間對之前的書單進行了分類和補充完善。雖是終極版,但一定還有很多不錯的 Java 書籍我沒有添加進去,會繼續完善下去。希望這篇...
摘要:可簡單地認為它是的擴展,負載均衡自然成為不可或缺的特性。是基于開發的服務代理組件,在使用場景中,它與和整合,打造具備服務動態更新和負載均衡能力的服務網關。類似的特性在項目也有體現,它是另一種高性能代理的方案,提供服務發現健康和負載均衡。 摘要: Cloud Native 應用架構隨著云技術的發展受到業界特別重視和關注,尤其是 CNCF(Cloud Native Computing Fo...
閱讀 1346·2023-01-11 13:20
閱讀 1684·2023-01-11 13:20
閱讀 1132·2023-01-11 13:20
閱讀 1858·2023-01-11 13:20
閱讀 4100·2023-01-11 13:20
閱讀 2704·2023-01-11 13:20
閱讀 1385·2023-01-11 13:20
閱讀 3597·2023-01-11 13:20