1. 程式人生 > >註冊中心zookeeper-3.4.6集群以及高可用

註冊中心zookeeper-3.4.6集群以及高可用

keep 配置服務 認識 圖片 sdn 常常 環境搭建 接口 zxvf

zookeeper是什麽

百度定義:

ZooKeeper是一個分布式的,開放源碼的分布式應用程序協調服務,是Google的Chubby一個開源的實現,是Hadoop和Hbase的重要組件。

它是一個為分布式應用提供一致性服務的軟件,提供的功能包括:配置維護、名字服務、分布式同步、組服務等。通俗一點理解可以認為他可以服務管理集群、管理集群服務器中配置信息,這兩點是我們在項目中最常用的兩個特點,其中對每個服務實例中的配置文件維護非常繁瑣,因此會引入配置服務器來維護配置除此之外還有日誌服務器等,免去了我們為了解決一個小bug而去查找好幾G的日誌文件。

主要作用

在分布式SOA開發中我們要有種這樣的認識:對於某一個服務是集群提供給消費者的,而不是一個特定的機器。

因此必須有一種機制來發現判斷哪些節點可以提供服務,換句話說就是當消費者訪問時一個服務時,判斷出哪些服務可以使用,如果兩個或者兩個以上服務可以使用,還必須根據調用算法,合理的調用服務接口。

既然每個服務都不是簡單的部署在一臺電腦上面,可能部署了多個節點多個機器,為的就是避免某一個服務壓力過大或其他原因宕機時,仍然保證7*24小時不間斷服務;

如果公司業務擴展非常快訪問數量在急劇增長,可以支持動態增加後臺服務節點來適用壓力的增長,也就是可伸縮性要好,zookeeper可以完美的解決這些問題,這也是很多公司傾向於使用它來作為服務註冊發現調度框架。

它的名字服務就比如JNDI為我們提供的命名目錄服務,為我們訪問某一個特定的資源指定了一個別人,在以後適用起來通過這個別人就可以拿到我們所需資源。

開發項目的我們都知道每個項目裏都會有很多的配置文件,例如大家最熟悉的連接數據庫信息、日誌打印格式方式、屬性文件等等,在非分布式環境中常常一個項目部署一臺機器即可,修改配置文件只需要在一臺機器上面改一下;如果到了分布式項目一個服務就需要配置好幾臺機器多的話可能十幾臺、數百臺、上千臺、如果到了上萬臺服務,這項工作量可想而知,光改一個小小的配置文件就需要改好幾天而且非常容易改錯,這種事情zookeeper可以幫我們管理配置文件,並且可以做到改了zookeeper配置其它服務節點自動更新的熱部署能力,在分布式中它發揮的作用還是很大的。

我們公司在管理配置文件時並沒有使用zookeeper的配置管理,不知道為啥?可能單獨引入一個框架會好用一些,使用的百度的disconf來統一管理配置信息,從資料和使用的效果來看還是比較簡單的容易上手。

安裝實例

由於機器有限這裏我安裝了一下偽分布式集群,公司在開發以及測試環境搭建的也是偽分布式模式,感覺和真正分布式集群其實是一樣的沒有多少區別,安裝方式步驟幾乎也一模一樣,下面是安裝的基本步驟。

1.安裝jdk 1.6以上,我們公司安裝的1.7,如

技術分享圖片

2. 下載zookeeper-3.4.6.tar.gz , 輸入命令 tar -zxvf 解壓,創建如下目錄結構:

技術分享圖片

3. 進入conf目錄,將example.zoo.cfg復制並改名為zoo.cfg,zoo.cfg內容如下圖

技術分享圖片

說明:上圖紅框框起來的表示需要修改的地方,第一處為數據、日誌目錄;

第二處為客戶端連接此zookeeper服務的端口,由於三個實例在一個機器所以需要修改;

第三處為zookeeper服務之間需要相互訪問的IP、Port、選舉Port,如果只有一個實例不需要互相通信就不需要配置這個信息。關於各個參數含義網上很多。

4. 在zookeeper-01/下面創建data、logs兩個目錄,並在data文件夾中建一個文件名為myid,內容為數字的文件,(數字與server.*)中*一致,可以使用命令:echo 1 > myid。意思是先將1輸出到屏幕,然後讀入到myid文件,不存在文件則創建。

5. 將zookeeper-01復制三份,分別改名為02 、03,對應端口改為2181、2183,然後,分別進入bin目錄啟動,即可完成安裝。

註意在部署的時候一般部署奇數臺,因為部署2n與2n-1臺宕機之後他們的集群穩定性是一樣的,就沒有必要多部署一臺了。

部署架構

安裝完之後的部署架構如下圖:

技術分享圖片

zookeeper是作為一個小的集群對外面提供服務,主要用來協調右下角的消費者與左下角的服務之間的調用關系,通過dubboe-admin控制臺可以實時監測server-01/02是否工作正常,



總結

註冊中心組成分布式框架的一部分,起著承上起來的連接協調作用,雖然不是服務的真正實現者但也不容忽視,感覺在分布式框架中已經不再僅僅關心服務的實現層面,除了服務實現還有服務管理、性能、事務等都是我們需要考慮的問題,分布式服務開發可以說對一個開發人員的素質要求也是高的,然後,大部分人習慣了實現代碼忽略了整體架構,關心的東西多了慢慢就會了解架構就是架構師,有時一個人關心的決定了他將要成為什麽樣的角色、什麽樣的人。

註冊中心zookeeper-3.4.6集群以及高可用