Zookeeper的安裝與部署

一芹彬、系統(tǒng)要求

ZooKeeper可以運(yùn)行在多種系統(tǒng)平臺(tái)上面鄙早,表1展示了zk支持的系統(tǒng)平臺(tái)删窒,以及在該平臺(tái)上是否支持開發(fā)環(huán)境或者生產(chǎn)環(huán)境舟误。

表1:ZooKeeper支持的運(yùn)行平臺(tái)

系統(tǒng)開發(fā)環(huán)境生產(chǎn)環(huán)境

Linux支持支持

Solaris支持支持

FreeBSD支持支持

Windows支持不支持

MacOS支持不支持

ZooKeeper是用Java編寫的造垛,運(yùn)行在Java環(huán)境上魔招,因此,在部署zk的機(jī)器上需要安裝Java運(yùn)行環(huán)境五辽。為了正常運(yùn)行zk办斑,我們需要JRE1.6或者以上的版本。

對(duì)于集群模式下的ZooKeeper部署杆逗,3個(gè)ZooKeeper服務(wù)進(jìn)程是建議的最小進(jìn)程數(shù)量乡翅,而且不同的服務(wù)進(jìn)程建議部署在不同的物理機(jī)器上面,以減少機(jī)器宕機(jī)帶來的風(fēng)險(xiǎn)罪郊,以實(shí)現(xiàn)ZooKeeper集群的高可用蠕蚜。

ZooKeeper對(duì)于機(jī)器的硬件配置沒有太大的要求。例如悔橄,在Yahoo!內(nèi)部靶累,ZooKeeper部署的機(jī)器其配置通常如下:雙核處理器,2GB內(nèi)存癣疟,80GB硬盤挣柬。

二、下載

可以從https://zookeeper.apache.org/releases.html下載ZooKeeper睛挚,目前最新的穩(wěn)定版本為 3.4.8 版本邪蛔,用戶可以自行選擇一個(gè)速度較快的鏡像來下載即可。

三竞川、目錄

下載并解壓ZooKeeper軟件壓縮包后店溢,可以看到zk包含以下的文件和目錄:

圖1:ZooKeeper軟件的文件和目錄


bin目錄

zk的可執(zhí)行腳本目錄,包括zk服務(wù)進(jìn)程委乌,zk客戶端床牧,等腳本。其中遭贸,.sh是Linux環(huán)境下的腳本戈咳,.cmd是Windows環(huán)境下的腳本。

conf目錄

配置文件目錄。zoo_sample.cfg為樣例配置文件著蛙,需要修改為自己的名稱删铃,一般為zoo.cfg。log4j.properties為日志配置文件踏堡。

lib

zk依賴的包猎唁。

contrib目錄

一些用于操作zk的工具包。

recipes目錄

zk某些用法的代碼示例

四顷蟆、單機(jī)模式

ZooKeeper的安裝包括單機(jī)模式安裝诫隅,以及集群模式安裝。

單機(jī)模式較簡(jiǎn)單帐偎,是指只部署一個(gè)zk進(jìn)程逐纬,客戶端直接與該zk進(jìn)程進(jìn)行通信。

在開發(fā)測(cè)試環(huán)境下削樊,通過來說沒有較多的物理資源豁生,因此我們常使用單機(jī)模式。當(dāng)然在單臺(tái)物理機(jī)上也可以部署集群模式漫贞,但這會(huì)增加單臺(tái)物理機(jī)的資源消耗甸箱。故在開發(fā)環(huán)境中,我們一般使用單機(jī)模式绕辖。

但是要注意摇肌,生產(chǎn)環(huán)境下不可用單機(jī)模式,這是由于無論從系統(tǒng)可靠性還是讀寫性能仪际,單機(jī)模式都不能滿足生產(chǎn)的需求围小。

4.1 運(yùn)行配置

上面提到,conf目錄下提供了配置的樣例zoo_sample.cfg树碱,要將zk運(yùn)行起來肯适,需要將其名稱修改為zoo.cfg。

打開zoo.cfg成榜,可以看到默認(rèn)的一些配置框舔。

