Zookeeper

zookeeper是個什么玩意?

顧名思義zookeeper就是動物園管理員,他是用來管hadoop(大象)、Hive(蜜蜂)、pig(小豬)的管理員, Apache Hbase和 Apache Solr 的分布式集群都用到了zookeeper;Zookeeper:是一個分布式的、開源的程序協(xié)調(diào)服務(wù),是hadoop項目下的一個子項目。

Zookeeper可以干哪些事情?

1、配置管理
在我們的應(yīng)用中除了代碼外,還有一些就是各種配置。比如數(shù)據(jù)庫連接等。一般我們都是使用配置文件的方式,在代碼中引入這些配置文件。但是當(dāng)我們只有一種配置,只有一臺服務(wù)器,并且不經(jīng)常修改的時候,使用配置文件是一個很好的做法,但是如果我們配置非常多,有很多服務(wù)器都需要這個配置,而且還可能是動態(tài)的話使用配置文件就不是個好主意了。這個時候往往需要尋找一種集中管理配置的方法,我們在這個集中的地方修改了配置,所有對這個配置感興趣的都可以獲得變更。比如我們可以把配置放在數(shù)據(jù)庫里,然后所有需要配置的服務(wù)都去這個數(shù)據(jù)庫讀取配置。但是,因為很多服務(wù)的正常運(yùn)行都非常依賴這個配置,所以需要這個集中提供配置服務(wù)的服務(wù)具備很高的可靠性。一般我們可以用一個集群來提供這個配置服務(wù),但是用集群提升可靠性,那如何保證配置在集群中的一致性呢? 這個時候就需要使用一種實現(xiàn)了一致性協(xié)議的服務(wù)了。Zookeeper就是這種服務(wù),它使用Zab這種一致性協(xié)議來提供一致性。現(xiàn)在有很多開源項目使用Zookeeper來維護(hù)配置,比如在HBase中,客戶端就是連接一個Zookeeper,獲得必要的HBase集群的配置信息,然后才可以進(jìn)一步操作。還有在開源的消息隊列Kafka中,也使用Zookeeper來維護(hù)broker的信息。在Alibaba開源的SOA框架Dubbo中也廣泛的使用Zookeeper管理一些配置來實現(xiàn)服務(wù)治理。

2、名字服務(wù)
名字服務(wù)這個就很好理解了。比如為了通過網(wǎng)絡(luò)訪問一個系統(tǒng),我們得知道對方的IP地址,但是IP地址對人非常不友好,這個時候我們就需要使用域名來訪問。但是計算機(jī)是不能是別域名的。怎么辦呢?如果我們每臺機(jī)器里都備有一份域名到IP地址的映射,這個倒是能解決一部分問題,但是如果域名對應(yīng)的IP發(fā)生變化了又該怎么辦呢?于是我們有了DNS這個東西。我們只需要訪問一個大家熟知的(known)的點(diǎn),它就會告訴你這個域名對應(yīng)的IP是什么。在我們的應(yīng)用中也會存在很多這類問題,特別是在我們的服務(wù)特別多的時候,如果我們在本地保存服務(wù)的地址的時候?qū)⒎浅2环奖悖侨绻覀冎恍枰L問一個大家都熟知的訪問點(diǎn),這里提供統(tǒng)一的入口,那么維護(hù)起來將方便得多了。

3、分布式鎖
其實在第一篇文章中已經(jīng)介紹了Zookeeper是一個分布式協(xié)調(diào)服務(wù)。這樣我們就可以利用Zookeeper來協(xié)調(diào)多個分布式進(jìn)程之間的活動。比如在一個分布式環(huán)境中,為了提高可靠性,我們的集群的每臺服務(wù)器上都部署著同樣的服務(wù)。但是,一件事情如果集群中的每個服務(wù)器都進(jìn)行的話,那相互之間就要協(xié)調(diào),編程起來將非常復(fù)雜。而如果我們只讓一個服務(wù)進(jìn)行操作,那又存在單點(diǎn)。通常還有一種做法就是使用分布式鎖,在某個時刻只讓一個服務(wù)去干活,當(dāng)這臺服務(wù)出問題的時候鎖釋放,立即fail over到另外的服務(wù)。這在很多分布式系統(tǒng)中都是這么做,這種設(shè)計有一個更好聽的名字叫Leader Election(leader選舉)。比如HBase的Master就是采用這種機(jī)制。但要注意的是分布式鎖跟同一個進(jìn)程的鎖還是有區(qū)別的,所以使用的時候要比同一個進(jìn)程里的鎖更謹(jǐn)慎的使用。

