一种计算机容灾方法及系统的制作方法

文档序号:7995794阅读:388来源:国知局
一种计算机容灾方法及系统的制作方法
【专利摘要】本发明适用于计算机容灾领域,提供了一种计算机容灾方法及系统,所述方法包括:心跳检测进程在检测到主用服务器故障时,发送所述主用服务器的故障消息至抓包进程;所述抓包进程设置抓包环境;当用户进程向所述主用服务器发送第一网络包时,分组包过滤器捕获路由至环回接口的所述第一网络包并上传所述第一网络包至所述抓包进程;所述抓包进程将接收到的所述第一网络包处理成第二网络包,并将所述第二网络包发送至备用服务器。本发明,大大增强了容灾方法的可用性和实用性,同时,部署灵活,实现容灾目的。
【专利说明】一种计算机容灾方法及系统
【技术领域】
[0001]本发明属于计算机容灾领域,尤其涉及一种计算机容灾方法及系统。
【背景技术】
[0002]计算机容灾系统是一个能应付各种灾难的环境。当计算机系统在遭受如火灾、水灾、地震、战争等不可抗拒的自然灾难以及计算机犯罪、计算机病毒、掉电、网络/通信失败、硬件/软件错误和人为操作错误等人为灾难时,容灾系统将保证用户数据的安全性,也称数据容灾,或者一个更加完善的容灾系统,还能提供不间断的应用服务,也称应用容灾。不管哪个种容灾系统类型都是灾难恢复之前,维持系统正常运行的重要手段。
[0003]现有的计算机容灾方法有以下两种:
[0004]一种是,一般的容灾方法,如图1所示,发送方服务器需要对发往主用服务器的用户数据报协议(User Datagram Protocol,UDP)消息进行容灾。发送方服务器上的用户进程的容灾模块通过心跳信息(HeartBeat,HB)检测备用服务器和主用服务器的可用状态。当主用服务器可用时,用户进程向接收方主用服务器发送UDP消息;当主用服务器故障时,用户进程将更改UDP包的目的地址,把UDP消息发送到备用服务器。如此即可达成转发容灾的目的。
[0005]另一种是,基于网络地址转换(Network Address Translation, NAT)的容灾方法,如图2所示,发送方服务器需要对发往主用服务器的UDP消息进行容灾。发送方服务器上的容灾进程负责通过心跳信息检测备用服务器和主用服务器的可用状态。当主用服务器可用时,用户进程向接收方主用服务器发送UDP消息;当主用服务器故障时,容灾进程修改系统内核的NAT模块的配置,配置将目的IP地址是主用服务器的UDP包修改为目的IP地址为备用服务器,把UDP消息发送到备用服务器。如此即可达成转发容灾的目的。
[0006]这两种容灾方法,前者的第一个缺点是通用性不足,容灾模块是内嵌到用户进程中的,导致需要实现此类容灾的用户进程都要包含上述容灾模块,或需要重新开发;第二个缺点是灵活性差,用户进程和容灾模块过于耦合,如果接收方服务器地址发生变更,则需要修改用户进程的相关配置,对用户进程影响较大。后者的缺点是过于依赖于系统内核提供NAT功能,一般情况下,NAT功能用于网关、代理等服务器上,普通机房的业务服务器一般都不提供NAT功能。这种情况下,后一种方法将无法应用,适用范围不广泛。
[0007]综上所述,计算机容灾系统需要一种灵活、通用和适用范围更广泛的容灾方法。

【发明内容】