tickTime

時(shí)長(zhǎng)單位為毫秒,為zk使用的基本時(shí)間度量單位赎婚。例如刘绣,1 * tickTime是客戶端與zk服務(wù)端的心跳時(shí)間,2 * tickTime是客戶端會(huì)話的超時(shí)時(shí)間挣输。

tickTime的默認(rèn)值為2000毫秒纬凤,更低的tickTime值可以更快地發(fā)現(xiàn)超時(shí)問題,但也會(huì)導(dǎo)致更高的網(wǎng)絡(luò)流量(心跳消息)和更高的CPU使用率(會(huì)話的跟蹤處理)撩嚼。

clientPort

zk服務(wù)進(jìn)程監(jiān)聽的TCP端口停士,默認(rèn)情況下挖帘,服務(wù)端會(huì)監(jiān)聽2181端口。

dataDir

無默認(rèn)配置恋技,必須配置拇舀,用于配置存儲(chǔ)快照文件的目錄。如果沒有配置dataLogDir蜻底,那么事務(wù)日志也會(huì)存儲(chǔ)在此目錄骄崩。

4.2 啟動(dòng)

在Windows環(huán)境下,直接雙擊zkServer.cmd即可朱躺。在Linux環(huán)境下刁赖,進(jìn)入bin目錄,執(zhí)行命令

./zkServer.shstart


這個(gè)命令使得zk服務(wù)進(jìn)程在后臺(tái)進(jìn)行长搀。如果想在前臺(tái)中運(yùn)行以便查看服務(wù)器進(jìn)程的輸出日志,可以通過以下命令運(yùn)行:

./zkServer.shstart-foreground


執(zhí)行此命令鸡典,可以看到大量詳細(xì)信息的輸出荒揣,以便允許查看服務(wù)器發(fā)生了什么晰绎。

使用文本編輯器打開zkServer.cmd或者zkServer.sh文件,可以看到其會(huì)調(diào)用zkEnv.cmd或者zkEnv.sh腳本。zkEnv腳本的作用是設(shè)置zk運(yùn)行的一些環(huán)境變量沸毁,例如配置文件的位置和名稱等。

4.3 連接

如果是連接同一臺(tái)主機(jī)上的zk進(jìn)程肮韧,那么直接運(yùn)行bin/目錄下的zkCli.cmd(Windows環(huán)境下)或者zkCli.sh(Linux環(huán)境下)掖鱼,即可連接上zk。

直接執(zhí)行zkCli.cmd或者zkCli.sh命令默認(rèn)以主機(jī)號(hào) 127.0.0.1悍赢,端口號(hào) 2181 來連接zk决瞳,如果要連接不同機(jī)器上的zk,可以使用 -server 參數(shù)左权,例如:

bin/zkCli.sh -server 192.168.0.1:2181


五皮胡、集群模式

單機(jī)模式的zk進(jìn)程雖然便于開發(fā)與測(cè)試,但并不適合在生產(chǎn)環(huán)境使用赏迟。在生產(chǎn)環(huán)境下屡贺,我們需要使用集群模式來對(duì)zk進(jìn)行部署。

注意

在集群模式下锌杀,建議至少部署3個(gè)zk進(jìn)程甩栈,或者部署奇數(shù)個(gè)zk進(jìn)程。如果只部署2個(gè)zk進(jìn)程糕再,當(dāng)其中一個(gè)zk進(jìn)程掛掉后量没,剩下的一個(gè)進(jìn)程并不能構(gòu)成一個(gè)quorum的大多數(shù)。因此亿鲜,部署2個(gè)進(jìn)程甚至比單機(jī)模式更不可靠允蜈,因?yàn)?個(gè)進(jìn)程其中一個(gè)不可用的可能性比一個(gè)進(jìn)程不可用的可能性還大冤吨。

5. 1 運(yùn)行配置

在集群模式下,所有的zk進(jìn)程可以使用相同的配置文件(是指各個(gè)zk進(jìn)程部署在不同的機(jī)器上面)饶套,例如如下配置:

