一种解决双机热备双主问题的方法及装置的制造方法
【专利摘要】本申请提供一种解决双机热备双主问题的方法及装置,该方法可以包括:生成心跳报文;通过聚合口的所有成员口分别向从设备发送所述心跳报文,以使得从设备获取主设备的生存信息。通过本申请的技术方案,主设备通过聚合口的所有成员口分别向从设备发送心跳报文,使得聚合口的部分成员口出现单通时,仍然可以通过其他成员口向从设备发送心跳报文,确保从设备总是能够在心跳超时时间之前接收并上报来自主设备的心跳报文,从而避免从设备由于对主设备的状态误判而误切换至主设备状态,防止出现双机热备双主的问题,有助于提升双机热备系统的稳定性。
【专利说明】
一种解决双机热备双主问题的方法及装置
技术领域
[0001]本申请涉及通讯技术领域,尤其涉及一种解决双机热备双主问题的方法及装置。
【背景技术】
[0002]双机热备由主设备和从设备组成。主设备处理业务流量并将业务数据备份到从设备,从设备处于备份状态,不处理业务。当主设备故障时,流量自动切换到从设备。当主设备再次恢复后,流量会切回到主设备,实现业务的备份和可靠运行。主从设备之间通过周期性发送心跳报文来传递自身的生存状态和获取对端设备的生存信息。当从设备未在心跳超时时间内收到主设备发送的心跳报文,则认为主设备已经宕机,从设备将强制切换为主设备状态。
[0003]在现有技术中,通常使用动态聚合的方式传输心跳报文。当聚合口选取用来发送心跳报文的selected成员口故障时,会从standby状态的成员口中重新选举一个来接替selected成员 P。
[0004]然而,当聚合口的selected成员口单通时,聚合口两端会由于状态不同而协商失败,导致无法重新选举出新的selected成员口,使主设备无法向从设备发送心跳报文。当单通的时间超过心跳超时时间时,从设备会因为未收到来自主设备的心跳报文而认为主设备已经宕机,强制切换为主设备状态,但如果主设备实际上并未宕机,就会导致出现双机热备双主的情况,即两台设备均为“主设备”。
【发明内容】
[0005]有鉴于此,本申请提供一种解决双机热备双主问题的方法及装置,可以解决聚合口的selected成员口单通时,可能导致双机热备双主的问题。
[0006]为实现上述目的,本申请提供技术方案如下:
[0007]根据本申请的第一方面,提出了一种解决双机热备双主问题的方法,包括:
[0008]生成心跳报文;
[0009]通过聚合口的所有成员口分别向从设备发送所述心跳报文,以使得从设备获取主设备的生存信息。
[0010]根据本申请的第二方面,提出了一种解决双机热备双主问题的装置,包括:
[0011 ] 生成单元,用于生成心跳报文;
[0012]发送单元,用于通过聚合口的所有成员口分别向从设备发送所述心跳报文,以使得从设备获取主设备的生存信息。
[0013]根据本申请的第三方面,提出了一种解决双机热备双主问题的方法,包括:
[0014]接收主设备通过聚合口的所有成员口分别发送的心跳报文;
[0015]按照预设规则选取同一周期内的心跳报文;
[0016]上报被选中的心跳报文。
[0017]根据本申请的第四方面,提出了一种解决双机热备双主问题的装置,包括:
[0018]接收单元,用于接收主设备通过聚合口的所有成员口分别发送的心跳报文;
[0019]选取单元,用于按照预设规则选取同一周期内的心跳报文;
[0020]上报单元,用于上报被选中的心跳报文。
[0021]由以上技术方案可见,本申请的双机热备系统中,主设备通过聚合口的所有成员口分别向从设备发送心跳报文,使得聚合口的部分成员口出现单通时,仍然可以通过其他成员口向从设备发送心跳报文,确保从设备总是能够在心跳超时时间之前接收并上报来自主设备的心跳报文,从而避免从设备由于对主设备的状态误判而误切换至主设备状态,防止出现双机热备双主的问题,有助于提升双机热备系统的稳定性。
【附图说明】
[0022]图1是本申请一示例性实施例提供的一种解决双机热备双主问题的方法的流程图。
[0023]图2是本申请一示例性实施例提供的另一种解决双机热备双主问题的方法的流程图。
[0024]图3是本申请一示例性实施例提供的另一种解决双机热备双主问题方法的流程图。
[0025]图4是本申请一示例性实施例提供的主设备发送心跳报文过程的流程图。
[0026]图5是本申请一示例性实施例提供的从设备筛选和处理心跳报文过程的流程图。
[0027]图6是本申请一示例性实施例提供的一种基于主设备侧的电子设备的结构示意图。
[0028]图7是本申请一示例性实施例提供的一种解决双机热备双主问题的装置的框图。
[0029]图8是本申请一示例性实施例提供的一种基于从设备侧的电子设备的结构示意图。
[0030]图9是本申请一示例性实施例提供的另一种解决双机热备双主问题的装置的框图。
【具体实施方式】
[0031]这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
[0032]在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
[0033]应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
[0034]图1是本申请一示例性实施例示出的基于主设备侧的一种解决双机热备双主问题的方法的流程图,如图1所示,该方法应用于双机热备系统中的主设备,可以包括以下步骤:
[0035]步骤101,生成心跳报文。
[0036]在本实施例中,心跳报文中可以包含ID字段;根据心跳报文对应的生成周期,可以对该ID字段的值进行更改,从而根据该ID字段的值,即可准确区分不同周期的心跳报文。
[0037]步骤102,通过聚合口的所有成员口分别向从设备发送所述心跳报文,以使得从设备获取主设备的生存信息。
[0038]相应地,图2是本申请一示例性实施例示出的基于从设备侧的一种解决双机热备双主问题的方法的流程图,如图2所示,该方法应用于双机热备系统中的从设备,可以包括以下步骤:
[0039]步骤201,接收主设备通过聚合口的所有成员口分别发送的心跳报文。
[0040]步骤202,按照预设规则选取每个周期对应的心跳报文。
[0041]在本实施例中,可以根据实际需求配置所需的选取规则,例如可以选取接收到的同一周期内的第一个心跳报文;当然,本申请并不对此进行限制。
[0042]步骤203,上报被选中的心跳报文。
[0043]由以上技术方案可见,本申请的双机热备系统中,主设备通过聚合口的所有成员口分别向从设备发送心跳报文,使得聚合口的部分成员口出现单通时,仍然可以通过其他成员口向从设备发送心跳报文,确保从设备总是能够在心跳超时时间之前接收并上报来自主设备的心跳报文,从而避免从设备由于对主设备的状态误判而误切换至主设备状态,防止出现双机热备双主的问题,有助于提升双机热备系统的稳定性。
[0044]为了便于理解,下面结合图3-5,针对双机热备系统中的主设备与从设备之间的交互过程,对本申请的技术方案进行详细说明。请参见图3,图3是本申请一示例性实施例的一种解决双机热备双主问题的方法的流程图,该方法可以包括以下步骤:
[0045]步骤301,主设备生成心跳报文。
[0046]在本实施例中,主设备按照预定义的心跳报文发送周期,重复生成和发送心跳报文。为了便于从设备对于心跳报文的辨识,可以对每个周期的报文进行区别配置。
[0047]举例而言,该心跳报文中可以包含ID字段,该ID字段的值与相应的心跳报文发送周期相关。例如,可以使得ID字段中的值随着心跳报文发送周期的增加而增大,比如增大的幅度可以为I,即ID字段中的值随着周期变化而自加I;那么,从设备接收到主设备在第i个周期发送的心跳报文时,相应ID字段的值为i,而主设备在第i+Ι个周期发送的心跳报文,相应的ID字段的值为i+Ι,以此类推。当然,只要能够确保不同周期的心跳报文中的ID字段相互区别,也可以通过其他方式对心跳报文进行配置,本申请并不对此进行限制。
[0048]在本实施例中,心跳报文可以米用LACPDU(LinkAggregat1n Control ProtocolData Unit,链路汇聚控制协议数据单元)协议生成,也可以采用其他任意公有或私有协议,只要在主设备与从设备之间完成关联配置即可,本申请并不对此进行限制。
[0049]步骤302,主设备通过聚合口的所有成员口分别向从设备发送该心跳报文。
[0050]在本实施例中,主设备可以通过诸如图4所示的实施例,在每个心跳报文发送周期向从设备发送相应的心跳报文。参见图4,该心跳报文的发送过程可以包括以下步骤:[0051 ]在步骤401中,获取心跳报文发包接口。
[0052]在步骤402中,判断该接口是否为聚合口,若是聚合口则转入步骤403,否则转入步骤406。
[0053]在本实施例中,若用于发送心跳报文的接口为聚合口,则通过聚合口的所有成员口分别发送该心跳报文;若该接口不是聚合口,则直接通过该接口发送该心跳报文。
[0054]在步骤403中,获取成员口。
[0055]在步骤404中,成员口发送心跳报文。
[0056]在步骤405中,判断是否还有成员口未发送心跳报文。若还有,则转入步骤403,否则转入步骤407。
[0057]举例而言,假定主设备获取的心跳报文发包接口为聚合口P,例如该聚合口 P包括
a、b、c、d四个成员口。在每个周期内,主设备均按照下述方式发送该周期内的心跳报文:主设备按照预设方式选取一个成员口,比如选取成员口a,并通过该成员口a发送相应周期的心跳报文;然后,当主设备判断还有成员口未发送相应周期的心跳报文时,继续获取下一个例如成员口 b,并通过该成员口 b发送相应周期的心跳报文;类似地,主设备分别选取成员口c、d等,使得所有成员口均对同一周期的心跳报文进行发送。其中,本申请并不限制主设备选取成员口a、b、c、d的上述“预设方式”,例如随机选取、按照预设顺序选取等均可。
[0058]在步骤406中,接口直接发送心跳报文。
[0059]在步骤407中,发包完成,结束发送心跳报文。
[0060]步骤303,从设备按照预设规则,对每个周期内接收到的心跳报文进行筛选和处理。
[0061]在本实施例中,由于聚合口的所有成员口均发送同一心跳报文,且每个周期均会发送相应的心跳报文,因而从设备需要按照预设规则进行筛选,以确保准确了解主设备的状态。其中,可以根据实际需求配置所需的选取规则,例如从设备可以仅处理同一周期内接收到的第一个心跳报文;当然,本申请并不对此进行限制。
[0062]此处结合图5所示的实施例,详细描述对心跳报文的筛选和处理过程。参见图5,心跳报文的筛选和处理过程可以包括以下步骤:
[0063]在步骤501中,当接收到心跳报文时,根据该心跳报文包含的ID字段,统计该心跳报文的已接收次数。
[0064]在本实施例中,每个心跳报文中包含对应于发送周期的ID字段,因而具有相同ID字段的心跳报文为不用成员口在同一周期内发送;当预配置的预设规则为“选取接收到的同一周期内的第一个心跳报文”时,可以对每个接收到的心跳报文的ID字段进行提取和统计,以确定当前接收到的心跳报文在其所属周期内的被接收次数,从而进一步确定对该心跳报文的处理方式。
[0065]例如,当ID字段的值配合于所属周期的增长而递增时,假定从设备接收到的心跳报文的ID字段的值为6,表明该心跳报文为主设备在第六周期发出。从设备会统计每个ID字段的值,比如首次接收到ID字段的值为6的心跳报文时,统计已接收次数为I,第二次接收到ID字段的值为6的心跳报文时,将已接收次数由I增加至2,以此类推。
[0066]在步骤502中,当已接收次数为I时,转入步骤503,否则转入步骤505。
[0067]在步骤503中,处理该ID心跳报文。
[0068]在步骤504中,收包完成,结束接收心跳报文。
[0069]在步骤505中,忽略该ID心跳报文。
[0070]在本实施例中,基于“选取接收到的同一周期内的第一个心跳报文”的预设规则,仅针对已接收次数为I的情况下,即同一周期内首次被接收的心跳报文,从设备会将该心跳报文上报并处理,以确定主设备处于正常状态;而对于已接收次数大于I的情况下,即同一周期内非首次被接收到的心跳报文,从设备可以忽略该心跳报文。
[0071 ]步骤304,从设备记录接收到的心跳报文对应的接口信息。
[0072]在本实施例中,接口信息为聚合口的成员口的标识信息,比如上述的“a”、“b”等,以便于从设备准确区分多个成员口。
[0073]在本实施例中,步骤303和步骤304之间不存在必要的先后顺序,例如步骤304可以与步骤303同时执行。
[0074]步骤305,从设备根据记录的接口信息确定未发送心跳报文的成员口。
[0075]在本实施例中,假定聚合口共包含成员口a、成员口b、成员口c和成员口d,而通过对接收到的心跳报文的ID字段的记录和统计,发现同一周期内仅接收到来自成员口 a、成员口 b和成员口 d的心跳报文,可以判定成员口 c未发送心跳报文。
[0076]例如,在接收到同一周期的首个心跳报文后,从设备可以启动预设时长的倒计时,那么当从设备在该倒计时超时前未接收到任一成员口发送的心跳报文时,可以判定为该任一成员口在相应周期内未发送心跳报文。
[0077]步骤306,从设备输出关于该未发送心跳报文的成员口的异常信息。
[0078]在本实施例中,对于未发送心跳报文的成员口,很可能是由于该成员口出现了单通等异常状况,因而通过输出相应的异常信息,可以帮助及时排除该异常状况。例如,从设备可以将该异常信息记录在日志文件中,以使用户读取该日志文件时发现异常状况;或者,从设备可以直接在显示屏上输出异常通知,以使用户及时发现该异常状况;或者,从设备可以通过向用户的手机、PC等电子设备发送异常通知,以使用户在任意场景下,均能够及时发现该异常状况;当然,本申请并不限制该异常信息的输出方式。
[0079]图6示出了根据本申请的一示例性实施例的基于主设备侧电子设备的示意结构图。请参考图6,在硬件层面,该电子设备包括处理器602、内部总线604、网络接口606、内存608以及非易失性存储器610,当然还可能包括其他业务所需要的硬件。处理器602从非易失性存储器610中读取对应的计算机程序到内存602中然后运行,在逻辑层面上形成解决双机热备双主问题的装置。当然,除了软件实现方式之外,本申请并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
[0080]请参考图7,在软件实施方式中,该解决双机热备双主问题的装置可以包括生成单元701、发送单元702。其中:
[0081 ] 生成单元701,用于生成心跳报文;
[0082]发送单元702,用于通过聚合口的所有成员口分别向从设备发送所述心跳报文,以使得从设备获取主设备的生存信息。
[0083]可选的,
[0084]所述心跳报文中包含ID字段,所述ID字段用以区分不同周期的心跳报文。
[0085]图8示出了根据本申请的一示例性实施例的基于从设备侧电子设备的示意结构图。请参考图8,在硬件层面,该电子设备包括处理器802、内部总线804、网络接口806、内存808以及非易失性存储器810,当然还可能包括其他业务所需要的硬件。处理器802从非易失性存储器810中读取对应的计算机程序到内存802中然后运行,在逻辑层面上形成解决双机热备双主问题的装置。当然,除了软件实现方式之外,本申请并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
[0086]请参考图9,在软件实施方式中,该解决双机热备双主问题的装置可以包括接收单元901、选取单元902、上报单元903、记录单元904、确定单元905和输出单元906。其中:
[0087]接收单元901,用于接收主设备通过聚合口的所有成员口分别发送的心跳报文;
[0088]选取单元902,用于按照预设规则选取每个周期对应的心跳报文;
[0089]上报单元903,用于上报被选中的心跳报文。
[0090]可选的,
[0091]所述选取单元902具体用于选取接收到的同一周期内的第一个心跳报文;
[0092]记录单元904,用于记录接收到的心跳报文对应的接口信息;
[0093]确定单元905,用于根据所述接口信息,确定未发送心跳报文的成员口;
[0094]输出单元906,用于输出关于所述未发送心跳报文的成员口的异常信息。
[0095]上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
[0096]对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
[0097]以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。
【主权项】
1.一种解决双机热备双主问题的方法,其特征在于,包括: 生成心跳报文; 通过聚合口的所有成员口分别向从设备发送所述心跳报文,以使得从设备获取主设备的生存信息。2.根据权利要求1所述的方法,其特征在于, 所述心跳报文中包含ID字段,所述ID字段用以区分不同周期的心跳报文。3.一种解决双机热备双主问题的装置,其特征在于,包括: 生成单元,用于生成心跳报文; 发送单元,用于通过聚合口的所有成员口分别向从设备发送所述心跳报文,以使得从设备获取主设备的生存信息。4.根据权利要求3所述的装置,其特征在于, 所述心跳报文中包含ID字段,所述ID字段用以区分不同周期的心跳报文。5.一种解决双机热备双主问题的方法,其特征在于,包括: 接收主设备通过聚合口的所有成员口分别发送的心跳报文; 按照预设规则选取每个周期对应的心跳报文; 上报被选中的心跳报文。6.根据权利要求5所述的方法,其特征在于,所述按照预设规则选取每个周期对应的心跳报文,包括: 选取接收到的同一周期内的第一个心跳报文。7.根据权利要求5所述的方法,其特征在于,还包括: 记录接收到的心跳报文对应的接口信息; 根据所述接口信息,确定未发送心跳报文的成员口; 输出关于所述未发送心跳报文的成员口的异常信息。8.一种解决双机热备双主问题的装置,其特征在于,包括: 接收单元,用于接收主设备通过聚合口的所有成员口分别发送的心跳报文; 选取单元,用于按照预设规则选取每个周期对应的心跳报文; 上报单元,用于上报被选中的心跳报文。9.根据权利要求8所述的装置,其特征在于, 所述选取单元具体用于选取接收到的同一周期内的第一个心跳报文。10.根据权利要求8所述的装置,其特征在于,还包括: 记录单元,用于记录接收到的心跳报文对应的接口信息; 确定单元,用于根据所述接口信息,确定未发送心跳报文的成员口; 输出单元,用于输出关于所述未发送心跳报文的成员口的异常信息。
【文档编号】H04L12/24GK105939224SQ201610408718
【公开日】2016年9月14日
【申请日】2016年6月12日
【发明人】袁野
【申请人】杭州迪普科技有限公司