Zookeeper容错的确切含义是什么?同时还是累计?

时间:2018-08-14 03:46:32

标签: apache-zookeeper fault-tolerance

如《 ZooKeeper入门指南》中所述,容错群集设置至少需要三台服务器,并且强烈建议您使用奇数个服务器。

因此,如果我有5台服务器,并且如上所述,当其中2台服务器出现故障时,我仍然可以生存。但这意味着同时或累计??

那呢:
5台服务器->失败一台-> 4台服务器->失败一台-> 3台服务器->失败一台-> 2台服务器->失败一台->死亡

3个服务器(初始化)和3个服务器(从5个服务器退化)之间有什么区别??

1 个答案:

答案 0 :(得分:2)

要使Zookeeper群集正常工作,需要仲裁。仲裁是群集中大多数服务器。

  • 对于3节点群集,大多数为2节点。因此,您只能容忍1个节点无法同时同步。
  • 对于5节点群集,大多数为3节点。因此,您只能容忍2个节点无法同时同步。
  • 对于7节点群集,大多数为4节点。因此,您只能容忍3个节点无法同时同步。

同步是什么意思?节点不仅不在运行时也不是仲裁的一部分。但是当它仍然在失败后重新加入集群时。

节点在Zookeeper配置中进行了硬编码。因此,群集中的每个节点都知道它应该是具有N个节点的群集的一部分。因此,它的工作方式并不是两个节点都关闭的7节点群集突然变成5节点群集,而另外2个节点可以关闭。除非您更改配置文件,否则它将始终充当7节点群集,并且只有3个节点可以宕机。

关于偶数和奇数节点的整个问题基本上是关于维持仲裁的情况下可能发生故障的节点数。并且对于4节点群集,大多数将为3。因此4节点群集仍只能容忍1个节点出现故障。因此,使用具有与3节点群集相同的容错能力的4节点群集没有多大意义。