Zookeeper的簡單介紹和搭建

  1. zookeeper概述
    Zookeeper 是一個分佈式協調服務的開源框架。 主要用來解決分佈式集羣中應用系統的一致性問題,例如怎樣避免同時操作同一數據造成髒讀的問題。ZooKeeper 本質上是一個分佈式的小文件存儲系統。 提供基於類似於文件系統的目錄樹方式的數據存儲,並且可以對樹中的節點進行有效管理。從而用來維護和監控你存儲的數據的狀態變化。通過監控這些數據狀態的變化,從而可以達到基於數據的集羣管理。
  2. zookeeper的角色
    zookeeper的架構圖
    ZooKeeper中包含Leader、Follower和Observer三個角色;
    Leader:
    Zookeeper 集羣工作的核心
    事務請求(寫操作) 的唯一調度和處理者,保證集羣事務處理的順序性;
    集羣內部各個服務器的調度者。
    對於 create, setData, delete 等有寫操作的請求,則需要統一轉發給leader 處理, leader 需要決定編號、執行操作,這個過程稱爲一個事務。
    Follower:
    處理客戶端非事務(讀操作) 請求,
    轉發事務請求給 Leader;
    參與集羣 Leader 選舉投票 2n-1臺可以做集羣投票。
    此外,針對訪問量比較大的 zookeeper 集羣, 還可新增觀察者角色。
    Observer:
    觀察者角色,觀察 Zookeeper 集羣的最新狀態變化並將這些狀態同步過
    來,其對於非事務請求可以進行獨立處理,對於事務請求,則會轉發給 Leader
    服務器進行處理。
    不會參與任何形式的投票只提供非事務服務,通常用於在不影響集羣事務
    處理能力的前提下提升集羣的非事務處理能力。
    Follower和Observer的區別就是:Observer不參與Leader的選舉過程,也不參與寫操作的過半寫成功策略。
  3. zookeeper搭建
    Zookeeper本身是由Java語言開發的一個相對獨立的基礎分佈式組件,因此,Zookeeper的安裝除了需要安裝JDK外,不再需要依賴其它環境。
    準備三臺機器,安裝好JDK,設置好hostname,
    機器IP hostname
    192.168.0.47 bdata01
    192.168.0.52 bdata02
    192.168.0.53 bdata03
    在Zookeeper集羣中,若超過半數以上服務節點不可用,纔會造成整個服務不可用,所以其集羣節點數一般都是至少3個節點以上的奇數個.
    選擇zookeeper版本,這裏安裝選擇的是cdh版本,版本爲 zookeeper-3.4.5-cdh5.14.0, 有需要Apache版本的,可以自行去Apache官網下載,進行安裝.安裝目錄 /home/office
    將下載好的安裝包上傳到第一臺機器上,即bdata01, 進行解壓,tar -zxvf zookeeper-3.4.5-cdh5.14.0.tar.gz
    解壓後進入zookeeper,創建zkdata目錄logdata目錄,並在zkdata目錄下創建myid文件,編輯myid文件,寫入1,並保存.
    zookeeper
    myid文件
    進入conf目錄,複製zoo_sample.cfg, 並重命名爲zoo.cfg.編輯zoo.cfg
    修改zoo.cfg文件
    主要修改的地方如圖中標註.
dataDir=/home/office/zookeeper-3.4.5-cdh5.14.0/zkdata
dataLogDir=/home/office/zookeeper-3.4.5-cdh5.14.0/logdata
autopurge.snapRetainCount=3
autopurge.purgeInterval=1
server.1=bdata01:2888:3888
server.2=bdata02:2888:3888
server.3=bdata03:2888:3888

說明:2181是zookeeper客戶端連接端口,2888是從follower連接到leader機器的端口,3888是用來進行leader選舉時所用的端口.
將zookeeper發送到bdata02和bdata03上去, 並修改他們的myid文件值,bdata02爲2, bdata03爲3.

# 分發zookeeper
[root@bdata01 office ]$ scp -r zookeeper-3.4.5-cdh5.14.0/ bdata02:$PWD
[root@bdata01 office ]$ scp -r zookeeper-3.4.5-cdh5.14.0/ bdata03:$PWD
# 修改bdata02  myid文件的值
[root@bdata02 zookeeper-3.4.5-cdh5.14.0 ]$ echo 2 > zkdata/myid 
# 修改 bdata03  myid文件的值
[root@bdata03 zookeeper-3.4.5-cdh5.14.0 ]$ echo 3 > zkdata/myid 

修改完成後,就可以啓動zookeeper,啓動腳本是bin目錄下的zkServer.sh腳本, 在三臺機器的zookeeper根目錄下啓動,
[root@bdata02 zookeeper-3.4.5-cdh5.14.0 ]$ bin/zkServer.sh start
啓動完成後查看狀態. [root@bdata02 zookeeper-3.4.5-cdh5.14.0 ]$ bin/zkServer.sh status
bdata01 zk狀態
bdata02 zk狀態
bdata03 zk狀態

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章