CN107438012B - 一种负载均衡服务转发方法、系统、均衡装置和宿主机 - Google Patents

一种负载均衡服务转发方法、系统、均衡装置和宿主机 Download PDF

Info

Publication number
CN107438012B
CN107438012B CN201610366166.4A CN201610366166A CN107438012B CN 107438012 B CN107438012 B CN 107438012B CN 201610366166 A CN201610366166 A CN 201610366166A CN 107438012 B CN107438012 B CN 107438012B
Authority
CN
China
Prior art keywords
data packet
forwarding
load balancing
packet
tcp
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
CN201610366166.4A
Other languages
English (en)
Other versions
CN107438012A (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.)
Beijing Kingsoft Cloud Network Technology Co Ltd
Beijing Kingsoft Cloud Technology Co Ltd
Original Assignee
Beijing Kingsoft Cloud Network Technology Co Ltd
Beijing Kingsoft Cloud Technology 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 Beijing Kingsoft Cloud Network Technology Co Ltd, Beijing Kingsoft Cloud Technology Co Ltd filed Critical Beijing Kingsoft Cloud Network Technology Co Ltd
Priority to CN201610366166.4A priority Critical patent/CN107438012B/zh
Publication of CN107438012A publication Critical patent/CN107438012A/zh
Application granted granted Critical
Publication of CN107438012B publication Critical patent/CN107438012B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/06Management of faults, events, alarms or notifications
    • H04L41/0654Management of faults, events, alarms or notifications using network fault recovery
    • H04L41/0663Performing the actions predefined by failover planning, e.g. switching to standby network elements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明公开了一种负载均衡服务转发方法、系统、均衡装置和宿主机,该方法包括:在当前服务器发生故障时,将已经建立长连接的关系型数据库服务RDS数据包中的未处理数据包采用端口映射机制进行负载均衡处理。将经过负载均衡处理的数据包转发到预设的备用服务器上。通过备用服务器对经过负载均衡处理的数据包进行无状态转发。通过本发明的方案,能够在当前服务器宕机后迅速恢复业务,保持RDS业务不中断。

Description

