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节点,且建议选择奇数个节点。

 

 

posted @ 2016-09-26 17:35  null先森  阅读(230)  评论(0编辑  收藏  举报