[0008]本发明实施例提供了一种计算机容灾方法及系统,旨在解决现有容灾方法,通用性不足、灵活性差或适用范围不广泛的问题。
[0009]一方面,提供一种计算机容灾方法,所述方法包括:
[0010]心跳检测进程在检测到主用服务器故障时,发送所述主用服务器的故障消息至抓包进程;[0011 ] 所述抓包进程设置抓包环境;
[0012]当用户进程向所述主用服务器发送第一网络包时,分组包过滤器捕获路由至环回接口的所述第一网络包并上传所述第一网络包至所述抓包进程;
[0013]所述抓包进程将接收到的所述第一网络包处理成第二网络包,并将所述第二网络包发送至备用服务器。
[0014]另一方面,提供一种计算机容灾系统,所述系统包括:
[0015]故障获取单元,用于在检测到主用服务器故障时,发送所述主用服务器的故障消息至抓包进程;
[0016]抓包设置单元,用于设置抓包环境;
[0017]网络包捕获单元,用于当用户进程向所述主用服务器发送第一网络包时,捕获路由至环回接口的所述第一网络包并上传所述第一网络包至所述抓包进程;
[0018]网络包转发单元,用于将接收到的所述第一网络包处理成第二网络包,并将所述第二网络包发送至备用服务器。
[0019]在本发明实施例,心跳检测进程在检测到主用服务器故障时,发送所述主用服务器的故障消息至抓包进程;所述抓包进程设置抓包环境;当用户进程向所述主用服务器发送第一网络包时,分组包过滤器捕获路由至环回接口的所述第一网络包并上传所述第一网络包至所述抓包进程;所述抓包进程将接收到的所述第一网络包处理成第二网络包,并将所述第二网络包发送至备用服务器,本发明,通过改变路由,把数据链路层的第一网路包转到在本地环回接口,再利用分组包过滤器进行抓包并传送到应用层,在应用层分片重组、转发网络包的方法,整个过程不依赖于系统内核的NAT功能,从而大大增强了容灾方法的可用性和实用性,同时,部署灵活。
【专利附图】

