linux 安裝配置zookeeper

1.什麼是zookeeperjava

  ZooKeeper是一個分佈式的,開放源碼的分佈式應用程序協調服務,是Google的Chubby一個開源的實現,是Hadoop和Hbase的重要組件。它是一個爲分佈式應用提供一致性服務的軟件,提供的功能包括:配置維護、名字服務、分佈式同步、組服務等。node

ZooKeeper的目標就是封裝好複雜易出錯的關鍵服務,將簡單易用的接口和性能高效、功能穩定的系統提供給用戶。
ZooKeeper包含一個簡單的原語集,[1]  提供Java和C的接口。
ZooKeeper代碼版本中,提供了分佈式獨享鎖、選舉、隊列的接口,代碼在zookeeper-3.4.3\src\recipes。其中分佈鎖和隊列有Java和C兩個版本,選舉只有Java版本。
2.zookeeper的原理
  ZooKeeper是以Fast Paxos算法爲基礎的,paxos算法存在 活鎖的 問題,即當有多個proposer交錯提交時,有可能互相排斥致使沒有一個proposer能提交成功,而Fast Paxos做了一些優化,經過選舉產生一個leader,只有leader才能提交propose,具體算法可見Fast Paxos。所以,要想弄懂ZooKeeper首先得對Fast Paxos有所瞭解。[3]
 
ZooKeeper的基本 運轉流程:
  一、選舉Leader。
  二、同步數據。
  三、選舉Leader過程當中算法有不少,但要達到的選舉標準是一致的。
  四、Leader要具備最高的zxid。
  五、集羣中大多數的機器獲得響應並follow選出的Leader
3.zookeeper的特色
   在Zookeeper中,znode是一個跟Unix文件系統路徑類似的節點,能夠往這個節點存儲或獲取數據。若是在建立znode時Flag設置爲 EPHEMERAL,那麼當建立這個znode的節點和Zookeeper失去鏈接後,這個znode將再也不存在在Zookeeper 裏,Zookeeper使用Watcher察覺事件信息。當客戶端接收到事件信息,好比鏈接超時、節點數據改變、子節點改變,能夠調用相應的行爲來處理數 據。Zookeeper的Wiki頁面展現瞭如何使用Zookeeper來處理事件通知,隊列,優先隊列,鎖,共享鎖,可撤銷的共享鎖,兩階段提交。
那麼Zookeeper能做什麼事情呢,簡單的例子:假設咱們有20個 搜索引擎服務器(每 個負責總索引中的一部分的搜索任務)和一個總服務器(負責向這20個搜索引擎的服務器發出搜索請求併合並結果集),一個備用的總服務器(負責當總服務器宕 機時替換總服務器),一個web的cgi(向總服務器發出搜索請求)。搜索引擎的服務器中的15個服務器提供搜索服務,5個服務器正在生成索引。這20個 搜索引擎的服務器常常要讓正在提供搜索服務的服務器中止提供服務開始生成索引,或生成索引的服務器已經把索引生成完成能夠搜索提供服務了。使用 Zookeeper能夠保證總服務器自動感知有多少提供搜索引擎的服務器並向這些服務器發出搜索請求,當總服務器宕機時自動啓用備用的總服務器。
 
4.centos 5.8搭建環境
  所需軟件:VM 虛擬機  centos系統  jdk 1.6或者以上  zookeeper-3.4.6.tar.gz
  這裏至少須要三臺server,否則的話這裏zookeeper安裝的時候,測試會報至少須要三臺server,相關能夠查看zookeeper.out(測試環境下)
  
  首先下載jdk的rpm包,分別上傳到三個虛擬機上並安裝。
    1.先查看系統是否存在jdk的相關包。(有時候裝的系統中會有一個openJDK)有的話就將其卸載掉。
    2.將jdk保存在/usr/local/java目錄下
    3.安裝jdk:rpm -ivh jdk-**-**.rpm
  這裏不用配置java環境,由於rpm將其自動加到path中。
  安裝zookeeper,將zookeeper上傳到三個服務器,保存在/usr/local/zookeeper目錄下,解壓tar包
  tar -xzvf zookeeper-3.4.6.tar.gz
  進入目錄zookeeper-3.4.6中,將conf目錄中的 zoo_sample.cfg文件複製爲zoo.cfg並利用vi命令進行修改
  tickTime=2000
  initLimit=10
  syncLimit=5
  clientPort=2181
  dataDir=/usr/local/zookeeper/zookeeper-3.4.6/data    保存數據目錄
  dataLogDir=/usr/local/zookeeper/zookeeper-3.4.6/log 保存日誌目錄
  server.1=ip:2888:3888   ip爲服務器的ip
  server.2=ip:2888:3888   ip爲服務器的ip
  server.3=ip:2888:3888   ip爲服務器的ip
  
  這裏的data和log須要本身建立 mkdir命令建立
  
  在/usr/local/zookeeper/zookeeper-3.4.6/data目錄下建立一個文件:myid
 
  分別在myid上按照配置文件的server.<id>中id的數值,在不一樣機器上的該文件中填寫相應過的值
  ip  的myid內容爲1
  ip  的爲2
  ip  的爲3
    ip爲服務器的ip   這裏對應上面的server.1,server.2,server.3
 
  建立一個環境變量ZOOKEEPER並把該環境變量添加到系統路徑:
  vim /etc/profile
 
  在export PATH語句前添加兩行:
  ZOOKEEPER=/usr/local/zookeeper/zookeeper-3.4.6
  PATH=$PATH:$ZOOKEEPER/bin
 
  並執行 source /etc/profile
此時安裝成功,進行測試:
  1.進入zookeeper的bin目錄,執行sh zkServer.sh start進行啓動zookeeper
  2.查看狀態   進入bin目錄,執行sh zkServer.sh status
  3.中止    進入bin目錄,執行sh zkServer.sh stop
相關文章
相關標籤/搜索