Zookeeper 安裝及配置(Mac)

Zookeeper 是 什 么?

(摘抄)有這樣一個(gè)場(chǎng)景:系統(tǒng)中有大約100w的用戶,每個(gè)用戶平 均有3個(gè)郵箱賬號(hào),每隔5分鐘,每個(gè)郵箱賬需要收取100封郵件,最多3億份郵件需要下載到服務(wù)器中(不含附件和正文)。用20臺(tái)機(jī)器劃分計(jì)算的壓力,從 多個(gè)不同的網(wǎng)路出口進(jìn)行訪問(wèn)外網(wǎng),計(jì)算的壓力得到緩解,那么每臺(tái)機(jī)器的計(jì)算壓力也不會(huì)很大了。
通過(guò)我們的討論和以往的經(jīng)驗(yàn)判斷在這場(chǎng)景中可以實(shí)現(xiàn)并行計(jì)算,但我們還期望能對(duì)并行計(jì)算的節(jié)點(diǎn)進(jìn)行動(dòng)態(tài)的添加/刪除,做到在線更新并行計(jì)算的數(shù)目并且不會(huì)影響計(jì)算單元中的其他計(jì)算節(jié)點(diǎn),但是有4個(gè)問(wèn)題需要解決,否則會(huì)出現(xiàn)一些嚴(yán)重的問(wèn)題:

  1. 20臺(tái)機(jī)器同時(shí)工作時(shí),有一臺(tái)機(jī)器down掉了,其他機(jī)器怎么進(jìn)行接管計(jì)算任務(wù),否則有些用戶的業(yè)務(wù)不會(huì)被處理,造成用戶服務(wù)終斷。
  2. 隨著用戶數(shù)量增加,添加機(jī)器是可以解決計(jì)算的瓶頸,但需要重啟所有計(jì)算節(jié)點(diǎn),如果需要,那么將會(huì)造成整個(gè)系統(tǒng)的不可用。
  3. 用戶數(shù)量增加或者減少,計(jì)算節(jié)點(diǎn)中的機(jī)器會(huì)出現(xiàn)有的機(jī)器資源使用率繁忙,有的卻空閑,因?yàn)橛?jì)算節(jié)點(diǎn)不知道彼此的運(yùn)行負(fù)載狀態(tài)。
  4. 怎么去通知每個(gè)節(jié)點(diǎn)彼此的負(fù)載狀態(tài),怎么保證通知每個(gè)計(jì)算節(jié)點(diǎn)方式的可靠性和實(shí)時(shí)性。
    先不說(shuō)那么多專(zhuān)業(yè)名詞,白話來(lái)說(shuō)我們需要的是:1記錄狀態(tài),2事件通知 ,3可靠穩(wěn)定的中央調(diào)度器,4易上手、管理簡(jiǎn)單。
    采用Zookeeper完全可以解決我們的問(wèn)題,分布式計(jì)算中的協(xié)調(diào)員,觀察者,分布式鎖都可以作為zookeeper的關(guān)鍵詞,在系統(tǒng)中利用Zookeeper來(lái)處理事件通知,隊(duì)列,優(yōu)先隊(duì)列,鎖,共享鎖等功能,利用這些特色在分布式計(jì)算中發(fā)揮重要的作用。

Zookeeper 的安裝

    下載地址:http://www.apache.org/dyn/closer.cgi/zookeeper

首先從官網(wǎng)下載ZooKeeper壓縮包,然后解壓下載得到的ZooKeeper壓縮包,發(fā)現(xiàn)有“bin,conf,lib”等目錄?!癰in目錄”中存放有運(yùn)行腳本;“conf目錄”中存放有配置文件;“l(fā)ib目錄”中存放有運(yùn)行所需要第三方庫(kù)。
解壓文件:

     tar zxvf zookeeper-3.4.8.tar.gz  

Zookeeper 的配置

一、單機(jī)模式

1.1、編輯配置文件

在“conf”目錄下,新建一個(gè)名為“zoo.cfg”的文件,其中內(nèi)容如下:

    tickTime=2000  
    dataDir= /usr/myenv/zookeeper-3.4.8/data  (填寫(xiě)自己的data目錄)  
    dataLogDir=/usr/myenv/zookeeper-3.4.8/logs  
    clientPort=2181  

參數(shù)說(shuō)明:

#tickTime: zookeeper中使用的基本時(shí)間單位, 毫秒值.
#dataDir: 數(shù)據(jù)目錄. 可以是任意目錄.
#dataLogDir: log目錄, 同樣可以是任意目錄. 如果沒(méi)有設(shè)置該參數(shù), 將使用和#dataDir相同的設(shè)置.
#clientPort: 監(jiān)聽(tīng)client連接的端口號(hào).

1.2、運(yùn)行ZooKeeper Server

