zookeeper最好为奇数个,是为了容错和防脑裂,那如果有5个节点,leader挂了之后,不是剩4个了吗?又变成偶数了

发布于 2022-09-04 22:10:34 字数 59 浏览 34 评论 0

我知道选举需要过半数,但是如果有5个节点,当leader挂掉之后,不是剩下4个节点,又变回偶数了么???

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

为人所爱 2022-09-11 22:10:34

所谓的zookeeper容错是指,当宕掉几个zookeeper服务器之后,剩下的个数必须大于宕掉的个数,也就是剩下的服务数必须大于n/2,zookeeper才可以继续使用,无论奇偶数都可以选举leader。5台机器最多宕掉2台,还可以继续使用,因为剩下3台大于5/2。说为什么最好为奇数个,是在以最大容错服务器个数的条件下,会节省资源,比如,最大容错为2的情况下,对应的zookeeper服务数,奇数为5,而偶数为6,也就是6个zookeeper服务的情况下最多能宕掉2个服务,所以从节约资源的角度看,没必要部署6(偶数)个zookeeper服务。

我是有多爱你 2022-09-11 22:10:34

你会发现,配置zookeeper的时候你配置了5个节点,这个才是zookeeper选举的依据。
至于down掉一个节点,配置文件里的节点个数并不会减少。所以,无论怎样选举,整个集群一直会以5个节点为选举依据,继续运行。

紙鸢 2022-09-11 22:10:34

我发现有5个zk,连续挂了两次leader,最后还有三个follower,但是三个follower仍旧不可用了。这是怎么回事?三个难道不能选举吗?

段念尘 2022-09-11 22:10:34

1、zookeeper规定:可用节点数 > (大于节点总数/2)。

  这里的节点总数是在一开始配置好的。

2、

5节点集群,可用节点数必须大于2.5(5/2=2.5),即最多只能挂掉2个(5-3=2)。
6节点集群,可用节点数必须大于3(6/2=3),即最多只能挂掉2个(6-4=2)。
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文