一种双机互备中检测对外服务网络异常的方法

文档序号:7896956阅读:378来源:国知局
专利名称:一种双机互备中检测对外服务网络异常的方法
技术领域
本发明主要涉及到高可用服务器领域,特指一种在双机互备系统中检测服务器 对外服务网络是否发生故障的方法。
背景技术
在很多高可用应用中,要求服务器系统在出错的情况下仍能持续不断的对外提 供服务。双机互备是最常见的保证服务不间断的手段。在双机互备系统中,两台计算机 都通过同一交换机与外部网络连接,两台计算机之间也通过直连线连接。两台计算机之 间的直连线仅用作传输它们之间的心跳信息,两台计算机与交换机之间的连接既可用于 对外提供服务,也可用于传输心跳信息,后一种传输心跳的方法被称作公网心跳。在双机互备中,一台物理计算机处于active角色,另外一台处于standby角色。 处于active角色的计算机具有对外提供服务所使用的网络地址,并对外提供服务;在 active计算机内部运行服务监测任务,该任务定期检测本机上服务的可用性,当其发现本 机上服务不再正常时,通过心跳信息通知standby计算机进行服务器切换。处于standby 角色的计算机监测active计算机的心跳信息来获得active计算机的健康状况,当standby计 算机发现active计算机不能对外正常提供服务时,它启动服务器的角色切换过程。一般的 服务器角色切换过程为standby计算机接管对外提供服务的网络地址,对外提供服务, 并通知原来处于active角色的计算机不再使用对外提供服务的网络地址。服务器切换完 成后即可对原来处于active角色的计算机进行修复。active计算机的网络故障是导致active计算机服务不可用的一个重要原因。当前 主要通过监测active计算机的网线是否正常来判断active计算机是否出现了网络故障。但 当active计算机的对外服务网卡硬件本身出现故障,如不能收发报文,或者网络路由出现 问题时,active计算机虽然网线正常连接,却不能提供对外服务。由于从本机访问本机 上的服务时并不通过物理网卡,故当网卡故障时,本机上的服务监测任务仍然可以正常 访问本机提供的服务,从而无法发现网卡故障。IP Bonding技术通过测试参考计算机的 网络可达性来判断本机的某网卡是否出现了故障,但这种方式要求必须物理设置一个参 考计算机,这又为系统引入了新的不可靠因素。在有些实现中,可以将active计算机与 standby计算机之间的共享存储作为参考计算机使用,但这种方式要求active计算机必须 使用对外服务网卡来访问共享存储,而很多应用场景都不能满足此要求
发明内容