tickTime=2000dataDir=/home/myname/zookeeperclientPort=2181initLimit=5syncLimit=2server.1=192.168.229.160:2888:3888server.2=192.168.229.161:2888:3888server.3=192.168.229.162:2888:3888

initLimit

ZooKeeper集群模式下包含多個(gè)zk進(jìn)程漩蟆,其中一個(gè)進(jìn)程為leader,余下的進(jìn)程為follower妓蛮。

當(dāng)follower最初與leader建立連接時(shí)怠李,它們之間會(huì)傳輸相當(dāng)多的數(shù)據(jù),尤其是follower的數(shù)據(jù)落后leader很多蛤克。initLimit配置follower與leader之間建立連接后進(jìn)行同步的最長(zhǎng)時(shí)間捺癞。

syncLimit

配置follower和leader之間發(fā)送消息,請(qǐng)求和應(yīng)答的最大時(shí)間長(zhǎng)度构挤。

tickTime

tickTime則是上述兩個(gè)超時(shí)配置的基本單位髓介,例如對(duì)于initLimit,其配置值為5筋现,說明其超時(shí)時(shí)間為 2000ms * 5 = 10秒唐础。

server.id=host:port1:port2

其中id為一個(gè)數(shù)字,表示zk進(jìn)程的id矾飞,這個(gè)id也是dataDir目錄下myid文件的內(nèi)容一膨。

host是該zk進(jìn)程所在的IP地址,port1表示follower和leader交換消息所使用的端口洒沦,port2表示選舉leader所使用的端口豹绪。

dataDir

其配置的含義跟單機(jī)模式下的含義類似,不同的是集群模式下還有一個(gè)myid文件申眼。myid文件的內(nèi)容只有一行瞒津,且內(nèi)容只能為1 - 255之間的數(shù)字,這個(gè)數(shù)字亦即上面介紹server.id中的id豺型,表示zk進(jìn)程的id仲智。

注意

如果僅為了測(cè)試部署集群模式而在同一臺(tái)機(jī)器上部署zk進(jìn)程,server.id=host:port1:port2配置中的port參數(shù)必須不同姻氨。但是钓辆,為了減少機(jī)器宕機(jī)的風(fēng)險(xiǎn),強(qiáng)烈建議在部署集群模式時(shí)肴焊,將zk進(jìn)程部署不同的物理機(jī)器上面前联。

5.2 啟動(dòng)

假如我們打算在三臺(tái)不同的機(jī)器 192.168.229.160,192.168.229.161娶眷,192.168.229.162上各部署一個(gè)zk進(jìn)程似嗤,以構(gòu)成一個(gè)zk集群。

三個(gè)zk進(jìn)程均使用相同的 zoo.cfg 配置:

tickTime=2000dataDir=/home/myname/zookeeperclientPort=2181initLimit=5syncLimit=2server.1=192.168.229.160:2888:3888server.2=192.168.229.161:2888:3888server.3=192.168.229.162:2888:3888


在三臺(tái)機(jī)器dataDir目錄( /home/myname/zookeeper 目錄)下届宠,分別生成一個(gè)myid文件烁落,其內(nèi)容分別為1乘粒,2,3伤塌。然后分別在這三臺(tái)機(jī)器上啟動(dòng)zk進(jìn)程灯萍,這樣我們便將zk集群?jiǎn)?dòng)了起來。

5.3 連接

可以使用以下命令來連接一個(gè)zk集群:

bin/zkCli.sh -server 192.168.229.160:2181,192.168.229.161:2181,192.168.229.162:2181

成功連接后每聪,可以看到如下輸出:

