1. 程式人生 > >Zookeeper叢集部署

Zookeeper叢集部署

1.前置準備

JDK:zookeeper是基於java語言開發的,jdk必不可少 Zookeeper安裝包:http://mirror.bit.edu.cn/apache/zookeeper/ 在這裡插入圖片描述 (若是要在linux虛擬機器部署叢集效果,還得準備兩臺以上的虛擬機器,在這裡我準備三臺,之前的部落格有關於linux虛擬機器的安裝配置,可以圍觀)

2.解壓並配置

tar -zxvf zookeeper-3.4.13.tar.gz

進入bin,複製zoo_sample.cfg生成zoo.cfg,然後編輯配置zoo.cfg(當然新建一個zoo.cfg空檔案也行)

#複製檔案
cp zoo_sample.cfg zoo.cfg

你可知道為什麼一定要有這個zoo.cfg檔案,來看zookeeper的啟動指令碼zkServer.sh 在這裡插入圖片描述 啟動指令碼呼叫了zkEnv.sh(同在bin目錄下) 在這裡插入圖片描述 進入zkEnv.sh,可以看到又呼叫了一個zoo.cfg檔案 在這裡插入圖片描述 到這裡就瞭解了一定要存在zoo.cfg檔案才能讓zookeeper正常啟動

#進入檔案編輯
vim zoo.cfg
#編輯增加
dataDir=/usr/local/zookeeper-3.4.13/data/
dataLogDir=/usr/local/zookeeper-3.4.13/datalogs/
server.1=192.168.1.66:2888:3888
server.2=192.168.1.67:2888:3888
server.3=192.168.1.68:2888:3888

在這裡插入圖片描述

相應地,要創建出dataDir和dataLogDir資料夾

mkdir /usr/local/zookeeper-3.4.13/data/
mkdir /usr/local/zookeeper-3.4.13/datalogs/

在新建的data資料夾下新建myid檔案,並寫上對應的號數,也就是配置檔案中server.n的n,如server.1就寫上1

echo 1 > myid

(注:若是部署單機模式,則配置檔案只留server.1)

3.拷貝

配置好這一臺虛擬機器之後就可以用scp命令將配置好的zookeeper拷貝至其他兩臺虛擬機器,然後改下myid,這是每個zookeeper的標誌

4.啟動

分別啟動三臺虛擬機器的zookeeper

./bin/zkServer.sh start

zookeeper叢集有主從之分,我的啟動順序為1(66)–>2(67)–>3(68),那麼問題來了,那一臺才是leader? 可以檢視zookeeper的狀態

./bin/zkServer.sh status

在這裡插入圖片描述 答案是2(67)這臺第二啟動的zookeeper是leader,其他兩臺為follower。 zookeeper叢集的機制是掛掉半數或者以上就不可用

  • 當第一臺zookeeper【1(66)】啟動時,它給自己投票,1<3/2,這時的叢集是不可用,處於 LOOKING。
  • 當第二臺zookeeper【2(67)】啟動時,它給自己投票,2>3/2,這時叢集可用,由於編號大於第一臺zookeeper,選舉勝出成為leader,第一臺zookeeper成為follower。
  • 當第三臺zookeeper【3(68)】啟動時,它給自己投票,由於第二臺zookeeper已經成為leader,選舉已經結束,所以它只能成為follower。