(1)Zookeeper在linux環境中搭建集群

1.簡介

ZooKeeper是Apache軟件基金會的一個軟件項目,它為大型分佈式計算提供開源的分佈式配置服務、同步服務和命名註冊。
ZooKeeper的架構通過冗餘服務實現高可用性。
Zookeeper的設計目標是將那些複雜且容易出錯的分佈式一致性服務封裝起來,構成一個高效可靠的原語集,並以一系列簡單易用的接口提供給用戶使用。
一個典型的分佈式數據一致性的解決方案,分佈式應用程序可以基於它實現諸如數據發佈/訂閱、負載均衡、命名服務、分佈式協調/通知、集群管理、Master選舉、分佈式鎖和分佈式隊列等功能。

2.zookeeper數據結構

zookkeeper提供的名稱空間非常類似於標準文件系統,key-value的形式存儲。名稱key由斜線/分割的一系列路徑元素,zookeeper名稱空間中的每個節點都是由一個路徑標識。

2. 部署ZooKeeper集群

上面簡單介紹了ZooKeeper相關概念,下面我們來部署下ZooKeeper集群。

2.1三台linux虛擬機

IP

master/slave

192.168.142.129

slave

192.168.142.130

master

192.168.142.131

slave

Java版本:java version “1.8.0_311″。

2.2下載源碼包並解壓

官網下載地址(這裡有坑,官網給了兩個安裝包,其中「apache-zookeeper-3.7.0.tar.gz 」是源碼,我們要下載「apache-zookeeper-3.7.0-bin.tar.gz」這個編譯後安裝包才對):

可以通過wget命令下載或者手動下載,安裝包存儲到linux服務器上/home/deng/packages目錄,再通過以下命令解壓安裝包:

cd /home/deng/packages
mkdir /home/deng/zookeeper
tar zxvf apache-zookeeper-3.7.0.tar.gz -C /home/deng/zookeeper

2.3修改環境變量

vi /etc/profile文件,在文件末尾添加以下環境變量配置:

# ZooKeeper環境變量
export ZOOKEEPER_HOME=/home/deng/zookeeper/apache-zookeeper-3.7.0-bin/
export PATH=$PATH:$ZOOKEEPER_HOME/bin

再運行以下命令使環境變量生效:

source /etc/profile

2.4重命名配置文件

初次使用ZooKeeper時,需要將$ZOOKEEPER_HOME/conf目錄下的zoo_sample.cfg重命名為zoo.cfg,zoo.cfg:

mv $ZOOKEEPER_HOME/conf/zoo_sample.cfg $ZOOKEEPER_HOME/conf/zoo.cfg

2.5修改配置文件(指定數據和日誌存放目錄)

先創建數據跟日誌文件夾:

mkdir $ZOOKEEPER_HOME/data
mkdir $ZOOKEEPER_HOME/logs

編輯zoo.cfg配置文件:

vi $ZOOKEEPER_HOME/conf/zoo.cfg

修改如下:

tickTime=2000
initLimit=10
syncLimit=5
dataDir=/home/deng/zookeeper/apache-zookeeper-3.7.0-bin/data
dataLogDir=/home/deng/zookeeper/apache-zookeeper-3.7.0-bin/logs
clientPort=2181

因為我們部署是集群,所以多節點需要在配置文件中尾部增加如下內容:

# 集群配置
server.1=192.168.142.129:2888:3888
server.2=192.168.142.130:2888:3888
server.3=192.168.142.131:2888:3888

如圖所示:

2.6生成myid文件,用作標明當前機器

在zookeeper數據所在的目錄下(/home/deng/zookeeper/apache-zookeeper-3.7.0-bin/data)生成一個文件叫myid,其中寫上一個數字表明當前機器是哪一個編號的機器:

#192.168.142.129(slave)
vi $ZOOKEEPER_HOME/data/myid
1
#192.168.142.130(master)
vi $ZOOKEEPER_HOME/data/myid
2
#192.168.142.131(slave)
vi $ZOOKEEPER_HOME/data/myid
3

2.7開啟防火牆端口訪問

zookeeper服務默認的端口號為2888和3888,所以需要在防火牆開啟允許訪問:

firewall-cmd --permanent --zone=public --add-port=2888/tcp
firewall-cmd --permanent --zone=public --add-port=3888/tcp
firewall-cmd --reload

2.8啟動Zookeeper

#切換目錄
cd /home/deng/zookeeper/apache-zookeeper-3.7.0-bin
#啟動ZK服務
bin/zkServer.sh start
#停止ZK服務
bin/zkServer.sh stop
#重啟ZK服務
bin/zkServer.sh restart
#查看ZK服務狀態
bin/zkServer.sh status

可以通過命令查看ZK服務狀態:


參考文獻:
Zookeeper-QuickStart

Tags: