[go: up one dir, main page]

CN103944698B - 一种双机热备方法 - Google Patents

一种双机热备方法 Download PDF

Info

Publication number
CN103944698B
CN103944698B CN201410143004.5A CN201410143004A CN103944698B CN 103944698 B CN103944698 B CN 103944698B CN 201410143004 A CN201410143004 A CN 201410143004A CN 103944698 B CN103944698 B CN 103944698B
Authority
CN
China
Prior art keywords
client
service response
standby host
main frame
bag
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201410143004.5A
Other languages
English (en)
Other versions
CN103944698A (zh
Inventor
潘胜杰
鲍庆洁
唐慧明
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huayan Intelligent Technology (Group) Co., Ltd
Original Assignee
Sichuan Whayer Information Industry Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sichuan Whayer Information Industry Co Ltd filed Critical Sichuan Whayer Information Industry Co Ltd
Priority to CN201410143004.5A priority Critical patent/CN103944698B/zh
Publication of CN103944698A publication Critical patent/CN103944698A/zh
Application granted granted Critical
Publication of CN103944698B publication Critical patent/CN103944698B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明涉及一种双机热备方法包括:主机接收客户端的服务请求数据,产生相应的服务应答数据,并将服务应答数据以及主机与客户端之间的链接信息发送给备机;所述链接信息包括:客户端的IP、端口号、MAC地址以及主机与客户端的TCP链接的序列号;备机接收到主机所发送的服务应答数据以及所述链接信息之后,将所述服务应答数据以及所述链接信息备份,并将所述服务应答数据以主机的身份发送给客户端;当主机发生故障时,备机将自身的IP地址变更为主机的IP地址;备机使用所述主机与客户端的TCP链接的序列号向客户端发送服务应答数据。本发明所提供的双机热备方法,能在热备切换后正常使用,保证备机与客户端之间的TCP链接不会被终止。

Description

一种双机热备方法
技术领域
本发明涉及计算机领域,尤其是涉及一种双机热备方法。
背景技术
服务器运行的可靠性和连续性是至关重要的,尤其是涉及基础通信、电力、监控、交通等关键设施系统。这些重要系统都需要有一定的热备冗余机制,即当服务器崩溃时,能够保证这些重要系统的正常运行,防止由于服务器崩溃而产生的灾难性后果。
双机热备方法具体是指同时使相同的两个服务器同时工作,其中一台服务器为主服务器,又称主机;另外一台服务器为备用服务器,又称备机。一旦主机发生故障,系统自动切换至备机,使得备机接手主机的工作,从而保证系统的正常运行。
目前的双机热备方法是:主机接到客服端发送的服务请求包后,会产生相应的服务应答包,主机在将服务应答包发送给客户端的同时,将所有发送给客户端的应答包发送给备机进行备份,当客户端探测到主机出现问题,向备机发起TCP链接,备机在和客户端之间建立TCP链接后,向客户端提供服务。
但是,这种双机热备切换方法只注重磁盘数据、数据库等的同步热备,没有考虑网络链接本身的热备需要,这就意味着,在备机接手主机的工作后,客户端必须向备机重新发起建立链接,之前的客户端与主机之间的链接无效。一旦客户端没有及时重新向备机发起建立新的链接,那么通信将会终止。
发明内容
本发明的目的在于提供一种双机热备方法,以解决上述问题。
为了达到上述目的,本发明的技术方案是这样实现的:
一种双机热备方法,包括:
主机接收客户端的服务请求数据,产生相应的服务应答数据,并将服务应答数据以及主机与客户端之间的链接信息发送给备机;所述链接信息包括:客户端的IP、端口号以及主机与客户端的TCP链接的序列号;
备机接收到主机所发送的服务应答数据以及所述链接信息之后,将所述服务应答数据以及所述链接信息备份,并将所述服务应答数据以主机的身份发送给客户端;
当主机发生故障时,备机将自身的IP地址变更为主机的IP地址;
备机使用所述主机与客户端的TCP链接的序列号向客户端发送服务应答数据。
本发明提供的双机热备方法,相比现有技术而言,通过将主机所发出的所有的服务应答数据转发流经备机,使备机保持与主机网络数据的实时同步。同时还将主机与客户端之间的链接信息也发送给备机。当备机接收到这个服务应答数据以及链接信息后,将应答数据以及客户端与主机之间的链接信息进行备份,在链接信息中,包括了客户端的IP、端口号以及主机与客户端的TCP链接的序列号,当备机完成服务应答数据以及链接信息的备份后,备机将服务应答数据以主机的身份发给客户端,因此客户端会认为其所收到的服务应答数据来自主机。当主机出现故障的时候,备机抢占主机的IP地址,即将自身的IP变更为主机IP,同时在接收到客户端所发送的服务请求数据后,产生相应的服务应答数据,使用主机与客户端的TCP链接的序列号向客户端发送服务应答数据。则客户端会一直认为,其所收到的服务应答数据均是由主机所发出,免去了客户端的重拨,做到客户端的无察觉,这使得很多没有重拨机制的客户端也能在热备切换后正常使用,保证了备机与客户端之间的链接不会被终止。
在本发明中提出的这种将主备机串联在一起的设计构架,可以充分利用TCP协议本身的可靠性机制来保证热备网络数据的可靠同步,但增加了一定的网络负担。任何一个时刻,如果客户端发出请求没有收到应答,那么它会重传请求。当客户端收到了应答,那么即表示备机已经同步备份过该TCP包数据。因此,理论上讲,数据是完全安全可靠的。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一个简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例一所提供的双机热备方法的流程示意图;
图2是本发明实施例二所提供的双机热备方法中,主机将服务应答数据以及主机与客户端之间的链接信息发送给备机的详细过程的流程示意图。
图3是在实施例二的基础上,本发明实施例三所提供的双机热备方法中,备机将所述服务应答数据以主机的身份发送给客户端的具体的流程图;
图4是本发明实施例四所提供的双机热备方法中,另一种主机将服务应答数据以及主机与客户端之间的链接信息发送给备机的流程示意图;
图5是在实施例四的基础上,本发明实施例五所提供的双机热备方法中,备机将所述服务应答数据以主机的身份发送给客户端的具体的流程图;
图6是本发明实施例六所提供的双机热备方法中,另一种主机将服务应答数据以及主机与客户端之间的链接信息发送给备机的流程示意图;
图7是在实施例六的基础上,本发明实施例七所提供的双机热备方法中,备机将所述服务应答数据以主机的身份发送给客户端的具体的流程图;
图8是本发明实施例八所提供的双机热备方法中,备机使用所述主机与客户端的TCP链接的序列号向客户端发送服务应答数据的流程图;
图9是本发明实施例九所提供的双机热备方法中,另一种备机使用所述主机与客户端的TCP链接的序列号向客户端发送服务应答数据的流程图;
图10是本发明实施例十提供的备机在向客户端发送服务应答包以及接受客户端所发送的服务请求包时,对服务应答包以及服务请求包的TCP序列号进行转换的具体方法的流程图。
具体实施方式
为使本发明实施例的目标、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1是本发明实施例一所提供的双机热备方法的流程示意图。参见图1所示,本发明实施例所提供的双机热备方法包括:
步骤101:主机接收客户端的服务请求数据,产生相应的服务应答数据,并将服务应答数据以及主机与客户端之间的链接信息发送给备机;所述链接信息包括:客户端的IP、端口号以及主机与客户端的TCP链接的序列号;
步骤102:备机接收到主机所发送的服务应答数据以及所述链接信息之后,将所述服务应答数据以及所述链接信息备份,并将所述服务应答数据以主机的身份发送给客户端;
步骤103:当主机发生故障时,备机将自身的IP地址变更为主机的IP地址;
步骤104:备机使用所述主机与客户端的TCP链接的序列号向客户端发送服务应答数据。
本发明提供的双机热备方法,相比现有技术而言,通过将主机所发出的所有的服务应答数据转发流经备机,使备机保持与主机网络数据的实时同步。同时还将主机与客户端之间的链接信息也发送给备机。当备机接收到这个服务应答数据以及链接信息后,将应答数据以及客户端与主机之间的链接信息进行备份,在链接信息中,包括了客户端的IP、端口号以及主机与客户端的TCP链接的序列号,当备机完成服务应答数据以及链接信息的备份后,备机将服务应答数据以主机的身份发给客户端,因此客户端会认为其所收到的服务应答数据来自主机。当主机出现故障的时候,备机抢占主机的IP地址,即将自身的IP变更为主机IP,同时在接收到客户端所发送的服务请求数据后,产生相应的服务应答数据,使用主机与客户端的TCP链接的序列号向客户端发送服务应答数据。则客户端会一直认为,其所收到的服务应答数据均是由主机所发出,免去了客户端的重拨,做到客户端的无察觉,这使得很多没有重拨机制的客户端也能在热备切换后正常使用,保证了备机与客户端之间的链接不会被终止。
在本发明中,主机要运行服务器程序,服务请求数据为客户端向主机所运行的服务器程序所发出的请求服务器为其提供服务的数据,例如通讯系统中,请求通话的请求数据等,而服务器程序(即主机)根据客户端所发送的这个请求数据,所发出的应答数据,即为服务应答数据。
图2是本发明实施例二所提供的双机热备方法中主机将服务应答数据以及主机与客户端之间的链接信息发送给备机的详细过程的流程示意图。在实施例一的基础上,其具体为:
步骤201:主机将所述服务应答数据形成相应的服务应答包;
步骤202:主机将所述服务应答包的目标IP修改为备机的IP,将源IP修改为客户端的IP,将目标端口号修改为备机的端口号,将源端口号修改为客户端的端口号,构成中间服务应答包;
步骤203:主机将所述中间服务应答包发送给备机。
在本实施例中所提供的双机热备方法中,主机所产生的服务应答包数据,并形成相应的服务应答包后,按照正常流程,该主机所产生的服务应答包的目标IP、目标端口号均应该为客户端的IP、端口号;源IP、源以端口号及均应该为主机的IP、端口号。然而,为了使得主机所产生的服务应答包能够顺利到达备机,且同时要将主机与客户端之间的链接信息发送给备机,因此修改服务应答包的源IP为客户端的IP,源端口号为客户端的端口号,而修改服务应答包的目标IP为备机的IP,目标端口号为备机的端口号,构成中间服务应答包,向备机发送。
另外,主机在形成相应的服务应答包后,还可以将服务应答包的MAC地址做相应的修改。例如,主机将服务应答包的MAC地址修改为备机的MAC地址,修改源MAC地址为客户端的MAC地址。如果客户端位于广域网,而主机和备机则位于同一个局域网,则令服务应答包的源MAC地址为本地网关的MAC地址。在本实施例中,主机所产生的服务应答数据所形成的服务应答包中,链接数据即为该服务应答包的源IP、源端口号以及源MAC地址,以及该服务应答包形成时,所自动携带的主机与客户端的TCP链接的序列号。这样,服务应答数据与链接信息便能够顺利的发给备机进行后续的备份以及转发。
图3是本发明实施例三所提供的双机热备方法中,备机将所述服务应答数据以主机的身份发送给客户端的具体的流程图,在上述实施例二的基础上,具体包括:
步骤301:备机将所述中间服务应答包的目标IP修改为客户端IP,将源IP修改为主机IP,将目标端口号修改为客户端端口号,将源端口号修改为主机端口号,还原为所述服务应答包;
步骤302:所述备机将修改后的所述服务应答包向客户端发送。
由于备机在接收的中间服务应答包后,要将中间服务应答包进行解析,并将相应的主机发送给客户端的应答数据,以及客户端与主机之间的链接信息进行备份,然后再将原来的服务应答包发送给客户端。在该原服务应答包中,其源IP、源端口号为客户端的IP、端口号。同时由于这个转发的过程不需要让客户端知道的,而是要让客户端认为,其所收到的服务应答包应该是由主机发送给它的,因此当备机要将服务应答包发送给客户端的时候,要将中间服务应答包的源IP修改为主机的IP,源端口号修改为主机的端口号。同时,备机为了能够将服务应答包发给客户端,而将中间服务应答包的目标IP修改为客户端的IP,目标端口号修改为客户端的端口号,将中间服务应答包还原为原来的服务应答包,这样,当客户端收到了服务应答包后,才会认为其所收到的服务应答包是由主机所发出。这里的中间服务应答为主机向备机所发送的用于备份的数据,包括了主机所产生的服务应答数据以及主机和客户端之间的链接信息。
例如:主机应答包的变换过程:
主机IP:192.168.1.10端口号10000
备机IP:192.168.1.20端口号20000
客户端IP:192.168.1.30端口号30000
主机收到来自客户端的服务请求后,发出一个服务应答包,其目标IP为192.168.1.30,目标端口号30000,源IP为192.168.1.10,源端口号10000;主机将其修改为目标IP192.168.1.20,目标端口号20000,源IP为192.168.1.30,源端口号30000;
备机收到该包并备份数据后,恢复包,恢复为其目标IP为192.168.1.30,目标端口号30000,源IP为192.168.1.10,源端口号10000。发往客户端。
在本发明中提出的这种将主备机串联在一起的设计构架,可以充分利用TCP协议本身的可靠性机制来保证热备网络数据的可靠同步,但增加了一定的网络负担。任何一个时刻,如果客户端发出请求没有收到应答,那么它会重传请求。当客户端收到了应答,那么即表示备机已经同步备份过该TCP包数据。因此,理论上讲,数据是完全安全可靠的。
另外,需要说明的是,如果使用操作系统提供的路由系统的话,那么MAC地址的修改将会自动完成,仅需要修改IP及端口号即可。
图4是本发明实施例四所提供的双机热备方法中主机将服务应答数据以及主机与客户端之间的链接信息发送给备机的另一种方式的流程示意图。其具体为:
步骤401:主机将所述服务应答数据形成相应的服务应答包;所述服务应答包包括头部以及数据段;
步骤402:主机在服务应答包的数据段中保存所述链接信息;
步骤403:主机将所述服务应答包的目标IP修改为备机的IP,将目标端口号为备机的端口号,形成中间服务应答包;
步骤404:主机将所述中间服务应答包向备机发送。
在本实施例四中提供了不同于实施例二的另外一种主机将服务应答数据发送给备机的方法,在本实施例四中,主机不修改服务应答包的源IP、源端口号,只需将服务应答包的目标IP、目标端口号修改为备机的IP、端口号,而将客户端的IP、端口号、主机与备机的TCP链接的序列号均保存在当前服务应答包的数据段,形成新的中间服务应答包,当备机接收到该中间服务应答包后,直接将客户端的IP、端口号等信息从送服务应答包的数据段解析出来,然后进行备份。
在本实施例四的基础上,参见图5所示,本发明实施例五还提供了一种备机将服务应答数据以主机的身份发送给客户端方法,具体包括:
步骤501:备机将保存在所述中间服务应答包数据段中的链接信息删除;
步骤502:备机将所述中间服务应答包的目标IP修改为客户端的IP,将目标端口号修改为客户端的端口号,还原为所述服务应答包;
步骤503:备机将所述服务应答包向客户端发送。
备机在接收到主机所发送的中间服务应答包后,将相应的服务应答数据以及链接信息从中间服务应答包中解析出来备份,同时,由于链接信息是保存在中间服务应答包的数据段的,而此链接信息是不会发给客户端的,因此,备机将保存于该中间服务应答包数据段中的链接信息删除,同时,由于在主机将中间服务应答包发送给备机的时候,原来的服务应答包的源IP、源端口号即为主机的IP、端口号,原应答包的目标IP、目标端口号为备机的客户端的IP、端口号,因此要将中间服务应答包的目标IP修改为客户端的IP,目标端口应修改为客户端的端口,从而将中间服务应答包还原为原来的服务应答包,向客户端发送。
另外,还需要将中间服务应答包的MAC地址修改为客户端的MAC地址。
主机也可以也可以不修改服务应答包的源IP、源端口号、源MAC地址,只需要修改其目标IP、目标端口号以及目标MAC地址,在将服务应答包直接发给备机的同时,直接将客户端的IP、端口号以及MAC地址等信息通过额外的通信发送给备机。
图6是本发明实施例六所提供的双机热备方法中主机将服务应答数据以及主机与客户端之间的链接信息发送给备机的另一种方式的流程示意图。其具体包括:
步骤601:主机将所述服务应答数据形成相应的服务应答包;所述服务应答包包括头部以及数据段;所述头部保存有所述服务应答包的源IP、源端口号以及源MAC地址,还保存有所述服务应答包的目标IP、目标端口号以及目标MAC地址;
步骤602:在将所述服务应答包另外增加一层头部,形成新的服务应答包;所述另外增加的一层头部所保存的源IP地址为主机的IP,目标IP为备机的IP,源端口号为主机的端口号,目标端口号为备机的端口号;源MAC地址为主机的MAC地址,目标MAC地址为备机的MAC地址;
步骤603:主机将所述新的服务应答包向备机发送。
在本实施例中,主机将服务应答数据形成的服务应答包,该应答包为TCP数据包,包括了头部以及数据段,在TCP数据包中,保存有服务应答包的源IP、源端口号、源MAC地址、目标IP、目标端口目标MAC地址等信息,主机所形成的要发给客户端的服务应答包的源IP、源端口以及源MAC地址均为主机的IP、端口以及MAC地址,而其目标IP、目标端口以及目标MAC地址应该为客户端的IP、端口以及MAC地址,而此服务应答包要发给备机进行备份,这个发送实则是用IP机制的投递发送,其目标地址应该为备机的IP、端口号以及MAC地址。因此为了能够顺利的将服务应答包发送给备机,在备机所形成的服务应答包上再增加一层头部,形成新的服务应答包。该头部中所保存的源IP地址为主机的IP,目标IP为备机的IP,源端口号为主机的端口号,目标端口号为备机的端口号;源MAC地址为主机的MAC地址,目标MAC地址为备机的MAC地址。这样,可以将服务应答包发给备机。
同时,参见图7,本发明实施例七提供的另一种备机将应答数据发送给客户端的方法中,
步骤701:备机将其所接收到的新的服务应答包中,另外增加的一层头部删除,还原成未增加头部的所述服务应答包;
步骤702:备机将所述服务应答包向客户端发送。
在上述实施例六的基础上,备机在接收到该新的服务应答包后,将服务应答数据相关链接信息从新的服务应答包中解析出来,进行备份后,将该新的服务应答包中另外增加的一层头部删除,还原成未增加头部的服务应答包,然后再将该为增加头部的服务应答包发送给客户端。该未增加头部的服务应答包便是主机所产生的要发往客户端的服务应答包。
图8是本发明实施例八所提供的双机热备方法中,备机使用所述主机与客户端的TCP链接的序列号向客户端发送服务应答数据的流程图,具体包括:
步骤801:备机构造TCP握手请求包,该TCP握手请求包的源IP地址为客户端的IP地址,源端口号为客户端的端口号;
步骤802:备机将构造好的TCP握手请求包向自身发送,在自身建立备机与客户端之间的TCP链接;
步骤803:备机在建立所述TCP链接之后,在自身操作系统的内核中,将所述TCP链接的序列号修改为所述主机与客户端的TCP链接的序列号;
步骤804:备机使用所述TCP链接,向客户端发送服务应答数据。
在本实施例八中,主机向备机发送服务应答数据,并由备机将该服务应答数据备份后,向客户端转发的过程中,备机与客户端之间是并未建立TCP链接的,而是用IP机制进行直接投递发送。这种直接投递发送时不需要被投递方进行反馈的。因而当备机的IP地址变更为主机的IP地址后,客户端所发出的服务请求数据都会发送给备机,如果不在备机与客户端之间建立TCP链接的话,备机也不需要对这个服务请求数据作出反馈。因而,为了保证在主机出现问题,备机的IP变更为主机的IP后,备机能够替换主机,为客户端提供正常的服务,就要在备机与客户端之间建立相应的TCP链接。但同时,备机不让客户端知道,为其提供服务的主机已经更换,因此备机构造TCP握手请求包,并将构造的TCP握手请求包向自身发送。由于该TCP握手请求包的原IP为客户端IP,源端口号为客户端的端口号,因此,其所完成的TCP链接实则是在自身建立的,客户端并不知道。这个TCP链接的序列号与主机-客户端的TCP链接的序列号不同。
为了使得两个链接对接,即备机能够在客户端无法察觉为其提供服务的主机已经更换成备机的要求下,备机在建立所述TCP链接之后,在自身操作系统的内核中,将所述TCP链接的序列号修改为所述主机与客户端的TCP链接的序列号;然后备机使用所述TCP链接,向客户端发送服务应答数据。
另外,图9是本发明实施例九所提供的双机热备方法中,另一种备机使用所述主机与客户端的TCP链接的序列号向客户端发送服务应答数据的流程图,具体包括:
步骤901:备机构造TCP握手请求包,该TCP握手请求包的源IP地址为客户端的IP地址,源端口号为客户端的端口号;
步骤902:备机将构造好的TCP握手请求包向自身发送,在自身建立备机与客户端之间的TCP链接;
步骤903:备机在向客户端发送服务应答包以及接受客户端所发送的服务请求包时,对服务应答包以及服务请求包的TCP序列号进行转换;
其中,所述服务应答包中保存有服务应答数据,所述服务请求包中保存有服务请求数据;
所述TCP序列号包括SEQ序列号以及ACK序列号。
为了使得两个链接对接,即备机能够在客户端无法察觉为其提供服务的主机已经更换成备机的要求下,备机在建立所述TCP链接之后,备机在向客户端发送服务应答包以及接受客户端所发送的服务请求包时,对服务应答包以及服务请求包的TCP序列号进行转换;其中,所述服务应答包中保存有服务应答数据,所述服务请求包中保存有服务请求数据;所述TCP序列号包括SEQ序列号以及ACK序列号。
参见图10,本发明实施例十提供了一种备机在向客户端发送服务应答包以及接受客户端所发送的服务请求包时,对服务应答包以及服务请求包的TCP序列号进行转换的具体方法,包括:
步骤1001:备机收到客户端使用主机与客户端的TCP链接发的第一个服务请求包时,将其TCP序列号与备机与客户端的TCP链接序列号做差,该差值记为偏移值;
步骤1002:网络底层捕获客户端使用原主机与客户端的TCP链接发给备机的服务请求包,将其序列号减去偏移值;
步骤1003:网络底层捕获备机使用备机端所建立的备机与客户端的TCP链接所发给客户端的服务应答包,将其序列号加上偏移值。
在TCP链接建立的过程中,即使是同一个服务器和客户端之间的链接,不同的链接,其序列号也是不一样的。因此,即使是在备机端建立了备机与客户端之间的TCP链接,其序列号也和原主机与客户端之间的TCP链接之间的序列号不一样,因此,如果不对备机与客户端之间的TCP链接的序列号进行校正,即使得重建的备机-客户端的TCP链接的序列号与原主机-客户端的TCP链接的序列号对接,使其与原主机-客户端之间的序列号相同的话,客户端仍然会识别出,与其通信的客户端已经更换。
例如:当外部的服务请求包(使用旧链接)进来,他的序列号为SEQ=1000,ACK=1000;备机内部最后一次收到的服务请求包序列号(使用新链接)为SEQ=100,ACK=100;那么当外部服务请求包进入时,首先计算偏移值,为SEQ_OFFSET=1000-100=900,ACK_OFFSET=1000-100=900;再将服务请求包的序列号变换,即服务请求包的SEQ=1000-900=100,ACK=1000-900=100;这样就变成了内部序列号顺序。当服务应答包发出时,比如SEQ=110,ACK=110,此时加上偏移值,变为SEQ=1010,ACK=1010,即为外部序列号顺序。之后所有的数据请求包,进入时,都会减去偏移值,服务应答包发出时都会加上偏移值。
与现有的实时备份整个主机TCP协议栈方法不同的是,这种序列号校准方法对所需要备份的数据非常少,大大降低了主机和网络的负载。
在本发明各实施例中,热备切换后可以通过校准TCP序列号将新旧链接对接在一起。两种校准TCP序列号的方法都没有同步TCP协议栈内部状态,如重传状态、定时器状态、窗口大小等,但这种相对简单的方法对于常规应用已经足够。对于一些特殊需求的应用场合,根据具体需求,可以实时同步内核TCP协议栈相关数据,在备机切换上线后将相关数据覆盖到内核相应位置,如:tcp_sock、inet_connection_sock、inet_sock、sock、sock_common、request_sock、listen_sock和/或request_sock_queue等。但是同步数据量较大,在大流量情况下网络负担较大。
另外,当主机发生故障时,备机将自身的IP地址变更为主机的IP地址具体为:
备机每隔预设时间探测主机是否出现故障,例如若主机与备机之间的心跳链接超时,并且备机多次ping主机失败,则表明主机操作系统已经出现严重异常,应判定为主机故障;
当备机某次探测时,发现主机出现故障,备机将调用linux操作系统提供的ifconfig接口,通知网关,将本机IP地址变更为主机的IP地址,此时原主机将被网关强制下线;
主机应用程序维护着一份当前运行状态信息的数据,包括当前客户数、每个客户的信息状态等重要信息,该数据将被同步备份给备机(即上述的数据信息),当主机故障,备机上线并建立所有TCP链接后,备机将使用该数据信息覆盖当前应用程序的运行状态信息数据,使应用程序实现运行状态的跳转。
监控热备实例
首先配置两台计算机,其中一台为主机,另一台为备机。主机和备机IP和MAC不同,接于同一台普通交换机,不使用ARP(Address Resolution Protocol)绑定。主备机加载热备内核模块,用于监视网络状态。主备机运行相同的服务器程序,仅存在一些小区别,用于区别主备机及辅助热备切换。备机还需要运行热备主程序,该程序主要完成探测主机和热备切换的工作。
两台监控服务器按上述要求配置好相关设置,主机开启正常服务。主机探测到备机,此后主机接收到客户端的请求包后,内核模块将服务端口号发出的包发给备机备份端口号,备机备份相关数据之后将原包发给客户端。当客户端发起一次视频请求会后,主机应答,并通过UDP将视频数据直接发往客户端,不需要经过备机;TCP应答包将流经备机。
当主机出现故障当机,备机将抢占主机的IP地址,备机成为新主机。新主机在内部快速重建TCP链接,校准序列号,使客户端TCP正常运行,无察觉。同时,备份数据也将通知应用程序主机当机时刻状态,由于当机时主机正在传输UDP视频数据,因此备机成为新主机后,将继续往客户端发送UDP视频数据。如此,客户端在主备机热备切换时,仅存在几秒卡顿时间,之后将恢复正常,客户端所有TCP/UDP通信不需要重建。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (8)

1.一种双机热备方法,其特征在于,包括:
主机接收客户端的服务请求数据,产生相应的服务应答数据,并将服务应答数据以及主机与客户端之间的链接信息发送给备机;所述链接信息包括:客户端的IP、端口号以及主机与客户端的TCP链接的序列号;
备机接收到主机所发送的服务应答数据以及所述链接信息之后,将所述服务应答数据以及所述链接信息备份,并将所述服务应答数据以主机的身份发送给客户端;
当主机发生故障时,备机将自身的IP地址变更为主机的IP地址;
备机使用所述主机与客户端的TCP链接的序列号向客户端发送服务应答数据;
其中,主机与备机之间的心跳链接超时,并且备机多次ping主机失败,则主机故障。
2.根据权利要求1所述的双机热备方法,其特征在于,所述将服务应答数据以及主机与客户端之间的链接信息发送给备机,具体包括:
主机将所述服务应答数据形成相应的服务应答包;
主机将所述服务应答包的目标IP修改为备机的IP,将源IP修改为客户端的IP,将目标端口号修改为备机的端口号,将源端口号修改为客户端的端口号,构成中间服务应答包;
主机将所述中间服务应答包发送给备机。
3.根据权利要求2所述的双机热备方法,其特征在于,所述将所述服务应答数据以主机的身份发送给客户端,具体包括:
备机将所述中间服务应答包的目标IP修改为客户端IP,将源IP修改为主机IP,将目标端口号修改为客户端端口号,将源端口号修改为主机端口号,还原为所述服务应答包;
所述备机将所述服务应答包向客户端发送。
4.根据权利要求1所述的双机热备方法,其特征在于,所述将服务应答数据以及主机与客户端之间的链接信息发送给备机,具体包括:
主机将所述服务应答数据形成相应的服务应答包;所述服务应答包包括头部以及数据段;
主机在服务应答包的数据段中保存所述链接信息;
主机将所述服务应答包的目标IP修改为备机的IP,将目标端口号为备机的端口号,形成中间服务应答包;
主机将所述中间服务应答包向备机发送。
5.根据权利要求4所述的双机热备方法,其特征在于,所述将服务应答数据以主机的身份发送给客户端,具体包括:
备机将保存在所述中间服务应答包数据段中的链接信息删除;
备机将所述中间服务应答包的目标IP修改为客户端的IP,将目标端口号修改为客户端的端口号,还原为所述服务应答包;
备机将所述服务应答包向客户端发送。
6.根据权利要求1-5任意一项所述的双机热备方法,其特征在于,所述备机使用所述主机与客户端的TCP链接的序列号向客户端发送服务应答数据,具体包括:
备机构造TCP握手请求包,该TCP握手请求包的源IP地址为客户端的IP地址,源端口号为客户端的端口号;
备机将构造好的TCP握手请求包向自身发送,在自身建立备机与客户端之间的TCP链接;
备机在建立所述TCP链接之后,在自身操作系统的内核中,将所述TCP链接的序列号修改为所述主机与客户端的TCP链接的序列号;
备机使用所述TCP链接,向客户端发送服务应答数据。
7.根据权利要求1-5任意一项所述的双机热备方法,其特征在于,所述备机使用所述主机与客户端的TCP链接的序列号向客户端发送服务应答数据,具体包括:
备机构造TCP握手请求包,该TCP握手请求包的源IP地址为客户端的IP地址,源端口号为客户端的端口号;
备机将构造好的TCP握手请求包向自身发送,在自身建立备机与客户端之间的TCP链接;
备机在向客户端发送服务应答包以及接受客户端所发送的服务请求包时,对服务应答包以及服务请求包的TCP序列号进行转换;
其中,所述服务应答包中保存有服务应答数据,所述服务请求包中保存有服务请求数据;
所述TCP序列号包括SEQ序列号以及ACK序列号。
8.根据权利要求7所述的双机热备方法,其特征在于,所述备机在向客户端发送服务应答包以及接受客户端所发送的服务请求包时,对服务应答包以及服务请求包的TCP序列号进行转换,具体包括:
备机收到客户端使用主机与客户端的TCP链接发的第一个服务请求包时,将其TCP序列号与备机与客户端的TCP链接序列号做差,该差值记为偏移值;
网络底层捕获客户端使用主机与客户端的TCP链接发给备机的服务请求包,将其序列号减去偏移值;
网络底层捕获备机使用备机端所建立的备机与客户端的TCP链接所发给客户端的服务应答包,将其序列号加上偏移值。
CN201410143004.5A 2014-04-10 2014-04-10 一种双机热备方法 Active CN103944698B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410143004.5A CN103944698B (zh) 2014-04-10 2014-04-10 一种双机热备方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410143004.5A CN103944698B (zh) 2014-04-10 2014-04-10 一种双机热备方法

Publications (2)

Publication Number Publication Date
CN103944698A CN103944698A (zh) 2014-07-23
CN103944698B true CN103944698B (zh) 2017-10-03

Family

ID=51192202

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410143004.5A Active CN103944698B (zh) 2014-04-10 2014-04-10 一种双机热备方法

Country Status (1)

Country Link
CN (1) CN103944698B (zh)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104243473B (zh) * 2014-09-12 2018-11-30 华为技术有限公司 一种数据传输的方法以及装置
CN105812169B (zh) * 2014-12-31 2019-08-20 华为软件技术有限公司 一种主备机切换方法及装置
CN104615511B (zh) * 2015-02-05 2018-01-26 中国工商银行股份有限公司 一种基于双中心的主机批量恢复处理方法及装置
CN105337762A (zh) * 2015-09-28 2016-02-17 浪潮(北京)电子信息产业有限公司 一种支持自动故障切换的文件共享方法
CN106230747B (zh) * 2016-08-30 2020-01-31 迈普通信技术股份有限公司 恢复tcp连接序列号的方法、装置及系统
CN108055163A (zh) * 2018-01-06 2018-05-18 北京特立信电子技术股份有限公司 一种双归属设备及其保护切换方法
CN110011767B (zh) * 2019-04-17 2022-09-27 北京百度网讯科技有限公司 用于tcp连接备份的方法和装置
CN110890984B (zh) * 2019-11-27 2022-07-22 山东九州信泰信息科技股份有限公司 一种基于隔离设备的双机热备的切换方法
CN111726391B (zh) * 2020-05-09 2023-03-24 深圳震有科技股份有限公司 一种平滑退出集群系统的方法、系统及存储介质
EP3910882B1 (de) * 2020-05-14 2023-12-13 ise Individuelle Software und Elektronik GmbH Ausfallsicherer betrieb eines netzwerks
CN113176969A (zh) * 2021-04-23 2021-07-27 杭州迪普科技股份有限公司 服务提供方法、装置、设备及计算机可读存储介质
CN115378557B (zh) * 2022-10-25 2023-02-17 成都星联芯通科技有限公司 热备实现方法、装置、系统、电子设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6108300A (en) * 1997-05-02 2000-08-22 Cisco Technology, Inc Method and apparatus for transparently providing a failover network device
CN1391378A (zh) * 2001-06-11 2003-01-15 华为技术有限公司 设置于服务器群组前端的连接倒换系统及其倒换方法
CN102510408A (zh) * 2011-11-30 2012-06-20 武汉烽火网络有限责任公司 实现tcp应用主备热倒换的方法
CN103346903A (zh) * 2013-06-20 2013-10-09 北京捷成世纪科技股份有限公司 一种双机备份的方法和装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8958282B2 (en) * 2009-12-10 2015-02-17 Verizon Patent And Licensing Inc. 1-for-N redundancy in private IP session border control networks

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6108300A (en) * 1997-05-02 2000-08-22 Cisco Technology, Inc Method and apparatus for transparently providing a failover network device
CN1391378A (zh) * 2001-06-11 2003-01-15 华为技术有限公司 设置于服务器群组前端的连接倒换系统及其倒换方法
CN102510408A (zh) * 2011-11-30 2012-06-20 武汉烽火网络有限责任公司 实现tcp应用主备热倒换的方法
CN103346903A (zh) * 2013-06-20 2013-10-09 北京捷成世纪科技股份有限公司 一种双机备份的方法和装置

Also Published As

Publication number Publication date
CN103944698A (zh) 2014-07-23

Similar Documents

Publication Publication Date Title
CN103944698B (zh) 一种双机热备方法
US9032240B2 (en) Method and system for providing high availability SCTP applications
US8503288B1 (en) Silent failover from a primary control unit to a backup control unit of a network device
CN101557317B (zh) 双机热备组网中实现会话主动备份的系统、设备及方法
CN101924771B (zh) 一种用于加速应用代理的核心级tcp连接粘合方法
CN102510408B (zh) 实现tcp应用主备热倒换的方法
JP4862065B2 (ja) Lac装置及びフェイルオーバ方法
CN101572709B (zh) 套接字连接的切换方法、系统、服务器和客户端设备
CN103227725B (zh) 一种防火墙双机备份的方法及装置
CN105897486B (zh) 一种sctp协议服务热备份的方法
WO2008014696A1 (fr) Méthode et dispositif pour effectuer un transfert de communications
CN107645451A (zh) 一种通过应用与协议栈联动实现不间断路由的系统及方法
CN110493775A (zh) 通过att和异常处理来适配的通信方法及系统
CN108270593B (zh) 一种双机热备份方法和系统
CN105790903A (zh) 一种终端及终端呼叫软切换的方法
US10135985B1 (en) Immediate reconnection of a call to an agent in a contact center
KR20200072941A (ko) 실시간 오류 감지를 통한 vrrp 기반의 네트워크 장애 대응 방법 및 장치
CN102904764A (zh) 一种数据传输装置及其传输方法
CN102255716A (zh) 一种对协议状态的设备间备份的方法及系统
WO2002103969A1 (en) Method of implementing ip telephone gatekeeper group and a gatekeeper system
JP4757719B2 (ja) ネットワークシステム、ip電話端末及びそれらに用いるネットワーク機器切替え方法
US20130013955A1 (en) Method and system for emergency switching
CN109257444B (zh) 一种负载分担方法、装置及系统
KR20180099143A (ko) Tcp 세션 복구 장치 및 방법
CN115529220A (zh) 通信网关容灾系统及方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C53 Correction of patent for invention or patent application
CB03 Change of inventor or designer information

Inventor after: Pan Shengjie

Inventor after: Bao Qingjie

Inventor after: Pan Shuwen

Inventor before: Pan Shengjie

Inventor before: Tang Huiming

Inventor before: Pan Shuwen

COR Change of bibliographic data

Free format text: CORRECT: INVENTOR; FROM: PAN SHENGJIE TANG HUIMING PAN SHUWEN TO: PAN SHENGJIE BAO QINGJIE PAN SHUWEN

CB03 Change of inventor or designer information
CB03 Change of inventor or designer information

Inventor after: Pan Shengjie

Inventor after: Bao Qingjie

Inventor after: Tang Huiming

Inventor before: Pan Shengjie

Inventor before: Bao Qingjie

Inventor before: Pan Shuwen

GR01 Patent grant
GR01 Patent grant
CP01 Change in the name or title of a patent holder

Address after: Two Lu Tian Hua high tech Zone of Chengdu City, Sichuan province 610041 No. 219 Tianfu Software Park C District 10 Building 16 layer

Patentee after: Huayan Intelligent Technology (Group) Co., Ltd

Address before: Two Lu Tian Hua high tech Zone of Chengdu City, Sichuan province 610041 No. 219 Tianfu Software Park C District 10 Building 16 layer

Patentee before: Sichuan Whayer Information Industry Co., Ltd.

CP01 Change in the name or title of a patent holder