Zookeeper 運(yùn)維手冊(cè)

一 .Zookeeper功能簡(jiǎn)介

ZooKeeper 是一個(gè)開源的分布式協(xié)調(diào)服務(wù),由雅虎創(chuàng)建,是 Google Chubby 的開源實(shí)現(xiàn)喷橙。分布式應(yīng)用程序可以基于 ZooKeeper 實(shí)現(xiàn)諸如數(shù)據(jù)發(fā)布/訂閱扼劈、負(fù)載均衡、命名服務(wù)蝌矛、分布式協(xié)調(diào)/通知道批、集群管理、Master 選舉入撒、配置維護(hù)隆豹,名字服務(wù)、分布式同步茅逮、分布式鎖和分布式隊(duì)列等功能璃赡。

二.ZooKeeper 配置文件(zoo.cfg)詳解

配置文件目錄為:

/usr/local/zookeeper/zookeeper-3.4.10/conf

參數(shù)名 說明
clientPort 客戶端連接server的端口,即對(duì)外服務(wù)端口献雅,一般設(shè)置為2181吧碉考。
dataDir 存儲(chǔ)快照文件snapshot的目錄。默認(rèn)情況下挺身,事務(wù)日志也會(huì)存儲(chǔ)在這里侯谁。建議同時(shí)配置參數(shù)dataLogDir, 事務(wù)日志的寫性能直接影響zk性能。
tickTime ZK中的一個(gè)時(shí)間單元。ZK中所有時(shí)間都是以這個(gè)時(shí)間單元為基礎(chǔ)墙贱,進(jìn)行整數(shù)倍配置的热芹。例如,session的最小超時(shí)時(shí)間是2*tickTime惨撇。
dataLogDir 事務(wù)日志輸出目錄伊脓。盡量給事務(wù)日志的輸出配置單獨(dú)的磁盤或是掛載點(diǎn),這將極大的提升ZK性能串纺。(No Java system property)
globalOutstandingLimit 最大請(qǐng)求堆積數(shù)丽旅。默認(rèn)是1000。ZK運(yùn)行的時(shí)候纺棺, 盡管server已經(jīng)沒有空閑來處理更多的客戶端請(qǐng)求了榄笙,但是還是允許客戶端將請(qǐng)求提交到服務(wù)器上來,以提高吞吐性能祷蝌。當(dāng)然茅撞,為了防止Server內(nèi)存溢出,這個(gè)請(qǐng)求堆積數(shù)還是需要限制下的巨朦。 (Java system property:zookeeper.globalOutstandingLimit. )
preAllocSize 預(yù)先開辟磁盤空間米丘,用于后續(xù)寫入事務(wù)日志。默認(rèn)是64M糊啡,每個(gè)事務(wù)日志大小就是64M拄查。如果ZK的快照頻率較大的話,建議適當(dāng)減小這個(gè)參數(shù)棚蓄。(Java system property:zookeeper.preAllocSize )
snapCount 每進(jìn)行snapCount次事務(wù)日志輸出后堕扶,觸發(fā)一次快照(snapshot), 此時(shí),ZK會(huì)生成一個(gè)snapshot.文件梭依,同時(shí)創(chuàng)建一個(gè)新的事務(wù)日志文件log.稍算。默認(rèn)是100000.(真正的代碼實(shí)現(xiàn)中,會(huì)進(jìn)行一定的隨機(jī)數(shù)處理役拴,以避免所有服務(wù)器在同一時(shí)間進(jìn)行快照而影響性能)(Java system property:zookeeper.snapCount )
traceFile 用于記錄所有請(qǐng)求的log糊探,一般調(diào)試過程中可以使用,但是生產(chǎn)環(huán)境不建議使用河闰,會(huì)嚴(yán)重影響性能科平。(Java system property:? requestTraceFile )
maxClientCnxns 單個(gè)客戶端與單臺(tái)服務(wù)器之間的連接數(shù)的限制,是ip級(jí)別的姜性,默認(rèn)是60匠抗,如果設(shè)置為0,那么表明不作任何限制污抬。請(qǐng)注意這個(gè)限制的使用范圍汞贸,僅僅是單臺(tái)客戶端機(jī)器與單臺(tái)ZK服務(wù)器之間的連接數(shù)限制绳军,不是針對(duì)指定客戶端IP,也不是ZK集群的連接數(shù)限制矢腻,也不是單臺(tái)ZK對(duì)所有客戶端的連接數(shù)限制门驾。指定客戶端IP的限制策略,這里有一個(gè)patch多柑,可以嘗試一下:http://rdc.taobao.com/team/jm/archives/1334(No Java system property)
clientPortAddress 對(duì)于多網(wǎng)卡的機(jī)器奶是,可以為每個(gè)IP指定不同的監(jiān)聽端口。默認(rèn)情況是所有IP都監(jiān)聽 clientPort 指定的端口竣灌。 New in 3.3.0
minSessionTimeoutmaxSessionTimeout Session超時(shí)時(shí)間限制聂沙,如果客戶端設(shè)置的超時(shí)時(shí)間不在這個(gè)范圍,那么會(huì)被強(qiáng)制設(shè)置為最大或最小時(shí)間初嘹。默認(rèn)的Session超時(shí)時(shí)間是在2 * tickTime ~ 20 * tickTime 這個(gè)范圍 New in 3.3.0
fsync.warningthresholdms 事務(wù)日志輸出時(shí)及汉,如果調(diào)用fsync方法超過指定的超時(shí)時(shí)間,那么會(huì)在日志中輸出警告信息屯烦。默認(rèn)是1000ms坷随。(Java system property: fsync.warningthresholdms )New in 3.3.4
autopurge.purgeInterval 在上文中已經(jīng)提到,3.4.0及之后版本驻龟,ZK提供了自動(dòng)清理事務(wù)日志和快照文件的功能温眉,這個(gè)參數(shù)指定了清理頻率,單位是小時(shí)翁狐,需要配置一個(gè)1或更大的整數(shù)类溢,默認(rèn)是0,表示不開啟自動(dòng)清理功能露懒。(No Java system property) New in 3.4.0
autopurge.snapRetainCount 這個(gè)參數(shù)和上面的參數(shù)搭配使用闯冷,這個(gè)參數(shù)指定了需要保留的文件數(shù)目。默認(rèn)是保留3個(gè)隐锭。(No Java system property) New in 3.4.0
electionAlg 在之前的版本中窃躲, 這個(gè)參數(shù)配置是允許我們選擇leader選舉算法计贰,但是由于在以后的版本中钦睡,只會(huì)留下一種“TCP-based version of fast leader election”算法,所以這個(gè)參數(shù)目前看來沒有用了躁倒,這里也不詳細(xì)展開說了荞怒。(No Java system property)
initLimit Follower在啟動(dòng)過程中,會(huì)從Leader同步所有最新數(shù)據(jù)秧秉,然后確定自己能夠?qū)ν夥?wù)的起始狀態(tài)褐桌。Leader允許F在 initLimit 時(shí)間內(nèi)完成這個(gè)工作。通常情況下象迎,我們不用太在意這個(gè)參數(shù)的設(shè)置荧嵌。如果ZK集群的數(shù)據(jù)量確實(shí)很大了呛踊,F(xiàn)在啟動(dòng)的時(shí)候,從Leader上同步數(shù)據(jù)的時(shí)間也會(huì)相應(yīng)變長(zhǎng)啦撮,因此在這種情況下谭网,有必要適當(dāng)調(diào)大這個(gè)參數(shù)了。(No Java system property)
syncLimit 在運(yùn)行過程中赃春,Leader負(fù)責(zé)與ZK集群中所有機(jī)器進(jìn)行通信愉择,例如通過一些心跳檢測(cè)機(jī)制,來檢測(cè)機(jī)器的存活狀態(tài)织中。如果L發(fā)出心跳包在syncLimit之后锥涕,還沒有從F那里收到響應(yīng),那么就認(rèn)為這個(gè)F已經(jīng)不在線了狭吼。注意:不要把這個(gè)參數(shù)設(shè)置得過大层坠,否則可能會(huì)掩蓋一些問題。(No Java system property)
leaderServes 默認(rèn)情況下搏嗡,Leader是會(huì)接受客戶端連接窿春,并提供正常的讀寫服務(wù)。但是采盒,如果你想讓Leader專注于集群中機(jī)器的協(xié)調(diào)旧乞,那么可以將這個(gè)參數(shù)設(shè)置為no,這樣一來磅氨,會(huì)大大提高寫操作的性能尺栖。(Java system property: zookeeper. leaderServes )。
server.x=[hostname]:nnnnn[:nnnnn] 這里的x是一個(gè)數(shù)字烦租,與myid文件中的id是一致的延赌。右邊可以配置兩個(gè)端口,第一個(gè)端口用于F和L之間的數(shù)據(jù)同步和其它通信叉橱,第二個(gè)端口用于Leader選舉過程中投票通信挫以。 (No Java system property)
group.x=nnnnn[:nnnnn]weight.x=nnnnn 對(duì)機(jī)器分組和權(quán)重設(shè)置,可以 參見這里(No Java system property)
cnxTimeout Leader選舉過程中窃祝,打開一次連接的超時(shí)時(shí)間掐松,默認(rèn)是5s。(Java system property: zookeeper. cnxTimeout )
zookeeper.DigestAuthenticationProvider.superDigest ZK權(quán)限設(shè)置相關(guān)粪小,具體參見 使用super **身份對(duì)有權(quán)限的節(jié)點(diǎn)進(jìn)行操作 **》 ZooKeeper **權(quán)限控制 **》
skipACL 對(duì)所有客戶端請(qǐng)求都不作ACL檢查大磺。如果之前節(jié)點(diǎn)上設(shè)置有權(quán)限限制,一旦服務(wù)器上打開這個(gè)開頭探膊,那么也將失效杠愧。(Java system property: zookeeper.skipACL )
forceSync 這個(gè)參數(shù)確定了是否需要在事務(wù)日志提交的時(shí)候調(diào)用 [FileChannel ](http://rdc.taobao.com/team/%5C/java%5C/jdk1.6.0_22%5C/jre%5C/lib%5C/rt.jar%3Cjava.nio.channels(FileChannel.class%E2%98%83FileChannel).force來保證數(shù)據(jù)完全同步到磁盤。(Java system property: zookeeper.forceSync )
jute.maxbuffer 每個(gè)節(jié)點(diǎn)最大數(shù)據(jù)量逞壁,是默認(rèn)是1M流济。這個(gè)限制必須在server和client端都進(jìn)行設(shè)置才會(huì)生效锐锣。(Java system property: jute.maxbuffer )
ZooKeeper 搭建集群

http://www.itoak.cn/archives/521

三.ZooKeeper 常用命令

常用命令

啟動(dòng)ZK服務(wù): bin/zkServer.sh start

查看ZK服務(wù)狀態(tài): bin/zkServer.sh status

停止ZK服務(wù): bin/zkServer.sh stop

重啟ZK服務(wù): bin/zkServer.sh restart

連接服務(wù)器 zkCli.sh -server 127.0.0.1:2181

查看根目錄 ls /

創(chuàng)建 testnode節(jié)點(diǎn),關(guān)聯(lián)字符串"zz" create /zk/testnode "zz"
查看節(jié)點(diǎn)內(nèi)容 get /zk/testnode

設(shè)置節(jié)點(diǎn)內(nèi)容 set /zk/testnode abc

刪除節(jié)點(diǎn) delete /zk/testnode

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末绳瘟,一起剝皮案震驚了整個(gè)濱河市刺下,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌稽荧,老刑警劉巖橘茉,帶你破解...
    沈念sama閱讀 219,110評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異姨丈,居然都是意外死亡畅卓,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,443評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門蟋恬,熙熙樓的掌柜王于貴愁眉苦臉地迎上來翁潘,“玉大人,你說我怎么就攤上這事歼争“萋恚” “怎么了?”我有些...
    開封第一講書人閱讀 165,474評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵沐绒,是天一觀的道長(zhǎng)俩莽。 經(jīng)常有香客問我,道長(zhǎng)乔遮,這世上最難降的妖魔是什么扮超? 我笑而不...
    開封第一講書人閱讀 58,881評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮蹋肮,結(jié)果婚禮上出刷,老公的妹妹穿的比我還像新娘。我一直安慰自己坯辩,他們只是感情好馁龟,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,902評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著漆魔,像睡著了一般坷檩。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上有送,一...
    開封第一講書人閱讀 51,698評(píng)論 1 305
  • 那天淌喻,我揣著相機(jī)與錄音僧家,去河邊找鬼雀摘。 笑死,一個(gè)胖子當(dāng)著我的面吹牛八拱,可吹牛的內(nèi)容都是我干的阵赠。 我是一名探鬼主播涯塔,決...
    沈念sama閱讀 40,418評(píng)論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼清蚀!你這毒婦竟也來了匕荸?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,332評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤枷邪,失蹤者是張志新(化名)和其女友劉穎榛搔,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體东揣,經(jīng)...
    沈念sama閱讀 45,796評(píng)論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡践惑,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,968評(píng)論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了嘶卧。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片尔觉。...
    茶點(diǎn)故事閱讀 40,110評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖芥吟,靈堂內(nèi)的尸體忽然破棺而出侦铜,到底是詐尸還是另有隱情,我是刑警寧澤钟鸵,帶...
    沈念sama閱讀 35,792評(píng)論 5 346
  • 正文 年R本政府宣布钉稍,位于F島的核電站,受9級(jí)特大地震影響棺耍,放射性物質(zhì)發(fā)生泄漏嫁盲。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,455評(píng)論 3 331
  • 文/蒙蒙 一烈掠、第九天 我趴在偏房一處隱蔽的房頂上張望羞秤。 院中可真熱鬧,春花似錦左敌、人聲如沸瘾蛋。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,003評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽哺哼。三九已至,卻和暖如春叼风,著一層夾襖步出監(jiān)牢的瞬間取董,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,130評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工无宿, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留茵汰,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,348評(píng)論 3 373
  • 正文 我出身青樓孽鸡,卻偏偏與公主長(zhǎng)得像蹂午,于是被迫代替她去往敵國(guó)和親栏豺。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,047評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容