Zookeeper叢集部署
阿新 • • 發佈:2018-12-20
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。