一种负载均衡服务转发方法、系统、均衡装置和宿主机
技术领域
本发明涉及云服务领域,尤其涉及一种负载均衡服务转发方法、系统、均衡装置和宿主机。
背景技术
如今云计算产业迅猛发展,云服务厂商提供越来越多的网络服务产品,其中负载均衡是其中最重要的一种产品。负载均衡服务承载着诸多业务,其中RDS(Remote DataServices,远程数据服务))是最重要的业务之一。由于RDS采用长连接机制,在传统的负载均衡服务中采用流表方式记录长连接状态信息,但一旦服务器集群中的记录此流表状态服务器出现异常宕机等问题,会导致流表状态丢失,进而导致RDS业务中断。
发明内容
为了解决上述问题,本发明提出了一种负载均衡服务转发方法、系统、均衡装置和宿主机,能够在当前服务器宕机后迅速恢复业务,保持RDS业务不中断。
为了达到上述目的,本发明提出了一种负载均衡服务转发方法,该方法包括:
在当前服务器发生故障时,将已经建立长连接的关系型数据库服务RDS数据包中的未处理数据包采用端口映射机制进行负载均衡处理。
将经过负载均衡处理的数据包转发到预设的备用服务器上。
通过备用服务器对经过负载均衡处理的数据包进行无状态转发。
可选地,将已经建立长连接的关系型数据库服务RDS数据包中的未处理数据包采用端口映射机制进行负载均衡处理包括:
从网络上接收未处理数据包。
解析未处理数据包的第一数据包头,从第一数据包头中提取互联网络协议IP包头;获取并保存IP包头中的目的IP和目的端口PORT。
对预先配置的哈希HASH表进行遍历,当在HASH表中未获得与目的IP和目的PORT相对应的配置信息时,丢弃未处理数据包;当在HASH表中获得与目的IP和目的PORT相对应的配置信息时,对未处理数据包进行HASH运算,并将目的IP替换为配置信息中的第一目的IP,将目的PORT替换为配置信息中的第一目的PORT。
可选地,将经过负载均衡处理的数据包转发到预设的备用服务器上是指:
根据第一目的IP和第一目的PORT,将经过HASH运算,以及经过第一目的IP和第一目的PORT替换的未处理数据包作为经过负载均衡处理的数据包转发到预设的备用服务器上。
其中,第一目的IP和第一目的PORT与预设的备用服务器相对应;预设的备用服务器包括:预设的服务器群组中未发生故障的服务器。
可选地,该方法还包括:从第一数据包头中提取第一传输控制协议TCP包头,在根据第一目的IP和第一目的PORT对未处理数据包进行转发之前,通过第一TCP包头的标志位判断未处理数据包是否为握手SYN数据包。
当判定未处理数据包不是SYN数据包时,根据第一目的IP和第一目的PORT对未处理数据包进行转发。
当判定未处理数据包是SYN数据包时,在TCP OPTION选项中增加选项密码OPCODE、虚拟互联网络协议VIP和虚拟端口VPORT,并重新封装增加了OPCODE、VIP和VPORT的TCP包头,重新计算TCP校验和;根据第一目的IP和第一目的PORT,对包含有重新封装的TCP包头和重新计算的TCP校验和的未处理数据包进行转发。
可选地,通过备用服务器对经过负载均衡处理的数据包进行无状态转发包括:
通过备用服务器接收数据包。
解析数据包的第二数据包头,从第二数据包头中提取第二TCP包头,并保存第二TCP包头中的相关信息。
通过第二TCP包头的标志位判断数据包是否为SYN数据包。
当判定数据包不是SYN数据包时,获取数据包的五元组状态信息;根据数据包的五元组状态信息查询预设的双向五元组流表中是否有与五元组状态信息相匹配的信息。
当预设的双向五元组流表中有与五元组状态信息相匹配的信息时,确定数据包为经过负载均衡处理的数据包,并根据匹配信息获取数据包的流向信息。
当数据包的流向信息为预设的第一流向时,将数据包转发至虚拟机;当数据包的流向信息为预设的第二流向时,从预设的双向五元组流表中获取VIP和VPORT,将数据包中的第一目的IP替换为VIP,将第一目的PORT替换为VPORT;重新计算TCP校验和;根据预设的标签将数据包直接转发给客户端。
其中,预设的标签与客户端一一对应。
可选地,该方法还包括:在确定数据包为经过负载均衡处理的数据包之前,当判定备用服务器接收到的数据包是与经过负载均衡处理的数据包相对应的SYN数据包时,解析数据包中的TCP OPTION选项,从TCP OPTION选项中提取OPCODE、VIP和VPORT,将不同的OPCODE、VIP和VPORT确定为与SYN数据包相对应的、经过负载均衡处理的不同的数据包的标签,并根据OPCODE、VIP和VPORT预先设置双向五元组流表;删除TCP OPTION选项中的信息并将数据包转发给虚拟机。
为了达到上述目的,本发明还提出了一种负载均衡服务转发系统,该系统包括:均衡处理模块、第一转发模块和第二转发模块。
均衡处理模块,用于在当前服务器发生故障时,将已经建立长连接的关系型数据库服务RDS数据包中的未处理数据包采用端口映射机制进行负载均衡处理。
第一转发模块,用于将经过负载均衡处理的数据包转发到第二转发模块上。
第二转发模块,用于对经过负载均衡处理的数据包进行无状态转发。
可选地,均衡处理模块将已经建立长连接的关系型数据库服务RDS数据包中的未处理数据包采用端口映射机制进行负载均衡处理包括:
从网络上接收未处理数据包。
解析未处理数据包的第一数据包头,从第一数据包头中提取互联网络协议IP包头;获取并保存IP包头中的目的IP和目的端口PORT。
对预先配置的哈希HASH表进行遍历,当在HASH表中未获得与目的IP和目的PORT相对应的配置信息时,丢弃未处理数据包;当在HASH表中获得与目的IP和目的PORT相对应的配置信息时,对未处理数据包进行HASH运算,并将目的IP替换为配置信息中的第一目的IP,将目的PORT替换为配置信息中的第一目的PORT。
可选地,第一转发模块将经过负载均衡处理的数据包转发到第二转发模块上是指:
根据第一目的IP和第一目的PORT,将经过HASH运算,以及经过第一目的IP和第一目的PORT替换的未处理数据包作为经过负载均衡处理的数据包转发到第二转发模块上。
其中,第一目的IP和第一目的PORT与第二转发模块相对应;第二转发模块包括:预设的服务器群组中未发生故障的服务器。
可选地,均衡处理模块还用于:从第一数据包头中提取第一传输控制协议TCP包头,在根据第一目的IP和第一目的PORT对未处理数据包进行转发之前,通过第一TCP包头的标志位判断未处理数据包是否为握手SYN数据包。
当判定未处理数据包不是SYN数据包时,根据第一目的IP和第一目的PORT对未处理数据包进行转发。
当判定未处理数据包是SYN数据包时,在TCP OPTION选项中增加选项密码OPCODE、虚拟互联网络协议VIP和虚拟端口VPORT,并重新封装增加了OPCODE、VIP和VPORT的TCP包头,重新计算TCP校验和;根据第一目的IP和第一目的PORT,对包含有重新封装的TCP包头和重新计算的TCP校验和的未处理数据包进行转发。
可选地,第二转发模块通过备用服务器对经过负载均衡处理的数据包进行无状态转发包括:
接收数据包。
解析数据包的第二数据包头,从第二数据包头中提取第二TCP包头,并保存第二TCP包头中的相关信息。
通过第二TCP包头的标志位判断数据包是否为SYN数据包。
当判定数据包不是SYN数据包时,获取数据包的五元组状态信息;根据数据包的五元组状态信息查询预设的双向五元组流表中是否有与五元组状态信息相匹配的信息。
当预设的双向五元组流表中有与五元组状态信息相匹配的信息时,确定数据包为经过负载均衡处理的数据包,并根据匹配信息获取数据包的流向信息。
当数据包的流向信息为预设的第一流向时,将数据包转发至虚拟机;当数据包的流向信息为预设的第二流向时,从预设的双向五元组流表中获取VIP和VPORT,将数据包中的第一目的IP替换为VIP,将第一目的PORT替换为VPORT;重新计算TCP校验和;根据预设的标签将数据包直接转发给客户端。
其中,预设的标签与客户端一一对应。
可选地,第二转发模块还用于:在确定数据包为经过负载均衡处理的数据包之前,当判定接收到的数据包是与经过负载均衡处理的数据包相对应的SYN数据包时,解析数据包中的TCP OPTION选项,从TCP OPTION选项中提取OPCODE、VIP和VPORT,将不同的OPCODE、VIP和VPORT确定为与SYN数据包相对应的、经过负载均衡处理的不同的数据包的标签,并根据OPCODE、VIP和VPORT预先设置双向五元组流表;删除TCP OPTION选项中的信息并将数据包转发给虚拟机。
一种负载均衡装置,该负载均衡装置包括所述的均衡处理模块和第一转发模块。
一种宿主机,该宿主机包括所述的第二转发模块。
与现有技术相比,本发明包括:在当前服务器发生故障时,将已经建立长连接的关系型数据库服务RDS数据包中的未处理数据包采用端口映射机制进行负载均衡处理。将经过负载均衡处理的数据包转发到预设的备用服务器上。通过备用服务器对经过负载均衡处理的数据包进行无状态转发。通过本发明的方案,能够在当前服务器宕机后迅速恢复业务,保持RDS业务不中断。
附图说明
下面对本发明实施例中的附图进行说明,实施例中的附图是用于对本发明的进一步理解,与说明书一起用于解释本发明,并不构成对本发明保护范围的限制。
图1为本发明的负载均衡服务转发方法流程图;
图2为本发明实施例中负载均衡处理阶段的方法示意图;
图3为本发明实施例中宿主机处理阶段的方法示意图;
图4为本发明的负载均衡服务转发系统组成框图;
图5为本发明实施例的负载均衡装置组成框图;
图6为本发明实施例的宿主机组成框图。
具体实施方式
为了便于本领域技术人员的理解,下面结合附图对本发明作进一步的描述,并不能用来限制本发明的保护范围。
目前负载均衡产品都是基于LVS实现的,LVS(Linux Virtual Server的简写,意即Linux虚拟服务器)是基于流表记录双向状态信息实现数据的双向通信,其未能有效的支持关系型数据库服务RDS这种长连接高可用的数据传输场景。
传统负载均衡服务内维护了传输控制协议TCP的链接流表,一旦一台服务器故障停机后,由于其他负载均衡服务器上没有状态流表信息,导致全部的RDS数据库长连接会断开(无论读写),对数据库业务影响很大。
本发明改进后的负载均衡服务转发采用非流表的TCP OPCODE端口映射机制,实现无状态流转,一台服务器故障后,已经建立长连接的后续包被转发到其它的负载均衡服务器上,这些服务器会无状态的正常转发数据包,保证RDS服务正常运行。
本发明在宿主机上对VM(Virtual Manufacturing虚拟机)上RDS业务的回包进行了处理,当VM回包直接发给CLIENT(客户端)时,将源IP和源端口PORT替换成相应的VIP和VPORT,从而保证了RDS服务正常运行。
为了达到上述目的,本发明提出了一种负载均衡服务转发方法,如图1所示,该方法包括:
S101、在当前服务器发生故障时,将已经建立长连接的关系型数据库服务RDS数据包中的未处理数据包采用端口映射机制进行负载均衡处理。
在本发明实施例中,对于已经建立长连接的RDS数据包中的未处理数据包的处理包括两个处理阶段,一个是负载均衡处理阶段,另一个是在宿主机处的处理阶段。下面我们首先介绍负载均衡处理阶段中如何对未处理数据包进行负载均衡处理。
可选地,将已经建立长连接的RDS数据包中的未处理数据包采用端口映射机制进行负载均衡处理包括:
S1011、从网络上接收未处理数据包。
在本发明实施例中,在当前服务器发生故障时,预设的负载均衡服务系统仍然继续从网络上接收后续的已经建立长连接的RDS数据包中的未处理数据包。
S1012、解析未处理数据包的第一数据包头,从第一数据包头中提取互联网络协议IP包头;获取并保存IP包头中的目的IP和目的PORT。
在本发明实施例中,对于数据包头的解析方法不做具体限制。
S1013、对预先配置的哈希HASH表进行遍历,当在HASH表中未获得与目的IP和目的PORT相对应的配置信息时,丢弃未处理数据包;当在HASH表中获得与目的IP和目的PORT相对应的配置信息时,对未处理数据包进行HASH运算,并将目的IP替换为配置信息中的第一目的IP,将目的PORT替换为配置信息中的第一目的PORT。
在本发明实施例中,HASH一般翻译做"散列",也直接译为"哈希",就是把任意长度的输入(又叫做预映射,pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,所以不可能从散列值来唯一的确定输入值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。
如果结构中存在和关键字K相等的记录,则必定在f(K)的存储位置上。由此,不需比较便可直接取得所查记录。称这个对应关系f为散列函数(Hash function),按这个思想建立的表为散列表。
对与不同的关键字,可能得到同一个散列地址,例如,key1≠key2,然而f(key1)=f(key2),这种现象称碰撞。具有相同函数值的关键字对该散列函数来说称做同义词。综上所述,根据散列函数H(key)和处理冲突的方法将一组关键字映象到一个有限的连续的地址集(区间)上,并以关键字在地址集中的"象"作为记录在表中的存储位置,这种表便称为散列表,或HASH表。这一映象过程称为散列造表或散列,所得的存储位置称散列地址。
可选地,该方法还包括:从第一数据包头中提取第一TCP包头,在根据第一目的IP和第一目的PORT对未处理数据包进行转发之前,通过第一TCP包头的标志位判断未处理数据包是否为握手SYN数据包。
SYN即synchronous,是TCP/IP建立连接时使用的握手信号。在客户机和服务器之间建立正常的TCP网络连接时,客户机首先发出一个SYN消息,服务器使用SYN+ACK应答表示接收到了这个消息,最后客户机再以ACK消息响应。这样在客户机和服务器之间才能建立起可靠的TCP连接,数据才可以在客户机和服务器之间传递。
在本发明实施例中,负载均衡服务系统接收到一个数据包以后,需要首先判断该数据包是不是SYN数据包。
当判定未处理数据包不是SYN数据包时,根据第一目的IP和第一目的PORT对未处理数据包进行转发。
当判定未处理数据包是SYN数据包时,在TCP OPTION选项中增加选项密码OPCODE、虚拟互联网络协议VIP和虚拟端口VPORT,并重新封装增加了OPCODE、VIP和VPORT的TCP包头,重新计算TCP校验和;根据第一目的IP和第一目的PORT,对包含有重新封装的TCP包头和重新计算的TCP校验和的未处理数据包进行转发。
S102、将经过负载均衡处理的数据包转发到预设的备用服务器上。
在本发明实施例中,负载均衡系统经过步骤S101中的方案对未处理的数据包进行负载均衡处理以后,将该数据包发送到备用设备上。这里该备用设备可以是备用的冗余服务器,也可以是未发生故障的服务器。
可选地,将经过负载均衡处理的数据包转发到预设的备用服务器上是指:
根据第一目的IP和第一目的PORT,将经过HASH运算,以及经过第一目的IP和第一目的PORT替换的未处理数据包作为经过负载均衡处理的数据包转发到预设的备用服务器上。
其中,第一目的IP和第一目的PORT与预设的备用服务器相对应;预设的备用服务器包括:预设的服务器群组中未发生故障的服务器。
S103、通过备用服务器对经过负载均衡处理的数据包进行无状态转发。
对于服务器来说,有一个基本设置十分重要,即,服务器是基于状态请求还是无状态请求。状态化的判断是指两个来自相同发起者的请求在服务器端是否具备上下文关系。如果是状态化请求,那么服务器端一般都要保存请求的相关信息,每个请求可以默认地使用以前的请求信息。而无状态请求则不行,服务器端所能够处理的过程,他的处理信息必须全部来自于请求所携带的信息以及其他服务器端自身所保存的、并且可以被所有请求所使用的公共信息。
在本发明实施例中,当服务器故障停机时,由于其他负载均衡服务器上没有状态流表信息,即发起者的请求在服务器端不具备上下文关系,因此,在本发明方案中,当服务器故障停机时,采用无状态转发的机制对经过负载均衡处理的数据包进行转发。
可选地,通过备用服务器对经过负载均衡处理的数据包进行无状态转发包括:
S1031、通过备用服务器接收数据包。
在本发明实施例中,预设的备用服务器按照正常程序接收数据包,一开始对于接收到的数据包并不会识别是否为与故障服务器对应的的转发数据包,还是本该发送给该备用服务器的正常数据包。
S1032、解析数据包的第二数据包头,从第二数据包头中提取第二TCP包头,并保存第二TCP包头中的相关信息。
S1033、通过第二TCP包头的标志位判断数据包是否为SYN数据包。
S1034、当判定数据包不是SYN数据包时,获取数据包的五元组状态信息;根据数据包的五元组状态信息查询预设的双向五元组流表中是否有与五元组状态信息相匹配的信息。
S1035、当预设的双向五元组流表中有与五元组状态信息相匹配的信息时,确定数据包为经过负载均衡处理的数据包,并根据匹配信息获取数据包的流向信息。
S1036、当数据包的流向信息为预设的第一流向时,将数据包转发至虚拟机;当数据包的流向信息为预设的第二流向时,从预设的双向五元组流表中获取VIP和VPORT,将数据包中的第一目的IP替换为VIP,将第一目的PORT替换为VPORT;重新计算TCP校验和;根据预设的标签将数据包直接转发给客户端。
其中,预设的标签与客户端一一对应。
在本发明实施例中,第一流向可以设置为IN方向,第二方向可以设置为OUT方向。
可选地,该方法还包括:在确定数据包为经过负载均衡处理的数据包之前,当判定备用服务器接收到的数据包是与经过负载均衡处理的数据包相对应的SYN数据包时,解析数据包中的TCP OPTION选项,从TCP OPTION选项中提取OPCODE、VIP和VPORT,将不同的OPCODE、VIP和VPORT确定为与SYN数据包相对应的、经过负载均衡处理的不同的数据包的标签,并根据OPCODE、VIP和VPORT预先设置双向五元组流表;删除TCP OPTION选项中的信息并将数据包转发给虚拟机。
另外,在本发明实施例中,当预设的双向五元组流表中没有与五元组状态信息相匹配的信息时,确定数据包不是经过负载均衡处理的数据包,即该数据包为本该发送给该备用服务器的正常数据包,则直接将该数据包进行转发。
为了达到上述目的,本发明还提出了一种负载均衡服务转发系统01,如图2所示,该系统包括:均衡处理模块02、第一转发模块03和第二转发模块04。
均衡处理模块02,用于在当前服务器发生故障时,将已经建立长连接的关系型数据库服务RDS数据包中的未处理数据包采用端口映射机制进行负载均衡处理。
在本发明实施例中,对于已经建立长连接的RDS数据包中的未处理数据包的处理包括两个处理阶段,一个是负载均衡处理阶段,另一个是在宿主机处的处理阶段。下面我们首先介绍负载均衡处理阶段中如何对未处理数据包进行负载均衡处理。
可选地,均衡处理模块02将已经建立长连接的关系型数据库服务RDS数据包中的未处理数据包采用端口映射机制进行负载均衡处理包括:
S201、从网络上接收未处理数据包。
在本发明实施例中,在当前服务器发生故障时,预设的负载均衡服务系统仍然继续从网络上接收后续的已经建立长连接的RDS数据包中的未处理数据包。
S202、解析未处理数据包的第一数据包头,从第一数据包头中提取互联网络协议IP包头;获取并保存IP包头中的目的IP和目的端口PORT。
在本发明实施例中,对于数据包头的解析方法不做具体限制。
S203、对预先配置的哈希HASH表进行遍历,当在HASH表中未获得与目的IP和目的PORT相对应的配置信息时,丢弃未处理数据包;当在HASH表中获得与目的IP和目的PORT相对应的配置信息时,对未处理数据包进行HASH运算,并将目的IP替换为配置信息中的第一目的IP,将目的PORT替换为配置信息中的第一目的PORT。
在本发明实施例中,HASH一般翻译做"散列",也直接译为"哈希",就是把任意长度的输入(又叫做预映射,pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,所以不可能从散列值来唯一的确定输入值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。
如果结构中存在和关键字K相等的记录,则必定在f(K)的存储位置上。由此,不需比较便可直接取得所查记录。称这个对应关系f为散列函数(Hash function),按这个思想建立的表为散列表。
对与不同的关键字,可能得到同一个散列地址,例如,key1≠key2,然而f(key1)=f(key2),这种现象称碰撞。具有相同函数值的关键字对该散列函数来说称做同义词。综上所述,根据散列函数H(key)和处理冲突的方法将一组关键字映象到一个有限的连续的地址集(区间)上,并以关键字在地址集中的"象"作为记录在表中的存储位置,这种表便称为散列表,或HASH表。这一映象过程称为散列造表或散列,所得的存储位置称散列地址。
可选地,均衡处理模块02还用于:从第一数据包头中提取第一传输控制协议TCP包头,在根据第一目的IP和第一目的PORT对未处理数据包进行转发之前,通过第一TCP包头的标志位判断未处理数据包是否为握手SYN数据包。
SYN即synchronous,是TCP/IP建立连接时使用的握手信号。在客户机和服务器之间建立正常的TCP网络连接时,客户机首先发出一个SYN消息,服务器使用SYN+ACK应答表示接收到了这个消息,最后客户机再以ACK消息响应。这样在客户机和服务器之间才能建立起可靠的TCP连接,数据才可以在客户机和服务器之间传递。
在本发明实施例中,负载均衡服务系统接收到一个数据包以后,需要首先判断该数据包是不是SYN数据包。
当判定未处理数据包不是SYN数据包时,根据第一目的IP和第一目的PORT对未处理数据包进行转发。
当判定未处理数据包是SYN数据包时,在TCP OPTION选项中增加选项密码OPCODE、虚拟互联网络协议VIP和虚拟端口VPORT,并重新封装增加了OPCODE、VIP和VPORT的TCP包头,重新计算TCP校验和;根据第一目的IP和第一目的PORT,对包含有重新封装的TCP包头和重新计算的TCP校验和的未处理数据包进行转发。
第一转发模块03,用于将经过负载均衡处理的数据包转发到第二转发模块上。
在本发明实施例中,负载均衡系统经过均衡处理模块02对未处理的数据包进行负载均衡处理以后,将该数据包发送到备用设备上。这里该备用设备可以是备用的冗余服务器,也可以是未发生故障的服务器。
可选地,第一转发模块03将经过负载均衡处理的数据包转发到第二转发模块04上是指:
根据第一目的IP和第一目的PORT,将经过HASH运算,以及经过第一目的IP和第一目的PORT替换的未处理数据包作为经过负载均衡处理的数据包转发到第二转发模块上。
其中,第一目的IP和第一目的PORT与第二转发模块相对应;第二转发模块包括:预设的服务器群组中未发生故障的服务器。
第二转发模块04,用于对经过负载均衡处理的数据包进行无状态转发。
对于服务器来说,有一个基本设置十分重要,即,服务器是基于状态请求还是无状态请求。状态化的判断是指两个来自相同发起者的请求在服务器端是否具备上下文关系。如果是状态化请求,那么服务器端一般都要保存请求的相关信息,每个请求可以默认地使用以前的请求信息。而无状态请求则不行,服务器端所能够处理的过程,他的处理信息必须全部来自于请求所携带的信息以及其他服务器端自身所保存的、并且可以被所有请求所使用的公共信息。
在本发明实施例中,当服务器故障停机时,由于其他负载均衡服务器上没有状态流表信息,即发起者的请求在服务器端不具备上下文关系,因此,在本发明方案中,当服务器故障停机时,采用无状态转发的机制对经过负载均衡处理的数据包进行转发。
可选地,第二转发模块04通过备用服务器对经过负载均衡处理的数据包进行无状态转发包括:
S301、接收数据包。
在本发明实施例中,第二转发模块04按照正常程序接收数据包,一开始对于接收到的数据包并不会识别是否为与故障服务器对应的的转发数据包,还是本该发送给该备用服务器的正常数据包。
S302、解析数据包的第二数据包头,从第二数据包头中提取第二TCP包头,并保存第二TCP包头中的相关信息。
S303、通过第二TCP包头的标志位判断数据包是否为SYN数据包。
S304、当判定数据包不是SYN数据包时,获取数据包的五元组状态信息;根据数据包的五元组状态信息查询预设的双向五元组流表中是否有与五元组状态信息相匹配的信息。
S305、当预设的双向五元组流表中有与五元组状态信息相匹配的信息时,确定数据包为经过负载均衡处理的数据包,并根据匹配信息获取数据包的流向信息。
S306、当数据包的流向信息为预设的第一流向时,将数据包转发至虚拟机;当数据包的流向信息为预设的第二流向时,从预设的双向五元组流表中获取VIP和VPORT,将数据包中的第一目的IP替换为VIP,将第一目的PORT替换为VPORT;重新计算TCP校验和;根据预设的标签将数据包直接转发给客户端。
其中,预设的标签与客户端一一对应。
在本发明实施例中,第一流向可以设置为IN方向,第二方向可以设置为OUT方向。
可选地,第二转发模块04还用于:在确定数据包为经过负载均衡处理的数据包之前,当判定接收到的数据包是与经过负载均衡处理的数据包相对应的SYN数据包时,解析数据包中的TCP OPTION选项,从TCP OPTION选项中提取OPCODE、VIP和VPORT,将不同的OPCODE、VIP和VPORT确定为与SYN数据包相对应的、经过负载均衡处理的不同的数据包的标签,并根据OPCODE、VIP和VPORT预先设置双向五元组流表;删除TCP OPTION选项中的信息并将数据包转发给虚拟机。
另外,在本发明实施例中,当预设的双向五元组流表中没有与五元组状态信息相匹配的信息时,确定数据包不是经过负载均衡处理的数据包,即该数据包为本该发送给该备用服务器的正常数据包,则直接将该数据包进行转发。
为了达到上述目的,本发明还提出了一种负载均衡装置11,如图5所示,该负载均衡装置包括所述的均衡处理模块02和第一转发模块03。
为了达到上述目的,本发明还提出了一种宿主机21,如图6所示,该宿主机包括所述的第二转发模块04。
与现有技术相比,本发明包括:在当前服务器发生故障时,将已经建立长连接的关系型数据库服务RDS数据包中的未处理数据包采用端口映射机制进行负载均衡处理。将经过负载均衡处理的数据包转发到预设的备用服务器上。通过备用服务器对经过负载均衡处理的数据包进行无状态转发。通过本发明的方案,能够在当前服务器宕机后迅速恢复业务,保持RDS业务不中断。
传统负载均衡服务内维护了TCP的链接流表,一旦一台服务器故障停机后,由于其他负载均衡服务器上没有状态流表信息,导致全部的RDS数据库长连接会断开(无论读写),对数据库业务影响很大。
本发明改进后的负载均衡服务转发采用非流表的TCP OPCODE端口映射机制,实现无状态流转,一台服务器故障后,已经建立长连接的后续包被转发到其它的负载均衡服务器上,这些服务器会无状态的正常转发数据包,保证RDS服务正常运行。
本发明在宿主机上对VM上RDS业务的回包进行了处理,当VM回包直接发给CLIENT(客户端)时,将源IP和源PORT替换成相应的VIP和VPORT,从而保证了RDS服务正常运行。
终上所述,本发明方案具有以下优势:
1、本发明采用无状态端口映射方式,可以支持RDS这样长连接负载均衡的业务模式,保证RDS业务不中断。
2、本发明实现了负载均衡的无状态化,这是传统负载均衡所不具备的。
需要说明的是,以上所述的实施例仅是为了便于本领域的技术人员理解而已,并不用于限制本发明的保护范围,在不脱离本发明的发明构思的前提下,本领域技术人员对本发明所做出的任何显而易见的替换和改进等均在本发明的保护范围之内。

Claims (10)

1.一种负载均衡服务转发方法,其特征在于,所述方法包括:
在当前服务器发生故障时,将已经建立长连接的关系型数据库服务RDS数据包中的未处理数据包采用端口映射机制进行负载均衡处理;
将经过所述负载均衡处理的数据包转发到预设的备用服务器上;
通过所述备用服务器对经过所述负载均衡处理的数据包进行无状态转发;
其中,所述将已经建立长连接的关系型数据库服务RDS数据包中的未处理数据包采用端口映射机制进行负载均衡处理包括:
从网络上接收所述未处理数据包;
解析所述未处理数据包的第一数据包头,从所述第一数据包头中提取互联网络协议IP包头;获取并保存所述IP包头中的目的IP和目的端口PORT;
对预先配置的哈希HASH表进行遍历,当在所述HASH表中未获得与所述目的IP和目的PORT相对应的配置信息时,丢弃所述未处理数据包;当在所述HASH表中获得与所述目的IP和目的PORT相对应的配置信息时,对所述未处理数据包进行HASH运算,并将所述目的IP替换为所述配置信息中的第一目的IP,将所述目的PORT替换为所述配置信息中的第一目的PORT;
从所述第一数据包头中提取第一传输控制协议TCP包头,在根据所述第一目的IP和所述第一目的PORT对所述未处理数据包进行转发之前,通过所述第一TCP包头的标志位判断所述未处理数据包是否为握手SYN数据包;
当判定所述未处理数据包不是所述SYN数据包时,根据所述第一目的IP和所述第一目的PORT对所述未处理数据包进行转发;
当判定所述未处理数据包是所述SYN数据包时,在TCP OPTION选项中增加选项密码OPCODE、虚拟互联网络协议VIP和虚拟端口VPORT,并重新封装增加了所述OPCODE、VIP和VPORT的TCP包头,重新计算TCP校验和;根据所述第一目的IP和所述第一目的PORT,对包含有重新封装的TCP包头和重新计算的TCP校验和的未处理数据包进行转发。
2.如权利要求1所述的负载均衡服务转发方法,其特征在于,所述将经过所述负载均衡处理的数据包转发到预设的备用服务器上是指:
根据所述第一目的IP和所述第一目的PORT,将经过所述HASH运算,以及经过所述第一目的IP和第一目的PORT替换的未处理数据包作为经过所述负载均衡处理的数据包转发到所述预设的备用服务器上;
其中,所述第一目的IP和所述第一目的PORT与所述预设的备用服务器相对应;所述预设的备用服务器包括:预设的服务器群组中未发生故障的服务器。
3.如权利要求1所述的负载均衡服务转发方法,其特征在于,所述通过所述备用服务器对经过所述负载均衡处理的数据包进行无状态转发包括:
通过所述备用服务器接收数据包;
解析所述数据包的第二数据包头,从所述第二数据包头中提取第二TCP包头,并保存所述第二TCP包头中的相关信息;
通过所述第二TCP包头的标志位判断所述数据包是否为所述SYN数据包;
当判定所述数据包不是所述SYN数据包时,获取所述数据包的五元组状态信息;根据所述数据包的五元组状态信息查询预设的双向五元组流表中是否有与所述五元组状态信息相匹配的信息;
当所述预设的双向五元组流表中有与所述五元组状态信息相匹配的信息时,确定所述数据包为经过所述负载均衡处理的数据包,并根据所述匹配信息获取所述数据包的流向信息;
当所述数据包的流向信息为预设的第一流向时,将所述数据包转发至虚拟机;当所述数据包的流向信息为预设的第二流向时,从所述预设的双向五元组流表中获取所述VIP和所述VPORT,将所述数据包中的所述第一目的IP替换为所述VIP,将所述第一目的PORT替换为所述VPORT;重新计算TCP校验和;根据预设的标签将所述数据包直接转发给客户端;
其中,所述预设的标签与所述客户端一一对应。
4.如权利要求3所述的负载均衡服务转发方法,其特征在于,所述方法还包括:在确定所述数据包为经过所述负载均衡处理的数据包之前,当判定所述备用服务器接收到的数据包是与经过所述负载均衡处理的数据包相对应的SYN数据包时,解析所述数据包中的所述TCP OPTION选项,从所述TCP OPTION选项中提取所述OPCODE、VIP和VPORT,将不同的所述OPCODE、VIP和VPORT确定为与所述SYN数据包相对应的、经过所述负载均衡处理的不同的数据包的标签,并根据所述OPCODE、VIP和VPORT预先设置所述双向五元组流表;删除所述TCPOPTION选项中的信息并将所述数据包转发给所述虚拟机。
5.一种负载均衡服务转发系统,其特征在于,所述系统包括:均衡处理模块、第一转发模块和第二转发模块;
所述均衡处理模块,用于在当前服务器发生故障时,将已经建立长连接的关系型数据库服务RDS数据包中的未处理数据包采用端口映射机制进行负载均衡处理;
所述第一转发模块,用于将经过所述负载均衡处理的数据包转发到所述第二转发模块上;
所述第二转发模块,用于对经过所述负载均衡处理的数据包进行无状态转发;
其中,所述均衡处理模块将已经建立长连接的关系型数据库服务RDS数据包中的未处理数据包采用端口映射机制进行负载均衡处理包括:
从网络上接收所述未处理数据包;
解析所述未处理数据包的第一数据包头,从所述第一数据包头中提取互联网络协议IP包头;获取并保存所述IP包头中的目的IP和目的端口PORT;
对预先配置的哈希HASH表进行遍历,当在所述HASH表中未获得与所述目的IP和目的PORT相对应的配置信息时,丢弃所述未处理数据包;当在所述HASH表中获得与所述目的IP和目的PORT相对应的配置信息时,对所述未处理数据包进行HASH运算,并将所述目的IP替换为所述配置信息中的第一目的IP,将所述目的PORT替换为所述配置信息中的第一目的PORT;
所述均衡处理模块还用于:从所述第一数据包头中提取第一传输控制协议TCP包头,在根据所述第一目的IP和所述第一目的PORT对所述未处理数据包进行转发之前,通过所述第一TCP包头的标志位判断所述未处理数据包是否为握手SYN数据包;
当判定所述未处理数据包不是所述SYN数据包时,根据所述第一目的IP和所述第一目的PORT对所述未处理数据包进行转发;
当判定所述未处理数据包是所述SYN数据包时,在TCP OPTION选项中增加选项密码OPCODE、虚拟互联网络协议VIP和虚拟端口VPORT,并重新封装增加了所述OPCODE、VIP和VPORT的TCP包头,重新计算TCP校验和;根据所述第一目的IP和所述第一目的PORT,对包含有重新封装的TCP包头和重新计算的TCP校验和的未处理数据包进行转发。
6.如权利要求5所述的负载均衡服务转发系统,其特征在于,所述第一转发模块将经过所述负载均衡处理的数据包转发到所述第二转发模块上是指:
根据所述第一目的IP和所述第一目的PORT,将经过所述HASH运算,以及经过所述第一目的IP和第一目的PORT替换的未处理数据包作为经过所述负载均衡处理的数据包转发到所述第二转发模块上;
其中,所述第一目的IP和所述第一目的PORT与所述第二转发模块相对应;所述第二转发模块包括:预设的服务器群组中未发生故障的服务器。
7.如权利要求5所述的负载均衡服务转发系统,其特征在于,所述第二转发模块通过备用服务器对经过所述负载均衡处理的数据包进行无状态转发包括:
接收数据包;
解析所述数据包的第二数据包头,从所述第二数据包头中提取第二TCP包头,并保存所述第二TCP包头中的相关信息;
通过所述第二TCP包头的标志位判断所述数据包是否为所述SYN数据包;
当判定所述数据包不是所述SYN数据包时,获取所述数据包的五元组状态信息;根据所述数据包的五元组状态信息查询预设的双向五元组流表中是否有与所述五元组状态信息相匹配的信息;
当所述预设的双向五元组流表中有与所述五元组状态信息相匹配的信息时,确定所述数据包为经过所述负载均衡处理的数据包,并根据所述匹配信息获取所述数据包的流向信息;
当所述数据包的流向信息为预设的第一流向时,将所述数据包转发至虚拟机;当所述数据包的流向信息为预设的第二流向时,从所述预设的双向五元组流表中获取所述VIP和所述VPORT,将所述数据包中的所述第一目的IP替换为所述VIP,将所述第一目的PORT替换为所述VPORT;重新计算TCP校验和;根据预设的标签将所述数据包直接转发给客户端;
其中,所述预设的标签与所述客户端一一对应。
8.如权利要求7所述的负载均衡服务转发系统,其特征在于,所述第二转发模块还用于:在确定所述数据包为经过所述负载均衡处理的数据包之前,当判定接收到的数据包是与经过所述负载均衡处理的数据包相对应的SYN数据包时,解析所述数据包中的所述TCPOPTION选项,从所述TCP OPTION选项中提取所述OPCODE、VIP和VPORT,将不同的所述OPCODE、VIP和VPORT确定为与所述SYN数据包相对应的、经过所述负载均衡处理的不同的数据包的标签,并根据所述OPCODE、VIP和VPORT预先设置所述双向五元组流表;删除所述TCPOPTION选项中的信息并将所述数据包转发给所述虚拟机。
9.一种负载均衡装置,其特征在于,所述负载均衡装置包括权利要求5-8任意一项所述的均衡处理模块和第一转发模块。
10.一种宿主机,其特征在于,所述宿主机包括权利要求5-8任意一项所述的第二转发模块。
CN201610366166.4A 2016-05-27 2016-05-27 一种负载均衡服务转发方法、系统、均衡装置和宿主机 Active CN107438012B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610366166.4A CN107438012B (zh) 2016-05-27 2016-05-27 一种负载均衡服务转发方法、系统、均衡装置和宿主机

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610366166.4A CN107438012B (zh) 2016-05-27 2016-05-27 一种负载均衡服务转发方法、系统、均衡装置和宿主机

Publications (2)

Publication Number Publication Date
CN107438012A CN107438012A (zh) 2017-12-05
CN107438012B true CN107438012B (zh) 2020-07-28

Family

ID=60453735

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610366166.4A Active CN107438012B (zh) 2016-05-27 2016-05-27 一种负载均衡服务转发方法、系统、均衡装置和宿主机

Country Status (1)

Country Link
CN (1) CN107438012B (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108495136B (zh) * 2018-03-09 2019-12-31 网宿科技股份有限公司 一种提供直播服务的方法和系统
CN108614750A (zh) * 2018-04-27 2018-10-02 中国联合网络通信集团有限公司 宕机数据的恢复方法及装置
CN111147674B (zh) * 2018-11-02 2023-09-01 北京京东尚科信息技术有限公司 一种呼叫中心实现负载均衡的方法和装置
CN109618000B (zh) * 2019-01-09 2021-08-31 广州视源电子科技股份有限公司 负载均衡服务的主从切换方法、装置、系统及服务器
CN109787912A (zh) * 2019-03-04 2019-05-21 南京邮电大学 一种dpdk环境下基于nat的负载均衡方法
CN112118275B (zh) * 2019-06-20 2023-07-11 北京车和家信息技术有限公司 过载处理方法、物联网平台及计算机可读存储介质
CN112866074B (zh) * 2019-11-28 2022-04-29 烽火通信科技股份有限公司 一种虚拟网络连接方法及虚拟网络系统
CN114040029A (zh) * 2021-11-11 2022-02-11 锐捷网络股份有限公司 报文压缩方法、装置、设备和存储介质
CN114640682B (zh) * 2022-05-11 2022-07-19 军事科学院系统工程研究院网络信息研究所 一种基于改进无状态哈希的负载均衡方法和系统

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1665206A (zh) * 2004-03-03 2005-09-07 华为技术有限公司 实现网络长连接倒换的方法
WO2009061973A1 (en) * 2007-11-09 2009-05-14 Blade Network Technologies, Inc. Session-less load balancing of client traffic across servers in a server group
WO2009146311A1 (en) * 2008-05-29 2009-12-03 Citrix Systems, Inc. Systems and methods for load balancing via a plurality of virtual servers upon failover using metrics from a backup virtual server
US8139572B1 (en) * 2005-08-19 2012-03-20 AT & T Intellectual Property II, LP Method for bi-directional symmetric routing in multi-homed networks with stateful firewalls
CN202424744U (zh) * 2011-12-06 2012-09-05 广东建科建筑工程质量检测中心 一种建设工程检测监管系统
US8850002B1 (en) * 2012-07-02 2014-09-30 Amazon Technologies, Inc. One-to many stateless load balancing
CN104348637A (zh) * 2013-07-26 2015-02-11 中国科学院声学研究所 一种在故障切换时保持tcp连接的方法
CN105591467A (zh) * 2014-10-24 2016-05-18 上海许继电气有限公司 基于面向服务架构的继电保护故障信息主站系统

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1665206A (zh) * 2004-03-03 2005-09-07 华为技术有限公司 实现网络长连接倒换的方法
US8139572B1 (en) * 2005-08-19 2012-03-20 AT & T Intellectual Property II, LP Method for bi-directional symmetric routing in multi-homed networks with stateful firewalls
WO2009061973A1 (en) * 2007-11-09 2009-05-14 Blade Network Technologies, Inc. Session-less load balancing of client traffic across servers in a server group
WO2009146311A1 (en) * 2008-05-29 2009-12-03 Citrix Systems, Inc. Systems and methods for load balancing via a plurality of virtual servers upon failover using metrics from a backup virtual server
CN202424744U (zh) * 2011-12-06 2012-09-05 广东建科建筑工程质量检测中心 一种建设工程检测监管系统
US8850002B1 (en) * 2012-07-02 2014-09-30 Amazon Technologies, Inc. One-to many stateless load balancing
CN104348637A (zh) * 2013-07-26 2015-02-11 中国科学院声学研究所 一种在故障切换时保持tcp连接的方法
CN105591467A (zh) * 2014-10-24 2016-05-18 上海许继电气有限公司 基于面向服务架构的继电保护故障信息主站系统

Also Published As

Publication number Publication date
CN107438012A (zh) 2017-12-05

Similar Documents

Publication Publication Date Title
CN107438012B (zh) 一种负载均衡服务转发方法、系统、均衡装置和宿主机
US9659075B2 (en) Providing high availability in an active/active appliance cluster
US7451193B1 (en) Method and apparatus for reducing overhead on a proxied connection
US9424325B2 (en) Recording medium, distribution controlling method, and information processing device
RU2380746C2 (ru) Выравнивание сетевой нагрузки с помощью информации статуса хоста
US7974186B2 (en) Connection recovery device, method and computer-readable medium storing therein processing program
JP4087271B2 (ja) 代理応答装置およびネットワークシステム
US8493839B2 (en) Method and system of teamed network adapters with offloaded connections
US20150019702A1 (en) Flexible flow offload
US9614928B1 (en) System and method for communication between networked applications
US10616321B2 (en) Distributed stateful load balancer
US10320951B2 (en) Systems and methods for establishing a virtual local area network
WO2020119328A1 (zh) 数据传输方法、装置、设备及存储介质
US10601692B2 (en) Integrating a communication bridge into a data processing system
CN110545230B (zh) 用于转发vxlan报文的方法和装置
JP5014199B2 (ja) 通信記録装置、通信データ処理方法および通信データ処理プログラム
US11444882B2 (en) Methods for dynamically controlling transmission control protocol push functionality and devices thereof
US20120266211A1 (en) Transparent database connection reconnect
US20160212083A9 (en) Connection sharing across entities in a distributed messaging system
JP6131710B2 (ja) 通信システム、負荷分散装置、および、負荷分散プログラム
US20090271521A1 (en) Method and system for providing end-to-end content-based load balancing
CN113612811B (zh) 一种在多通道中客户端挂载的方法、系统、设备及介质
US9584444B2 (en) Routing communication between computing platforms
CN116980231B (zh) 一种双链路冗余安全通信方法和装置
US20230370326A1 (en) Efficient state replication in sdn networks

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant