System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种故障场景下raft集群可靠性的增强方法和系统技术方案_技高网

一种故障场景下raft集群可靠性的增强方法和系统技术方案

技术编号:40546335 阅读:9 留言:0更新日期:2024-03-05 19:03
本发明专利技术涉及集群维护技术领域,提供一种故障场景下raft集群可靠性的增强方法和系统,包括:在raft集群中选举主节点,采用选举的主节点检测raft集群中从节点是否故障;当主节点检测到从节点故障时,判断存储group中是否存在能够替换故障从节点的新选出来的raft从节点;当存储group中存在能够替换故障从节点的新选出来的raft从节点时,主节点会发起替换操作,将新选出来的raft从节点加入到raft集群中,将故障的raft从节点剔除出raft集群;若不存在新选出来的raft从节点时,则保留该故障的raft从节点在raft集群中,将其标记为故障状态,不再向其发送心跳。本发明专利技术的故障场景下raft集群可靠性的增强方法和系统,可以提高raft集群的可用性和可靠性。

【技术实现步骤摘要】

本专利技术涉及集群维护,尤其涉及一种故障场景下raft集群可靠性的增强方法和系统


技术介绍

1、在集群运行过程中,不可避免会遇到各种故障,此时保证集群的可用性和可靠性,维持业务的正常运行是十分关键和重要的,也是评估集群健壮性的重要指标。当raft节点出现故障时,可以通过raft协议在集群变更章节中提出的删除raft节点方法来主动剔除发生故障的raft节点,但由于此时raft节点是故障的,该故障的raft节点上会存在数据库或内存的残留,这种残留会在故障恢复后对新集群产生一定的扰乱性,特别是raft集群发生多次故障之后。另一方面,为了保证raft集群的可用性,需要保证集群有一定的主从数量,故在raft节点发生故障后,可以通过raft协议在集群变更章节中提出的替换raft节点方法来主动添加可用的raft节点,保证raft集群维持在固定的数量,避免出现单节点瓶颈和单节点依赖性。而新加入的raft节点,会存在数据库不完整,甚至数据库为空的阶段,这种数据库不完整阶段下的raft节点,对raft集群也会存在一定的扰乱性。针对新加入节点和被剔除节点对集群的扰乱,仅仅依据raft协议提出的prevote机制,避免增加term值的方法是远远不能解决问题的。

2、因此,如何提供一种保障集群可用性和可靠性的方法,成为亟待解决的技术问题。


技术实现思路

1、有鉴于此,为了克服现有技术的不足,本专利技术旨在提供一种故障场景下raft集群可靠性的增强方法和系统。

2、根据本专利技术的第一方面,提供一种故障场景下raft集群可靠性的增强方法,包括:

3、在raft集群中选举主节点,采用选举的主节点检测raft集群中从节点是否故障;

4、当主节点检测到从节点故障时,判断存储group中是否存在能够替换故障从节点的新选出来的raft从节点;

5、当存储group中存在能够替换故障从节点的新选出来的raft从节点时,主节点会发起替换操作,将新选出来的raft从节点加入到raft集群中,将故障的raft从节点剔除出raft集群;

6、若不存在新选出来的raft从节点时,则保留该故障的raft从节点在raft集群中,将其标记为故障状态,不再向其发送心跳。

7、优选地,本专利技术故障场景下raft集群可靠性的增强方法中,在raft集群中选举主节点,采用选举的主节点检测raft集群中从节点是否故障,包括:

8、在raft集群中通过raft选举机制选举出主节点,选举的主节点通过向raft集群的从节点发送心跳维持自身有效性;raft主从节点之间通过心跳机制同步日志条目,保持集群内部数据一致性;

9、采用选举的主节点根据故障检测机制检测raft集群中从节点是否故障。

10、优选地,本专利技术故障场景下raft集群可靠性的增强方法中,raft主从节点之间通过心跳机制同步日志条目,保持集群内部数据一致性,包括:

11、主节点向从节点发送心跳,在心跳消息中携带主节点自身已经提交的日志条目序号、当前最新的日志条目序号以及主节点记录的该从节点已经同步的日志条目序号和该日志条目序号时主节点的任期号;

