双机主备自适应切换方法和装置与流程

摘要: 本技术属于计算机高可用,尤其涉及一种双机主备自适应切换方法和装置。背景技术:1、在需要高可用性的计算环境中,双机主备系统是保障业务连续性的关键技术。现有技术通常...
双机主备自适应切换方法和装置与流程

本技术属于计算机高可用,尤其涉及一种双机主备自适应切换方法和装置。

背景技术:

1、在需要高可用性的计算环境中,双机主备系统是保障业务连续性的关键技术。现有技术通常通过在主备服务器之间建立心跳机制来监测彼此的状态,当主服务器发生故障时,备用服务器能够接管业务。

2、然而,现有技术在实现主备切换时存在以下缺陷。多数双机系统依赖单一物理网络链路进行心跳通信,当该心跳通信链路因网络设备故障或物理线缆中断等原因发生故障时,备用服务器无法收到主服务器的心跳帧,系统会判定主服务器离线。现有系统的切换决策主要依据心跳帧是否超时,即仅判断网络层的连通性,当服务器的操作系统和网络协议栈正常运行但其承载的关键业务进程已终止或无响应时,心跳帧仍能正常收发,系统不会执行切换。此外,现有技术在双机状态转换过程中缺少明确的中间协商状态,当两台服务器因网络瞬断恢复或同时启动导致角色状态不一致时,系统会产生主备角色反复切换的现象。

技术实现思路

1、本技术实施例提供了一种双机主备自适应切换方法和装置,旨在解决现有技术中心跳通信链路存在单点故障、切换决策维度单一导致切换不精准、以及切换过程不稳定易产生乒乓效应的现有问题。

2、第一方面,本技术实施例提供了一种双机主备自适应切换方法,应用于双机系统中的本机,所述方法包括:

3、基于所述本机的关键进程的预设权重,确定所述本机的动态进程权重;

4、通过独立物理网络向对端机发送本机心跳帧,并在所述本机心跳帧的帧体中携带所述本机的主备状态和所述本机的动态进程权重;

5、通过所述独立物理网络接收所述对端机发送的对端机心跳帧,并从接收到的所述对端机心跳帧的帧体中解析出所述对端机的主备状态和所述对端机的动态进程权重;

6、获取心跳超时检测结果;

7、根据所述本机的主备状态、所述对端机的主备状态、所述本机的动态进程权重、所述对端机的动态进程权重以及所述心跳超时检测结果,驱动有限状态机执行主备角色仲裁与转换;所述有限状态机包括主用状态、备用状态、待升主过渡态、待降从过渡态和脱网状态;

8、当所述本机进入所述待升主过渡态或所述待降从过渡态时,若在当前所处的过渡态的等待超时时间内,所述对端机的状态未达到预期转换目标,则所述本机回退到进入当前所处的过渡态之前的状态。

9、在第一方面的一种可能的实现方式中,所述本机心跳帧的帧体包括主备状态字段、动态进程权重字段、源ip地址字段和目的ip地址字段。

10、在第一方面的一种可能的实现方式中,所述独立物理网络的数量为两条;

11、当所述本机为非默认主机时,所述本机以固定心跳发送间隔,同时向所述对端机的a网地址和b网地址分别发送请求帧;

12、当所述本机为默认主机时,所述本机处于接收等待状态,在接收到所述对端机发送的所述请求帧后回复应答帧,并将所述应答帧沿接收所述请求帧的同一网络返回至所述对端机。

13、在第一方面的一种可能的实现方式中,所述基于所述本机的关键进程的预设权重,确定所述本机的动态进程权重,包括:

14、检测所述本机的各关键进程是否处于运行状态;

15、将所有处于运行状态的所述关键进程的预设权重进行累加,得到所述本机的动态进程权重。

16、在第一方面的一种可能的实现方式中,当驱动有限状态机执行主备角色仲裁与转换时,所述有限状态机的转换条件包括:

17、当所述本机处于所述备用状态且所述对端机处于所述主用状态时,若所述本机的动态进程权重大于所述对端机的动态进程权重,则转入所述待升主过渡态;

18、当所述本机处于所述备用状态且所述对端机处于所述备用状态时,若所述本机的动态进程权重大于所述对端机的动态进程权重,或者所述本机的动态进程权重等于所述对端机的动态进程权重且所述本机为默认主机,则转入所述待升主过渡态;

19、当所述本机处于所述备用状态且所述对端机处于所述待降从过渡态时,转入所述待升主过渡态;

20、当所述本机处于所述主用状态且接收到手动切换从机命令时,若所述本机的动态进程权重小于或等于所述对端机的动态进程权重,则转入所述待降从过渡态;

21、当所述本机处于所述主用状态且所述对端机处于所述主用状态时,若所述本机为非默认主机,则转入所述待降从过渡态;

22、当所述本机处于所述主用状态且所述对端机处于所述待升主过渡态时,若所述本机的动态进程权重小于所述对端机的动态进程权重,则转入所述待降从过渡态。

23、在第一方面的一种可能的实现方式中,在所述待升主过渡态中:

24、若在所述待升主过渡态的等待超时时间内,所述对端机转变为所述备用状态或所述待降从过渡态,则转入所述主用状态;

25、若超过所述待升主过渡态的等待超时时间后,所述对端机仍处于所述主用状态或所述待升主过渡态,则回退到所述备用状态。

26、在第一方面的一种可能的实现方式中,在所述待降从过渡态中:

27、当所述对端机处于所述主用状态或所述待升主过渡态时,转入所述备用状态,并置位内部全事件申请标志;