4、集群管理
在分布式的集群中,經(jīng)常會由于各種原因,比如硬件故障,軟件故障,網(wǎng)絡(luò)問題,有些節(jié)點(diǎn)會進(jìn)進(jìn)出出。有新的節(jié)點(diǎn)加入進(jìn)來,也有老的節(jié)點(diǎn)退出集群。這個時候,集群中其他機(jī)器需要感知到這種變化,然后根據(jù)這種變化做出對應(yīng)的決策。比如我們是一個分布式存儲系統(tǒng),有一個中央控制節(jié)點(diǎn)負(fù)責(zé)存儲的分配,當(dāng)有新的存儲進(jìn)來的時候我們要根據(jù)現(xiàn)在集群目前的狀態(tài)來分配存儲節(jié)點(diǎn)。這個時候我們就需要動態(tài)感知到集群目前的狀態(tài)。還有,比如一個分布式的SOA架構(gòu)中,服務(wù)是一個集群提供的,當(dāng)消費(fèi)者訪問某個服務(wù)時,就需要采用某種機(jī)制發(fā)現(xiàn)現(xiàn)在有哪些節(jié)點(diǎn)可以提供該服務(wù)(這也稱之為服務(wù)發(fā)現(xiàn),比如Alibaba開源的SOA框架Dubbo就采用了Zookeeper作為服務(wù)發(fā)現(xiàn)的底層機(jī)制)。還有開源的Kafka隊列就采用了Zookeeper作為Cosnumer的上下線管理。


Zookeeper集群的搭建

前臺條件

三個zookeeper實例。Zookeeper也是java開發(fā)的所以需要安裝jdk。
Linux系統(tǒng)
Jdk環(huán)境。
Zookeeper。

Zookeeper的安裝步驟

第一步:把zookeeper的安裝包上傳到服務(wù)器
第二步:解壓縮。
[root@bogon ~]# tar -zxf zookeeper-3.4.6.tar.gz
[root@bogon ~]#
第三步:在/usr/local/目錄下創(chuàng)建一個solrcloud目錄。把zookeeper解壓后的文件夾復(fù)制到此目錄下三份。分別命名為zookeeper1、2、3
[root@bogon ~]# mkdir /usr/local/solrcloud
[root@bogon ~]# mv zookeeper-3.4.6 /usr/local/solrcloud/zookeeper1
[root@bogon ~]# cd /usr/local/solrcloud
[root@bogon solrcloud]# ll
total 4
drwxr-xr-x. 10 1000 1000 4096 Feb 20 2014 zookeeper1
[root@bogon solrcloud]# cp -r zookeeper1/ zookeeper2
[root@bogon solrcloud]# cp -r zookeeper1/ zookeeper3
[root@bogon solrcloud]#
第四步:配置zookeeper。

1.在每個zookeeper文件夾下創(chuàng)建一個data目錄。
2.在data文件夾下創(chuàng)建一個文件名稱為myid,文件的內(nèi)容就是此zookeeper的編號1、2、3(不是txt格式的使用終端創(chuàng)建[echo 1 << myid])
[root@bogon data]# echo 1 >> myid
[root@bogon data]# ll
total 4
-rw-r--r--. 1 root root 2 Sep 17 23:43 myid
[root@bogon data]# cat myid
1
[root@bogon data]#

在zookeeper2、3文件夾下分別創(chuàng)建data目錄和myid文件
[root@bogon solrcloud]# mkdir zookeeper2/data
[root@bogon solrcloud]# echo 2 >> zookeeper2/data/myid
[root@bogon solrcloud]# ll zookeeper2/data
total 4
-rw-r--r--. 1 root root 2 Sep 17 23:44 myid
[root@bogon solrcloud]# cat zookeeper2/data/myid
2
[root@bogon solrcloud]# mkdir zookeeper3/data
[root@bogon solrcloud]# echo 3 >> zookeeper3/data/myid
[root@bogon solrcloud]#
3.把zookeeper1下conf目錄下的zoo_sample.cfg文件復(fù)制一份改名為zoo.cfg
4.修改zoo.cfg的配置

第五步:啟動zookeeper。進(jìn)入zookeeper1/bin目錄下。
啟動zookeeper:./zkServer.sh start
關(guān)閉:./zkServer.sh stop
查看狀態(tài):./zkServer.sh status

[root@bogon solrcloud]# zookeeper1/bin/zkServer.sh status
JMX enabled by default
Using config: /usr/local/solrcloud/zookeeper1/bin/../conf/zoo.cfg
Mode: follower
[root@bogon solrcloud]# zookeeper2/bin/zkServer.sh status
JMX enabled by default
Using config: /usr/local/solrcloud/zookeeper2/bin/../conf/zoo.cfg
Mode: leader
[root@bogon solrcloud]# zookeeper3/bin/zkServer.sh status
JMX enabled by default
Using config: /usr/local/solrcloud/zookeeper3/bin/../conf/zoo.cfg
Mode: follower
[root@bogon solrcloud]#

相同的方式在zookeeper2 ,3 中創(chuàng)建zoo.cfg并修改配置

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,908評論 6 541
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,324評論 3 429
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,018評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,675評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 72,417評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,783評論 1 329
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,779評論 3 446
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,960評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,522評論 1 335
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 41,267評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 43,471評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,009評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,698評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,099評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,386評論 1 294
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,204評論 3 398
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 48,436評論 2 378

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