Zookeeper 分布式機器部署


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

一、Zookeeper的選舉機制

  Zookeeper集群能保證自身的高可用,保證自身高可用的原理是,Zookeeper集群中的各個機器分為Leader和Follower兩個角色,寫入數據時,要先寫入Leader,Leader同意寫入后,再通知Follower寫入。客戶端讀取數時,因為數據都是一樣的,可以從任意一台機器上讀取數據。

這里Leader角色就存在單點故障的隱患,高可用就是解決單點故障隱患的。Zookeeper從機制上解決了Leader的單點故障問題,Leader是哪一台機器是不固定的,Leader是選舉出來的。選舉流程是,集群中任何一台機器發現集群中沒有Leader時,就推薦自己為Leader,其他機器來同意,當超過一半數的機器同意它為Leader時,選舉結束,所以Zookeeper集群中的機器數據必須是奇數。這樣就算當Leader機器宕機后,會很快選舉出新的Leader,保證了Zookeeper集群本身的高可用。

二、寫入高可用

集群中的寫入操作都是先通知Leader,Leader再通知Follower寫入,實際上當超過一半的機器寫入成功后,就認為寫入成功了,所以就算有些機器宕機,寫入也是成功的。

三、讀取高可用

zookeeperk客戶端讀取數據時,可以讀取集群中的任何一個機器。所以部分機器的宕機並不影響讀取。

zookeeper服務器必須是奇數台,因為zookeeper有選舉制度,角色有:領導者、跟隨者、觀察者,選舉的目的是保證集群中數據的一致性。

四、安裝zookeeper

1. 解壓安裝包

tar -zxvf  zookeeper-3.4.12.tar.gz -C /opt/software

2. 修改配置

拷貝conf下的zoo_sample.cfg副本,改名為zoo.cfg。zoo.cfg是zookeeper的配置文件:

cp  zoo_sample.cfg zoo.cfg

dataDir屬性設置zookeeper的數據文件存放的目錄:

dataDir=/data/zookeeper

指定zookeeper集群中各個機器的信息:

server.1=master:2888:3888
server.2=slave1:2888:3888
server.3=slave2:2888:3888

 server后面的數字范圍是1到255,所以一個zookeeper集群最多可以有255個機器。

3. 創建myid文件

在dataDir所指定的目錄下創一個名為myid的文件,文件內容為server點后面的數字。

[root@master software]#echo 1 >> data/myid

4.分發 zookeeper 到其他機器

[root@master software]# scp -r zookeeper-3.4.12 slave1:/opt/software/
[root@master software]# scp -r zookeeper-3.4.12 slave2:/opt/software/

5. 修改其他機器上的myid文件

[root@slave1 data]# echo 2 > data/myid

[root@slave2 data]# echo 3 > data/myid

6. 啟動zookeeper

需要在各個機器上分別啟動zookeeper。

[root@master bin]# ./zkServer.sh start
[root@slave1 bin]# ./zkServer.sh start
[root@slave2 bin]# ./zkServer.sh start

 

 五、zookeeper命令

進入zookeeper Shell

在zookeeper根目錄下執行 bin/zkCli.sh進入zk shell模式。

zookeeper很像一個小型的文件系統,/是根目錄,下面的所有節點都叫zNode。

進入zk shell 后輸入任意字符,可以列出所有的zookeeper命令

查詢zNode上的數據:get /zookeeper

列出所有子zNode:ls /

創建一個zNode: create /znode "demonode"

刪除znode : rmr  /znode

退出shell模式:quit

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM