天天看點

分布式架構(四)-zookeeper概述簡介特性資料結構節點類型Zookeeper叢集的安裝

簡介

zookeeper是一個分布式協調服務,能夠為分布式應用程式提供協調服務。 1. zookeeper是為别的分布式程式服務的。 2. zookeeper本身就是一個分布式程式。 zookeeper叢集分為兩種角色:Leader和Follower,Leader的選舉通過zab算法進行(PAXOS算法的簡化版)。 叢集中半數節點以上存活,就能提供服務。 3. zookeeper提供的服務包含:主從協調、伺服器節點動态上下線、統一配置管理、分布式共享鎖等等。 4. zookeeper底層隻提供了兩個功能: 4.1 管理使用者送出的資料。 4.2 提供資料節點的監聽服務。

特性

1. 全局資料一緻性:每個server儲存一份相同的資料副本,用戶端無論連接配接到哪個server,資料都是一緻的。 2. 分布式讀寫,更行操作由leader實施。 3. 更新請求順序進行。來自同一個用戶端的更新請求按其發送順序依次進行。 4. 資料更新的原子性。 4. 資料實時性。

資料結構

1. 階層化的目錄結構。 2. 每個節點為znode,并且有一個唯一的路徑辨別。 3. 節點可以包換資料和子節點(EPHEMERAL節點沒有子節點)。 4. 節點可以設定監聽器。

節點類型

1. 短暫節點(ephemeral),斷開連接配接時會自動删除。 2. 持久節點(persistent)。 3. 節點還可以擁有序列号,為sequential。

Zookeeper叢集的安裝

1. Centos的準備

準備方式可以參考另一篇博文。 一共準備三台虛拟機,分别将其命名為zookeeper1.com、zookeeper2.com、zookeeper3.com 然後建立zookeeper使用者

adduser zookeeper
passwd zookeeper
           

将密碼直接設定成zookeeper即可。

設定sudo權限 使用root使用者執行:

vim /etc/sudoers
           

在root ALL=(ALL) ALL下一行添加: zookeeper ALL=(ALL) ALL 退出儲存。 然後切換到zookeeper使用者

su zookeeper
           

2. Java環境安裝

在zookeeper使用者目錄下建立檔案夾:

mkdir zip apps
           

jdk使用7_79版本。然後将安裝包上傳到zip目錄。 執行:

tar -zxvf jdk-7u79-linux-x64.tar.gz
mv jdk-7u79-linux-x64 ~/apps
sudo vi /etc/profile
           

在檔案末尾添加:

export JAVA_HOME=/home/zookeeper/apps/jdk1.7.0_79
           

執行:

sudo source /etc/profile
           

執行java -version,如果可以看到jdk版本資訊,則說明安裝成功。

3. Zookeeper的安裝

首先,準備zookeeper的安裝包,這裡使用的是3.4.5版本,你可以在 這裡下載下傳。 在zookeeper使用者目錄下建立檔案夾:

mkdir zip apps
           

在以後的博文中,應用程式都會安裝在apps目錄下, 所有的安裝包都會放在zip目錄下。 将下載下傳好的安裝包,上傳到zip目錄中,解壓

tar -zxvf zookeeper-3.4.5.tar
mv zookeeper-3.4.5 ../apps
           

進入到安裝目錄

cd ../apps/zookeeper-3.4.5
           

修改配置檔案

cp conf/zoo_sample.cfg conf/zoo.cfg
vi zoo.cfg
           

修改内容如下:

tickTime=2000
initLimit=10
syncLimit=5
dataDir=/home/zookeeper/apps/zookeeper-3.4.9/data
dataLogDir=/home/zookeeper/apps/zookeeper-3.4.9/log
clientPort=2181
server.1=zookeeper1.com:2888:3888
server.2=zookeeper2.com:2888:3888
server.3=zookeeper3.com:2888:3888
           

其中,最下面的幾行,server.x是不能修改的,x代表第幾台zookeeper機。zookeeperx.com是每一台主機的域名。端口号2888和3888是預設的。 配置環境變量:

sudo vi /etc/profile
           

在末尾添加:

export ZOOKEEPER_HOME=/home/zookeeper/apps/zookeeper-3.4.9
export PATH=$PATH:$JAVA_HOME/bin:$ZOOKEEPER_HOME/bin
           

儲存設定

sudo source /etc/profile
           

将上述的配置在每台centos上執行。也可以使用scp指令進行傳輸。

然後,在每台zookeeper機上配置叢集id 進入data目錄,這個data目錄就是在zoo.cfg檔案裡配置的

vi /home/zookeeper/apps/zookeeper-3.4.5/data/myid
           

目前機對應的是zoo.cfg檔案中的server.x的哪個數字,就将值填進去。例如,直接寫個1,然後退出儲存。 然後關閉防火牆,或開放2888,3888端口。

sudo service iptables stop
           

設定hosts檔案,在每台伺服器上執行:

sudo vi /etc/hosts
           

在末尾添加:

192.168.232.101 zookeeper1.com
192.168.232.102 zookeeper2.com
192.168.232.103 zookeeper3.com
           

ip位址根據自己的實際情況修改。

最後,啟動zookeeper叢集

zkServer.sh start
           

檢視zookeeper狀态

zkServer.sh status
           

檢視到如下,說明啟動成功:

分布式架構(四)-zookeeper概述簡介特性資料結構節點類型Zookeeper叢集的安裝
分布式架構(四)-zookeeper概述簡介特性資料結構節點類型Zookeeper叢集的安裝

繼續閱讀