12、从节点收到主节点发送的心跳信息后,判断自身当前最新的日志条目序号是否与心跳消息中带来的主上记录的本节点已有的日志条目序号匹配;

13、若从节点自身当前最新的日志条目序号大于主上当前最新的日志条目序号,则删除从节点上序号大于主节点最新的日志条目序号的日志,将自身当前最新的日志条目序号通过心跳回复给主节点;

14、主节点收到回复后,调整主节点上记录的该从节点的已同步的日志条目序号,再次发送心跳信息,将从节点上最新的日志条目序号的日志及对应的主上的任期号发送给从节点;

15、从节点收到后,若发现同一个日志条目序号对应的主的任期号不同,删除该冲突的日志条目,将本节点当前的日志条目序号减一;主节点收到从节点返回的心跳消息后,再次发送前一个日志条目序号的日志到从节点,再次进行一致性校验,直至找到从上的日志条目和主上保持一致的序号,然后主节点再发送从该一致性序号到主上最新日志条目序号之间的日志条目到从节点,从节点收到该消息后,将对应区间的日志条目落盘;

16、若主节点发现从节点返回的最新的日志条目序号比自己最小的日志条目序号小,触发主上通过快照恢复机制来向从节点快速同步日志条目。

17、优选地,本专利技术故障场景下raft集群可靠性的增强方法中,当主节点检测到从节点故障时,判断存储group中是否存在能够替换故障从节点的新选出来的raft从节点,包括:

18、当主节点检测到raft集群中存在故障的从节点时,以故障域为粒度,判断排除当前状态正常的raft节点所在的故障域外,其他故障域中是否存在状态正常的节点可用来替换故障的raft从节点;若存在,则发起替换操作,若不存在,则保留该故障的raft从节点在raft集群中,而非直接将其剔除。

19、优选地,本专利技术故障场景下raft集群可靠性的增强方法中,当存储group中存在能够替换故障从节点的新选出来的raft从节点时,主节点会发起替换操作,将新选出来的raft从节点加入到raft集群中,将故障的raft从节点剔除出raft集群,包括:

20、主节点通过快照恢复流程向该新选出来的raft从节点同步数据;

21、主节点在心跳定时器触发时,先判断是否已触发该新选出来的raft从节点的快照恢复流程,若已触发,则此次心跳周期就不再向其发送快照恢复消息,跳过对该新选出来的raft从节点的处理;

22、当所述新选出来的raft从节点的快照恢复流程记录为空,则触发新一轮的快照恢复流程,通过向所述新选出来的raft从节点发送快照消息恢复所述新选出来的raft从节点上的元数据日志条目,并记录下已经触发快照恢复流程,直到所述新选出来的raft从节点完成此次快照恢复后,再将快照恢复流程记录清空。

23、优选地,本专利技术故障场景下raft集群可靠性的增强方法中,当存储group中存在能够替换故障从节点的新选出来的raft从节点时,主节点会发起替换操作,将新选出来的raft从节点加入到raft集群中,将故障的raft从节点剔除出raft集群,包括:

24、通过主节点向新选出来的raft从节点发送start消息,新选出来的raft从节点收到主节点发送的start消息后启动raft服务并通过原子性更新替代相应的日志条目;

25、通过主节点向故障从节点发送stop消息,故障从节点收到主节点发送的stop消息后停止raft服务。

26、优选地,本专利技术故障场景下raft集群可靠性的增强方法中,若不存在新选出来的raft从节点时,则保留该故障的raft从节点在raft集群中,将其标记为故障状态,不再向其发送心跳,包括:当存储group中不存在能够替换故障从节点的新选出来的raft从节点替换节点时本文档来自技高网...

【技术保护点】

1.一种故障场景下raft集群可靠性的增强方法,其特征在于,所述方法包括:

2.根据权利要求1所述的故障场景下raft集群可靠性的增强方法,其特征在于,在raft集群中选举主节点,采用选举的主节点检测raft集群中从节点是否故障,包括:

3.根据权利要求2所述的故障场景下raft集群可靠性的增强方法,其特征在于,raft主从节点之间通过心跳机制同步日志条目,保持集群内部数据一致性,包括:

