集群部署
1.集群規(guī)劃
在hadoop102、hadoop103、hadoop104三個(gè)節(jié)點(diǎn)上都部署Zookeeper
2.解壓安裝
解壓和重命名操作即可啡直。
參考之前的本地安裝文章苞冯,此處不再贅述。
3.配置服務(wù)器編號(hào)
(1)在/opt/module/zookeeper-3.5.7/這個(gè)目錄下創(chuàng)建zkData
(2)在/opt/module/zookeeper-3.5.7/zkData目錄下創(chuàng)建一個(gè)myid的文件(文件名一點(diǎn)都不能差朽缎,因?yàn)樵创a寫的就是讀myid這個(gè)文件),在文件中添加與server對(duì)應(yīng)的編號(hào)(注意:上下不要有空行谜悟,左右不要有空格话肖,一定要在Linux里面創(chuàng)建,在notepad++里很可能亂碼)
此處以hadoop102這臺(tái)為例葡幸,在myid中僅寫入2即可:
vim myid
2
(3)拷貝配置好的zookeeper到其他機(jī)器上最筒,如果能用xsync可以直接用
xsync zookeeper-3.5.7
或者直接在hadoop103、hadoop104上配完全一樣的也可以蔚叨,
并分別在hadoop103床蜘、hadoop104上修改myid文件內(nèi)容分別為3和4辙培。
4.配置zoo.cfg文件
(1)重命名或復(fù)制/opt/module/zookeeper-3.5.7/conf這個(gè)目錄下的zoo_sample.cfg為zoo.cfg
(2)修改配置文件
修改數(shù)據(jù)存儲(chǔ)路徑配置,并增加集群配置
vim zoo.cfg
datadir=/opt/module/zookeeper-3.5.7/zkData
#增加如下配置
###cluster###
server.2=hadoop102:2888:3888
server.3=hadoop103:2888:3888
server.4=hadoop104:2888:3888
(3)配置參數(shù)解讀
格式server.A=B:C:D
A是一個(gè)數(shù)字邢锯,即dataDir目錄下myid文件中寫入的server編號(hào)
B是服務(wù)器地址或主機(jī)名
C是這個(gè)服務(wù)器Follower與集群中的Leader服務(wù)器交換信息的端口扬蕊,即集群節(jié)點(diǎn)通訊端口
D是萬一集群中Leader服務(wù)器掛了,需要一個(gè)端口來重新進(jìn)行選舉弹囚,選出一個(gè)新的Leader厨相,這個(gè)端口就是用來執(zhí)行選舉時(shí)服務(wù)器相互通信的端口。
5.啟動(dòng)
使用bin/zkServer.sh start啟動(dòng)鸥鹉,我們通過bin/zkServer.sh status檢查狀態(tài)蛮穿,發(fā)現(xiàn)報(bào)錯(cuò)“Error contacting service. It is probably not running”,這是因?yàn)榧涵h(huán)境毁渗,啟動(dòng)節(jié)點(diǎn)未超過半數(shù)的情況下践磅,無法選出Leader,集群就沒法工作灸异。
因此我們實(shí)驗(yàn)的三節(jié)點(diǎn)環(huán)境中至少2節(jié)點(diǎn)啟動(dòng)后集群才能正常工作府适,bin/zkServer.sh status中顯示集群角色。
當(dāng)集群剛好可以正常啟動(dòng)時(shí)肺樟,最后一個(gè)啟動(dòng)的節(jié)點(diǎn)會(huì)成為L(zhǎng)eader檐春,之前啟動(dòng)的節(jié)點(diǎn)則是Follower,此后新啟動(dòng)的節(jié)點(diǎn)也是Follower么伯。
選舉機(jī)制
1.第一次啟動(dòng)
(1)服務(wù)器1啟動(dòng)疟暖,發(fā)起第一次選舉。服務(wù)器1投自己一票田柔。此時(shí)服務(wù)器1票數(shù)為1俐巴,不夠半數(shù)以上(3),選舉無法完成硬爆,服務(wù)器1狀態(tài)保持為L(zhǎng)OOKING欣舵;