美文网首页
Raft一致性算法中集群成员变更

Raft一致性算法中集群成员变更

作者: yuan1028 | 来源:发表于2018-03-29 18:55 被阅读321次

集群中的成员变更不同于机器宕机重启,成员变更会影响到leader选举等决策。变更过程必须要保证安全,即在同一时刻同一term,只能有一个leader。
但是直接从一种配置转化到新的配置,可能将集群分裂为两个独立的集群。在下图中集群从3个节点增加到5个节点,由于每台服务器在不痛的时刻更新配置。就可能存在一个时间点,在一同任期中有两个不同的leader,其中一个是旧的配置(C-old)选举出的leader,另一个是新的配置(C-new)选举出的leader。


disjoint majorities.jpg

两阶段方法

  • 第一阶段,集群由之前的状态,转化到一个合集一致性的状态(joint consensus),即新旧节点都先拿到新的配置。
  • 第二阶段,一旦joint consensus被提交,则集群转化到新的配置。
1522317081208.jpg

leader接收到一个改变配置从 C-old 到 C-new 的请求,会将并集的配置(C-old,new)以日志条目的形式存储并发送到新老所有节点。一旦一个服务器将(C-old,new)配置日志条目提交后,该节点就会用这个配置(C-old,new)来做出未来所有的决定。raft的机制保证只有拥有 C-old,new 日志条目的服务器才有可能被选举为领导人。当C-old,new日志条目被提交以后,leader在使用相同的策略提交C-new,如上图所示,C-old 和 C-new 没有任何机会同时做出单方面的决定,这就保证了安全性。
另外在集群成员变更的时候有3个问题需要强调。

  1. 新节点要加入的时候没有存储任何日志条目,如果该节点直接加入,可能要花一段时间来追赶日志。而这段时间可能无法响应client的请求。Raft解决该问题的方法是增加一个新的阶段,先将新的节点作为不计票的成员加入到集群。等到该新节点日志一致后再开始配置的更新。
  2. leader节点有可能不在新的配置中。这种情况下,leader一旦提交了C-new,就会转变成follower状态。
  3. 删除节点有可能导致集群崩溃。这些被删除掉的节点将会收不到心跳,从而他们会反复地开启新的选举。raft中采取当follower确定目前有leader的时候拒绝掉RequestVote RPCs来解决该问题。确定目前有leader的方式是设置了一个最小的election timeout时间,在该时间内收到RequestVote RPCs时拒绝。由于正常选举,节点的时间都会被该时间要大,则该优化不会影响到正常选举。

相关文章

  • 分布式选举-Raft算法-1 Leader选举 原理

    Raft理论是分布式数据一致性算法,为了便于理解Raft算法分成了4个部分:-Leader选举-日志复制-成员变更...

  • Raft一致性算法中集群成员变更

    集群中的成员变更不同于机器宕机重启,成员变更会影响到leader选举等决策。变更过程必须要保证安全,即在同一时刻同...

  • Raft: 寻找易于理解的一致性算法<下>

    原文地址 6. 集群成员变更 到目前为止,我们都假定集群配置(参与到一致性算法的服务器)是固定不变的。在实际中,偶...

  • Raft 算法(详细版)

    1. Raft 算法简介 1.1 Raft 背景 在分布式系统中,一致性算法至关重要。在所有一致性算法中,Paxo...

  • 分布式系统-6-两阶段提交

    上节知识准备:Raft 前面我们聊到单个集群的一致性算法,今天我们来聊聊多集群分布式事务算法:两阶段提交。这个算法...

  • Raft协议简述

    Raft 是一种为了管理复制日志的一致性算法,该算法强依赖 Leader 节点的可用性来确保集群数据的一致性,即如...

  • Raft算法解析

    什么是Raft算法? Raft算法是用于解决分布式系统中一致性问题的算法。在Raft算法之前,Lamport老爷爷...

  • 分布式共识算法

    导读: 拜占庭将军问题 1.概述 2.raft 一致性算法 2.1 raft算法选主流程 2.2 raft算法的数...

  • Consul 使用手册

    术语表 RAFT一种一致性算法,类似的算法还有Paxos GOSSIP一种通信协议,集群内部使用LAN GOSSI...

  • Raft 成员变更的工程实践

    一 引言 成员变更是一致性系统实现绕不开的难题,对于提升运维能力以及服务可用性都有很大的帮助。 本文从Raft成员...

网友评论

      本文标题:Raft一致性算法中集群成员变更

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