4.根据权利要求1所述的故障场景下raft集群可靠性的增强方法,其特征在于,当主节点检测到从节点故障时,判断存储group中是否存在能够替换故障从节点的新选出来的raft从节点,包括:

5.根据权利要求1所述的故障场景下raft集群可靠性的增强方法,其特征在于,当存储group中存在能够替换故障从节点的新选出来的raft从节点时,主节点会发起替换操作,将新选出来的raft从节点加入到raft集群中,将故障的raft从节点剔除出raft集群,包括:

6.根据权利要求1所述的故障场景下raft集群可靠性的增强方法,其特征在于,当存储group中存在能够替换故障从节点的新选出来的raft从节点时,主节点会发起替换操作,将新选出来的raft从节点加入到raft集群中,将故障的raft从节点剔除出raft集群,包括:

7.根据权利要求1所述的故障场景下raft集群可靠性的增强方法,其特征在于,若不存在新选出来的raft从节点时,则保留该故障的raft从节点在raft集群中,将其标记为故障状态,不再向其发送心跳,包括:当存储group中不存在能够替换故障从节点的新选出来的raft从节点时,保持raft集群的原有节点成员不变,将其标记为故障状态,不再向其发送心跳,直至该故障raft从节点上的故障恢复后,将其状态标记为可用状态,再恢复向其发送心跳。

8.根据权利要求1所述的故障场景下raft集群可靠性的增强方法,其特征在于,所述方法还包括:当新选出来的raft从节点收到主节点发来的快照恢复消息时,记录下当前自己所属的raft集群的主节点信息。

9.根据权利要求1所述的故障场景下raft集群可靠性的增强方法,其特征在于,所述方法还包括:若已被剔出集群的故障raft从节点恢复故障,向它之前所在的raft集群中发起选举消息时,当该raft集群的主节点收到该选举消息时,若发现消息发送节点已不在raft集群中,向其发送stop消息,通知该从节点当前其已不是raft从节点,需要停止raft服务。

10.一种故障场景下raft集群可靠性的增强系统,其特征在于,所述系统包括增强服务端,所述增强服务端用于在raft集群中选举主节点,采用选举的主节点检测raft集群中从节点是否故障;当主节点检测到从节点故障时,判断存储group中是否存在能够替换故障从节点的新选出来的raft从节点;当存储group中存在能够替换故障从节点的新选出来的raft从节点时,主节点会发起替换操作,将新选出来的raft从节点加入到raft集群中,将故障的raft从节点剔除出raft集群;若不存在新选出来的raft从节点时,则保留该故障的raft从节点在raft集群中,将其标记为故障状态,不再向其发送心跳。

...

【技术特征摘要】

1.一种故障场景下raft集群可靠性的增强方法,其特征在于,所述方法包括:

2.根据权利要求1所述的故障场景下raft集群可靠性的增强方法,其特征在于,在raft集群中选举主节点,采用选举的主节点检测raft集群中从节点是否故障,包括:

3.根据权利要求2所述的故障场景下raft集群可靠性的增强方法,其特征在于,raft主从节点之间通过心跳机制同步日志条目,保持集群内部数据一致性,包括:

4.根据权利要求1所述的故障场景下raft集群可靠性的增强方法,其特征在于,当主节点检测到从节点故障时,判断存储group中是否存在能够替换故障从节点的新选出来的raft从节点,包括:

5.根据权利要求1所述的故障场景下raft集群可靠性的增强方法,其特征在于,当存储group中存在能够替换故障从节点的新选出来的raft从节点时,主节点会发起替换操作,将新选出来的raft从节点加入到raft集群中,将故障的raft从节点剔除出raft集群,包括:

6.根据权利要求1所述的故障场景下raft集群可靠性的增强方法,其特征在于,当存储group中存在能够替换故障从节点的新选出来的raft从节点时,主节点会发起替换操作,将新选出来的raft从节点加入到raft集群中,将故障的raft从节点剔除出raft集群,包括:

7.根据权利要求1所述的故障场景下raft集群可靠性的增强方法,其特征在于,若不存在新选出来的raft从节点时,则保留该故障的raft从节点在raft集群中,将其标记为故障状态,不再向其发送心跳,包括:当存储g...

【专利技术属性】
技术研发人员:尹秋霞
申请(专利权)人:中电云计算技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1