Zookeeper節點失效測試

Zookeeper節點失效測試


一、Zookeeper原理

zookeeper有這樣一個特性:集羣中只要有過半的機器是正常工作的,那麼整個集羣對外就是可用的。也就是說如果有2zookeeper,那麼只要有1個死了zookeeper就不能用了,因爲1沒有過半,所以2zookeeper的死亡容忍度爲0;同理,要是有3zookeeper,一個死了,還剩下2個正常的,過半了,所以3zookeeper的容忍度爲1;同理你多列舉幾個:2->0;3->1;4->1;5->2;6->2會發現一個規律,2n2n-1的容忍度是一樣的,都是n-1,所以爲了更加高效,沒必要增加偶數的那個不必要的zookeeper

二、三節點測試

2.1配置信息

三節點測試時,zookeeper三節點的zoo.cfg文件均設置123三個節點,如下所示:

tickTime=2000

initLimit=10

syncLimit=5

dataDir=/usr/local/apps/zookeeper-3.4.8/data/

dataLogDir=/usr/local/apps/zookeeper-3.4.8/logs/

clientPort=2181

server.1=192.168.0.19:2888:3888

server.2=192.168.0.20:2888:3888

server.3=192.168.0.21:2888:3888

2.2操作步驟

 

1 三節點命令執行結果對比圖

 

1 三節點操作步驟狀態表

序號

操作步驟

節點1狀態

節點2狀態

節點3狀態

1

順序啓動節點123

follower

follower

leader

2

關停leader節點3

leader

follower

not running

3

重新啓動原leader節點3

leader

follower

follower

4

關停follower節點2

leader

not running

follower

2.3結論

由上面圖表可見,三節點狀態下,關停leader節點後,會自動推選出leader,關閉的節點開啓後,會自動做爲follower節點加入集羣,關閉1follower節點,對整個集羣狀態沒有影響,即3節點狀態下,任一一節點失效,集羣仍可正常運行,始終保持有一個節點處於leader狀態。

三、兩節點測試

3.1配置信息

兩節點測試時,zookeeper兩節點的zoo.cfg文件均只保留12兩個節點,如下所示:

tickTime=2000

initLimit=10

syncLimit=5

dataDir=/usr/local/apps/zookeeper-3.4.8/data/

dataLogDir=/usr/local/apps/zookeeper-3.4.8/logs/

clientPort=2181

server.1=192.168.0.19:2888:3888

server.2=192.168.0.20:2888:3888

#server.3=192.168.0.21:2888:3888

3.2操作步驟

 

2 兩節點命令執行結果對比圖

 

2 兩節點操作步驟狀態表

序號

操作步驟

節點1狀態

節點2狀態

1

先啓動節點2,再啓動節點1

leader

follower

2

關停leader節點1

not running

not running

3

重新啓動原leader節點1

leader

follower

4

關停follower節點2

not running

not running

3.3結論

由上面圖表可見,在兩節點情況下,zookeeperleaderfollower任一節點故障,都會導致整個集羣不可用,因此,zookeeper兩節點與單節點在故障失效率方面等效,如需構建zookeeper高可靠性架構,至少需3zookeeper節點,且建議選擇奇數個節點。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章