zookeeper集羣的安裝

  顧名思義zookeeper就是動物園管理員,他是用來管hadoop(大象)、Hive(蜜蜂)pig(小豬)的管理員, Apache Hbase和 Apache Solr 的分佈式集羣都用到了zookeeperZookeeper:是一個分佈式的、開源的程序協調服務,是hadoop項目下的一個子項目數據庫

  1、zookeeper主要功能以下:apache

  1配置管理編程

  在咱們的應用中除了代碼外,還有一些就是各類配置。好比數據庫鏈接等。通常咱們都是使用配置文件的方式,在代碼中引入這些配置文件。可是當咱們只有一種配置,只有一臺服務器,而且不常常修改的時候,使用配置文件是一個很好的作法,可是若是咱們配置很是多,有不少服務器都須要這個配置,並且還多是動態的話使用配置文件就不是個好主意了。這個時候每每須要尋找一種集中管理配置的方法,咱們在這個集中的地方修改了配置,全部對這個配置感興趣的均可以得到變動。好比咱們能夠把配置放在數據庫裏,而後全部須要配置的服務都去這個數據庫讀取配置。可是,由於不少服務的正常運行都很是依賴這個配置,因此須要這個集中提供配置服務的服務具有很高的可靠性。通常咱們能夠用一個集羣來提供這個配置服務,可是用集羣提高可靠性,那如何保證配置在集羣中的一致性呢? 這個時候就須要使用一種實現了一致性協議的服務了。Zookeeper就是這種服務,它使用Zab這種一致性協議來提供一致性。如今有不少開源項目使用Zookeeper來維護配置,好比在HBase中,客戶端就是鏈接一個Zookeeper,得到必要的HBase集羣的配置信息,而後才能夠進一步操做。還有在開源的消息隊列Kafka中,也使用Zookeeper來維護broker的信息。在Alibaba開源的SOA框架Dubbo中也普遍的使用Zookeeper管理一些配置來實現服務治理。服務器

  2、名字服務網絡

  名字服務這個就很好理解了。好比爲了經過網絡訪問一個系統,咱們得知道對方的IP地址,可是IP地址對人很是不友好,這個時候咱們就須要使用域名來訪問。可是計算機是不能是別域名的。怎麼辦呢?若是咱們每臺機器裏都備有一份域名到IP地址的映射,這個卻是能解決一部分問題,可是若是域名對應的IP發生變化了又該怎麼辦呢?因而咱們有了DNS這個東西。咱們只須要訪問一個你們熟知的(known)的點,它就會告訴你這個域名對應的IP是什麼。在咱們的應用中也會存在不少這類問題,特別是在咱們的服務特別多的時候,若是咱們在本地保存服務的地址的時候將很是不方便,可是若是咱們只須要訪問一個你們都熟知的訪問點,這裏提供統一的入口,那麼維護起來將方便得多了。架構

  3、分佈式鎖框架

  其實在第一篇文章中已經介紹了Zookeeper是一個分佈式協調服務。這樣咱們就能夠利用Zookeeper來協調多個分佈式進程之間的活動。好比在一個分佈式環境中,爲了提升可靠性,咱們的集羣的每臺服務器上都部署着一樣的服務。可是,一件事情若是集羣中的每一個服務器都進行的話,那相互之間就要協調,編程起來將很是複雜。而若是咱們只讓一個服務進行操做,那又存在單點。一般還有一種作法就是使用分佈式鎖,在某個時刻只讓一個服務去幹活,當這臺服務出問題的時候鎖釋放,當即fail over到另外的服務。這在不少分佈式系統中都是這麼作,這種設計有一個更好聽的名字叫Leader Election(leader選舉)。好比HBaseMaster就是採用這種機制。但要注意的是分佈式鎖跟同一個進程的鎖仍是有區別的,因此使用的時候要比同一個進程裏的鎖更謹慎的使用。分佈式

  4、集羣管理oop

  在分佈式的集羣中,常常會因爲各類緣由,好比硬件故障,軟件故障,網絡問題,有些節點會進進出出。有新的節點加入進來,也有老的節點退出集羣。這個時候,集羣中其餘機器須要感知到這種變化,而後根據這種變化作出對應的決策。好比咱們是一個分佈式存儲系統,有一箇中央控制節點負責存儲的分配,當有新的存儲進來的時候咱們要根據如今集羣目前的狀態來分配存儲節點。這個時候咱們就須要動態感知到集羣目前的狀態。還有,好比一個分佈式的SOA架構中,服務是一個集羣提供的,當消費者訪問某個服務時,就須要採用某種機制發現如今有哪些節點能夠提供該服務(這也稱之爲服務發現,好比Alibaba開源的SOA框架Dubbo就採用了Zookeeper做爲服務發現的底層機制)。還有開源的Kafka隊列就採用了Zookeeper做爲Cosnumer的上下線管理。spa

  2、zookeeper集羣安裝

  1.下載安裝包

  http://apache.fayea.com/zookeeper/zookeeper-3.4.6/

  2.解壓壓縮包

  

  3.建立solrclude文件夾,將解壓的zookeeper包拷貝到solrclude文件夾中

  

  4.將zookeeper-3.4.6拷貝到/usr/local/solrcloud下,複製三份分別並將目錄名改成zookeeper1zookeeper2zookeeper3

  

   5.進入zookeeper1文件夾,建立data目錄。並在data目錄中建立一個myid文件內容爲「1」(echo 1 >> data/myid)。

  

  6.進入conf文件夾,把zoo_sample.cfg更名爲zoo.cfg

  

  7.修改zoo.cfg

 

  dataDir=/usr/local/solrcloud/zookeeper1/data

 

  clientPort=2181zookeeper2中爲2182zookeeper3中爲2183

 

  添加:

 

  server.1=192.168.198.130:2881:3881

 

  server.2=192.168.198.130:2882:3882

 

  server.3=192.168.198.130:2883:3883

  

  8.對zookeeper23中的設置作第二步至第四步修改。

  zookeeper2

    myid內容爲2

    dataDir=/usr/local/solrcloud/zookeeper2/data

    clientPort=2182

  Zookeeper3

    myid內容爲3

    dataDir=/usr/local/solrcloud/zookeeper3/data

    clientPort=2183

  9.啓動三個zookeeper,查看狀態

啓動三個zookeeper
/usr/local/solrcloud/zookeeper1/bin/zkServer.sh start
/usr/local/solrcloud/zookeeper2/bin/zkServer.sh start
/usr/local/solrcloud/zookeeper3/bin/zkServer.sh start
查看集羣狀態:
/usr/local/solrcloud/zookeeper1/bin/zkServer.sh status
/usr/local/solrcloud/zookeeper2/bin/zkServer.sh status
/usr/local/solrcloud/zookeeper3/bin/zkServer.sh status

相關文章
相關標籤/搜索