2016-06-2819:29:18,074[myid:] -INFO[main:ZooKeeper@438] -Initiatingclient connection, connectString=192.168.229.160:2181,192.168.229.161:2181,192.168.229.162:2181sessionTimeout=30000watcher=org.apache.zookeeper.ZooKeeperMain$MyWatcher@770537e4WelcometoZooKeeper!2016-06-2819:29:18,146[myid:] -INFO[main-SendThread(192.168.229.162:2181):ClientCnxn$SendThread@975] -Openingsocket connection to server192.168.229.162/192.168.229.162:2181.Willnotattempt to authenticate usingSASL(unknown error)JLinesupport is enabled2016-06-2819:29:18,161[myid:] -INFO[main-SendThread(192.168.229.162:2181):ClientCnxn$SendThread@852] -Socketconnection established to192.168.229.162/192.168.229.162:2181, initiating session2016-06-2819:29:18,199[myid:] -INFO[main-SendThread(192.168.229.162:2181):ClientCnxn$SendThread@1235] -Sessionestablishment complete on server192.168.229.162/192.168.229.162:2181, sessionid =0x3557c39d2810029, negotiated timeout =30000WATCHER::WatchedEventstate:SyncConnectedtype:Nonepath:null[zk:192.168.229.160:2181,192.168.229.161:2181,192.168.229.162:2181(CONNECTED)0]

想學(xué)習(xí)大數(shù)據(jù)或者想學(xué)習(xí)大數(shù)據(jù)的朋友旦棉,我整理了一套大數(shù)據(jù)的學(xué)習(xí)視頻免費(fèi)分享給大家,從入門到實(shí)戰(zhàn)都有药薯,大家可以加微信:Lxiao_28獲取绑洛,還可以入微信群交流!(備注領(lǐng)取資料童本,真實(shí)有效哦)真屯。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市巾陕,隨后出現(xiàn)的幾起案子讨跟,更是在濱河造成了極大的恐慌,老刑警劉巖鄙煤,帶你破解...
    沈念sama閱讀 216,372評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異茶袒,居然都是意外死亡梯刚,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門薪寓,熙熙樓的掌柜王于貴愁眉苦臉地迎上來亡资,“玉大人,你說我怎么就攤上這事向叉∽赌澹” “怎么了?”我有些...
    開封第一講書人閱讀 162,415評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵母谎,是天一觀的道長(zhǎng)瘦黑。 經(jīng)常有香客問我,道長(zhǎng)奇唤,這世上最難降的妖魔是什么幸斥? 我笑而不...
    開封第一講書人閱讀 58,157評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮咬扇,結(jié)果婚禮上甲葬,老公的妹妹穿的比我還像新娘。我一直安慰自己懈贺,他們只是感情好经窖,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評(píng)論 6 388
  • 文/花漫 我一把揭開白布坡垫。 她就那樣靜靜地躺著,像睡著了一般画侣。 火紅的嫁衣襯著肌膚如雪冰悠。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,125評(píng)論 1 297
  • 那天棉钧,我揣著相機(jī)與錄音屿脐,去河邊找鬼。 笑死宪卿,一個(gè)胖子當(dāng)著我的面吹牛的诵,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播佑钾,決...
    沈念sama閱讀 40,028評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼西疤,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了休溶?” 一聲冷哼從身側(cè)響起代赁,我...
    開封第一講書人閱讀 38,887評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎兽掰,沒想到半個(gè)月后芭碍,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,310評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡孽尽,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評(píng)論 2 332
  • 正文 我和宋清朗相戀三年窖壕,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片杉女。...
    茶點(diǎn)故事閱讀 39,690評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡瞻讽,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出熏挎,到底是詐尸還是另有隱情速勇,我是刑警寧澤,帶...
    沈念sama閱讀 35,411評(píng)論 5 343
  • 正文 年R本政府宣布坎拐,位于F島的核電站烦磁,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏廉白。R本人自食惡果不足惜个初,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評(píng)論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望猴蹂。 院中可真熱鬧院溺,春花似錦、人聲如沸磅轻。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至谆膳,卻和暖如春叭爱,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背漱病。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評(píng)論 1 268
  • 我被黑心中介騙來泰國(guó)打工买雾, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人杨帽。 一個(gè)月前我還...
    沈念sama閱讀 47,693評(píng)論 2 368
  • 正文 我出身青樓漓穿,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親注盈。 傳聞我的和親對(duì)象是個(gè)殘疾皇子晃危,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評(píng)論 2 353

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