ZooKeeper是一種分布式協調服務,用于管理大型主機。在分布式環境中協調和管理服務是一個複雜的過程。ZooKeeper通過其簡單的架構和API解決了這個問題。 ZooKeeper允許開發人員專注于核心應用程式邏輯,而不必擔心應用程式的分布式特性。
ZooKeeper本身可以以單節點狀态安裝運作(ZooKeeper單機版安裝配置可參考
http://blog.whsir.com/post-3547.html http://blog.whsir.com/post-3547.html),更多的情況下我們是通過分布式ZooKeeper叢集,保證ZooKeeper的穩定性和可用性,進而實作分布式應用的可靠性。
ZooKeeper叢集中主要有leader和follower兩個角色。leader負責投票的發起和決議,更新系統狀态;leader用于接受用戶端請求并向用戶端傳回結果,在選主過程中參與投票。
一個ZooKeeper叢集最好部署奇數個節點,即3、5、7,因為ZooKeeper叢集是以當機個數過半才會讓整個叢集當機,是以部署ZooKeeper叢集的時候最好是奇數。
zookeeper叢集的部署執行個體:
目前使用三台機器進行示範,三台機器我都預設關閉了防火牆和selinux(如有需要自行設定端口,這裡為了友善示範)
目前三台主機系統均為centos7.6,我這裡三台機器提供的ip為
192.168.1.135
192.168.1.142
192.168.1.155
通過官網下載下傳jdk8
https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
将下載下傳好的jdk8分别上傳到三台主機上
因為我這裡是測試環境,dataDir預設路徑是/tmp/zookeeper,生産環境的話根據情況進行修改對應目錄
myid根據server.1、server.2、server.3裡設定的伺服器IP對應,即server.2=192.168.1.142:2101的myid就是2
一、192.168.1.135配置
1、安裝jdk8和zookeeper包
yum install jdk-8u192-linux-x64.rpm
wget -P /usr/local/src/ http://apache.fayea.com/zookeeper/zookeeper-3.4.13/zookeeper-3.4.13.tar.gz
tar xf /usr/local/src/zookeeper-3.4.13.tar.gz -C /usr/local/
ln -sv /usr/local/zookeeper-3.4.13/ /usr/local/zookeeper
cd /usr/local/zookeeper/conf
cp zoo_sample.cfg zoo.cfg
2、編輯zoo.cfg配置檔案
vi zoo.cfg
配置檔案内容如下
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/tmp/zookeeper/data
dataLogDir=/tmp/zookeeper/logs
clientPort=2181
server.1=192.168.1.135:2101:2102
server.2=192.168.1.142:2101:2102
server.3=192.168.1.155:2101:2102
3、建立所需目錄及設定myid
mkdir -p /tmp/zookeeper/{data,logs}
echo 1 > /tmp/zookeeper/data/myid
二、192.168.1.142配置
yum install jdk-8u192-linux-x64.rpm
wget -P /usr/local/src/ http://apache.fayea.com/zookeeper/zookeeper-3.4.13/zookeeper-3.4.13.tar.gz
tar xf /usr/local/src/zookeeper-3.4.13.tar.gz -C /usr/local/
ln -sv /usr/local/zookeeper-3.4.13/ /usr/local/zookeeper
cd /usr/local/zookeeper/conf
cp zoo_sample.cfg zoo.cfg
vi zoo.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/tmp/zookeeper/data
dataLogDir=/tmp/zookeeper/logs
clientPort=2181
server.1=192.168.1.135:2101:2102
server.2=192.168.1.142:2101:2102
server.3=192.168.1.155:2101:2102
mkdir -p /tmp/zookeeper/{data,logs}
echo 2 > /tmp/zookeeper/data/myid
三、192.168.1.155配置
yum install jdk-8u192-linux-x64.rpm
wget -P /usr/local/src/ http://apache.fayea.com/zookeeper/zookeeper-3.4.13/zookeeper-3.4.13.tar.gz
tar xf /usr/local/src/zookeeper-3.4.13.tar.gz -C /usr/local/
ln -sv /usr/local/zookeeper-3.4.13/ /usr/local/zookeeper
cd /usr/local/zookeeper/conf
cp zoo_sample.cfg zoo.cfg
vi zoo.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/tmp/zookeeper/data
dataLogDir=/tmp/zookeeper/logs
clientPort=2181
server.1=192.168.1.135:2101:2102
server.2=192.168.1.142:2101:2102
server.3=192.168.1.155:2101:2102
mkdir -p /tmp/zookeeper/{data,logs}
echo 3 > /tmp/zookeeper/data/myid
四、啟動檢視
最後三台機器分别啟動服務
/usr/local/zookeeper/bin/zkServer.sh start
分别檢視三台機器狀态
/usr/local/zookeeper/bin/zkServer.sh status
可以看到三台機器會有兩個follower和一個leader
附:
zookeeper啟動服務腳本可以參考單機版配置
http://blog.whsir.com/post-3547.html