三臺伺服器搭建zookeeper叢集
ZooKeeper是一個分散式的,開放原始碼的分散式應用程式協調服務,它包含一個簡單的原語集,分散式應用程式可以基於它實現同步服務,配置維護和命名服務等。Zookeeper是hadoop的一個子專案,在分散式應用中,由於工程師不能很好地使用鎖機制,以及基於訊息的協調機制不適合在某些應用中使用,因此需要有一種可靠的、可擴充套件的、分散式的、可配置的協調機制來統一系統的狀態。
執行原理:Zookeeper的核心是原子廣播,這個機制保證了各個Server之間的同步。實現這個機制的協議叫做Zab協議。Zab協議有兩種模式,它們分別是恢復模式(選主)和廣播模式(同步)。當服務啟動或者在領導者崩潰後,Zab就進入了恢復模式,當領導者被選舉出來,且大多數Server完成了和leader的狀態同步以後,恢復模式就結束了。狀態同步保證了leader和Server具有相同的系統狀態。為了保證事務的順序一致性,zookeeper採用了遞增的事務id號(zxid)來標識事務。所有的提議(proposal)都在被提出的時候加上了zxid。實現中zxid是一個64位的數字,它高32位是epoch用來標識leader關係是否改變,每次一個leader被選出來,它都會有一個新的epoch,標識當前屬於那個leader的統治時期。低32位用於遞增計數。
每個Server在工作過程中有三種狀態:
LOOKING:當前Server不知道leader是誰,正在搜尋
LEADING:當前Server即為選舉出來的leader
FOLLOWING:leader已經選舉出來,當前Server與之同步
環境:
192.9.200.130 192.9.200.159 192.9.200.160
解壓及安裝:
我下載的是zookeeper-3.5.3
將zookeeper壓縮包複製到linux下。
1、解壓:
tar -xvf zookeeper-3.53.tar.gz(注意:解壓的時候引數不要用zxf,要用xvf)
2、將解壓後的zookeeper移動到/usr/local/目錄下。
mv zookeeper-3.5.3 /usr/local/
3、修改名稱
mv zookeeper-3.53 zookeeper
4、複製zookeeper/conf/zoo_sample.cfg為zoo.cfg
cp zoo_sample.cfg zoo.cfg
5、修改zoo.cfg
vi zoo.cfg
1)、修改dataDir=/usr/local/zookeeper/data
2)、新增dataLogDir=/usr/local/zookeeper/log
3)、最後面新增
server.1=192.9.200.130:2888:3888
server.2=192.9.200.159:2888:3888
server.3=192.9.200.160:2888:3888
解釋:ip地址:心跳埠:服務埠
6、在zookeeper目錄下新建data和log目錄
mkdir data mkdir log
7、在data目錄下新建myid檔案
touch myid (第1個伺服器的myid為1,第2個為2,第3個為3. 分別對應server.1、server.2、server.3)
3臺伺服器以上步驟都相同。
=======================我是一條華麗的分割線===============================
8、分別啟動3臺伺服器。
1)、進入zookeeper/bin目錄
./zkServer.sh start
2)、檢視啟動是否成功,三臺伺服器會選擇一臺作為leader,另外兩臺作為follower
./zkServer.sh status
9、OK,叢集搭建成功。
注意事項:
1、需要關閉防火牆。
2、當我們啟動第一個zookeeper的時候,檢視狀態會出現
檢視zookeeper/logs/zookeeper.out日誌,發現另外兩個伺服器拒絕連結,這是因為另外兩個伺服器zookeeper沒有啟動,不用管,然後啟動另外兩個伺服器,之後將第一個伺服器重啟下就可以。