基于仲裁盘和双链路的高可用集群的实现方法和系统转让专利

申请号 : CN201811479176.4

文献号 : CN109495312B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 郑伟陈鹏王子骏

申请人 : 广州鼎甲计算机科技有限公司

摘要 :

本发明涉及基于仲裁盘和双链路的高可用集群的实现方法和系统,属于网络技术领域。所述方法包括:当检测到第一心跳网络异常时,确定第二心跳网络的状态;当根据第二心跳网络的状态确定所述第二心跳网络异常时,确定存储网络的状态;其中,所述存储网络为存储服务器对应的网络,用于表征节点服务器的状态;根据所述存储网络的状态控制节点服务器进行主备切换。上述技术方案,解决了高可用集群的主备切换较为混乱的问题。能有效降低由于节点服务器心跳异常导致的误切现象,保证高可用集群中主备切换的正常进行。

权利要求 :

1.一种基于仲裁盘和双链路的高可用集群的实现方法,其特征在于,包括以下步骤:控制服务器连接第一心跳网络和第二心跳网络,并向所连接的节点服务器发送心跳网络连接指令;所述心跳网络连接指令用于控制所述节点服务器连接所述第一心跳网络和第二心跳网络;

当检测到第一心跳网络异常时,控制服务器确定第二心跳网络的状态;

当根据第二心跳网络的状态确定所述第二心跳网络异常时,控制服务器确定存储网络的状态;其中,所述存储网络为存储服务器对应的网络,用于表征节点服务器的状态;

当根据第二心跳网络的状态确定所述第二心跳网络正常时,控制服务器控制修复当前的主用节点服务器;

控制服务器根据所述存储网络的状态控制节点服务器进行主备切换;所述主备切换包括主用节点服务器和多个备用节点服务器之间的切换;

所述控制服务器根据所述存储网络的状态控制节点服务器进行主备切换的步骤,包括:当根据所述存储网络的状态确定存储网络异常时,控制服务器判定当前的主用节点服务器宕机,确定新的主用节点服务器并进行主备切换;当根据所述存储网络的状态确定存储网络正常时,控制服务器判定心跳网络异常;卸载当前的主用节点服务器的应用服务,确定新的主用节点服务器并进行主备切换。

2.根据权利要求1所述的基于仲裁盘和双链路的高可用集群的实现方法,其特征在于,所述控制修复所述当前的主用节点服务器的步骤,包括:向所述当前的主用节点服务器发送修复指令;所述修复指令用于控制所述当前的主用节点服务器进行资源修复;

获取所述当前的主用节点服务器的修复状态;

当根据所述修复状态确定所述当前的节点主服务器修复失败时,卸载当前的主用节点服务器的应用服务,确定新的主用节点服务器并进行主备切换。

3.根据权利要求1或2所述的基于仲裁盘和双链路的高可用集群的实现方法,其特征在于,所述确定新的主用节点服务器并进行主备切换的步骤,包括:选择一个备用节点服务器,作为新的主用节点服务器;

将所述当前的主用节点服务器降级为备用节点服务器,将所述新的主用节点服务器升级为主用节点服务器。

4.根据权利要求3所述的基于仲裁盘和双链路的高可用集群的实现方法,其特征在于,所述将所述新的主用节点服务器升级为主用节点服务器的步骤之后,还包括:向所述新的主用节点服务器发送心跳更新指令;所述心跳更新指令用于控制所述新的主用节点服务器更新存储心跳信息;所述存储心跳为存储服务器对应的心跳;

监控第一心跳网络、第二心跳网络和/或存储网络。

5.根据权利要求1、2、或4所述的基于仲裁盘和双链路的高可用集群的实现方法,其特征在于,所述当检测到第一心跳网络异常时,确定第二心跳网络的状态的步骤之前,还包括:向所述存储服务器发送磁盘划分指令;所述磁盘划分指令用于控制所述存储服务器划分出特定的磁盘空间,作为仲裁盘;根据所述仲裁盘建立存储网络,连接所述存储网络;向所连接的节点服务器发送存储网络连接指令;所述存储网络连接指令用于控制所述节点服务器连接所述存储网络。

6.一种基于仲裁盘和双链路的高可用集群系统,其特征在于,包括:

心跳网络连接模块,用于控制服务器连接第一心跳网络和第二心跳网络,并向所连接的节点服务器发送心跳网络连接指令;所述心跳网络连接指令用于控制所述节点服务器连接所述第一心跳网络和第二心跳网络;

心跳网络状态确定模块,用于当检测到第一心跳网络异常时,控制服务器确定第二心跳网络的状态;

存储网络状态确定模块,用于当根据第二心跳网络的状态确定所述第二心跳网络异常时,控制服务器确定存储网络的状态;其中,所述存储网络为存储服务器对应的网络,用于表征节点服务器的状态;

修复模块,用于当根据第二心跳网络的状态确定所述第二心跳网络正常时,控制服务器控制修复当前的主用节点服务器;

以及,主备切换模块,用于控制服务器根据所述存储网络的状态控制节点服务器进行主备切换;所述主备切换包括主用节点服务器和多个备用节点服务器之间的切换;