【附图说明】
[0020]图1是现有技术提供的一般的容灾方法的示意图;
[0021]图2是现有技术提供的基于NAT的容灾方法的示意图;
[0022]图3是本发明实施例一提供的计算机容灾系统的示意图;
[0023]图4是本发明实施例二提供的计算机容灾方法的实现流程图;
[0024]图5是本发明实施例三提供的计算机容灾方法的实现流程图;
[0025]图6是本发明实施例四提供的计算机容灾系统的具体结构框图;
[0026]图7是本发明实施例五提供的计算机容灾系统的具体结构框图。
【具体实施方式】
[0027]为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0028]在本发明实施例中,心跳检测进程在检测到主用服务器故障时,发送所述主用服务器的故障消息至抓包进程;所述抓包进程设置抓包环境;当用户进程向所述主用服务器发送第一网络包时,分组包过滤器捕获路由至环回接口的所述第一网络包并上传所述第一网络包至所述抓包进程;所述抓包进程将接收到的所述第一网络包处理成第二网络包,并将所述第二网络包发送至备用服务器。
[0029]以下结合具体实施例对本发明的实现进行详细描述:
[0030]实施例一
[0031]图3示出了本发明实施例一提供的计算机容灾系统的示意图,为了便于说明,仅不出了与本发明实施例相关的部分。
[0032]如图3所示,该系统包括发送方服务器A、备用服务器B和主用服务器C,其中,发送方服务器A分别与备用服务器B和主用服务器C通过无连接协议通信,如UDP协议。发送方服务器A实时根据心跳检测进程检测到的心跳消息,获取备用服务器B和主用服务器C的运行状态,如果在一定时间长度内检测不到备用服务器B或主用服务器C的心跳消息,则发送方服务器A认为其出现故障。一般主用服务器C正常工作状态下,发送发服务器A的用户进程直接将发送到主用服务器C的第一网络包传送至以太网口,与主用服务器C交互,而备用服务器B —直处于备用状态。
[0033]其中,在主用服务器C出现故障之后,发送方服务器A切换到备用服务器B的容灾过程,如图3所示,包括以下步骤:
[0034]步骤1,发送方服务器A的心跳检测进程在检测到主用服务器C故障时,发送所述主用服务器C的故障消息至抓包进程;
[0035]步骤2,抓包进程调用API接口打开pcap抓包库设备,使所述抓包库设备处于侦听状态;设置分组包过滤器的过滤条件,过滤发往主用服务器C的第一网络包;调用系统命令,增加动态路由,以将用户进程发送至主用服务器C的第一网络包路由至环回接口 Ιο。
[0036]步骤3,用户进程不关心主用服务器C的故障状况,仍然向主用服务器C发包,但此时该IP包将不会被发送到网路上,而是被路由到环回接口。
[0037]步骤4,BPF分组包过滤器在环回接口捕获到用户进程发出的包,并通过抓包设备把第一网络包传到抓包进程
[0038]步骤5,抓包进程收到分组包过滤器捕获的第一网络包,如果第一网络包是分片包,则需要先对分片包进行重组,其中,重组过程参考IP协议;否则如果不是分片包,则直接根据事先配置的信息,将第一网络包的目的地址改为备用服务器B的IP地址,调用UDP套接字发包给备用服务器B。
[0039]发送方服务器A通过上述5个步骤实现容灾过程。
[0040]另外,如果发送方服务器A重新检测到主用服务器C的心跳消息,所述抓包进程删除所述动态路由,关闭所述抓包库设备,取消侦听所述第一网络包,而是由以太网口直接传输至主用服务器C。实现灾难恢复。
[0041]实施例二
[0042]图4示出了本发明实施例二提供的计算机容灾方法的实现流程,适用主用服务器故障,发送方服务器切换到备用服务器的容灾场景下,详述如下:
[0043]在步骤S401中,心跳检测进程在检测到主用服务器故障时,发送所述主用服务器的故障消息至抓包进程。
[0044]在本实施例中,发送方服务器正常运行状态下,实时检测主用服务器和备用服务器的心跳,以获知上述两种服务器的运行状态,当任意一个主用服务器或备用服务器出现故障时,发送方服务器在预设时间内检测不到主用服务器或备用服务器的心跳,发送方服务器认为主用服务器或备用服务器出现故障,当发送方服务器检测到主用服务器或备用服务器的心跳恢复时,发送方服务器认为主用服务器或备用服务器的故障消除。发送方服务器的心跳检测进程在检测到主用服务器故障时,发送所述主用服务器的故障消息至抓包进程。
[0045]在步骤S402中,所述抓包进程设置抓包环境。
[0046]在本实施例中,所述抓包库设备是基于分组包过滤器(BSD Packet Filter, BPF)实现的一套软件驱动程序,在检测到主用服务器故障时,心跳检测进程发送方服务器根据所述故障消息至抓包进程,所述抓包进程设置抓包环境,具体包括步骤:
[0047]步骤11,所述抓包进程调用API接口打开抓包库设备,使所述抓包库设备处于侦听状态;
[0048]具体的,抓包进程调用unix/linux平台下应用程序编程接口(ApplicationProgramming Interface, API)库的应用程序编程接口,打开pcap抓包库设备,使所述抓包库设备处于侦听状态,其中,抓包库设备是抓包进程的一部分。
[0049]步骤12,所述抓包进程设置分组包过滤器的过滤条件;
[0050]具体的,如果发送方服务器的IP为1.1.1.1,主用服务器的IP为3.3.3.3,抓包进程调用pcap_setflter设置BPF分组包过滤器的过滤条件为“udp and src hostl.1.1.landdst host3.3.3.3_ilo”,其设置方法和linux下常用的tcpdump工具一致。
[0051]步骤13,所述抓包进程调用系统命令,增加动态路由,以将第一网络包路由至环回接口。
[0052]具体的,发送方服务器的抓包进程打开抓包库设备之后,调用系统命令“root addhost3.3.3.3gwl27.0.0.ldyn”增加动态路由,即增加一个条路由,将原来主用服务器目的IP3.3.3.3修改为本地IP127.0.0.1,以将第一网络包路由至环回接口(Loopback,lo),所述第一网络包是用户进程发往主用服务器的网络包。
[0053]在步骤S403中,当用户进程向所述主用服务器发送第一网络包时,分组包过滤器捕获路由至环回接口的所述第一网络包并上传所述第一网络包至所述抓包进程。
[0054]在本实施例中,发送方服务器的用户进程不关心故障状况,仍然向主用服务器发送第一网络包,但此时该第一网络包将不会被发送到网路上,而是被路由到发送方服务器的环回接口,分组包过滤器在所述环回接口上,捕获数据链路层的所述第一网络包,抓包库设备通过缓冲区上传所述第一网络包至应用层的所述抓包进程。
[0055]在步骤S404中,所述抓包进程将接收到的所述第一网络包处理成第二网络包,并将所述第二网络包发送至备用服务器。
[0056]在本实施例中,发送方服务器的抓包进程根据预设信息,所述预设信息包括备用服务器的IP地址2.2.2.2,将所述第一网络包的IP地址3.3.3.3修改为备用服务器的IP地址2.2.2.2,调用用户数据报协议UDP套接字,生成所述第二网络包,发送所述第二网络包给所述备用服务器,实现了由主用服务器切换到备用服务器的容灾过程。
[0057]优选的,在本步骤S404之前,如果所述第一网络包为分片包,所述抓包进程对所述第一网络包进行重组。如果所述第一网络包不是分片包,则直接执行本步骤S404。
[0058]本实施例,可以达到通过改变路由,把数据链路层的第一网路包转到在本地环回接口,再利用抓包库设备进行抓包并传送到应用层,在应用层分片重组、转发网络包的方法,整个过程不依赖于系统内核的NAT功能,从而大大增强了容灾方法的可用性和实用性,同时,部署灵活,适用各种中小型服务器的应用场景。
[0059]实施例三
[0060]图5示出了本发明实施例三提供的计算机容灾方法的实现流程,详述如下:
[0061]在步骤S501中,心跳检测进程在检测到主用服务器故障时,发送所述主用服务器的故障消息至抓包进程;
[0062]在步骤S502中,所述抓包进程设置抓包环境;
[0063]在步骤S503中,当用户进程向所述主用服务器发送第一网络包时,分组包过滤器捕获路由至环回接口的所述第一网络包并上传所述第一网络包至所述抓包进程;
[0064]在步骤S504中,所述抓包进程将接收到的所述第一网络包处理成第二网络包,并将所述第二网络包发送至备用服务器。
[0065]需要说明的是,本实施例还包括了发送方服务器检测到主用服务器的心跳恢复时,发送方服务器的容灾恢复流程。其中,步骤S50fS504的执行和上述实施例一中的步骤siorsio4的执行过程类似,详情参见上述实施例一的描述。
[0066]在步骤S505中,当获取到心跳检测进程发送的故障恢复消息时,所述抓包进程删除所述动态路由。
[0067]在本实施例中,当抓包进程再次获取到心跳检测进程发送的故障恢复消息时,发送方服务器认为主用服务器故障消除,需要切换到主用服务器,抓包进程删除所述动态路由,不在将第一网络包路由到环回接口上,直接将第一网络包发给主用服务器。
[0068]在步骤S506中,抓包进程关闭所述抓包库设备,取消侦听所述第一网络包。
[0069]在本实施例中,由于抓包进程会消耗系统资源,因此,在主用服务器的故障恢复以后,需要关闭所述抓包库设备,取消侦听所述第一网络包,退出抓包循环,继续检测主用服务器和备用服务器的心跳,等待下一次故障状态。本实施例,实现容灾和灾难恢复自动无缝切换。
[0070]本实施例,可以达到发送方服务器根据主用服务器的故障和故障恢复情况,灵活、自主在主用服务器和备用服务器之间无缝切换,适用各种中小型服务器的应用场景。
[0071]实施例四
[0072]图6示出了本发明实施例四提供的计算机容灾系统的具体结构框图,为了便于说明,仅示出了与本发明实施例相关的部分。在本实施例中,该计算机容灾系统包括:故障获取单元61、抓包设置单元62、网络包捕获单元63、网络包重组单元和网络包转发单元64。
[0073]其中,故障获取单元61,用于在检测到主用服务器故障时,发送所述主用服务器的故障消息至抓包进程;
[0074]抓包设置单元62,用于设置抓包环境;
[0075]网络包捕获单元63,用于当用户进程向所述主用服务器发送第一网络包时,捕获路由至环回接口的所述第一网络包并上传所述第一网络包至所述抓包进程;
[0076]网络包转发单元64,用于将接收到的所述第一网络包处理成第二网络包,并将所述第二网络包发送至备用服务器。
[0077]进一步的,所述抓包设置单元62具体用于所述抓包进程调用API接口打开抓包库设备,使所述抓包库设备处于侦听状态;设置分组包过滤器的过滤条件;调用系统命令,增加动态路由,以将用户进程发送至所述主用服务器的第一网络包路由至环回接口。
[0078]进一步的,所述计算机容灾系统还包括:
[0079]网络包重组单元,用于如果所述第一网络包为分片包,对所述第一网络包进行重组。
[0080]本发明实施例提供的计算机容灾系统可以应用在前述对应的方法实施例二中,详情参见上述实施例二的描述,在此不再赘述。
[0081]实施例五
[0082]图7示出了本发明实施例五提供的计算机容灾系统的具体结构框图,为了便于说明,仅示出了与本发明实施例相关的部分。在本实施例中,该计算机容灾系统包括:故障获取单元71、抓包设置单元72、网络包捕获单元73、网络包重组单元、网络包转发单元74、路由删除单元75和抓包关闭单元76。
[0083]其中,故障获取单元71,用于在检测到主用服务器故障时,发送所述主用服务器的故障消息至抓包进程;
[0084]抓包设置单元72,用于设置抓包环境;
[0085]网络包捕获单元73,用于当用户进程向所述主用服务器发送第一网络包时,捕获路由至环回接口的所述第一网络包并上传所述第一网络包至所述抓包进程;
[0086]网络包转发单元74,用于将接收到的所述第一网络包处理成第二网络包,并将所述第二网络包发送至备用服务器;
[0087]路由删除单元75,用于当获取到心跳检测进程发送的故障恢复消息时,删除所述动态路由;
[0088]抓包关闭单元76,用于关闭所述抓包库设备,取消侦听所述第一网络包。
[0089]进一步的,所述抓包设置单元72具体用于所述抓包进程调用API接口打开抓包库设备,使所述抓包库设备处于侦听状态;设置分组包过滤器的过滤条件;调用系统命令,增加动态路由,以将用户进程发送至所述主用服务器的第一网络包路由至环回接口。
[0090]进一步的,所述计算机容灾系统还包括:
[0091]网络包重组单元,用于如果所述第一网络包为分片包,对所述第一网络包进行重组。
[0092]本发明实施例提供的计算机容灾系统可以应用在前述对应的方法实施例三中,详情参见上述实施例三的描述,在此不再赘述。
[0093]值得注意的是,上述系统实施例中,所包括的各个单元只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
[0094]另外,本领域普通技术人员可以理解实现上述各实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,相应的程序可以存储于一计算机可读取存储介质中,所述的存储介质,如R0M/RAM、磁盘或光盘等。
[0095]以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
【权利要求】
1.一种计算机容灾方法,其特征在于,所述方法包括: 心跳检测进程在检测到主用服务器故障时,发送所述主用服务器的故障消息至抓包进程; 所述抓包进程设置抓包环境; 当用户进程向所述主用服务器发送第一网络包时,分组包过滤器捕获路由至环回接口的所述第一网络包并上传所述第一网络包至所述抓包进程; 所述抓包进程将接收到的所述第一网络包处理成第二网络包,并将所述第二网络包发送至备用服务器。
2.如权利要求1所述的方法,其特征在于,所述抓包进程设置抓包环境,具体为: 所述抓包进程调用API接口打开pcap抓包库设备,使所述抓包库设备处于侦听状态; 所述抓包进程设置分组包过滤器的过滤条件; 所述抓包进程调用系统命令,增加动态路由,以将用户进程发送至所述主用服务器的第一网络包路由至环回接口。
3.如权利要求 1所述的方法,其特征在于,所述抓包进程将接收到的所述第一网络包处理成第二网络包,并将所述第二网络包发送至备用服务器之前,还包括: 如果所述第一网络包为分片包,所述抓包进程对所述第一网络包进行重组。
4.如权利要求1、2或3所述的方法,其特征在于,在当用户进程向所述主用服务器发送第一网络包时,分组包过滤器捕获路由至环回接口的所述第一网络包并上传所述第一网络包至所述抓包进程之前或之后,还包括: 当获取到心跳检测进程发送的故障恢复消息时,所述抓包进程删除所述动态路由。
5.如权利要求4所述的方法,其特征在于,所述抓包进程获取到所述心跳检测进程发送的故障恢复消息时,删除所述动态路由之后,还包括: 所述抓包进程关闭所述抓包库设备,取消侦听所述第一网络包。
6.一种计算机容灾装置,其特征在于,所述装置包括: 故障获取单元,用于在检测到主用服务器故障时,发送所述主用服务器的故障消息至抓包进程; 抓包设置单元,用于设置抓包环境; 网络包捕获单元,用于当用户进程向所述主用服务器发送第一网络包时,捕获路由至环回接口的所述第一网络包并上传所述第一网络包至所述抓包进程; 网络包转发单元,用于将接收到的所述第一网络包处理成第二网络包,并将所述第二网络包发送至备用服务器。
7.如权利要求6所述的系统,其特征在于,所述抓包设置单元具体用于所述抓包进程调用API接口打开抓包库设备,使所述抓包库设备处于侦听状态;设置分组包过滤器的过滤条件;调用系统命令,增加动态路由,以将用户进程发送至所述主用服务器的第一网络包路由至环回接口。
8.如权利要求6所述的系统,其特征在于,所述系统还包括: 网络包重组单元,用于如果所述第一网络包为分片包,对所述第一网络包进行重组。
9.如权利要求6、7或8所述的系统,其特征在于,所述系统还包括: 路由删除单元,用于当获取到心跳检测进程发送的故障恢复消息时,删除所述动态路由。
10.如权利要求9所述的系统,其特征在于,所述系统还包括:抓包关闭单元,用于关 闭所述抓包库设备,取消侦听所述第一网络包。
【文档编号】H04L29/12GK103944745SQ201310022700
【公开日】2014年7月23日 申请日期:2013年1月22日 优先权日:2013年1月22日
【发明者】赵多密 申请人:腾讯科技(深圳)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1