本发明要解决的问题就在于针对现有技术存在的技术问题,为双机互备的高 可用服务器系统提供一种检测active计算机对外服务网络故障的方法。为解决上述技术问题,本发明提出的解决方案为一种基于网卡报文流量的计 算机网络故障检测方法为active计算机的网络监测模块周期性查询本机对外服务网卡的 收发报文数量;网络监测模块根据每个周期内对外服务网卡的收发报文数量更新历史统计信息;若网络监测模块发现本周期内收发网络报文数量显著低于历史同期情况或管理 员预期值,则判定active计算机的对外服务网络连接存在问题。当两台计算机之间使用公网心跳时,若网络监测模块发现本周期内收发网络报 文数量显著低于历史同期值或管理员预期值,且active计算机可以正常接收到standby计 算机的公网心跳信息,则报告双机互备系统对外网络连接故障;若网络监测模块发现本 周期内收发网络报文数量显著低于历史同期值或管理员预期值,且接收不到来自standby 计算机的公网心跳信息,则报告active计算机的对外服务网络连接异常。网络监测模块的流程如下 步骤1 系统初始化当网络监测模块开始运行时,其初始化工作为将active计算机对外服务网卡当 前收发网络报文总数记入cur_cnt变量。步骤2 主循环,执行如下步骤(2.1)将 cur_cnt 变量赋值给 prev_cnt 变量;(2.2)等待 T 时间;当存在公网心跳时,需要保证等待时间T 一定大于公网心跳的时间周期;(2.3)将active计算机对外服务网卡当前收发网络报文总数记入CUr_Cnt变量;(2.4)令变量 cur_flux 为 cur_cnt 与 prev_cnt 之间的差值;(2.5)若CUr_flUX不大于最低报文收发流量,且可接收到对方的公网心跳,则通 过直连心跳线报告本机网络故障,之后转到步骤2,否则继续执行;最低报文收发流量为双机互备系统不对外提供服务时,本机发现在T时间内的 报文收发流量。(2.6)获得参考流量 ref_flux ;参考流量是管理员估计在系统正常运行时T时间内active计算机对外服务网卡的 网络报文收发总量。由于来自客户计算机的请求在时间轴上往往不是均勻分布的,故参 考流量ref_flUX—般与当前所处的时间有关;(2.7)若CUr_flUX小于参考收发流量ref_flUX,则报告对外网络连接故障;(2.8)若两台计算机之间有公网心跳,但当前不能接收到standby计算机的公网心 跳信息,则向管理员报告standby计算机的对外服务网络连接异常;(2.9)将cur_flux更新入历史信息库。为了能够在步骤(6)中获得比较准确的参考流量,防止因为管理员估计不准导 致本模块误判网络连接状况,应将每次获得的cur_flux登记到历史信息库中。历史信息库的用途是为了能够让网络监测模块在步骤(2.6)时获得更合理的参考 流量。对于历史信息的存储,可以按照固定的时间间隔将一个历史周期(如1年或1天 等)划分为等长的时间段,每个时间段存储times和count两类信息。times为本时间段统 计信息被更新的次数,count为历史上在本时间段所统计到的网络报文收发流量的总和。获得网络报文参考收发流量的流程为步骤1获得当前时间所处的时间段perid步骤2若period时间段的times信息不为0,则返回α *cout/times的值。其中α为管理员可以调节常数,且0< α < 1,管理员可通过调节α来避免网络请求的突发性造成网络链路状态的误判。
步骤3初始化period时间段的统计值 具体工作为将period时间段的times初始化为0,将period时间段的count初始化
0;步骤4返回默认报文收发流量默认报文流量为管理员凭经验估计的、在T长度时间内active计算机工作时的报
文收发总量。将cur_flux记入历史信息的方法为首先获得当前时间所处的时间段perid,然 后将period时间段的times增1,并将period时间段的count值增加period_cnt。本发明方法的优点是无需借用参考计算机即可判断服务器的网络是否正常; 即使standby计算机故障仍然不影响active计算机发现本机的网络故障;可以发现双机系 统对外网络链路故障。