主备切换模块,包括:第一切换模块,用于当根据所述存储网络的状态确定存储网络异常时,控制服务器判定当前的主用节点服务器宕机,确定新的主用节点服务器并进行主备切换;第二切换模块,用于当根据所述存储网络的状态确定存储网络正常时,控制服务器判定心跳网络异常;卸载当前的主用节点服务器的应用服务,确定新的主用节点服务器并进行主备切换。

7.根据权利要求6所述的基于仲裁盘和双链路的高可用集群系统,其特征在于,所述修复模块,包括:修复指令发送子模块,用于向所述当前的主用节点服务器发送修复指令;所述修复指令用于控制所述当前的主用节点服务器进行资源修复;修复状态获取子模块,用于获取所述当前的主用节点服务器的修复状态;主备切换子模块,用于当根据所述修复状态确定所述当前的节点主服务器修复失败时,卸载当前的主用节点服务器的应用服务,确定新的主用节点服务器并进行主备切换。

8.根据权利要求6或7所述的基于仲裁盘和双链路的高可用集群系统,其特征在于,还包括:服务器选择模块,用于选择一个备用节点服务器,作为新的主用节点服务器;主备切换模块,用于将所述当前的主用节点服务器降级为备用节点服务器,将所述新的主用节点服务器升级为主用节点服务器。

9.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至5任一项所述的方法的步骤。

10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至5任一项所述的方法的步骤。

说明书 :

基于仲裁盘和双链路的高可用集群的实现方法和系统

技术领域

[0001] 本发明涉及网络技术领域,特别是涉及基于仲裁盘和双链路的高可用集群的实现方法、系统、计算机设备及存储介质。

背景技术

[0002] 高可用(High Availability,简称HA)集群是指以减少服务中断时间为目的的服务器集群技术。它通过保护用户的应用服务如数据库服务、网页服务等对外不间断提供的服务,把应用服务器因为人为/软件/硬件等原因对业务的影响降低到最小程度。现有高可用集群技术主要是通过心跳网络来监控服务器的状态。
[0003] 在实现本发明过程中,发明人发现现有技术中至少存在如下问题:目前高可用集群内的所有节点互为主备关系,它们通过私有网络进行连接。当私有网络异常时,会进行相应的切换或者修复。但是这种情况下容易出现误切换,导致脑裂等现象,使得高可用集群的主备切换较为混乱。

发明内容

[0004] 基于此,本发明实施例提供了基于仲裁盘和双链路的高可用集群的实现方法、系统、计算机设备及存储介质,能保证高可用集群中主备切换的正常进行。
[0005] 本发明实施例的内容如下:
[0006] 一种基于仲裁盘和双链路的高可用集群的实现方法,包括以下步骤:当检测到第一心跳网络异常时,确定第二心跳网络的状态;当根据第二心跳网络的状态确定所述第二心跳网络异常时,确定存储网络的状态;其中,所述存储网络为存储服务器对应的网络,用于表征节点服务器的状态;根据所述存储网络的状态控制节点服务器进行主备切换。
[0007] 在其中一个实施例中,所述根据所述存储网络的状态控制节点服务器进行主备切换的步骤,包括:当根据所述存储网络的状态确定存储网络异常时,判定当前的主用节点服务器宕机,确定新的主用节点服务器并进行主备切换;当根据所述存储网络的状态确定存储网络正常时,判定心跳网络异常;卸载当前的主用节点服务器的应用服务,确定新的主用节点服务器并进行主备切换。
[0008] 在其中一个实施例中,所述当检测到第一心跳网络异常时,确定第二心跳网络的状态的步骤之后,还包括:当根据第二心跳网络的状态确定所述第二心跳网络正常时,控制修复所述当前的主用节点服务器。
[0009] 在其中一个实施例中,所述控制修复所述当前的主用节点服务器的步骤,包括:向所述当前的主用节点服务器发送修复指令;所述修复指令用于控制所述当前的主用节点服务器进行资源修复;获取所述当前的主用节点服务器的修复状态;当根据所述修复状态确定所述当前的节点主服务器修复失败时,卸载当前的主用节点服务器的应用服务,确定新的主用节点服务器并进行主备切换。
[0010] 在其中一个实施例中,所述确定新的主用节点服务器并进行主备切换的步骤,包括:选择一个备用节点服务器,作为新的主用节点服务器;将所述当前的主用节点服务器降级为备用节点服务器,将所述新的主用节点服务器升级为主用节点服务器。
[0011] 在其中一个实施例中,所述将所述新的主用节点服务器升级为主用节点服务器的步骤之后,还包括:向所述新的主用节点服务器发送心跳更新指令;所述心跳更新指令用于控制所述新的主用节点服务器更新存储心跳信息;所述存储心跳为存储服务器对应的心跳;监控第一心跳网络、第二心跳网络和/或存储网络。
[0012] 在其中一个实施例中,所述当检测到第一心跳网络异常时,确定第二心跳网络的状态的步骤之前,还包括:向所连接的节点服务器发送心跳网络连接指令;所述心跳网络连接指令用于控制所述节点服务器连接所述第一心跳网络和第二心跳网络。
[0013] 在其中一个实施例中,所述当根据第二心跳网络的状态确定所述第二心跳网络异常时,确定存储网络的状态的步骤之前,还包括:向所述存储服务器发送磁盘划分指令;所述磁盘划分指令用于控制所述存储服务器划分出特定的磁盘空间,作为仲裁盘;根据所述仲裁盘建立存储网络,连接所述存储网络;向所连接的节点服务器发送存储网络连接指令;所述存储网络连接指令用于控制所述节点服务器连接所述存储网络。
[0014] 相应的,本发明实施例提供一种基于仲裁盘和双链路的高可用集群系统,包括:心跳网络状态确定模块,用于当检测到第一心跳网络异常时,确定第二心跳网络的状态;存储网络状态确定模块,用于当根据第二心跳网络的状态确定所述第二心跳网络异常时,确定存储网络的状态;其中,所述存储网络为存储服务器对应的网络,用于表征节点服务器的状态;以及,主备切换模块,用于根据所述存储网络的状态控制节点服务器进行主备切换。
[0015] 上述基于仲裁盘和双链路的高可用集群的实现方法及系统,根据两个心跳网络的状态来确定高可用集群是否心跳网络异常;当心跳网络确实异常时,根据存储网络的状态来控制节点服务器的主备切换。能有效降低由于节点服务器心跳异常导致的误切现象,保证高可用集群中主备切换的正常进行。
[0016] 一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现以下步骤:当检测到第一心跳网络异常时,确定第二心跳网络的状态;当根据第二心跳网络的状态确定所述第二心跳网络异常时,确定存储网络的状态;其中,所述存储网络为存储服务器对应的网络,用于表征节点服务器的状态;根据所述存储网络的状态控制节点服务器进行主备切换。
[0017] 上述计算机设备,能有效降低由于节点服务器心跳异常导致的误切现象,保证高可用集群中主备切换的正常进行。
[0018] 一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:当检测到第一心跳网络异常时,确定第二心跳网络的状态;当根据第二心跳网络的状态确定所述第二心跳网络异常时,确定存储网络的状态;其中,所述存储网络为存储服务器对应的网络,用于表征节点服务器的状态;根据所述存储网络的状态控制节点服务器进行主备切换。
[0019] 上述计算机可读存储介质,能有效降低由于节点服务器心跳异常导致的误切现象,保证高可用集群中主备切换的正常进行。

