Zookeeper集群“脑裂”问题处理大全

在这里插入图片描述

Zookeeper集群“脑裂”问题处理大全!

本文重点分享Zookeeper脑裂问题的处理办法。ZooKeeper是用来协调(同步)分布式进程的服务,提供了一个简单高性能的协调内核,用户可以在此之上构建更多复杂的分布式协调功能。

脑裂通常会出现在集群环境中,比如ElasticSearch、Zookeeper集群。而这些集群环境有一个统一的特点,就是它们有一个大脑,比如ElasticSearch集群中有Master节点,Zookeeper集群中有Leader节点。

Zookeeper集群节点为什么要部署成奇数

Zookeeper容错指的是当宕掉几个Zookeeper节点服务器之后,剩下的个数必须大于宕掉的个数,也就是剩下的节点服务数必须大于n/2,这样Zookeeper集群才可以继续使用,无论奇偶数都可以选举Leader。例如5台Zookeeper节点机器最多宕掉2台,还可以继续使用,因为剩下3台大于5/2。

至于为什么最好为奇数个节点?

这样是为了以最大容错服务器个数的条件下,能节省资源。

比如,最大容错为2的情况下,对应的Zookeeper服务数,奇数为5,而偶数为6,也就是6个Zookeeper服务的情况下最多能宕掉2个服务。

所以从节约资源的角度看,没必要部署6(偶数)个Zookeeper服务节点。

Zookeeper集群有这样一个特性:集群中只要有过半的机器是正常工作的,那么整个集群对外就是可用的。

也就是说如果有2个Zookeeper节点,那么只要有1个Zookeeper节点死了,那么Zookeeper服务就不能用了,因为1没有过半,所以2个Zookeeper的死亡容忍度为0。

同理,要是有3个Zookeeper,一个死了,还剩下2个正常的,过半了,所以3个Zookeeper的容忍度为1。

同理也可以多列举几个:2->0; 3->1; 4->1; 5->2; 6->2 就会发现一个规律,2n和2n-1的容忍度是一样的,都是n-1,所以为了更加高效,何必增加那一个不必要的Zookeeper呢。

所以说,根据以上可以得出结论:从资源节省的角度来考虑,Zookeeper集群的节点最好要部署成奇数个!

Zookeeper集群中的"脑裂"场景说明

对于一个集群,想要提高这个集群的可用性,通常会采用多机房部署ÿ

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值