簡介:
ZooKeeper是一個分布式的,開放源碼的分布式應用程式協調服務,是Google的Chubby一個開源的實作,是Hadoop和Hbase的重要元件。它是一個為分布式應用提供一緻性服務的軟體,提供的功能包括:配置維護、域名服務、分布式同步、組服務等。
ZooKeeper的目标就是封裝好複雜易出錯的關鍵服務,将簡單易用的接口和性能高效、功能穩定的系統提供給使用者。
zookeeper模式:
Standalone獨立模式:
隻有一個zookeeper服務執行個體,不可保證高可靠性和恢複性,可在測試環境中使用,生産環境不建議使用。
Distributed叢集模式:
有多個zookeeper執行個體在運作,建議多個zk執行個體是在不同的伺服器上。叢集中不同zookeeper執行個體之間資料不停的同步。有半數以上的執行個體保持正常運作,zk服務就能正常運作,例如:有5個zk執行個體,挂了2個,還剩3個,依然可以正常工作;如有6個zk執行個體,挂了3個,則不能正常工作。
僞叢集模式:
簡單來說,叢集僞分布模式就是在單機下模拟叢集的ZooKeeper服務。
本文主要講解叢集模式安裝部署
一、安裝環境
1、作業系統:Amazon Linux(目前版本基于centos6核心)
2、jdk-1.7.9
3、zookeeper-3.4.8
二、安裝JDK
安裝Zookeeper需要先安裝JDK,
安裝JDK參考本站博文http://linuxtech.blog.51cto.com/3670088/1706792
三、修改hosts檔案
主機名稱到IP位址映射配置
ZooKeeper叢集中具有兩個關鍵的角色:Leader和Follower。叢集中所有的結點作為一個整體對分布式應用提供服務,叢集中每個結點之間都互相連接配接,是以,在配置的ZooKeeper叢集的時候,每一個結點的host到IP位址的映射都要配置上叢集中其它結點的映射資訊。
例如,我的ZooKeeper叢集中每個結點的配置,以slave-01為例,/etc/hosts内容如下所示:
192.168.0.101 slave-1
192.168.0.102 slave-2
192.168.0.103 slave-3
ZooKeeper采用一種稱為Leader election的選舉算法。在整個叢集運作過程中,隻有一個Leader,其他的都是Follower,如果ZooKeeper叢集在運作過程中Leader出了問題,系統會采用該算法重新選出一個Leader。是以,各個結點之間要能夠保證互相連接配接,必須配置上述映射。
ZooKeeper叢集啟動的時候,會首先選出一個Leader,在Leader election過程中,某一個滿足選舉算的結點就能成為Leader。
四、安裝并配置zookeeper
到http://zookeeper.apache.org/releases.html去下載下傳Zookeeper,建議選擇穩定版,即stable的。
tar zxvf zookeeper-3.4.8.tar.gz -C /export/Server/
cd /export/Server/
mv zookeeper-3.4.8/ zookeeper
cd zookeeper/
cp conf/zoo_sample.cfg conf/zoo.cfg
mkdir -p /export/data/zookeeper/
修改zoo.cfg配置檔案
sed -i 's/dataDir=\/tmp\/zookeeper/dataDir=\/export\/data\/zookeeper/' conf/zoo.cfg
echo '''
> server.1=slave-1:2888:3888
> server.2=slave-2:2888:3888
> server.3=slave-3:2888:3888
> ''' >> conf/zoo.cfg
五、配置zookeeper的環境變量
cat >> /etc/profile <<EOF
export ZOOKEEPER_HOME=/export/Server/zookeeper
export PATH=$PATH:$ZOOKEEPER_HOME/bin
EOF
使之生效
source /etc/profile
六:遠端複制分發安裝檔案
上面已經在一台機器slave-01上配置完成ZooKeeper,現在可以将該配置好的安裝檔案遠端拷貝到叢集中的各個結點對應的目錄下:
七:設定myid
在我們zoo.cfg配置的dataDir指定的目錄下面,建立一個myid檔案,裡面内容為一個數字,用來辨別目前主機,conf/zoo.cfg檔案中配置的server.X中X是什麼數字,則myid檔案中就輸入這個數字,例如:
[root@slave-1 /]echo "1" > /export/data/zookeeper/myid
[root@slave-2 /]echo "2" > /export/data/zookeeper/myid
[root@slave-3 /]echo "3" > /export/data/zookeeper/myid
八、啟動ZooKeeper叢集
在ZooKeeper叢集的每個結點上,執行啟動ZooKeeper服務的腳本,如下所示:
chmod +x -R bin/
cd bin/
./zkServer.sh start
檢視啟動日志:
tail -500f zookeeper.out
九、檢視狀态
檢視zookeeper叢集是否啟動
./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /export/Server/zookeeper/bin/../conf/zoo.cfg
Mode: follower
leader的顯示是:
Mode: leader
檢視zookeeper的啟動狀态
echo ruok | nc 192.168.0.101 2181
控制台輸出: imok
十、測試
通過zkCli.sh -server ip 就可以連接配接到其中一台server中,然後就可以通過互動式指令來控制zk了
(完)
本文轉自 jvrmusic520 51CTO部落格,原文連結:http://blog.51cto.com/linuxtech/1775378