负载均衡方法和负载均衡器的制作方法

文档序号:7749857阅读:102来源:国知局
专利名称:负载均衡方法和负载均衡器的制作方法
技术领域
本发明总体上涉及计算机网络,尤其涉及一种负载均衡方法和负载均衡器。
背景技术
随着计算机等技术的发展,网络已遍及人们生活的各个角落。目前现有网络的各个核心部分随着业务量的提高,访问量和数据流量也得以快速增长,对其处理能力和计算能力的需求也相应地增大,这使得单个服务器根本无法承担。为了解决该问题,一种方法是扔掉现有设备而进行大量的硬件升级。这样,一方面会造成现有资源的浪费,另一方面如果再一次面临业务量提升时又将难以处理,我们知道即使性能再卓越的设备也不能满足无限增长的业务需求,所以当业务量再提升时就又需要进行大量的硬件升级的高额成本投入,因此,该方法成本很高,而且随着业务量提升,成本投入也不断加大。另一种方法是使用多台服务器来共同分担业务量,即,多个服务器。可以将后端的多个物理服务器进行分组,每组服务器支持某种应用,并为该组服务器设置一个虚IP/端口(v_ip:v_p0rt)来对外提供服务,而且在域名服务器(DNQ中存储的每个应用服务器地址就是该虚IP/端口,而不是真实的服务器地址。当客户端要访问服务器时,可以以v_ip v_port为目的IP/端口来发送数据包,根据该数据包中的目的IP/端口,在地址为 v_ip v_port的该组服务器中选择一个实服务器,然后将连接请求发给该实服务器。在多个服务器中选择一个实服务器,也即在各服务器间进行负载均衡,其目的是扩展现有网络和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。当前,在服务器间对网络数据流进行负载均衡的方法,比较常用的是4层负载均衡方法和7层负载均衡方法。下面介绍在NAT (Network Address ^Translate,网络地址转换)模式下4层负载均衡方法,如图1所示,其包括步骤1)以从客户端接收到的数据包的源IP/端口(c_ip:c_p0rt)和目的IP/端口(V_ip:V_port)为索引查找会话表(Session),其中,所述kssion指用于记录客户端连接信息的数据结构,v_ip:v_port指虚IP/端口,c_ip:c_p0rt指客户端IP/端口 ;如果找到,转到步骤4);如果未找到,进行步骤2)选择一台实服务器作为目标服务器;步骤 3)在 kssion 中建立一条条目(v_ip:v_port/c_ip:c_port/r_ip:r_port), 其中,r_ip:r_port指实服务器IP/端口 ;步骤4)根据kssion中与v_ip v_port/c_ip c_port对应的实服务器的IP和服务器端口(r_ip:r_p0rt),把所述数据包的目的IP/端口修改为实服务器IP和服务器端 Π ;步骤幻计算该数据包的校验和;步骤6)将数据包发给所述实服务器。上述是对进入数据流,即,从客户端到服务器的数据流的处理方法。
如图2所示,对于外出数据流,S卩,从服务器到客户端的数据流的处理,按如下步骤1’)以从实服务器发出的数据包的源IP/端口(r_ip:r_p0rt)和目的IP/端口(c_ip:c_port)为索弓I查找 Session ;如果未找到,丢弃该数据包,否则步骤2’ )根据义^化!!中相应的条目,把该数据包的源IP/端口修改为虚IP和端口(v_ip:v_p0rt);步骤3’)计算该数据包的校验和;步骤4’)将所述数据包发送给客户端。从上述可知,由于外出数据流的目的IP是客户端IP,所以无法在客户端配置主机或者网段路由(这是因为客户端IP地址包含了互联网各网段的IP地址,设定主机或者网段路由需要指定特定的IP地址或者网段匹配源IP地址,无法用少数几条路由涵盖所有客户端IP),而只能用默认路由处理(这是因为默认路由不需要指定特定的IP地址或者网段匹配源IP地址,可以用一条默认路由涵盖所有客户端),所以实服务器的默认路由必须指向负载均衡器。由于通过默认路由,服务器IP地址和负载均衡器后端IP地址需要设置为相同的网段,路由信息只能根据2层MAC地址获得,从而必须与负载均衡器2层互通。2层互通也即在OSI网络模型中的数据链路层连通,这将导致所有的实服务器都在一个广播域中,如果所有的实服务器并非都在一个广播域中,例如在不同交换机的 VLAN(Virtual LAN,虚拟局域网)中,那么需要打VLAN Trunk(VLAN Trunk是让连接在不同交换机上的相同VLAN中的主机2层互通的技术),并且还要在后端实服务器的同一块网卡上绑定多个IP地址通过策略路由实现和负载均衡器的3层互通。这将使机房的网络拓扑结构和RS配置的复杂化,从而导致维护困难。目前解决上述问题的方法是采用7层负载均衡技术。但是此方法修改了客户端的 IP地址,即将客户端IP地址修改为7层负载均衡器的后端IP地址,使得后端RS只能看到 7层负载均衡器的后端IP地址,由于常常需要对客户的行为进行分析,而对客户的行为进行分析是基于日志进行的,可是采用此方法,RS根本看不到客户端IP地址,也就是说,在日志中不存在客户端IP地址的影子,因此导致对客户行为的分析难以进行。其他7层负载均衡针对该问题的解决方案是将客户端IP地址放入HTTP头部X-Forwarded-For选项中,需要后端RS上的应用程序解析HTTP头,因此需要修改应用程序而导致复杂性增大。