28、若超过所述待降从过渡态的等待超时时间后,所述对端机仍处于所述备用状态或所述待降从过渡态,则回退到所述主用状态。

29、在第一方面的一种可能的实现方式中,所述方法还包括:

30、从所述待降从过渡态转入所述备用状态时,置位所述内部全事件申请标志;

31、在所述备用状态下,周期性检测所述对端机是否已处于所述主用状态;

32、确定所述对端机已处于所述主用状态后,通过共享内存置位全事件申请标志,通知上层应用向所述对端机申请全量事件同步。

33、第二方面,本技术实施例提供了一种双机主备自适应切换方法,应用于双机系统中的本机和对端机,所述方法包括:

34、基于所述本机的关键进程的预设权重,确定所述本机的动态进程权重;

35、基于所述对端机的关键进程的预设权重,确定所述对端机的动态进程权重;

36、所述本机通过独立物理网络向所述对端机发送本机心跳帧,并在所述本机心跳帧的帧体中携带所述本机的主备状态和所述本机的动态进程权重;所述对端机通过所述独立物理网络向所述本机发送对端机心跳帧,并在所述对端机心跳帧的帧体中携带所述对端机的主备状态和所述对端机的动态进程权重;

37、所述本机通过所述独立物理网络接收所述对端机发送的所述对端机心跳帧,并从接收到的所述对端机心跳帧的帧体中解析出所述对端机的主备状态和所述对端机的动态进程权重;所述对端机通过所述独立物理网络接收所述本机发送的所述本机心跳帧,并从接收到的所述本机心跳帧的帧体中解析出所述本机的主备状态和所述本机的动态进程权重;

38、所述本机获取心跳超时检测结果,所述对端机获取心跳超时检测结果;

39、根据所述本机的主备状态、所述对端机的主备状态、所述本机的动态进程权重、所述对端机的动态进程权重以及所述心跳超时检测结果,所述本机驱动有限状态机执行主备角色仲裁与转换;根据所述对端机的主备状态、所述本机的主备状态、所述对端机的动态进程权重、所述本机的动态进程权重以及所述心跳超时检测结果,所述对端机驱动有限状态机执行主备角色仲裁与转换;所述有限状态机包括主用状态、备用状态、待升主过渡态、待降从过渡态和脱网状态;

40、当所述本机进入所述待升主过渡态或所述待降从过渡态时,若在当前所处的过渡态的等待超时时间内,所述对端机的状态未达到预期转换目标,则所述本机回退到进入当前所处的过渡态之前的状态;当所述对端机进入所述待升主过渡态或所述待降从过渡态时,若在当前所处的过渡态的等待超时时间内,所述本机的状态未达到预期转换目标,则所述对端机回退到进入当前所处的过渡态之前的状态。

41、第三方面,本技术实施例提供了一种双机主备自适应切换装置,应用于双机系统中的本机,所述装置包括:

42、确定模块,用于基于所述本机的关键进程的预设权重,确定所述本机的动态进程权重;

43、发送模块,用于通过独立物理网络向对端机发送本机心跳帧,并在所述本机心跳帧的帧体中携带所述本机的主备状态和所述本机的动态进程权重;

44、解析模块,用于通过所述独立物理网络接收所述对端机发送的对端机心跳帧,并从接收到的所述对端机心跳帧的帧体中解析出所述对端机的主备状态和所述对端机的动态进程权重;

45、获取模块,用于获取心跳超时检测结果;

46、仲裁与转换模块,用于根据所述本机的主备状态、所述对端机的主备状态、所述本机的动态进程权重、所述对端机的动态进程权重以及所述心跳超时检测结果,驱动有限状态机执行主备角色仲裁与转换;所述有限状态机包括主用状态、备用状态、待升主过渡态、待降从过渡态和脱网状态;

47、回退模块,用于当所述本机进入所述待升主过渡态或所述待降从过渡态时,若在当前所处的过渡态的等待超时时间内,所述对端机的状态未达到预期转换目标,则所述本机回退到进入当前所处的过渡态之前的状态。

48、第4四方面,本技术实施例提供了一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述第一方面或第二方面中任一项所述的双机主备自适应切换方法。

49、第五方面,本技术实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述第一方面或第二方面中任一项所述的双机主备自适应切换方法。

50、第六方面,本技术实施例提供了一种计算机程序产品,当计算机程序产品在计算机设备上运行时,使得计算机设备执行上述第一方面或第二方面中任一项所述的双机主备自适应切换方法。

51、本技术实施例,本技术具有以下有益效果:

52、通过设置独立物理网络进行心跳通信,避免了因心跳链路单点故障导致的切换误判或双主冲突问题。

53、通过在心跳帧中携带动态进程权重,并将该动态进程权重作为主备仲裁的关键依据,使得切换决策能够反映服务器上层业务应用的健康状态,使切换决策能够反映服务器上层业务应用的健康状态。

54、通过引入包含待升主过渡态和待降从过渡态的有限状态机,并结合超时回退机制,为切换过程提供了协商与确认的窗口,避免了因状态不同步或网络延迟导致的来回切换和系统僵持。

55、通过设置切换后的全事件申请同步机制,使新生成的备用机能够从新的主用机补齐切换期间的事件数据。

56、通过内置对双主、双从等异常状态的自适应消解逻辑,以及对网络脱网与恢复的自动化处理流程,使系统在多种异常场景下能够自动恢复至单一主用状态。

57、可以理解的是,上述第二方面至第六方面的有益效果可以参见上述第一方面中的相关描述,在此不再赘述。