Linux下搭建Zookeeper分散式叢集(詳細圖解演示)
一:實驗環境搭建.
1.1 Linux使用的是CentOS7.3的發行版,Zookeeper的版本是3.4.12.搭建三個節點的叢集,是分別在三臺虛擬機器上配置Zookeeper節點,不是在一臺虛擬機器上搭建的三個Zookeeper節點的偽叢集.分散式叢集配置奇數個節點.
1.2 使用VMware的克隆技術,完成了三個節點的搭建.IP分別是:
①:192.168.199.133.
②:192.168.199.136.
③:192.168.199.137.
1.3 Java環境檢查.(由於是從192.168.199.133這臺虛擬機器上克隆的,只檢查其它兩臺即可).
① 192.168.199.136.
② 192.168.199.137.
1.4 Zookeeper下載.
① 192.168.199.133上面下載然後scp至其他兩臺即可.
wget http://mirrors.shu.edu.cn/apache/zookeeper/zookeeper-3.4.12/zookeeper-3.4.12.tar.gz
②:分別將壓縮包複製到其他兩臺虛擬機器上.(可以提前配置一下免密登入)
scp /usr/local/zookeeper-3.4.12.tar.gz [email protected]:/usr/local
scp /usr/local/zookeeper-3.4.12.tar.gz [email protected]:/usr/local
192.168.199.136下/usr/local檢視.
192.168.199.137下/usr/local檢視.
1.5 Zookeeper的解壓.
①:192.168.199.133下解壓.
tar zxvf zookeeper-3.4.12.tar.gz
rm -rf zookeeper-3.4.12.tar.gz
②:192.168.199.136下解壓.
tar zxvf zookeeper-3.4.12.tar.gz
rm -rf zookeeper-3.4.12.tar.gz
③:192.168.199.137下解壓.
tar zxvf zookeeper-3.4.12.tar.gz
rm -rf zookeeper-3.4.12.tar.gz
二:Zookeeper叢集配置.
2.1 完成Zookeeper的解壓,然後在每個節點Zookeeper目錄下建立資料目錄zkData.不使用/tmp目錄.建立myid.
然後在zkData目錄下建立一下myid檔案.(指定Server的編號).
cd zkData
touch myid
三臺機器分別指定為1,2,3.在搭建叢集的時候,Zookeeper在啟動的時候,會讀取裡面的資料與zoo.cfg中配置資訊進行比較進而判斷是哪個Server.
2.2 修改配置檔案.(關鍵)
①.修改conf目錄下的zoo_sample.cfg為zoo.cfg.(三個都修改).
mv zoo_sample.cfg zoo.cfg
②.修改zoo.cfg檔案.
配置通式:serevr.A=B:C:D.解釋如下.
A:表示這是第幾號機器.
B:表示這臺伺服器的IP地址.
C:表示這臺機器與叢集Leader伺服器交換資訊的埠.常用2888埠.
D:如果叢集中的Leader伺服器掛了,選出一個新的Leader時,這個埠用來和其他伺服器進行通訊的埠.常用3888埠.
因為是分散式叢集搭建,所以可以配置一樣的埠,如果是偽叢集,在一臺機器上搭建時,B就配置為127.0.0.1或localhost.C和D配置均為不同的埠.分散式叢集中的每個節點都分佈在不同的機器上,每個機器都有自己玩的IP地址,埠也不會被其他節點所佔用.
③.vim zoo.cfg.(三個節點配置一樣的).
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/usr/local/zookeeper-3.4.12/zkData
clientPort=1281
server.1=192.168.199.133:2888:3888
server.2=192.168.199.136:2888:3888
server.3=192.168.199.137:2888:3888
三: Zookeeper叢集啟動.
3.1 三臺機器分別採用後臺啟動方式啟動.一次在相應的bin目錄下啟動,在啟動的過程中也完成了Leader的選舉.啟動順序如下
分別在bin目錄下使用sh zkServer.sh start
① :192.168.199.133.
② 192.168.199.136.
③ 192.168.217.137
3.2 檢視Zookeeper叢集狀態.
分別在啟動目錄下使用sh zkServer.sh status.
①:192.168.199.133
②:192.168.199.136
③:192.168.199.137.
一次啟動三臺Zookeeper服務節點,根據leader票選演算法,server2為leader.依據各自的投票.(myid,ZXID).半數以上即可.
三 Zookeeper的leader選舉演算法介紹.
Leader選舉是分散式資料一致性額關鍵所在.分為伺服器啟動時選舉和服務無法和leader保持連線.
3.1 推薦這篇文章,寫的非常清楚.Leader選舉.
至此完成了Zookeeper的分散式叢集搭建,偽分散式就不演示了,比較簡單.整個過程還是比較順利的.