图1为双机互备结构图。图2为网络监测模块流程图。
具体实施例方式以下将结合附图和具体实施例对本发明做进一步详细说明。图1为双机互备结构图。在正常运行时,A和B两台物理计算机中一台作为 active计算机运行,一台作为standby计算机运行;A、B两台计算机之间通过直连心跳 线相互通信,C为共享存储,Switch为网络交换机,客户计算机的服务请求经网络传递 到Switch,并最终送达当前的active计算机;eth_A为A计算机连接到Switch所用的网 卡,eth_B为B计算机连接到Switch所用的网卡;在运行过程中,eth_A和eth_B分别 具有自己的内部网络地址na_A和na_B,处于active角色的计算机连接到Switch的网卡 还具有一个客户计算机可见的网络地址Serv_Addr。在active计算机上运行负责监测本 机状态的monitor任务,standby计算机上运行负责监测active计算机运行状态的probe任 务;monitor任务定期通过心跳线将active计算机的健康状况通知standby计算机的probe 任务。当standby计算机长时间未接收到monitor的信息报告,或者来自monitor的信息 显示active计算机不能正常对外提供服务,则进行启动active和standby计算机角色的互 换。本发明的网络监测模块可以是monitor任务的一个组成部分,也可以是monitor
任务之外的一个单独任务。当网络监测模块为一个单独任务时,它需要将对网络的监测 结果实时报告给monitor任务。以下以网络监测模块为一个单独任务的情形说明本发明的 实施方法。图2为其流程图。1系统初始化当网络监测模块开始运行时,其初始化工作为将active计算机对外服 务网卡当 前收发网络报文总数记入cur_cnt变量。2循环,执行如下步骤2.1将cur_cnt变量赋值给prev_cnt变量
2.2等待T时间 当双机之间存在公网心跳时,需要保证等待时间T 一定大于公网心跳信息的传 输周期。2.3将active计算机对外服务网卡当前收发网络报文总数记入cur_cnt变量2.4 令变量 cur_flux 为 cur_cnt 与 prev_cnt 之间的差值2.5若CUr_flUX不大于最低报文收发流量,且不能接收到对方的公网心跳信息, 则通过直连心跳线报告本机网络故障,之后转到步骤2,否则继续执行最低报文收发流量为双机互备系统不对外提供服务时,本机发现在T时间内的 报文收发流量。2.6获得参考流量ref_fhix参考流量是管理员估计在系统正常运行时T时间内active计算机对外服务网卡的 网络报文收发总量。由于来自客户计算机的请求率在时间轴上往往不是均勻分布的,故 参考流量ref_flUX —般与当前所处的时间有关。2.7若CUr_flUX小于参考收发流量ref_flUX,则报告双机系统对外网络连接可能故
障2.8若不能接收到对方的公网心跳信息,则报告standby计算机的对外服务网络连
接可能有问题。2.9将cur_flux更新入历史统计信息。为了能够在步骤2.6中获得比较准确的参考流量,防止因为管理员估计不准导致 本模块误判网络连接状况,应将每次获得的cur_flux登记到历史信息库中。最低报文收发流量的确定当两台计算机之间不存在公网心跳时,最低报文收发流量为0,当两台计算机之 间存在公网心跳时按照如下方法进行确定1、断开客户计算机与Switch之间的连接;2、设定最低报文收发流量均为03、设定默认报文收发流量均为04、根据管理员预定的置信区间,确定网络监控模块需要执行主循环体的次数 cnt5、运行网络监测模块,并令其记录每次循环获得的efflux值,并令其在循环 执行cnt次后退出6、根据管理员预定的置信区间,计算在网络监控模块执行步骤2.4时可能获得 的CUr_flUX的最小值,将该值作为最低报文收发流量。历史信息库的用途是为了能够让网络监测模块在步骤2.6时获得更合理的参考收 发流量。对于历史信息的存储,可以按照固定的时间间隔将一个历史周期(如1年或1 天等)划分为等长的时间段,每个时间段存储times和count两类信息。times为本时间 段统计信息被更新的次数,count为历史上在本时间段所统计到的网络报文收发流量的总 禾口。获得网络报文收发参考流量的流程为1获得当前时间所处的时间段perid
2若period时间段的times信息不为0,则返回α *cout/times的值。其中α为管理员可以调节常数,且0< α < 1,管理员可通过调节α来避免网 络请求的突发性造成网络链路状态的误判。3将period时间段的times初始化为0,将period时间段的count初始化0 ;4则返回默认报文收发流量。
将CUr_flUX记入历史信息的方法为首先获得当前时间所处的时间段perid,然 后将period时间段的times增1,并将period时间段的count值增加cur_flux。
权利要求
1.一种双机互备中检测对外服务网络异常的方法,其特征在于(Dactive计算机的网络监测模块周期性查询本机对外服务网卡的收发报文数量;网 络监测模块根据每个周期内对外服务网卡的收发报文数量更新历史统计信息;若网络监 测模块发现本周期内收发网络报文数量显著低于历史同期情况或管理员预期值,则判定 active计算机的对外服务网络连接存在问题;(2)当两台计算机之间使用公网心跳时,若网络监测模块发现本周期内收发网络报文 数量显著低于历史同期值或管理员预期值,且active计算机可以正常接收到standby计算 机的公网心跳信息,则报告双机互备系统对外网络连接故障;若网络监测模块发现本周 期内收发网络报文数量显著低于历史同期值或管理员预期值,且接收不到来自standby计 算机的公网心跳信息,则报告active计算机的对外服务网络连接异常。
2.根据权利要求1所述的一种双机互备中检测对外服务网络异常的方法,其特征在 于,网络监测模块的流程如下步骤1 系统初始化;步骤2 主循环,执行如下步骤(2.1)将cur_cnt变量赋值给prev_cnt变量;(2.2)等待T时间;(2.3)将active计算机对外服务网卡当前收发网络报文总数记入cmcnt变量;(2.4)令变量cur_flux为cur_cnt与prev_cnt之间的差值;(2.5)若CUr_flUX不大于最低报文收发流量,且可接收到对方的公网心跳,则通过直 连心跳线报告本机网络故障,之后转到步骤2,否则继续执行;(2.6)获得参考流量reiLflux;(2.7)若CUr_flUX小于参考收发流量ref_flUX,则报告对外网络连接故障;(2.8)若两台计算机之间有公网心跳,但当前不能接收到standby计算机的公网心跳信 息,则向管理员报告standby计算机的对外服务网络连接异常;(2.9)将CUr_flUX更新入历史信息库。
3.根据权利要求1所述的一种双机互备中检测对外服务网络异常的方法,其特征在于 获得网络报文参考收发流量的流程为步骤1获得当前时间所处的时间段perid ;步骤2若period时间段的times信息不为0,则返回α *cout/times的值;步骤3初始化period时间段的统计值;步骤4返回默认报文收发流量。
4.根据权利要求1所述的一种双机互备中检测对外服务网络异常的方法,其特征在于 当两台计算机之间不存在公网心跳时,最低报文收发流量为0,当两台计算机之间存在公 网心跳时按照如下方法进行确定(1)断开客户计算机与Switch之间的连接;(2)设定最低报文收发流量均为0;(3)设定默认报文收发流量均为0;(4)根据管理员预定的置信区间,确定网络监控模块需要执行主循环体的次数cnt;(5)运行网络监测模块,并令其记录每次循环获得的afflux值,并令其在循环执行cnt次后退出; (6)根据管理员预定的置信区间,计算在网络监控模块执行步骤2.4时可能获得的 cur_flux的最小值,将该值作为最低报文收发流量。
5.根据权利要求1所述的一种双机互备中检测对外服务网络异常的方法,其特征在于 将CUr_flUX记入历史信息的方法为首先获得当前时间所处的时间段perid,然后将period 时间段的times增1,并将period时间段的count值增加period_cnt。
全文摘要
本发明涉及一种双机互备中检测对外服务网络异常的方法。该方法为active计算机的网络监测模块周期性查询本机对外服务网卡的收发报文数量;网络监测模块根据每个周期内对外服务网卡的收发报文数量更新历史统计信息;若网络监测模块发现本周期内收发网络报文数量显著低于历史同期情况或管理员预期值,则判定active计算机的对外服务网络连接存在问题。本方法优点是无需借用参考计算机即可判断服务器的网络是否正常;即使standby计算机故障仍然不影响active计算机发现本机的网络故障;可以发现双机系统对外网络链路故障。
文档编号H04L12/24GK102014029SQ20101060511
公开日2011年4月13日 申请日期2010年12月25日 优先权日2010年12月25日
发明者刘晓建, 吴庆波, 廖湘科, 戴华东, 易晓东, 董攀, 颜跃进 申请人:中国人民解放军国防科学技术大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1