附图说明

[0020] 图1为一个实施例中基于仲裁盘和双链路的高可用集群的实现方法的应用环境图;
[0021] 图2为一个实施例中基于仲裁盘和双链路的高可用集群的实现方法的流程示意图;
[0022] 图3为一个实施例中基于仲裁盘和双链路的高可用集群的实现系统的结构示意图;
[0023] 图4为另一个实施例中基于仲裁盘和双链路的高可用集群的实现方法的流程示意图;
[0024] 图5为另一个实施例中基于仲裁盘和双链路的高可用集群系统的结构框图;
[0025] 图6为一个实施例中计算机设备的内部结构。

具体实施方式

[0026] 为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0027] 本申请提供的基于仲裁盘和双链路的高可用集群的实现方法可以应用于如图1所示的应用环境中。该应用环境中包括控制服务器101(也可以称为高可用服务器)、节点服务器102、存储服务器103、第一心跳网络104以及第二心跳网络105。上述这些服务器可以通过IP网络进行连接。在实际应用中,控制服务器检测第一心跳网络和第二心跳网络的网络状态,在两者均异常时检测存储服务器对应的存储网络并根据存储网络的状态对节点服务器进行主备切换。其中,控制服务器、节点服务器以及存储服务器均可以用独立的服务器或者是多个服务器组成的服务器集群来实现;第一心跳网络和第二心跳网络可以通过私有网络或公有网络来实现。
[0028] 在一个实施例中,控制服务器主要实现如下功能:1、作为集中式配置管理入口,提供一个WEB/图形界面,用于配置和管理高可用集群。2、控制存储服务器划分存储空间和生成仲裁盘,初始化仲裁盘并且划分存储服务器的使用空间。3、监控主用节点服务器,确保主用节点服务器能够正常运行对应的应用服务。4、在主用节点服务器出现异常或者出现故障时,选取一个备用节点服务器作为新的主用节点服务器并下发指令通知这个新的主用节点服务器接管服务。
[0029] 存储服务器主要提供如下功能:1、接收控制服务器的指令划分存储空间。2、对访问权限进行控制,确保节点服务器都能正常访问存储服务器。
[0030] 节点服务器主要实现如下功能:1、接收控制服务器的指令,以监控和上送存储心跳和网络心跳。2、接收控制服务器的指令,以接管应用服务成为新的主用节点服务器。
[0031] 本发明实施例提供一种基于仲裁盘和双链路的高可用集群的实现方法、系统、计算机设备和存储介质。以下分别进行详细说明。
[0032] 在一个实施例中,如图2所示,提供了一种基于仲裁盘和双链路的高可用集群的实现方法。以该方法应用于图1中的控制服务端为例进行说明,包括以下步骤:
[0033] S201、当检测到第一心跳网络异常时,确定第二心跳网络的状态。
[0034] 其中,心跳网络(包括第一心跳网络和第二心跳网络)指的是能保证集群内所有节点服务器能向HA服务器提供心跳信息、提供资源状态信息、资源异常上报等操作的网络,可以通过私有网络来实现。心跳网络的状态可以指节点服务器对心跳网络的访问状态或者心跳网络本身的网络状态。例如,在心跳网络A所连接的主用节点服务器S无法正常访问心跳网络A(此时可能是主用节点服务器S出现资源异常)时,心跳网络的状态表现为异常;而主用节点服务器S能正常接入心跳网络A,心跳网络A本身的网络状态出现故障时,心跳网络A的状态也会表现为异常。另外,心跳网络与业务网络(控制服务器、节点服务器、存储服务器进行业务处理时所用的网络)本质上来说都是局域网或者广域网。心跳网络可以与业务网络隔离,防止业务网络故障时集群内所有节点的心跳网络也发生异常导致HA服务器不能正确判定节点服务器的状态。
[0035] 第一心跳网络异常至少有2种原因:1、节点服务器出现资源异常,导致节点服务器心跳异常,进而导致第一心跳网络异常;2、心跳网络异常。仅心跳网络故障时,如果进行主备切换时没有清除原主用节点服务器的存储和服务,则可能在切换后造成两个进程同时访问同一个文件的情况,也有可能发生数据不一致导致新主用节点不可访问。因此,在只有心跳网络异常时,节点服务器中有些资源可能可以正常访问,这个时候需要先把主用节点上的资源全部停掉,再切换,否则可能发生某些资源同时在两个节点上都处于可访问的状态,导致不可预计的后果。基于此,有必要根据第二心跳网络的状态确定第一心跳网络的异常是节点心跳异常还是心跳网络异常,从而减小误切的风险。
[0036] 需要说明的是,在本发明实施例中,节点服务器也被称为节点。另外,本发明实施例中的两组心跳网络可以称为双心跳网络、双心跳链路等。
[0037] S202、当根据第二心跳网络的状态确定所述第二心跳网络异常时,确定存储网络的状态;其中,所述存储网络为存储服务器对应的网络,用于表征节点服务器的状态。
[0038] 其中,节点服务器也可以称为应用服务器,指的是提供应用服务的服务器;节点服务器可以为多个,可以包括主用节点服务器和备用节点服务器。当当前的主用节点服务器出现故障时,控制服务器会选择一个备用服务器中作为新的主用节点服务器。节点服务器通过私有网络与控制服务器进行通信并且保持心跳。
[0039] 存储服务器中可以划分出一定的空间作为仲裁盘,并根据存储服务器建立对应的存储网络。仲裁盘可以是FC-SAN/IP-SAN/NAS等,对应的存储网络可以指共享存储网络。节点服务器和控制服务器都可以与存储服务器连接。节点服务器在与存储服务器建立连接之后,可以根据存储服务器更新自身的存储心跳以向存储服务器上送存储心跳。仲裁盘在接收到节点服务器的存储心跳时就能知道对应的节点服务器是否在线。即,存储网络的状态可以指存储服务器所连接的节点服务器的心跳状态;当存储服务器能接收到节点服务器的存储心跳时,认为存储网络正常,对应的节点服务器在线;当存储服务器无法接收到节点服务器的存储心跳时,认为存储网络异常,对应的节点服务器离线(宕机)。
[0040] 进一步地,当第一心跳网络和第二心跳网络均为异常时,可以进行仲裁盘的状态检测,即控制服务器检测存储网络的状态,以确定正在工作的当前主用节点服务器是否宕机,从而确认是否需要在主用节点服务器的资源清除之后再进行主备切换,从而降低脑裂的风险。
[0041] S203、根据所述存储网络的状态控制节点服务器进行主备切换。
[0042] 其中,节点服务器的主备切换可以指将当前的主用节点服务器降级为备用节点服务器;而从原先的备用节点服务器中选择一个,作为新的主用节点服务器。
[0043] 本步骤中,控制服务器根据存储网络的状态控制节点服务器的主备切换。能够防止出现资源在多个节点可访问的资源数据不同步或者资源异常的现象。
[0044] 现有高可用集群技术主要是通过心跳网络来监控服务器的状态。所有节点互为主备关系,通过私有网络进行连接,每个节点检测自己的资源状态并通过私有心跳网络广播给集群中所有节点,如果资源出现异常,心跳信息会发生变化。其他节点捕捉到这种变化之后,会进行相应的切换或者修复。但是这种心跳监控技术存在以下问题:1、存在脑裂的风险。在单一的监控环境出现短时间的异常,导致集群发生切换,但故障环境很快就恢复的情况下;会导致资源数据出现不同步或者资源异常,从而产生脑裂。2、存在发生错误的故障切换的风险。当节点心跳出现瞬时的异常,随即又恢复正常时,由于心跳信息发生变化或者中断会导致切换的发生,但是这种情况下的切换操作是错误的。3、配置和管理复杂。高可用集群内无统一的管理入口,集群需要连接到每个节点服务器上进行高可用配置。其中,可以在节点服务接入高可用集群之前为节点服务器进行高可用配置;为节点服务器进行的配置可以包括:配置节点监控的资源信息以及本身期望的资源初始状态、配置节点心跳检测方式、故障处理机制、HA agent本身需要的一些基本配置等。
[0045] 本实施例,能有效降低由于节点服务器心跳异常导致的误切现象,保证高可用集群中主备切换的正常进行。同时,由控制服务器作为统一的配置管理入口,采用集中式的方式配置高可用集群;能有效简化高可用集群的配置和管理。
[0046] 在一个实施例中,在检测第一心跳网络和第二心跳网络的状态之前,还可以包括创建心跳网络以及连接心跳网络的步骤。即在检测第一心跳网络的状态的之前,还包括:向所连接的节点服务器发送心跳网络连接指令;所述心跳网络连接指令用于控制所述节点服务器连接所述第一心跳网络和第二心跳网络。
[0047] 具体地,建立和连接心跳网络的实现过程可以为:组建两组私有网络(如图3中的私有网络A和B,图3为基于仲裁盘和双链路的高可用集群的实现系统的结构示意图),这两组网络互相独立。将集群内所有的节点服务器和控制服务器加入这两个私有网络,并且集群内所有服务器能通过两组私有网络进行正常通信。
[0048] 节点服务器在与私有网络建立连接之后,可以向其中一个心跳网络上送网络心跳。控制服务器通过监测心跳的状态就能间接地获取节点服务器的状态。
[0049] 节点服务器会实时检测自身的资源状态是否是初始化时的期望状态。在资源状态发生变化时会通过心跳上送资源异常信息。此时对应的心跳网络会出现异常。其中,节点服务器的资源指的是HA任务中所监控的IP、存储、服务、应用程序(对应用所注册的服务进行监控)。而资源异常指的是资源状态异常,包括IP不可访问、存储不可访问、服务状态不正常等情况。节点服务器出现资源异常,也可以认为是出现应用服务故障。
[0050] 本实施例在建立两组心跳网络以后,控制所有的节点服务器和控制服务器连接心跳网络,能实现双心跳确认机制,进而正确地识别到心跳网络的异常是由于网络异常导致还是节点服务器异常。
[0051] 在一个实施例中,当根据第二心跳网络的状态确定所述第二心跳网络异常时,确定存储网络的状态的步骤之前,还可以包括:向所述存储服务器发送磁盘划分指令;所述磁盘划分指令用于控制所述存储服务器划分出特定的磁盘空间,作为仲裁盘;根据所述仲裁盘建立存储网络,连接所述存储网络;向所连接的节点服务器发送存储网络连接指令;所述存储网络连接指令用于控制所述节点服务器连接所述存储网络。其中,控制服务器在从存储服务器划分出仲裁盘对应的磁盘空间后,可以包括格式化仲裁盘对应的磁盘空间的步骤。
[0052] 控制服务器还可以向节点服务器发送初始化指令,用于使节点服务器初始化仲裁盘并初始化存储心跳,并向控制服务器上送存储心跳。据此,节点服务器可以通过共享存储与控制服务器进行通信并且保持存储心跳。另外,节点服务器和控制服务器接入存储服务器后,需要保证对仲裁盘的正常读写。
[0053] 在所有节点服务器和控制服务器与心跳网络和存储网络建立连接以后,可以通过已有的高可用集群方法进行应用服务(包括服务、存储、网络)的状态监控以及节点服务器本身的状态监控,确保节点服务器的正常运行。
[0054] 本实施例对存储服务器划分仲裁盘,并建立对应的存储网络,能实时获取所连接的节点服务的连线状态,并在双心跳网络均异常时通过节点服务器的存储心跳确定对应的节点服务器的状态。
[0055] 在一个实施例中,所述根据所述存储网络的状态控制节点服务器进行主备切换的步骤,包括:当根据所述存储网络的状态确定存储网络异常时,判定当前的主用节点服务器宕机,确定新的主用节点服务器并进行主备切换;当根据所述存储网络的状态确定存储网络正常时,判定心跳网络异常;卸载当前的主用节点服务器的应用服务,确定新的主用节点服务器并进行主备切换。
[0056] 若当前的主用节点服务器宕机,说明该主用节点服务器离线,此时即使进行主备切换也不会存在资源在两个节点上都处于可访问状态的情况。因此可以直接确定新的主用节点服务器并进行主备切换。另一方面,在只有心跳网络异常的情况下,有可能该主用节点的某些资源可正常访问,这个时候需要先把主用节点上的资源全部停掉,再进行主备切换。
[0057] 本实施例,根据存储网络的状态判断是否需要进行节点服务器资源清除再进行故障切换。通过仲裁盘机制,能在双心跳网络都异常的情况下卸载主用节点服务器上的应用服务,保证应用服务迁移的一致性和服务状态的一致性,防止脑裂。
[0058] 在一个实施例中,所述当检测到第一心跳网络异常时,确定第二心跳网络的状态的步骤之后,还包括:当根据第二心跳网络的状态确定所述第二心跳网络正常时,控制修复所述当前的主用节点服务器。在修复主用节点服务器的过程中,还可以包括发送修复告警的步骤,该修复告警可以为:第一心跳网络故障。
[0059] 当确定第二心跳网络正常时,说明当前的主用节点服务器能正常访问网络,因此可能是主用节点网络出现资源异常,即是节点服务器异常而不是网络异常。
[0060] 进一步地,所述控制修复所述当前的主用节点服务器的步骤,包括:向所述当前的主用节点服务器发送修复指令;所述修复指令用于控制所述当前的主用节点服务器进行资源修复;获取所述当前的主用节点服务器的修复状态;当根据所述修复状态确定所述当前的节点主服务器修复失败时,卸载当前的主用节点服务器的应用服务,确定新的主用节点服务器并进行主备切换。
[0061] 其中,发送修复指令控制节点主用服务器的修复可以理解为自动修复。这个自动修复能控制主用节点服务器进行资源状态的自动修复。另外,在出现不可自动修复的故障时,还可以对故障进行手动修复。
[0062] 本实施例,在只有一个心跳网络异常时,先对主用节点服务器进行修复。当修复失败时,再清除当前的主用节点服务器上的应用服务,并进行主备切换。能有效防止出现心跳网络出现问题就马上进行主备切换而导致的脑裂问题,保证主用节点服务器出现资源异常时故障修复的正常进行。
[0063] 在一个实施例中,所述确定新的主用节点服务器并进行主备切换的步骤,包括:选择一个备用节点服务器,作为新的主用节点服务器;将所述当前的主用节点服务器降级为备用节点服务器,将所述新的主用节点服务器升级为主用节点服务器。如图3所示,可以从多个备用节点服务器中选择一个节点服务器作为新的主用节点服务器。
[0064] 其中,备用节点服务器可以设置有优先级。控制服务器从备用节点服务器中选择新的主用节点服务器时,可以选择优先级更高的备用节点服务器作为新的主用节点服务器。
[0065] 另外,控制服务器还可以检测备用节点服务器的状态。在备用节点C异常的情况下,即使C为第一优先级备用节点,也会跳过C选择状态正常的备用节点进行切换。
[0066] 同时,也可以对备用节点服务器的异常进行修复,例如由用户手动修复。
[0067] 进一步地,将当前的主用节点服务器降级为备用节点服务器之后,还可将其标记为异常,通知用户需要进行修复。
[0068] 本实施例,能选择一个备用节点服务器,作为新的主用节点服务器,能有效保证高可用集群不间断地对外提供服务。
[0069] 在一个实施例中,所述将所述新的主用节点服务器升级为主用节点服务器的步骤之后,还包括:向所述新的主用节点服务器发送心跳更新指令;所述心跳更新指令用于控制所述新的主用节点服务器更新存储心跳信息;所述存储心跳为存储服务器对应的心跳;监控第一心跳网络、第二心跳网络和/或存储网络。
[0070] 在完成主备切换以后,新的主用节点服务器的存储心跳可能与存储服务器不匹配。为保证高可用集群的正常运行,有必要控制新的主用节点服务器进行存储心跳信息的更新。
[0071] 而在完成主备切换以后,控制服务器需要继续实时监控第一心跳网络、第二心跳网络以及存储网络的状态。当心跳网路再次出现问题时,可以继续通过双心跳链路进行重复心跳检测,并根据另一个心跳网络的状态对节点服务器进行控制。
[0072] 本实施例在完成主备切换以后控制新的主用节点服务器更新存储心跳,且控制服务器实时监控心跳网络和存储网络的状态。能保证完成主备切换以后的高可用集群继续正常运行。
[0073] 为了更好地理解上述方法,如图4所示,以下详细阐述一个本发明基于仲裁盘和双链路的高可用集群的实现方法的应用实例。
[0074] 步骤s11:在创建高可用后,控制服务器发送磁盘划分指令给存储服务器以控制存储服务器划分空间,格式化仲裁盘,并建立对应的存储网络。此时,控制服务器和节点服务器均接入这个存储网络中。
[0075] 步骤s12:控制服务器发送心跳初始化指令给节点服务器。节点服务器根据心跳初始化指令初始化仲裁盘信息并初始化存储心跳。
[0076] 步骤s13:组建两组私有网络A和B。控制服务器和节点服务器均接入这两组私有网络中。
[0077] 步骤s14:节点服务器上送存储心跳给存储网络。
[0078] 步骤s15:控制服务器监控存储心跳。
[0079] 步骤s16:节点服务器上送网络心跳给私有网络A。
[0080] 步骤s21:当控制服务器监控到心跳网络A故障时,检查心跳网络B的状态;如果心跳网络B正常,则发送修复告警,并进行正常的故障修复和切换(可以切换到步骤s31);如果心跳网络B异常,则执行步骤s22。
[0081] 步骤s22:控制服务器检查仲裁盘的存储心跳;如果存储心跳正常,则执行步骤s23;如果存储心跳不正常,则执行步骤s24。
[0082] 步骤s23:控制服务器通过仲裁盘向当前的主用节点服务器下发卸载应用服务的指令。当前的主用节点服务器(旧的主用节点服务器)根据该指令卸载应用服务。
[0083] 步骤s24:控制服务器选择备用节点服务器进行应用服务迁移,并升级该备用节点服务器为新的主用节点服务器;降级旧的主用节点服务器,为旧的主用节点服务器设置异常状态,并发送告警信息。
[0084] 步骤s25:新的主用节点服务器接管主用节点服务器的应用服务。
[0085] 步骤s26:新的主用节点服务器更新存储心跳信息。
[0086] 步骤s27:控制服务器监控新的存储心跳和网络心跳。如果网络心跳再次发生异常,则执行步骤s21。
[0087] 步骤s31:收到主用节点服务器应用服务故障消息或者心跳网络A和心跳网络B中只有一个心跳网络异常时,控制服务器向当前的主用节点发送修复指令;主用节点服务器修复失败则进行步骤s32。
[0088] 步骤s32:控制服务器通过网络发送卸载应用服务的指令给当前的主用节点服务器。
[0089] 步骤s33:控制服务器选择新的主用节点服务器,并且控制新的主用节点服务器接管旧的主用节点服务器的应用服务。
[0090] 步骤s34:新的主用节点服务器更新仲裁存储心跳信息,控制服务器监控新的存储心跳。
[0091] 本实施例,通过仲裁盘和双链路集群式的方式,可以最大程度地保证应用服务正常的情况下不会发生误切,并且能够有效防止脑裂的产生,从而可以使高可用集群更加稳定可靠。
[0092] 需要说明的是,对于前述的各方法实施例,为了简便描述,将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其它顺序或者同时进行。
[0093] 基于与上述实施例中的基于仲裁盘和双链路的高可用集群的实现方法相同的思想,本发明还提供基于仲裁盘和双链路的高可用集群系统,该系统可用于执行上述基于仲裁盘和双链路的高可用集群的实现方法。为了便于说明,基于仲裁盘和双链路的高可用集群系统实施例的结构示意图中,仅仅示出了与本发明实施例相关的部分,本领域技术人员可以理解,图示结构并不构成对系统的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
[0094] 如图5所述,基于仲裁盘和双链路的高可用集群系统包括心跳网络状态确定模块501、存储网络状态确定模块502和主备切换模块503,详细说明如下:
[0095] 心跳网络状态确定模块501,用于当检测到第一心跳网络异常时,确定第二心跳网络的状态。
[0096] 存储网络状态确定模块502,用于当根据第二心跳网络的状态确定所述第二心跳网络异常时,确定存储网络的状态;其中,所述存储网络为存储服务器对应的网络,用于表征节点服务器的状态。
[0097] 以及,主备切换模块503,用于根据所述存储网络的状态控制节点服务器进行主备切换。
[0098] 本实施例,能有效降低由于节点服务器心跳异常导致的误切现象,保证高可用集群中主备切换的正常进行。
[0099] 在一个实施例中,主备切换模块503,包括:第一切换模块,用于当根据所述存储网络的状态确定存储网络异常时,判定当前的主用节点服务器宕机,确定新的主用节点服务器并进行主备切换;第二切换模块,用于当根据所述存储网络的状态确定存储网络正常时,判定心跳网络异常;卸载当前的主用节点服务器的应用服务,确定新的主用节点服务器并进行主备切换。
[0100] 在一个实施例中,还包括:修复模块,用于当根据第二心跳网络的状态确定所述第二心跳网络正常时,控制修复所述当前的主用节点服务器。
[0101] 在一个实施例中,修复模块,包括:修复指令发送子模块,用于向所述当前的主用节点服务器发送修复指令;所述修复指令用于控制所述当前的主用节点服务器进行资源修复;修复状态获取子模块,用于获取所述当前的主用节点服务器的修复状态;主备切换子模块,用于当根据所述修复状态确定所述当前的节点主服务器修复失败时,卸载当前的主用节点服务器的应用服务,确定新的主用节点服务器并进行主备切换。
[0102] 在一个实施例中,还包括:服务器选择模块,用于选择一个备用节点服务器,作为新的主用节点服务器;主备切换模块,用于将所述当前的主用节点服务器降级为备用节点服务器,将所述新的主用节点服务器升级为主用节点服务器。
[0103] 在一个实施例中,还包括:心跳更新模块,用于向所述新的主用节点服务器发送心跳更新指令;所述心跳更新指令用于控制所述新的主用节点服务器更新存储心跳信息;所述存储心跳为存储服务器对应的心跳;心跳监控模块,用于监控第一心跳网络、第二心跳网络和/或存储网络。
[0104] 在一个实施例中,还包括:心跳网络连接模块,用于向所连接的节点服务器发送心跳网络连接指令;所述心跳网络连接指令用于控制所述节点服务器连接所述第一心跳网络和第二心跳网络。
[0105] 在一个实施例中,还包括:存储网络连接模块,用于向所述存储服务器发送磁盘划分指令;所述磁盘划分指令用于控制所述存储服务器划分出特定的磁盘空间,作为仲裁盘;根据所述仲裁盘建立存储网络,连接所述存储网络;向所连接的节点服务器发送存储网络连接指令;所述存储网络连接指令用于控制所述节点服务器连接所述存储网络。
[0106] 需要说明的是,本发明的基于仲裁盘和双链路的高可用集群系统与本发明的基于仲裁盘和双链路的高可用集群的实现方法一一对应,在上述基于仲裁盘和双链路的高可用集群的实现方法的实施例阐述的技术特征及其有益效果均适用于基于仲裁盘和双链路的高可用集群系统的实施例中,具体内容可参见本发明方法实施例中的叙述,此处不再赘述,特此声明。
[0107] 此外,上述示例的基于仲裁盘和双链路的高可用集群系统的实施方式中,各程序模块的逻辑划分仅是举例说明,实际应用中可以根据需要,例如出于相应硬件的配置要求或者软件的实现的便利考虑,将上述功能分配由不同的程序模块完成,即将所述基于仲裁盘和双链路的高可用集群系统的内部结构划分成不同的程序模块,以完成以上描述的全部或者部分功能。
[0108] 在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图6所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储网络状态等数据。该计算机设备的网络接口用于与外部的终端、存储服务器、节点服务器等通过网络连接通信。该计算机程序被处理器执行时以实现一种基于仲裁盘和双链路的高可用集群的实现方法。
[0109] 本领域技术人员可以理解,图6中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
[0110] 在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以下步骤:当检测到第一心跳网络异常时,确定第二心跳网络的状态;当根据第二心跳网络的状态确定所述第二心跳网络异常时,确定存储网络的状态;其中,所述存储网络为存储服务器对应的网络,用于表征节点服务器的状态;根据所述存储网络的状态控制节点服务器进行主备切换。
[0111] 在一个实施例中,处理器执行计算机程序时还实现以下步骤:当根据所述存储网络的状态确定存储网络异常时,判定当前的主用节点服务器宕机,确定新的主用节点服务器并进行主备切换;当根据所述存储网络的状态确定存储网络正常时,判定心跳网络异常;卸载当前的主用节点服务器的应用服务,确定新的主用节点服务器并进行主备切换。
[0112] 在一个实施例中,处理器执行计算机程序时还实现以下步骤:当根据第二心跳网络的状态确定所述第二心跳网络正常时,控制修复所述当前的主用节点服务器。
[0113] 在一个实施例中,处理器执行计算机程序时还实现以下步骤:向所述当前的主用节点服务器发送修复指令;所述修复指令用于控制所述当前的主用节点服务器进行资源修复;获取所述当前的主用节点服务器的修复状态;当根据所述修复状态确定所述当前的节点主服务器修复失败时,卸载当前的主用节点服务器的应用服务,确定新的主用节点服务器并进行主备切换。
[0114] 在一个实施例中,处理器执行计算机程序时还实现以下步骤:选择一个备用节点服务器,作为新的主用节点服务器;将所述当前的主用节点服务器降级为备用节点服务器,将所述新的主用节点服务器升级为主用节点服务器。
[0115] 在一个实施例中,处理器执行计算机程序时还实现以下步骤:向所述新的主用节点服务器发送心跳更新指令;所述心跳更新指令用于控制所述新的主用节点服务器更新存储心跳信息;所述存储心跳为存储服务器对应的心跳;监控第一心跳网络、第二心跳网络和/或存储网络。
[0116] 在一个实施例中,处理器执行计算机程序时还实现以下步骤:向所连接的节点服务器发送心跳网络连接指令;所述心跳网络连接指令用于控制所述节点服务器连接所述第一心跳网络和第二心跳网络。
[0117] 在一个实施例中,处理器执行计算机程序时还实现以下步骤:向所述存储服务器发送磁盘划分指令;所述磁盘划分指令用于控制所述存储服务器划分出特定的磁盘空间,作为仲裁盘;根据所述仲裁盘建立存储网络,连接所述存储网络;向所连接的节点服务器发送存储网络连接指令;所述存储网络连接指令用于控制所述节点服务器连接所述存储网络。
[0118] 在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:当检测到第一心跳网络异常时,确定第二心跳网络的状态;当根据第二心跳网络的状态确定所述第二心跳网络异常时,确定存储网络的状态;其中,所述存储网络为存储服务器对应的网络,用于表征节点服务器的状态;根据所述存储网络的状态控制节点服务器进行主备切换。
[0119] 在一个实施例中,计算机程序被处理器执行时还实现以下步骤:当根据所述存储网络的状态确定存储网络异常时,判定当前的主用节点服务器宕机,确定新的主用节点服务器并进行主备切换;当根据所述存储网络的状态确定存储网络正常时,判定心跳网络异常;卸载当前的主用节点服务器的应用服务,确定新的主用节点服务器并进行主备切换。
[0120] 在一个实施例中,计算机程序被处理器执行时还实现以下步骤:当根据第二心跳网络的状态确定所述第二心跳网络正常时,控制修复所述当前的主用节点服务器。
[0121] 在一个实施例中,计算机程序被处理器执行时还实现以下步骤:向所述当前的主用节点服务器发送修复指令;所述修复指令用于控制所述当前的主用节点服务器进行资源修复;获取所述当前的主用节点服务器的修复状态;当根据所述修复状态确定所述当前的节点主服务器修复失败时,卸载当前的主用节点服务器的应用服务,确定新的主用节点服务器并进行主备切换。
[0122] 在一个实施例中,计算机程序被处理器执行时还实现以下步骤:选择一个备用节点服务器,作为新的主用节点服务器;将所述当前的主用节点服务器降级为备用节点服务器,将所述新的主用节点服务器升级为主用节点服务器。
[0123] 在一个实施例中,计算机程序被处理器执行时还实现以下步骤:向所述新的主用节点服务器发送心跳更新指令;所述心跳更新指令用于控制所述新的主用节点服务器更新存储心跳信息;所述存储心跳为存储服务器对应的心跳;监控第一心跳网络、第二心跳网络和/或存储网络。
[0124] 在一个实施例中,计算机程序被处理器执行时还实现以下步骤:向所连接的节点服务器发送心跳网络连接指令;所述心跳网络连接指令用于控制所述节点服务器连接所述第一心跳网络和第二心跳网络。
[0125] 在一个实施例中,计算机程序被处理器执行时还实现以下步骤:向所述存储服务器发送磁盘划分指令;所述磁盘划分指令用于控制所述存储服务器划分出特定的磁盘空间,作为仲裁盘;根据所述仲裁盘建立存储网络,连接所述存储网络;向所连接的节点服务器发送存储网络连接指令;所述存储网络连接指令用于控制所述节点服务器连接所述存储网络。
[0126] 本领域普通技术人员可以理解,实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,作为独立的产品销售或使用。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
[0127] 应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
[0128] 本发明实施例的术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或(模块)单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
[0129] 以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
[0130] 以上所述实施例仅表达了本发明的几种实施方式,不能理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。