ElasticSearch

运维必备:Zookeeper集群“脑裂”问题处理大全

ぐ巨炮叔叔 提交于 2020-11-14 10:15:38
​本文重点分享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集群有这样一个特性: 集群中只要有过半的机器是正常工作的,那么整个集群对外就是可用的。