執(zhí)行./bin/zkServer.sh start命令,運(yùn)行ZooKeeper Server進(jìn)程,得到如圖所示結(jié)果,表示后臺(tái)運(yùn)行ZooKeeper Server進(jìn)程成功。

圖片 1.png

注:命令telnet 127.0.0.1 2181 連接成功驗(yàn)證Zookeeper 是否啟動(dòng)成功
停止:./bin/zkServer.sh stop
也可以執(zhí)行bin/zkServer.sh start-foreground命令,非后臺(tái)運(yùn)行ZooKeeper Server進(jìn)程

圖片 2.png

二、集群模式

集群模式有兩種形式:
1)使用多臺(tái)機(jī)器,在每臺(tái)機(jī)器上運(yùn)行一個(gè)ZooKeeper Server進(jìn)程;
2)使用一臺(tái)機(jī)器,在該臺(tái)機(jī)器上運(yùn)行多個(gè)ZooKeeper Server進(jìn)程。
在生產(chǎn)環(huán)境中,一般使用第一種形式,在練習(xí)環(huán)境中,一般使用第二種形式。

2.1、參數(shù)配置

集群模式下,需要配置一些參數(shù),以下是常見(jiàn)的一些參數(shù)。

  1. data目錄
    用于存放進(jìn)程運(yùn)行數(shù)據(jù)。
  2. data目錄下的myid文件
    用于存儲(chǔ)一個(gè)數(shù)值,用來(lái)作為該ZooKeeper Server進(jìn)程的標(biāo)識(shí)。
  3. 監(jiān)聽(tīng)Client端請(qǐng)求的端口號(hào)
  4. 監(jiān)聽(tīng)同ZooKeeper集群內(nèi)其他Server進(jìn)程通信請(qǐng)求的端口號(hào)
  5. 監(jiān)聽(tīng)ZooKeeper集群內(nèi)“l(fā)eader”選舉請(qǐng)求的端口號(hào)
    該端口號(hào)用來(lái)監(jiān)聽(tīng)ZooKeeper集群內(nèi)“l(fā)eader”選舉的請(qǐng)求。注意這個(gè)是ZooKeeper集群內(nèi)“l(fā)eader”的選舉,跟分布式應(yīng)用程序無(wú)關(guān)。
    參數(shù)配置注意事項(xiàng):
    1)同一個(gè)ZooKeeper集群內(nèi),不同ZooKeeper Server進(jìn)程的標(biāo)識(shí)需要不一樣,即myid文件內(nèi)的值需要不一樣
    2)采用上述第2種形式構(gòu)建ZooKeeper集群,需要注意“目錄,端口號(hào)”等資源的不可共享性,如果共享會(huì)導(dǎo)致ZooKeeper Server進(jìn)程不能正常運(yùn)行,比如“data目錄,幾個(gè)監(jiān)聽(tīng)端口號(hào)”都不能被共享
myid Data目錄 Client Server Leader 配置文件
1 /z1/data 2181 2222 2223 z1.cfg
2 /z2/data 2182 3333 3334 z2.cfg
3 /z3/data 2183 4444 4445 z3.cfg

配置如下:

    # zx.cfg  
    tickTime=2000  
    initLimit=10  
    syncLimit=2  
    dataDir=/usr/myenv/zookeeper-3.4.8/zx/data  
    clientPort=218x  
    # server.x中的“x”表示ZooKeeper Server進(jìn)程的標(biāo)識(shí)  
    server.1=127.0.0.1:2222:2225  
    server.2=127.0.0.1:3333:3335  
    server.3=127.0.0.1:4444:4445  

注:

  • initLimit: zookeeper集群中的包含多臺(tái)server, 其中一臺(tái)為leader, 集群中其余的server為follower. initLimit參數(shù)配置初始化連接時(shí), follower和leader之間的最長(zhǎng)心跳時(shí)間. 此時(shí)該參數(shù)設(shè)置為5, 說(shuō)明時(shí)間限制為5倍tickTime, 即5*2000=10000ms=10s.
  • syncLimit: 該參數(shù)配置leader和follower之間發(fā)送消息, 請(qǐng)求和應(yīng)答的最大時(shí)間長(zhǎng)度. 此時(shí)該參數(shù)設(shè)置為2, 說(shuō)明時(shí)間限制為2倍tickTime, 即4000ms.

2.2、運(yùn)行ZooKeeper Server

分別執(zhí)行

   bin/zkServer.sh start deploy/z1/z1.cfg,  
   bin/zkServer.sh start deploy/z2/z2.cfg  
   bin/zkServer.sh start deploy/z3/z3.cfg  

運(yùn)行上述配置的3個(gè)ZooKeeper Server進(jìn)程。

2.3、運(yùn)行ZooKeeper命令行客戶端

執(zhí)行命令

bin/zkCli.sh -server 127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183  
建立ZooKeeper Client端到ZooKeeper集群的連接會(huì)話。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容