一种数据转发系统、方法及装置与流程

文档序号:20286242发布日期:2020-04-07 16:07阅读:131来源:国知局
一种数据转发系统、方法及装置与流程
本发明涉及云计算
技术领域
,特别是涉及一种数据转发系统、方法及装置。
背景技术
:在负载均衡的场景下,通常是集群化地部署负载均衡设备,负载均衡设备集群将客户端发送的请求数据包转发给服务器,服务器的响应数据包再通过负载均衡设备转发给客户端,实现客户端和服务器的交互。集群化部署负载均衡设备的优势在于,若负载均衡设备集群的一个节点(即负载均衡设备)出现了故障,并不会导致客户端与服务器间交互的故障。负载均衡设备集群中的节点依据会话(session),向服务器转发请求数据包,以及向客户端转发响应数据包。而每个节点上的session中包含转发源地址和目的地址等信息,转发源地址为该节点的ip(internetprotocol,网际互连协议)地址。这使得每个节点上针对相同客户端和服务器间的session都不一样。当一节点故障时,由于每个节点的session都不一样,使得其他正常的节点无法得知该故障节点的session,原本由该故障节点负责转发的数据包无法由其他节点正常转发,进而导致该数据包被丢弃。客户端需要重新发送请求数据包通过负载均衡设备与服务器建立新的连接,这会降低数据处理效率。技术实现要素:本发明实施例的目的在于提供一种数据转发系统、方法及装置,实现集群内节点的会话同步,将转发到故障节点上的数据包过渡到正常节点上,提高数据处理效率。具体技术方案如下:第一方面,本发明实施例提供了一种数据转发系统,包括客户端、服务器、交换机和负载均衡设备集群,所述负载均衡设备集群包括多个节点;所述客户端,用于通过所述负载均衡设备集群向服务器发送请求数据包;所述负载均衡设备集群中的每个节点,用于接收所述请求数据包;检测预先存储的会话中是否包括与所述请求数据包的五元组信息匹配的第一会话;若不包括所述第一会话,则以预设的虚拟转发地址为转发源地址,构建包括所述请求数据包的五元组信息的第二会话,并将所述第二会话同步给所述负载均衡设备集群中的其他节点,所述其他节点中均预设有所述虚拟转发地址;将所述请求数据包的源地址修改为所述第二会话包括的所述虚拟转发地址,并将修改后的请求数据包转发给所述交换机;所述交换机,用于将修改后的请求数据包转发给所述服务器;所述服务器,用于处理所述修改后的请求数据包。可选的,所述交换机中预先存储有等价路由转发表,所述等价路由转发表包括所述虚拟转发地址与所述负载均衡设备集群中每个节点的等价路由;所述交换机,还用于检测所述负载均衡设备集群包括的多个节点中是否存在故障节点;若是,则从所述等价路由转发表中删除所述虚拟转发地址与所述故障节点的等价路由。可选的,所述负载均衡设备集群中的每个节点,还用于在将所述第二会话同步给所述其他节点之后,检测预设时长内是否接收到所述其他节点发送的同步成功反馈消息;若否,重新将所述第二会话发送给所述其他节点。可选的,所述负载均衡设备集群中的每个节点,还用于检测所述第二会话的状态是否变化;若是,将变化后的第二会话同步给所述其他节点。第二方面,本发明实施例还提供了一种数据转发方法,应用于负载均衡设备集群中的节点,所述方法包括:接收客户端向服务器发送的请求数据包;检测预先存储的会话中是否包括与所述请求数据包的五元组信息匹配的第一会话;若不包括所述第一会话,则以预设的虚拟转发地址为转发源地址,构建包括所述请求数据包的五元组信息的第二会话,并将所述第二会话同步给所述负载均衡设备集群中的其他节点,所述其他节点中均预设有所述虚拟转发地址;将所述请求数据包的源地址修改为所述第二会话包括的所述虚拟转发地址,并将修改后的请求数据包转发给所述服务器。可选的,在将所述第二会话同步给所述其他节点的步骤之后,所述方法还包括:检测预设时长内是否接收到所述其他节点发送的同步成功反馈消息;若否,重新将所述第二会话同步给所述其他节点。可选的,所述方法还包括:检测所述第二会话的状态是否变化;若是,将变化后的第二会话同步给所述其他节点。第三方面,本发明实施例还提供了一种数据转发装置,应用于负载均衡设备集群中的节点,所述装置包括:接收单元,用于接收客户端向服务器发送的请求数据包;第一检测单元,用于检测预先存储的会话中是否包括与所述请求数据包的五元组信息匹配的第一会话;构建单元,用于若不包括所述第一会话,则以预设的虚拟转发地址为转发源地址,构建包括所述请求数据包的五元组信息的第二会话,并将所述第二会话同步给所述负载均衡设备集群中的其他节点,所述其他节点中均预设有所述虚拟转发地址;修改单元,用于将所述请求数据包的源地址修改为所述第二会话包括的所述虚拟转发地址,并将修改后的请求数据包转发给所述服务器。可选的,所述装置还包括:第二检测单元,用于在将所述第二会话同步给所述其他节点之后,检测预设时长内是否接收到所述其他节点发送的同步成功反馈消息;第一同步单元,用于在所述第二检测单元的检测结果为否的情况下,重新将所述第二会话同步给所述其他节点。可选的,所述装置还包括:第三检测单元,用于检测所述第二会话的状态是否变化;第二同步单元,用于在所述第三检测单元的检测结果为是的情况下,将变化后的第二会话同步给所述其他节点。第四方面,本发明实施例还提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;存储器,用于存放计算机程序;处理器,用于执行存储器上所存放的程序时,实现任一所述数据转发方法的步骤。第五方面,本发明实施例还提供了一种可读存储介质,其特征在于,所述可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现任一所述数据转发方法的步骤。本发明实施例提供的一种数据转发系统、方法及装置,负载均衡设备集群的所有节点中均预设有相同的虚拟转发地址,虚拟转发地址为面向服务器的地址。负载均衡设备集群中的一节点以预设的虚拟转发地址为转发源地址,构建包括请求数据包五元组信息的会话,并将会话同步到负载均衡设备集群中的所有节点。也就是,负载均衡设备集群中的所有节点中均预设有该会话。当一个节点出现故障时,其他的正常节点由于存储了相同的会话,且正常节点面向服务器的虚拟转发地址与故障节点面向服务器的虚拟转发地址相同,因此,正常节点能够接收到原本要发送给故障节点的数据包,并将该数据包转发给服务器,实现了将转发到故障节点上的数据包过渡到正常节点上,客户端不需要重新发送请求数据包与服务器建立新的连接,提高了数据处理效率。当然,实施本发明的任一产品或方法并不一定需要同时达到以上所述的所有优点。附图说明为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为本发明实施例提供的基于负载均衡设备集群的数据转发的一种网络架构示意图;图2为本发明实施例提供的数据转发系统的一种结构示意图;图3a为本发明实施例提供的等价路由转发表的一种示意图;图3b为本发明实施例提供的等价路由转发表的另一种示意图;图4为本发明实施例提供的数据转发系统的另一种示意图;图5为本发明实施例提供的包含故障节点的数据转发系统的一种示意图;图6为本发明实施例提供的数据转发方法的一种流程图;图7为本发明实施例提供的数据转发方法的一种信令图;图8为本发明实施例提供的交换机判断节点故障的一种信令图;图9为本发明实施例提供的数据转发装置的一种结构图;图10为本发明实施例提供的电子设备的一种结构图。具体实施方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。为便于理解,下面对本申请实施例中出现的词语进行解释说明。虚拟地址,又称为vip(virtualinternetprotocol,虚拟网络协议)地址。虚拟地址指负载均衡设备集群面向客户端所预设的ip地址,负载均衡设备集群内的所有节点上设置了相同的虚拟地址。虚拟转发地址,又称为vlip(virtuallocalinternetprotocol,虚拟本地网络协议)地址。虚拟转发地址指负载均衡集群面向服务器所预设的ip地址,负载均衡设备集群内所有节点上设置了相同的虚拟转发地址。基于负载均衡设备集群的数据转发的网络架构,如图1所示。该网络架构包括客户端101、负载均衡设备集群包括的节点102-104、以及服务器105。负载均衡设备集群包括2个以上的节点,这里仅以3个节点为例,并不起限定作用。数据转发时,客户端101向负载均衡设备集群发送请求数据包,该请求数据包的目的ip地址为负载均衡设备集群的vip,该请求数据包的源ip地址为客户端101的ip地址。负载均衡设备集群中的节点102-104中的一个节点接收客户端101发送的请求数据包,假设是节点103接收客户端101发送的请求数据包,建立包括该请求数据包五元组信息的session1,session1中的转发源地址为节点103的ip地址。节点103基于session1,将请求数据包的目的ip地址修改为服务器105的ip地址,并将请求数据包的源ip地址修改为session1中的转发源地址,即将请求数据包的源ip地址修改为节点103的ip地址,这样,节点103基于修改后的请求数据包的目的ip地址,将修改后的请求数据包发送给服务器105。服务器105对接收到的请求数据包进行处理,并生成请求数据包对应的响应数据包,该响应数据包的源ip地址为服务器105的ip地址,响应数据包的目的ip地址为节点3的ip地址。服务器105基于响应数据包的目的ip地址,将响应数据包发送给节点3。节点103基于session1,将响应数据包的源ip地址修改为负载均衡设备集群的vip,并将响应数据包的目的ip地址修改为客户端101的ip地址。节点103基于修改后的响应数据包的目的ip地址,将修改后的响应数据包发送给客户端101。基于上述图1的描述,负载均衡设备集群中的节点依据session,向服务器转发请求数据包,以及向客户端转发响应数据包。而每个节点上的session中包含转发源地址和目的地址等信息,转发源地址为该节点的ip地址。这使得每个节点上针对相同客户端和服务器间的session都不一样。当一节点故障时,由于每个节点的session都不一样,使得其他正常的节点无法得知该故障节点的session,原本由该故障节点负责转发的数据包无法由其他节点正常转发,进而导致该数据包被丢弃。客户端需要重新发送请求数据包通过负载均衡设备与服务器建立新的连接,这会降低数据处理效率。为解决上述问题,本发明实施例公开了一种数据转发系统、方法及装置,以下分别进行详细说明。如图2所示,图2为本发明实施例提供的数据转发系统的一种结构示意图,包括:客户端201、服务器202、交换机206和负载均衡设备集群,负载均衡设备集群包括多个节点203-205。以负载均衡设备集群包括3个节点为例,并不起限定作用。客户端201,用于通过负载均衡设备集群向服务器202发送请求数据包。负载均衡设备集群中的每个节点203-205,用于接收请求数据包;检测预先存储的会话中是否包括与请求数据包的五元组信息匹配的第一会话;若不包括第一会话,则以预设的虚拟转发地址为转发源地址,构建包括请求数据包的五元组信息的第二会话,并将第二会话同步给负载均衡设备集群中的其他节点,其他节点中均预设有虚拟转发地址;将请求数据包的源地址修改为第二会话包括的虚拟转发地址,并将修改后的请求数据包转发给交换机;交换机206,用于将修改后的请求数据包转发给服务器202;服务器202,用于处理修改后的请求数据包。本发明实施例提供的一种数据转发系统,负载均衡设备集群的所有节点中均预设有相同的虚拟转发地址,虚拟转发地址为面向服务器的地址。负载均衡设备集群中的一节点以预设的虚拟转发地址为转发源地址,构建包括请求数据包五元组信息的会话,并将会话同步到负载均衡设备集群中的所有节点。也就是,负载均衡设备集群中的所有节点中均预设有该会话。当一个节点出现故障时,其他的正常节点由于存储了相同的会话,且正常节点面向服务器的虚拟转发地址与故障节点面向服务器的虚拟转发地址相同,因此,正常节点能够接收到原本要发送给故障节点的数据包,并将该数据包转发给服务器,实现了将转发到故障节点上的数据包过渡到正常节点上,客户端不需要重新发送请求数据包与服务器建立新的连接,提高了数据处理效率。本申请实施例中,客户端201将请求数据包发送到负载均衡设备集群中节点203-205中的一个节点上,该节点为负载均衡设备,假设发送到节点204上。负载均衡设备集群中的节点204检测预先存储的会话中是否包括与请求数据包的五元组信息匹配的第一会话,若预先存储的会话中包括了与请求数据包的五元组信息匹配的第一会话,说明发送该请求数据包的客户端与服务器已经建立过连接,并且在上一轮的交互中,所有节点已经完成了第一会话同步,故在这一轮交互中,其他节点也可以根据第一会话接收到客户端发送的请求数据包。负载均衡集群中的节点202-204都预设有统一的虚拟转发地址,若节点204预先存储的会话中不包括与请求数据包的五元组信息匹配的第一会话,则将预设的虚拟转发地址作为转发源地址,构建包括该请求数据包的五元组信息的第二会话,并将第二会话同步给其他节点。负载均衡集群中的节点204将请求数据包的源地址修改为第二会话包括的虚拟转发地址,并将修改后的请求数据包转发给服务器202。数据转发时,客户端201向负载均衡设备集群发送请求数据包,该请求数据包的目的ip地址为负载均衡设备集群的vip,该请求数据包的源ip地址为客户端201的ip地址。负载均衡设备集群中的节点203-205中的一个节点接收客户端201发送的请求数据包,假设是节点204接收客户端201发送的请求数据包,检测节点204预先存储的会话中是否包括与请求数据包的五元组信息匹配的session1,若不包括,建立包括该请求数据包五元组信息的session2,并将session2同步到其他节点,session2中的转发源地址为负载均衡设备集群的vlip。节点204基于session2,将请求数据包的目的ip地址修改为服务器202的ip地址,并将请求数据包的源ip地址修改为session2中的转发源地址,即将请求数据包的源ip地址修改为负载均衡设备集群的vlip,这样,节点204基于修改后的请求数据包的目的ip地址,将修改后的请求数据包发送给服务器202。服务器202对接收到的修改后的请求数据包进行处理,并生成修改后的请求数据包对应的响应数据包,该响应数据包的源ip地址为服务器202的ip地址,响应数据包的目的ip地址为负载均衡设备集群的vlip。节点204基于session2,将响应数据包的源ip地址修改为负载均衡设备集群的vip,并将响应数据包的目的ip地址修改为客户端201的ip地址。节点204基于修改后的响应数据包的目的ip地址,将修改后的响应数据包发送给客户端201。一个实施例中,交换机206中预先存储有等价路由转发表,等价路由转发表包括虚拟转发地址与负载均衡设备集群中每个节点的等价路由。交换机206,还可以用于检测负载均衡设备集群包括的多个节点中是否存在故障节点;若是,则从等价路由转发表中删除虚拟转发地址与故障节点的等价路由。这样,交换机206不会将服务器发送的响应数据包转发至故障节点,避免了数据的丢失。如图3a所示,图3a为本发明实施例提供的等价路由转发表的一种示意图。等价路由转发表中包括了虚拟转发地址与负载均衡设备集群中每个节点的等价路由,如节点a、节点b和节点c。交换机206检测该负载均衡设备集群中是否存在故障节点,假设检测出节点a为故障节点,则交换机206从等价路由转发表中删除虚拟转发地址与节点a的等价路由,得到的等价路由转发表只包含虚拟转发地址与正常节点的等价路由,如图3b所示,图3b为本发明实施例提供的等价路由转发表的另一种示意图。一个可选的实施例中,交换机206可以采用如下方式,检测负载均衡设备集群包括的多个节点中是否存在故障节点。一种实现方式,交换机206向负载均衡设备集群中的各个节点分别发送检测报文。正常节点接收到检测报文后向交换机206发送响应报文,而故障节点不发送响应报文。针对负载均衡设备集群中的每一节点,交换机206判断在预设时长内是否接收到该节点发送的响应报文。若在预设时长内接收到该节点发送的响应报文,则交换机206确定该节点为正常节点。若在预设时长后仍未接收到该节点发送的响应报文,则交换机206确定该节点为故障节点。另一种实现方式,负载均衡设备集群中的每一节点主动向交换机206发送通知报文。针对负载均衡设备集群中的每一节点,交换机206若接收到该节点发送的通知报文,则确定该节点为正常节点。若在距离最后一次接收到该节点发送的通知报文的预设时长后仍未接收到该节点发送的通知报文,则交换机206确定该节点为故障节点。一个实施例中,负载均衡设备集群中的每个节点,还用于检测预设时长内是否接收到其他节点发送的同步成功反馈消息;若否,重新将第二会话发送给所述其他节点。负载均衡设备集群中的每个节点,将包括请求数据包的五元组信息的第二会话同步给其他节点后,检测预设时长内是否接收到其他节点发送的同步成功反馈消息;若接收到,表示同步成功;若没有接收到,表示同步失败,则重新将该第二会话发送给其他节点。应用本发明实施例提供的技术方案,保证了会话成功同步到负载均衡设备中的所有节点,有效预防了会话同步失败的节点无法代替故障节点向服务器202发送请求数据包的问题,提高了数据转发的可靠性。例如,以图2中节点203为例进行说明。预设接收同步反馈消息的时长为10秒。节点203根据请求数据包的五元组信息生成了会话1后,将会话1同步给节点204-205。若在向节点204-205同步会话1之后的预设时长内,接收到节点204反馈的同步成功反馈消息,则节点203不再向节点204发送会话1。若在向节点204-205同步会话1之后的预设时长后,仍未接收到节点205反馈的同步成功反馈消息,则节点203重新向节点205发送会话1。一个实施例中,负载均衡设备集群中的每个节点,还用于检测第二会话的状态是否变化;若是,将变化后的第二会话同步给其他节点。会话的状态变化是指tcp(transmissioncontrolprotocol,传输控制协议)状态机发生变化,tcp状态机会根据接收或发送的数据包的类型而变化,负载均衡设备集群中的每个节点若检测到第二会话的状态发生变化,则将变化后的第二会话同步给其他节点,保证每个节点上的会话同步一致。一个实施例中,如图4所示,图4为本发明实施例提供的数据转发系统的另一种示意图。客户端201向交换机207发送请求数据包,交换机207基于等价路由转发表作等价路由,等价路由转发表包括vip地址与负载均衡设备集群内所有节点ip地址的路由,假设交换机207将请求数据包路由到了节点204,节点204检测预先存储的会话中是否包括与该请求数据包五元组信息匹配的第一会话,若不包括,基于该请求数据包的五元组信息构建第二会话,并将第二会话同步给节点203和节点205,节点204将该请求数据包的源地址修改为vlip地址,并将修改后的请求数据包经交换机206转发给服务器202;若包括,节点204将请求数据包的源地址修改为vlip地址,并将修改后的请求数据包经交换机206转发给服务器202。基于交换机206转发的修改后的请求数据包,服务器202向交换机206发送响应数据包,该响应数据包的目的地址为vlip地址,交换机206基于等价路由转发表作等价路由,等价路由转发表包括vlip地址与负载均衡设备集群内所有节点ip地址的路由,假设交换机206将响应数据包路由到了节点204,节点204将响应数据包的源地址修改为负载均衡设备集群的vip地址,目的地址修改为客户端201的ip地址,向客户端201发送响应数据包。客户端201和服务器202完成了一次数据交互。基于上述图4的一次数据交互之后,客户端201继续向交换机207发送请求数据包,当交换机207检测到节点204为故障节点时,交换机207删除vip地址与节点204的ip地址的路由,交换机207将请求数据包路由到节点203或节点205,假设路由到节点203,由于在上一次数据交互中节点203已经同步了包括该请求数据包五元组信息的会话,故节点203可以接收到本应发给节点204的请求数据包,节点203将该请求数据包的源地址修改为负载均衡设备集群的vlip地址,并将修改后的请求数据包经交换机206转发给服务器202,如图5所示。基于服务器202向交换机206发送响应数据包,该响应数据包的目的地址为负载均衡设备集群的vlip地址,交换机206检测到节点204为故障节点时,删除等价路由转发表中vip地址与节点204的ip地址的路由,假设交换机206将响应数据包路由到了节点203,节点203将响应数据包的源地址修改为负载均衡设备集群的vip地址,目的地址修改为客户端201的ip地址,向客户端201发送响应数据包。与数据转发系统实施例相对应,本发明实施例还提供了一种数据转发方法。如图6所示,图6为本发明实施例提供的数据转发方法的一种流程图。该数据转发方法可以包括如下步骤。步骤601,接收客户端向服务器发送的请求数据包。步骤602,检测预先存储的会话中是否包括与请求数据包的五元组信息匹配的第一会话。步骤603,若不包括第一会话,则以预设的虚拟转发地址为转发源地址,构建包括请求数据包的五元组信息的第二会话,并将第二会话同步给负载均衡设备集群中的其他节点,其他节点中均预设有虚拟转发地址。步骤604,将请求数据包的源地址修改为第二会话包括的虚拟转发地址,并将修改后的请求数据包转发给服务器。本发明实施例提供的一种数据转发方法,负载均衡设备集群的所有节点中均预设有相同的虚拟转发地址,虚拟转发地址为面向服务器的地址。负载均衡设备集群中的一节点以预设的虚拟转发地址为转发源地址,构建包括请求数据包五元组信息的会话,并将会话同步到负载均衡设备集群中的所有节点。也就是,负载均衡设备集群中的所有节点中均预设有该会话。当一个节点出现故障时,其他的正常节点由于存储了相同的会话,且正常节点面向服务器的虚拟转发地址与故障节点面向服务器的虚拟转发地址相同,因此,正常节点能够接收到原本要发送给故障节点的数据包,并将该数据包转发给服务器,实现了将转发到故障节点上的数据包过渡到正常节点上,客户端不需要重新发送请求数据包与服务器建立新的连接,提高了数据处理效率。上述步骤601中,客户端将请求数据包发送到负载均衡设备集群中的一个节点上,该节点为负载均衡设备。上述步骤602中,负载均衡设备集群中的节点检测预先存储的会话中是否包括与请求数据包的五元组信息匹配的第一会话,若预先存储的会话中包括了与请求数据包的五元组信息匹配的第一会话,说明发送该请求数据包的客户端与服务器已经建立过连接,并且在上一轮的交互中,所有节点已经完成了第一会话同步,故在这一轮交互中,其他节点也可以根据第一会话接收到客户端发送的请求数据包。上述步骤603中,负载均衡集群中的每个节点都预设有统一的虚拟转发地址,若预先存储的会话中不包括与请求数据包的五元组信息匹配的第一会话,则将预设的虚拟转发地址作为转发源地址,构建包括该请求数据包的五元组信息的第二会话,并将第二会话同步给其他节点。上述步骤604中,负载均衡集群中的节点将请求数据包的源地址修改为第二会话包括的虚拟转发地址,并将修改后的请求数据包转发给服务器。一个实施例中,在将第二会话同步给其他节点之后,检测预设时长内是否接收到其他节点发送的同步成功反馈消息;若否,重新将第二会话同步给其他节点。负载均衡设备集群中的每个节点,将包括请求数据包的五元组信息的第二会话同步给其他节点后,检测预设时长内是否接收到其他节点发送的同步成功反馈消息;若接收到,表示同步成功;若没有接收到,表示同步失败,则重新将该第二会话发送给其他节点。应用本发明实施例提供的技术方案,保证了会话成功同步到负载均衡设备中的所有节点,有效预防了会话同步失败的节点无法代替故障节点向服务器发送请求数据包的问题,提高了数据转发的可靠性。一个实施例中,本发明实施例提供的数据转发方法还可以包括:检测第二会话的状态是否变化;若是,将变化后的第二会话同步给其他节点。会话的状态变化是指tcp(transmissioncontrolprotocol,传输控制协议)状态机发生变化,tcp状态机会根据接收或发送的数据包的类型而变化,负载均衡设备集群中的每个节点若检测到第二会话的状态发生变化,则将变化后的第二会话同步给其他节点,保证每个节点上的会话同步一致。基于上述图4、图5的数据转发系统和图6的数据转发方法,结合图7-9所示的基于数据转发系统的数据转发方法的信令图,对本发明实施例提供的数据转发方法进行详细说明。其中,负载均衡设备集群中的节点203-205的虚拟地址为vip1,负载均衡设备集群中的节点203-205的虚拟转发地址为vlip2。节点203的ip地址为ip1,节点204的ip地址为ip2,节点205的ip地址为ip3,客户端201的ip地址为ip0,服务器的ip地址为ip4。交换机207中存储了等价路由表,如表1所示。表1目的地址1节点路由vip1ip1路由1vip1ip2路由2vip1ip3路由3交换机206中存储了等价路由表,如表2所示。表2目的地址1节点路由vlip1ip1路由1vlip1ip2路由2vlip1ip3路由3具体的,如图4所示,负载均衡设备集群中不存在故障节点时,数据转发方法的流程如图7所示。步骤701,客户端201向交换机207发送请求数据包1。该请求数据包1的目的ip地址为vip1,源ip地址为客户端201的ip地址(即ip0)。步骤702,交换机207基于表1,根据请求数据包1的目的ip地址(vip1),将请求数据包1路由到负载均衡设备集群中的节点203-205中的任一节点。假设交换机207按照路由1,将请求数据包1路由到负载均衡设备集群中的节点204。步骤703,负载均衡设备集群中的节点204接收到请求数据包1后,检测预先存储的会话中是否包括与请求数据包1的五元组信息匹配的会话1;若否,执行步骤704;若是,执行步骤705。步骤704,负载均衡设备集群中的节点204以vlip1为转发源地址,构建包括请求数据包1的五元组信息的会话2,并将会话2同步给负载均衡设备集群中的节点203和205。其中,会话2包括的转发源地址为vlip1,并且会话2包括请求数据包1的五元组信息。步骤705,负载均衡设备集群中的节点204基于会话2包括的转发源地址,将请求数据包1的源ip地址修改为vlip1,将请求数据包1的目的ip地址修改为服务器202的ip地址(即ip4),并将修改后的请求数据包1转发给交换机206。步骤706,交换机206将修改后的请求数据包1转发给服务器202。步骤707,服务器202处理修改后的请求数据包1,得到响应数据包1。其中,响应数据包1的目的ip地址为vlip1,源ip地址为ip4。步骤708,服务器202将该响应数据包1的发送给交换机206。步骤709,交换机206基于表2,根据响应数据包1的目的ip地址(vlip1),将响应数据包1路由到负载均衡设备集群中的节点203-205中的任一节点上,假设是节点204。步骤710,负载均衡设备集群中的节点204将响应数据包1的源ip地址修改为vip1,目的地址修改为客户端201的ip地址(即ip0),将修改后的响应数据包1转发给交换机202;步骤711,交换机202将修改后的响应数据包1转发给客户端201。上述步骤701-711部分描述相对简单,具体可参考上述图2-6部分的描述。在数据转发系统中,交换机206和交换机207实时检测负载均衡设备集群中的节点是否故障。如图8所示,交换机206检测负载均衡设备集群中的节点是否故障的流程如下:步骤801,交换机206向负载均衡设备集群中的节点203-205分别发送检测报文1。步骤802,负载均衡设备集群中的节点203-205将响应报文1发送到交换机206。步骤803,针对负载均衡设备集群中的节点203-205中的每一节点,交换机206判断在预设时长内是否接收到该节点发送的响应报文;若否,执行步骤804;若是,执行步骤805。步骤804,交换机206确定该节点为故障节点,在删除等价路由转发表(表2)中该节点对应的等价路由。例如,交换机206在预设时长后仍未接收到节点204发送的响应报文,则删除表2中节点204对应的路由2。删除路由后的等价路由转发表,如表3所示。表3目的地址1节点路由vlip1ip1路由1vlip1ip3路由3步骤805,交换机206确定该节点为正常节点。上述步骤801-805部分描述相对简单,具体可参考上述图2-6部分的描述。交换机207判断故障节点的流程,可参考上述图8中交换机206判断故障节点的流程,此处不再赘述。交换机206和交换机207实时更新等价路由表,这样,交换机206不会将服务器发送的响应数据包转发至故障节点,交换机207不会将客户端发送的请求数据包转发至故障节点。避免了数据的丢失。与数据转发系统实施例相对应,本发明实施例还提供了一种数据转发装置。如图9所示,图9为本发明实施例提供的数据转发装置的一种结构图。该装置包括:接收单元901,用于接收客户端向服务器发送的请求数据包。第一检测单元902,用于检测预先存储的会话中是否包括与请求数据包的五元组信息匹配的第一会话。构建单元903,用于若不包括第一会话,则以预设的虚拟转发地址为转发源地址,构建包括请求数据包的五元组信息的第二会话,并将第二会话同步给负载均衡设备集群中的其他节点,其他节点中均预设有虚拟转发地址。修改单元904,用于将请求数据包的源地址修改为第二会话包括的虚拟转发地址,并将修改后的请求数据包转发给服务器。一个实施例中,本发明实施例提供的数据转发装置还可以包括:第二检测单元,用于在将第二会话同步给其他节点之后,检测预设时长内是否接收到其他节点发送的同步成功反馈消息;第一同步单元,用于在第二检测单元的检测结果为否的情况下,重新将第二会话同步给其他节点。一个实施例中,本发明实施例提供的数据转发装置还可以包括:第三检测单元,用于检测第二会话的状态是否变化;第二同步单元,用于在第三检测单元的检测结果为是的情况下,将变化后的第二会话同步给其他节点。本发明实施例提供的一种数据转发装置,负载均衡设备集群的所有节点中均预设有相同的虚拟转发地址,虚拟转发地址为面向服务器的地址。负载均衡设备集群中的一节点以预设的虚拟转发地址为转发源地址,构建包括请求数据包五元组信息的会话,并将会话同步到负载均衡设备集群中的所有节点。也就是,负载均衡设备集群中的所有节点中均预设有该会话。当一个节点出现故障时,其他的正常节点由于存储了相同的会话,且正常节点面向服务器的虚拟转发地址与故障节点面向服务器的虚拟转发地址相同,因此,正常节点能够接收到原本要发送给故障节点的数据包,并将该数据包转发给服务器,实现了将转发到故障节点上的数据包过渡到正常节点上,客户端不需要重新发送请求数据包与服务器建立新的连接,提高了数据处理效率。与数据转发系统实施例相对应,本发明实施例还提供了一种电子设备,如图10所示,包括处理器1001、通信接口1002、存储器1003和通信总线1004,其中,处理器1001,通信接口1002,存储器1003通过通信总线1004完成相互间的通信,存储器1003,用于存放计算机程序;处理器1001,用于执行存储器1003上所存放的程序时,实现如下步骤:接收客户端向服务器发送的请求数据包;检测预先存储的会话中是否包括与请求数据包的五元组信息匹配的第一会话;若不包括第一会话,则以预设的虚拟转发地址为转发源地址,构建包括请求数据包的五元组信息的第二会话,并将第二会话同步给负载均衡设备集群中的其他节点,其他节点中均预设有虚拟转发地址;将请求数据包的源地址修改为第二会话包括的虚拟转发地址,并将修改后的请求数据包转发给服务器。本发明实施例提供的一种电子设备,负载均衡设备集群的所有节点中均预设有相同的虚拟转发地址,虚拟转发地址为面向服务器的地址。负载均衡设备集群中的一节点以预设的虚拟转发地址为转发源地址,构建包括请求数据包五元组信息的会话,并将会话同步到负载均衡设备集群中的所有节点。也就是,负载均衡设备集群中的所有节点中均预设有该会话。当一个节点出现故障时,其他的正常节点由于存储了相同的会话,且正常节点面向服务器的虚拟转发地址与故障节点面向服务器的虚拟转发地址相同,因此,正常节点能够接收到原本要发送给故障节点的数据包,并将该数据包转发给服务器,实现了将转发到故障节点上的数据包过渡到正常节点上,客户端不需要重新发送请求数据包与服务器建立新的连接,提高了数据处理效率。上述电子设备提到的通信总线可以是外设部件互连标准(peripheralcomponentinterconnect,pci)总线或扩展工业标准结构(extendedindustrystandardarchitecture,eisa)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。通信接口用于上述电子设备与其他设备之间的通信。存储器可以包括随机存取存储器(randomaccessmemory,ram),也可以包括非易失性存储器(non-volatilememory,nvm),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。上述的处理器可以是通用处理器,包括中央处理器(centralprocessingunit,cpu)、网络处理器(networkprocessor,np)等;还可以是数字信号处理器(digitalsignalprocessing,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现场可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。在本发明提供的又一实施例中,还提供了一种可读存储介质,该可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述数据转发方法的任一步骤。需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于方法、装置、电子设备、可读存储介质实施例而言,由于其基本相似于系统实施例,所以描述的比较简单,相关之处参见系统实施例的部分说明即可。以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1