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