美文网首页
分布式脑裂

分布式脑裂

作者: 技术灭霸 | 来源:发表于2020-04-10 19:26 被阅读0次

Zookeeper

zk脑裂

如果注意不到会导致短暂的时间内系统出现脑裂,因为心跳出现超时可能是master挂了,但是也可能是master,zookeeper之间网络出现了问题,也同样可能导致。这种情况就是假死,master并未死掉,但是与ZooKeeper之间的网络出现问题导致Zookeeper认为其挂掉了然后通知其他节点进行切换,这样slaver中就有一个成为了master,但是原本的master并未死掉,这时候client也获得master切换的消息,但是仍然会有一些延时,zookeeper需要通讯需要一个一个通知,这时候整个系统就很混乱可能有一部分client已经通知到了连接到新的master上去了,有的client仍然连接在老的master上如果同时有两个client需要对master的同一个数据更新并且刚好这两个client此刻分别连接在新老的master上,就会出现很严重问题。

总结:

  • 假死:由于心跳超时(网络原因导致的)认为master死了,但其实master还存活着。
  • 脑裂:由于假死会发起新的master选举,选举出一个新的master,但旧的master网络又通了,导致出现了两个master ,有的客户端连接到老的master 有的客户端链接到新的master。

解决脑裂方法

要解决Split-Brain的问题,一般有3种方式:

  • Quorums(ˈkwôrəm 法定人数) ,比如3个节点的集群,Quorums = 2, 也就是说集群可以容忍1个节点失效,这时候还能选举出1个lead,集群还可用。比如4个节点的集群,它的Quorums = 3,Quorums要超过3,相当于集群的容忍度还是1,如果2个节点失效,那么整个集群还是无效的
  • 采用Redundant communications,冗余通信的方式,集群中采用多种通信方式,防止一种通信方式失效导致集群中的节点无法通信。
  • Fencing, 共享资源的方式,比如能看到共享资源就表示在集群中,能够获得共享资源的锁的就是Leader,看不到共享资源的,就不在集群中。

ZooKeeper默认采用了Quorums这种方式,即只有集群中超过半数节点投票才能选举出Leader。这样的方式可以确保leader的唯一性,要么选出唯一的一个leader,要么选举失败。在ZooKeeper中Quorums有2个作用:

  • 集群中最少的节点数用来选举Leader保证集群可用
  • 通知客户端数据已经安全保存前集群中最少数量的节点数已经保存了该数据。一旦这些节点保存了该数据,客户端将被通知已经安全保存了,可以继续其他任务。而集群中剩余的节点将会最终也保存了该数据。
    假设某个leader假死,其余的followers选举出了一个新的leader。这时,旧的leader复活并且仍然认为自己是leader,这个时候它向其他followers发出写请求也是会被拒绝的。因为每当新leader产生时,会生成一个epoch,这个epoch是递增的,followers如果确认了新的leader存在,知道其epoch,就会拒绝epoch小于现任leader epoch的所有请求。那有没有follower不知道新的leader存在呢,有可能,但肯定不是大多数,否则新leader无法产生。Zookeeper的写也遵循quorum机制,因此,得不到大多数支持的写是无效的,旧leader即使各种认为自己是leader,依然没有什么作用。

相关文章

  • 分布式脑裂

    Zookeeper zk脑裂 如果注意不到会导致短暂的时间内系统出现脑裂,因为心跳出现超时可能是master挂了,...

  • 分布式系统 - 脑裂

    Split brain in a distributed system is a problem that can...

  • Elasticsearch 分布式特性

    前言 本文的主要内容: 分布式介绍及cerebro 构建集群 副本与分片 集群状态与故障转移 文档分布式存储 脑裂...

  • 高可用(HA)

    1、脑裂: 1)什么是脑裂 在心跳失效的时候,就发生了脑裂(split-brain)。 一种常见的脑裂情况可以描述...

  • zookeeper 学习笔记(一)分布式协议基础理论

    分布式环境的各种问题: 通信异常: 分布式节点之间的通信 网络分区: 脑裂,分布式节点中一部分节点失去了通信。 节...

  • 集群规划——脑裂

    脑裂问题,就是同一个集群中的不同节点对于集群的状态有了不一样的理解,脑裂问题是分布式集群环境中必然会遇到的问题。 ...

  • ZooKeeper集群脑裂问题处理,值得收藏!

    本文重点讲解ZooKeeper脑裂问题的处理办法。ZooKeeper是用来协调(同步)分布式进程的服务,提供了一个...

  • Zookeeper的脑裂问题及解决方案

    先抛出一个问题:Zookeeper3.4.6版本是否存在脑裂问题? 一,什么是脑裂 什么是脑裂呢? 下图是一个正常...

  • Heartbeat 裂脑

    什么是裂脑 由于某些原因,导致两台高可用服务器之间在指定时间内,无法互相检测到对方心跳而各自启动故障转移功能,取得...

  • Elasticsearch脑裂

    上周五的时候公司的es集群脑裂了,7台机器分成了2个集群。业务自然是悲剧了,记录一下问题。 基础环境 elasti...

网友评论

      本文标题:分布式脑裂

      本文链接:https://www.haomeiwen.com/subject/vvgpphtx.html