发明内容
本发明要解决的主要技术问题是提供一种能够实现跨网段互联的负载均衡方法和负载均衡器。为了解决上述问题,本发明负载均衡方法的技术方案为其使用会话表来存储客户端IP/端口和虚IP/端口,并在所述会话表中增加了存储后端IP/端口的项,对于进入数据流处理步骤包括步骤(10),在该步骤(10)中以从客户端接收到的进入数据包的进入数据流源IP/ 端口和进入数据流目的IP/端口为索引查找所述会话表;如果未找到,执行步骤(20),在该步骤00)中选择一台实服务器作为目标服务器;否则执行步骤(50);在步骤00)之后执行步骤(30),在该步骤(30)中选择后端IP和后端端口 ;
步骤(40),在该步骤00)中根据所选择的目标服务器、后端IP和后端端口在会话表中建立一条条目,所述条目包括虚IP/端口、客户端IP/端口、实服务器IP/端口和后端 IP/端口 ;步骤(50),在该步骤(50)中根据会话表中的相应条目,把所述进入数据包的进入数据流目的IP/端口修改为实服务器IP/端口,以及把所述进入数据包的进入数据流源IP/ 端口修改为后端IP/端口 ;步骤(60),在该步骤(60)中计算所述进入数据包的校验和;步骤(70),在该步骤(70)中将计算过校验和的进入数据包发给所述实服务器。对于外出数据流处理步骤包括步骤(10’),在该步骤(10’ )中以从所述实服务器接收的外出数据包的外出数据流源IP/端口和外出数据流目的IP/端口为索引查找所述会话表;如果未找到,丢弃所述外出数据包;否则执行步骤00’),在该步骤00’ )中根据所述会话表中的相应条目,把所述外出数据包的外出数据流源IP/端口修改为虚IP/端口并把所述外出数据包的外出数据流目的IP/端口修改为客户端IP/端口 ;步骤(30’),在该步骤(30’ )中计算所述外出数据包的校验和;步骤00’),在该步骤00’)中将计算过校验和的外出数据包发送给所述客户端。其中,所述步骤O0)进一步包括步骤O01),在该步骤O01)中将所有实服务器的IP地址和端口以及当前负载通过列表组织起来;步骤002),在该步骤Q02)中将采用轮询算法在所述列表中顺次选择所述实服务器IP地址和端口。此外,所述步骤(30)进一步包括步骤(301),在步骤(301)中采用轮询算法选择一个后端IP ;步骤(302),在步骤(302)中采用轮询算法选择一个后端端口 ;步骤(303),在步骤(30 中在所述会话表中查找所选择的后端IP/端口,若找到, 则转到步骤(302)。优选地,在所述步骤(50)后还包括步骤(51),在步骤(51)中将所述相应条目中的客户端IP/端口作为新的TCP选项条目添加在数据报TCP头中。所述校验和包括IP头部校验和以及TCP头部校验和。所述会话表还包括流量统计、自旋锁和标志位。相应地,本发明负载均衡器的技术方案包括存储客户端IP/端口和虚IP/端口的会话表,所述会话表还包括存储后端IP/端口的项,所述负载均衡器还包括如下用于处理进入数据流的单元进入数据流查找单元,以从客户端接收到的进入数据包的进入数据流源IP/端口和进入数据流目的IP/端口为索引查找所述会话表;选择实服务器单元,用于选择一台实服务器作为目标服务器;选择后端IP和后端端口单元,用于选择后端IP和后端端口 ;建立条目单元,用于根据所选择的目标服务器、后端IP和后端端口在会话表中建
6立一条条目,所述条目包括虚IP/端口、客户端IP/端口、实服务器IP/端口和后端IP/端
π ;进入数据流修改单元,用于根据会话表中的相应条目,把所述进入数据包的进入数据流目的IP/端口修改为实服务器IP/端口,以及把所述进入数据包的进入数据流源IP/ 端口修改为后端IP/端口 ;进入数据流校验单元,用于计算所述进入数据包的校验和;进入数据流发送单元,用于将计算过校验和的进入数据包发给所述实服务器;其中,如果所述进入数据流查找单元的结果为否,则触发所述选择实服务器单元,否则触发所述进入数据流修改单元;所述选择实服务器单元连接所述选择后端IP和后端端口单元,其进而连接所述建立条目单元;所述建立条目单元连接所述进入数据流修改单元,其进而连接所述进入数据流校验单元后连接所述进入数据流发送单元。此外,本发明负载均衡器还包括下列处理外出数据流的单元外出数据流查找单元,用于以从所述实服务器接收的外出数据包的外出数据流源 IP/端口和外出数据流目的IP/端口为索引查找所述会话表;外出数据流修改单元,用于根据所述会话表中的相应条目,把所述外出数据包的外出数据流源IP/端口修改为虚IP/端口并把所述外出数据包的外出数据流目的IP/端口修改为客户端IP/端口 ;外出数据流校验单元,用于计算所述外出数据包校验和;外出数据流发送单元,用于将所述外出数据包发送给客户端;其中,如果所述外出数据流查找单元的结果为否,则丢弃所述数据包,否则触发所述外出数据流修改单元;所述外出数据流修改单元连接所述外出数据流校验单元,其进而连接所述外出数据流发送单元。另外,本发明负载均衡器还包括TCP选项添加单元,用于将所述相应条目中的客户端IP/端口作为新的TCP选项条目添加在数据报TCP头中。与现有技术相比,本发明负载均衡方法和负载均衡器的有益效果为首先,由于本发明采用了两次NAT转换,即SNAT和DNAT,实现了跨网段互联,从而不需要采用昂贵的7层负载均衡设备,扔掉现有设备进行大量硬件升级,也不需要设计复杂的网络拓扑就能够提高网络数据流处理能力。其次,由于本发明把客户端IP/端口作为新的TCP选项条目添加在数据报TCP头, 所以应用程序不需要修改就可以获得客户端IP地址,便于大规模的应用程序迁移。


下面参考结合附图所进行的下列描述以便更透彻地理解本公开内容,在附图中图1是现有技术负载均衡方法对进入数据流的处理的流程图;图2是现有技术负载均衡方法对外出数据流的处理的流程图3是本发明负载均衡方法对进入数据流的处理的流程图;图4是本发明负载均衡方法对外出数据流的处理的流程图;图5是本发明负载均衡器对进入数据流进行处理的结构示意图;图6是本发明负载均衡器对外出数据流进行处理的结构示意图; 图7是包括两台负载均衡器的示例的示意图。
具体实施例方式下面将详细描述本发明的具体实施例,但本发明并不限于下述具体实施例。如图3所示,本发明负载均衡方法,使用会话表来存储客户端IP/端口和虚IP/端口,在所述会话表中增加存储后端IP/端口的项,例如下表1所示
权利要求
1.一种负载均衡方法,使用会话表来存储客户端IP/端口和虚IP/端口,其特征在于, 在所述会话表中增加存储后端IP/端口的项,对于进入数据流处理步骤包括步骤(10),在该步骤(10)中以从客户端接收到的进入数据包的进入数据流源IP/端口和进入数据流目的IP/端口为索引查找所述会话表;如果未找到,执行步骤(20),在该步骤00)中选择一台实服务器作为目标服务器;否则执行步骤(50);在步骤00)之后执行步骤(30),在该步骤(30)中选择后端IP和后端端口 ; 步骤(40),在该步骤00)中根据所选择的目标服务器、后端IP和后端端口在会话表中建立一条条目,所述条目包括虚IP/端口、客户端IP/端口、实服务器IP/端口和后端IP/ 端□;步骤(50),在该步骤(50)中根据会话表中的相应条目,把所述进入数据包的进入数据流目的IP/端口修改为实服务器IP/端口,以及把所述进入数据包的进入数据流源IP/端口修改为后端IP/端口 ;步骤(60),在该步骤(60)中计算所述进入数据包的校验和;步骤(70),在该步骤(70)中将计算过校验和的进入数据包发给所述实服务器。
2.如权利要求1所述的负载均衡方法,其特征在于,对于外出数据流处理步骤包括 步骤(10’),在该步骤(10’ )中以从所述实服务器接收的外出数据包的外出数据流源IP/端口和外出数据流目的IP/端口为索弓I查找所述会话表;如果未找到,丢弃所述外出数据包;否则执行步骤00’),在该步骤00’ )中根据所述会话表中的相应条目,把所述外出数据包的外出数据流源IP/端口修改为虚IP/端口并把所述外出数据包的外出数据流目的IP/端口修改为客户端IP/端口 ; 步骤(30’),在该步骤(30’ )中计算所述外出数据包的校验和; 步骤00’),在该步骤00’ )中将计算过校验和的外出数据包发送给所述客户端。
3.如权利要求2所述的负载均衡方法,其特征在于,所述步骤O0)进一步包括 步骤001),在该步骤O01)中将所有实服务器的IP地址和端口以及当前负载通过列表组织起来;步骤002),在该步骤Q02)中将采用轮询算法在所述列表中顺次选择所述实服务器 IP地址和端口。
4.如权利要求3所述的负载均衡方法,其特征在于,所述步骤(30)进一步包括 步骤(301),在步骤(301)中采用轮询算法选择一个后端IP ;步骤(302),在步骤(302)中采用轮询算法选择一个后端端口 ; 步骤(303),在步骤(30 中在所述会话表中查找所选择的后端IP/端口,若找到,则转到步骤(302)。
5.如权利要求1至3任一项所述的负载均衡方法,其特征在于,在所述步骤(50)后还包括步骤(51),在步骤(51)中将所述相应条目中的客户端IP/端口作为新的TCP选项条目添加在数据报TCP头中。
6.如权利要求5所述的负载均衡方法,其特征在于,所述校验和包括IP头部校验和以及TCP头部校验和。
7.如权利要求6所述的负载均衡方法,其特征在于,所述会话表还包括流量统计、自旋锁和标志位。
8.一种负载均衡器,包括存储客户端IP/端口和虚IP/端口的会话表,其特征在于,所述会话表还包括存储后端IP/端口的项,所述负载均衡器还包括如下用于处理进入数据流的单元进入数据流查找单元,以从客户端接收到的进入数据包的进入数据流源IP/端口和进入数据流目的IP/端口为索引查找所述会话表;选择实服务器单元,用于选择一台实服务器作为目标服务器; 选择后端IP和后端端口单元,用于选择后端IP和后端端口 ; 建立条目单元,用于根据所选择的目标服务器、后端IP和后端端口在会话表中建立一条条目,所述条目包括虚IP/端口、客户端IP/端口、实服务器IP/端口和后端IP/端口;进入数据流修改单元,用于根据会话表中的相应条目,把所述进入数据包的进入数据流目的IP/端口修改为实服务器IP/端口,以及把所述进入数据包的进入数据流源IP/端口修改为后端IP/端口 ;进入数据流校验单元,用于计算所述进入数据包的校验和; 进入数据流发送单元,用于将计算过校验和的进入数据包发给所述实服务器;其中, 如果所述进入数据流查找单元的结果为否,则触发所述选择实服务器单元,否则触发所述进入数据流修改单元;所述选择实服务器单元连接所述选择后端IP和后端端口单元,其进而连接所述建立条目单元;所述建立条目单元连接所述进入数据流修改单元,其进而连接所述进入数据流校验单元后连接所述进入数据流发送单元。
9.如权利要求8所述的负载均衡器,其特征在于,还包括下列处理外出数据流的单元 外出数据流查找单元,用于以从所述实服务器接收的外出数据包的外出数据流源IP/端口和外出数据流目的IP/端口为索引查找所述会话表;外出数据流修改单元,用于根据所述会话表中的相应条目,把所述外出数据包的外出数据流源IP/端口修改为虚IP/端口并把所述外出数据包的外出数据流目的IP/端口修改为客户端IP/端口 ;外出数据流校验单元,用于计算所述外出数据包校验和; 外出数据流发送单元,用于将计算过校验和的外出数据包发送给客户端;其中, 如果所述外出数据流查找单元的结果为否,则丢弃所述数据包,否则触发所述外出数据流修改单元;所述外出数据流修改单元连接所述外出数据流校验单元,其进而连接所述外出数据流发送单元。
10.如权利要求9所述的负载均衡器,其特征在于,还包括TCP选项添加单元,用于将所述相应条目中的客户端IP/端口作为新的TCP选项条目添加在数据报TCP头中。
全文摘要
本发明公开了一种负载均衡方法和负载均衡器。本发明负载均衡方法使用会话表来存储客户端IP/端口和虚IP/端口,在所述会话表中增加存储后端IP/端口的项,对于进入数据流,若在所述会话表中找不到以进入数据流源IP/端口和进入数据流目的IP/端口为索引的条目,则选择实服务器、后端IP和后端端口,并在会话表中建立一条条目,该条目包括虚IP/端口、客户端IP/端口、实服务器IP/端口和后端IP/端口,然后根据会话表中的相应条目,把所述进入数据包的进入数据流目的IP/端口修改为实服务器IP/端口,以及把所述进入数据包的进入数据流源IP/端口修改为后端IP/端口,即进行两次NAT转换;对于外出数据流也同样进行两次NAT转换。因此,采用本发明的技术方案能够实现跨网段互联。
文档编号H04L29/08GK102255932SQ201010184118
公开日2011年11月23日 申请日期2010年5月20日 优先权日2010年5月20日
发明者吴佳明, 孙垚光, 李闻, 田燕, 陈建 申请人:百度在线网络技术(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1