zookeeper集羣版安裝教程

1、leader選舉

這篇主要分析leader的選擇機制,zookeeper提供了三種方式:

  • LeaderElection  
  • AuthFastLeaderElection
  • FastLeaderElection (最新默認)

默認的算法是FastLeaderElection,所以這篇主要分析它的選舉機制。

選舉流程簡述

目前有5臺服務器,每臺服務器均沒有數據,它們的編號分別是1,2,3,4,5,按編號依次啓動,它們的選擇舉過程如下:

  • 服務器1啓動,給自己投票,然後發投票信息,由於其它機器還沒有啓動所以它收不到反饋信息,服務器1的狀態一直屬於Looking(選舉狀態)。
  • 服務器2啓動,給自己投票,同時與之前啓動的服務器1交換結果,由於服務器2的編號大所以服務器2勝出,但此時投票數沒有大於半數,所以兩個服務器的狀態依然是LOOKING。
  • 服務器3啓動,給自己投票,同時與之前啓動的服務器1,2交換信息,由於服務器3的編號最大所以服務器3勝出,此時投票數正好大於半數,所以服務器3成爲領導者,服務器1,2成爲小弟。
  • 服務器4啓動,給自己投票,同時與之前啓動的服務器1,2,3交換信息,儘管服務器4的編號大,但之前服務器3已經勝出,所以服務器4只能成爲小弟。
  • 服務器5啓動,後面的邏輯同服務器4成爲小弟。

Server狀態:選舉狀態

  • LOOKING,競選狀態。
  • FOLLOWING,隨從狀態,同步leader狀態,參與投票。
  • OBSERVING,觀察狀態,同步leader狀態,不參與投票。
  • LEADING,領導者狀態。

 

2、zookeeper集羣節點限制

zookeeper遵從大多數原理,故要求奇數個節點,且至少三個 節點

 

3、集羣版安裝 

zookeeper單機版安裝教程

集羣版安裝過程與單機版安裝差不多,不同點如下:

在data目錄下新建myid文件,內容就是服務器id(使用shell命令 echo 1 > myid)

配置文件新增內容如下

server.1=127.0.0.1:2888:3888
server.2=127.0.0.1:2889:3889
server.3=127.0.0.1:2890:3890

即server.服務器ID=服務器IP地址:服務器之間通信端口:服務器之間投票選舉端口 

最後依次啓動每個節點即可

附便攜式一次性啓動多個節點腳本

#!/bin/bash
if [ -z $1 ];then 
echo command error,please specify start or stop or restart or status! 
exit
fi
if [ $1 == start ] || [ $1 == stop ]  || [ $1 == status ] || [ $1 == restart ];then
sh ./apache-zookeeper-3.5.6-bin-1/bin/zkServer.sh $1
sh ./apache-zookeeper-3.5.6-bin-2/bin/zkServer.sh $1
sh ./apache-zookeeper-3.5.6-bin-3/bin/zkServer.sh $1
else
echo command error,please specify start or stop or restart or status!
fi

將其命名爲clusterStart.sh,則使用命令sh clusterStart.sh start可一鍵啓動集羣

發佈了98 篇原創文章 · 獲贊 68 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章