服务器负载分担系统的制作方法

文档序号:7944205阅读:287来源:国知局
专利名称:服务器负载分担系统的制作方法
技术领域
本发明涉及一种服务器负载分担系统,在该系统中,通过诸如因特网或内部网的IP(网际协议)网,以一种保持服务器负载分担的方式,进行服务器与客户机之间的通信。
背景技术
通过多链路PPP(点对点协议)和多成本相等路径(multi-cost equal path),举例说明一种常规负载分担方法。
多链路PPP被定义为一种在ISDN(综合业务数字网)等中使用的方法,并且如果线路速率低时被设计用来在相邻系统之间提供多个链路(物理线路),并把负载分担到这些链路。例如,在ISDN中通过使用2B信道(64Kbps),多链路PPP可以提供具有128Kbps(传输速率)带宽的通信。
此外,该多成本相等路径被定义为这样一种方法预留多个路径,以便在基于一个路由选择协议的动态路由选择中,使到目的地的成本最小化,并在这些路径中分担负载。可以在由RFC1247定义的OSPF(开放式最短路径优先)中以此方式利用该多成本相等路径。
当在每个分组可以通过任何一个链路的情况下,上述负载分担方法是有效的。
而另一种常规负载分担方法可以通过利用至少一个服务器负载平衡器(服务器负载分担设备),把负载分担到多个服务器上。基于服务器负载平衡器的服务器负载分担具有一个限制属于同一个会话的分组必须通过同一个链路转发,以便该会话不会被中断。
图1示出了使用一个服务器负载平衡器的第一常规服务器负载分担系统的一个示例。参照图1,该服务器负载平衡器的服务器负载平衡功能被分为基于与OSI参考模型中的传输层相同或更高级的协议类型的负载分担功能(L4(第4层)负载平衡功能),和基于关于OSI参考模型中的应用层的信息(L7信息)的负载分担功能(L7(第7层)负载平衡功能)。
即,L4负载平衡功能是由一个客户机终端发送并通过IP网(因特网或内部网)和L3交换机接收的转发目标分组,基于L4协议的类型(即,TCP(传输控制协议)或UDP(用户数据报协议)中的端口号)被识别为电子邮件(POP邮局协议或SMTP简单邮件传送协议)或文件传送(FTP文件传送协议)或网页查询(HTTP超文本传送协议),并把该分组分配到多个负载分担目标服务器中的任何一个上。
此外,L7负载平衡功能是根据诸如应答时间或URL(统一资源定位符)的L7信息,把转发目标分组分配到多个负载分担目标服务器中的任何一个上。
作为网络中继设备的L3交换机被定义为一种用于在OSI参考模型中的网络层把各网络相互连接的交换机或路由器。
根据不中断会话的限制,涉及使用一个服务器负载平衡器的该第一服务器负载分担系统不能安装多个服务器负载平衡器。因此,如果在服务器与客户机之间的通信中转发大量分组,则该服务器负载平衡器不可避免地会对处理速率构成瓶颈。
图2示出了涉及使用多个服务器负载平衡器的第二服务器负载分担系统的一个示例。
该第二服务器负载分担系统在这些服务器负载平衡器的前一级安装一个L4交换机(第4层交换机),以便可以提供该多个服务器负载平衡器(a,b)。
作为网络中继设备的L4交换机被定义为一种交换机或网关,其用于通过在从传输层(L4)到应用层(L7)的不同类型协议之间进行转换的方式相互连接各网络,同时吸收网络间的差别。
因此,L4交换机利用L4负载平衡功能把分组分配到多个服务器负载平衡器上。在此示例中,如果用于转发分组的协议是FTP,则L4交换机把分组分配到服务器负载平衡器(a),如果该协议是HTTP,则L4交换机把分组分配到服务器负载平衡器(b)。
通过L3交换机利用L7负载平衡功能,使得每个服务器负载平衡器能够把转发目标分组分配到多个负载分担目标服务器中的任何一个。
上述第二服务器负载分担系统能够安装多个服务器负载平衡器,因此基本上减小了每个服务器负载平衡器成为处理速率的瓶颈的可能性。如果依据协议,在服务器与客户机间通信中转发的分组业务量出现集中,则相应的服务器负载平衡器成为处理速率的瓶颈仍是不可避免的。

发明内容
本发明的一个主要目的是提供一种技术,该技术能够避免多个服务器负载平衡器中的每一个成为服务器与客户机间通信中的分组的处理速率的瓶颈。
本发明的另一个目的是提供一种技术,即使依据协议,服务器与客户机间通信中的分组业务量出现集中时,该技术也能够把分组均匀地分配到多个负载分担目标服务器上。
为了实现上述目的,根据本发明的一个方面,第一服务器负载分担系统具有多个服务器负载平衡器和一个中继设备。多个服务器负载平衡器中的每一个容纳至少第一和第二链路,并包括一个选择模块,当通过该第一和第二链路之一接收到一个地址去往预定的虚拟IP地址的转发目标分组时,该模块选择基于该虚拟IP地址的服务器组所指定的多个负载分担目标服务器中的任何一个,并且每个服务器分配有一个唯一的IP地址;以及一个重写模块,该模块把接收到的地址去往虚拟IP地址的转发目标分组的该虚拟IP地址重写为所选负载分担目标服务器的唯一IP地址,并把接收到的地址去往虚拟IP地址的转发目标分组的源IP地址重写为可以指定第一和第二链路中另一个链路的IP地址。通过第一和第二链路,中继设备被连接到多个服务器负载平衡器的每一个上,该中继设备包括一个识别模块,用于识别所接收到的地址去往虚拟IP地址的转发目标分组;一个选择模块,用于选择第一和第二链路之一以把所识别的地址去往虚拟IP地址的转发目标分组转发到多个服务器负载平衡器之一;以及一个转发模块,用于把通过第一和第二链路中的另一个链路从多个服务器负载平衡器中的任何一个接收的转发目标分组转发到所选负载分担目标服务器上,并通过第一和第二链路中的另一个链路把从所选负载分担目标服务器发回的转发目标分组转发到多个服务器负载平衡器中的任何一个上。
在根据本发明的第二服务器负载分担系统中,中继设备的选择模块可以选择第一和第二链路之一,以基于一个伪随机数把分组转发到多个服务器负载平衡器中的任何一个,其中该伪随机数是通过在所识别的地址去往虚拟IP地址的转发目标分组中包含的源IP地址值上应用一个单向函数(one-way function)产生的。
在根据本发明的第三服务器负载分担系统中,每个服务器负载平衡器还包括一个重写模块,当通过中继设备与第一和第二链路中另一个链路,接收到从所选负载分担目标服务器发回的转发目标分组时,该模块把所选负载分担目标服务器的唯一IP地址(包含在接收到的转发目标分组中)重写为虚拟IP地址,作为源IP地址,并把能够指定第一和第二链路中另一个链路的IP地址(包含在接收到的转发目标分组中)重写为源IP地址(已包含在地址去往该虚拟IP地址的转发目标分组中),作为目的地IP地址,并使该中继设备通过第一和第二链路之一转发该分组。
在根据本发明的第四服务器负载分担系统中,该中继设备可以还包括一个设置模块,该模块把多个服务器负载平衡器中的每一个所容纳的第一和第二链路设置为一组,周期性地把一个监测分组发送到每组的第一和第二链路上,并把属于包含无应答链路的组的第一和第二链路作为故障链路从选择目标链路中去除。
在根据本发明的第五服务器负载分担系统中,该中继设备可以还包括一个设置模块,当在多个服务器负载平衡器的每一个所容纳的第一和第二链路中检测到故障的情况下,以保持以下分配状态的方式,设置把该转发目标分组分配到容纳第一和第二正常链路的正常服务器负载平衡器上,并只针对分配到容纳第一和第二故障链路的故障服务器负载平衡器上的转发目标分组,把分配状态改变到正常服务器负载平衡器上。
根据本发明的另一个方面,在多个服务器负载平衡器的每一个中容纳至少第一和第二链路,第一服务器负载分担方法包括当通过第一和第二链路之一接收到一个地址去往预定的虚拟IP地址的转发目标分组时,选择基于该虚拟IP地址的服务器组中所指定的多个负载分担目标服务器中的任何一个,并且每个服务器分配有一个唯一的IP地址;和把接收到的地址去往该虚拟IP地址的转发目标分组的虚拟IP地址重写为所选负载分担目标服务器的唯一的IP地址,以及把接收到的地址去往该虚拟IP地址的转发目标分组的源IP地址重写为能够指定第一和第二链路中另一个链路的IP地址。在通过第一和第二链路连接到多个服务器负载平衡器中的每一个的中继设备中,该第一服务器负载分担方法还包括识别所接收到的地址去往该虚拟IP地址的转发目标分组;选择第一和第二链路之一以把所识别的地址去往该虚拟IP地址的转发目标分组转发到多个服务器负载平衡器之一;并把通过第一和第二链路中的另一个链路从多个服务器负载平衡器中的任何一个接收到的转发目标分组转发到所选负载分担目标服务器上;以及通过第一和第二链路中的另一个链路把从所选负载分担目标服务器上发回的转发目标分组转发到多个服务器负载平衡器中的任何一个。
根据本发明的第二服务器负载分担方法可以还包括在中继设备中,选择第一和第二链路之一,以基于一个伪随机数把分组转发到多个服务器负载平衡器中的任何一个,其中该伪随机数是通过在所识别的地址去往虚拟IP地址的转发目标分组中包含的源IP地址值上应用一个单向函数产生的。
根据本发明的第三服务器负载分担方法可以还包括在每个服务器负载平衡器中,当通过中继设备与第一和第二链路中的另一个链路,接收到从所选负载分担目标服务器发回的转发目标分组时,把所选负载分担目标服务器的唯一的IP地址(包含在接收到的转发目标分组中)重写为虚拟IP地址,作为源IP地址,并把能够指定第一和第二链路中另一个链路的IP地址(包含在接收到的转发目标分组中)重写为源IP地址(已包含在地址去往该虚拟IP地址的转发目标分组中),作为目的地IP地址,并使该中继设备通过第一和第二链路之一转发该分组。
根据本发明的第四服务器负载分担方法可以还包括在该中继设备中,把多个服务器负载平衡器中的每一个所容纳的第一和第二链路设置为一组,周期性地把一个监测分组发送到每组的第一和第二链路上,并把属于包含无应答链路的组的第一和第二链路作为故障链路从选择目标链路中去除。
根据本发明的第五服务器负载分担方法可以还包括在该中继设备中,当在多个服务器负载平衡器中的每一个所容纳的第一和第二链路中检测到故障的情况下,以保持以下分配状态的方式,设置把该转发目标分组分配到容纳第一和第二正常链路的正常服务器负载平衡器上,并只针对分配到容纳第一和第二故障链路的故障服务器负载平衡器上的转发目标分组,把分配状态改变到正常服务器负载平衡器上。
根据本发明的再一个方面,服务器负载分担设备包括把负载分担到多个服务器上的多个服务器负载平衡功能,其中,根据从客户机终端接收到的分组的源识别信息,指定该服务器负载平衡功能之一来执行处理。
根据本发明,可以避免使多个服务器负载平衡器中的每一个成为服务器与客户机间通信中的分组处理速率的瓶颈,从而可以在服务器与客户机之间获得高速通信。
此外,根据本发明,即使根据协议(如FTP,POP,SMTP,HTTP等),在服务器与客户机间通信中的分组转发业务量出现集中,分组也可以被均匀地分配到多个负载分担目标服务器上。
因此,本发明对于今后将加速发展的Web通信是很有效的。
此外,根据本发明,出局和环回转发目标分组可以流过同一个服务器负载平衡器。
而且,根据本发明,当在中继设备和每个服务器负载平衡器之间提供多个链路时,如果在转发出局转发目标分组的链路中或在转发环回转发目标分组的链路中发生故障,就不能获得正常的通信,从而可以确切地检测出该故障。此外,根据本发明,当在服务器负载平衡器中或在链路中发生故障时,可以最大可能地继续正在进行的会话。


结合附图,通过参考下面的详细描述,可以更好地理解本发明的上述及其他特征和优点,在附图中图1是显示涉及使用一个单独的服务器负载平衡器的常规服务器负载分担系统的一个示例的方框图;图2是显示涉及使用多个服务器负载平衡器的常规服务器负载分担系统的一个示例的方框图;图3是显示本发明的一个实施例中的一个服务器负载分担系统的结构以及一个出局分组流的方框图;图4是显示本发明的一个实施例中的一个服务器负载分担系统的结构以及一个返回分组流的方框图;图5是显示图3和4中的路由器的详细结构的方框图;图6是显示由路由器进行的分组路由选择处理的流程略图;图7是显示通过对源IP地址应用Hash函数来选择链路的方法的解释图;图8是显示图3和4中的服务器负载平衡器的详细结构的方框图;图9示出了服务器负载平衡器的会话表的数据结构的一个示例;图10是显示服务器负载平衡器中的处理程序的流程略图;
图11是图3所示的服务器负载分担系统中的一个出局分组处理的解释图;图12是图4所示的服务器负载分担系统中的一个环回分组处理的解释图;图13是显示路由器中的故障检测/恢复处理的解释图;以及图14是显示在路由器中进行缩退(degenerating)和恢复处理时的一个链路选择处理的解释图。
具体实施例方式
下面,结合附图对本发明的实施例进行说明。
图3和4示出了本发明的一个实施例中的一个服务器负载分担系统的结构,并分别示出了分组的一个出局流和一个返回流。
参照图3和4,该服务器负载分担系统1包括多个连接到IP网络2(如因特网或内部网)的诸如个人计算机的客户机终端3(其中之一被描述成一个典型终端);连接到该IP网络2的路由器4;连接到路由器4的多个服务器负载平衡器(SLB#1,#2至#N)5;和通过LAN(局域网)6连接到路由器4的被定义为一个负载分担目标服务器组的多个服务器(#1,#2,#3)7。
作为网络中继设备的路由器4可以由L3交换机替代,该L3交换机在基于OSI(开放式系统互联)参考模型的网络层(L3)将网络互联。
此外,该路由器4也可以被作为网络中继设备的L4交换机替代,该L4交换机通过在从传输层(L4)到应用层(L7)的不同类型协议之间进行转换并吸收网络间差异的方式,将网络互联。
在LAN 6中,该路由器4可以被L2交换机替代,该L2交换机在OSI参考模型的数据链路层(L2)将网络互联。
通过多个(两个或更多)物理链路,每个服务器负载平衡器5连接到路由器4。本发明的实施例涉及提供多个(两个或更多)服务器负载平衡器5。
根据基于先前登记在服务器负载平衡器5中的虚拟IP地址[IpA.1]的服务器组,指定该负载分担目标服务器组的每个服务器(也可以被称为负载分担目标服务器)7,并为每个服务器7分配一个唯一的IP地址。此外,每个服务器7存储关于电子邮件,文件转发,网页查阅等中至少一类的数据。
应注意,后面将对该服务器负载分担系统1中的出局分组流和返回分组流的处理进行讨论。
在图3和4所示的服务器负载分担系统1中,作为负载分担中继设备的路由器4具有图5中详细显示的结构。
如图5所示,路由器4由路由选择模块41,分组转发模块43,分组接收模块44,分组辨别模块45,故障查找模块46和链路选择模块47构成。路由选择模块41具有路由选择表42。链路选择模块47具有表48。
路由选择模块41控制正常的分组路由选择。当从分组辨别模块45接收到一个分组时(在图5中由箭头线e表示),该路由选择模块41通过参照存储有地址(IP地址)到转发接口(路由器4的端口号)的映射的路由选择表42,选择一个用于转发该接收到的分组的接口,并指示分组转发模块43转发该分组(f)。
作为对路由选择模块41给出的指示的响应,分组转发模块43执行一个分组转发处理(g)。分组接收模块44接收该分组(a)。当通过分组接收模块44接收到该地址去往预定的虚拟IP地址[IpA.1]的分组时,分组辨别模块45把该分组发送到链路选择模块47(b,c),如果不是这种情况(不去往虚拟IP地址),则模块45把该分组发送到路由选择模块41(b,e)。
链路选择模块47从表48中选择分组转发目标服务器负载平衡器5,其中该平衡器5应该是从分组辨别模块45发送的地址去往虚拟IP地址的分组被转发到的平衡器,并且,链路选择模块47对分组转发模块43发出一个分组转发指示(d)。表48中预先存有多个服务器负载平衡器5对多个链路的映射。
故障查找模块46周期性地发送一个ICMP(互联网控制消息协议)-ECHO请求消息给每个服务器负载平衡器5,以便确保到每个服务器负载平衡器5的链路正常工作,并监测一个ICMP-ECHO应答消息作为对此的应答(h,g,a,I)。该监测结果被反映在表48中(j)。
故障查找模块46将连接到同一个服务器负载平衡器5的多个链路放在一组中,并且,如果该组中只有一个链路在固定时段内没有应答,则判断属于该组的所有链路都发生故障(错误)。当发回了该组中的所有链路的应答时,故障查找模块46判断该组正常。
图6是路由器4的一个分组路由选择程序的概略图。当具有上述结构的路由器4的分组接收模块44接收到分组时(图6中的步骤S60),分组辨别模块45对所接收到的分组进行识别。
如果接收到的分组被识别是地址去往预定的虚拟IP地址的分组时,链路选择模块47根据一个特定算法(定义为一种如后面所述的用于通过散列(应用Hash函数)一个源IP地址来选择一个链路的程序),确定该分组应该被转发到哪个链路(S61,S62)。
在这种情况下,链路选择模块47参考表48,仅把没有故障的链路设置为选择目标链路。如果该接收到的分组被识别不是地址去往预定的虚拟地址的分组,则路由选择模块41执行正常的路由选择处理(分组路由选择处理)(S61,S63)。
分组转发模块43把分组转发到根据该特定算法确定的链路。而如果该接收到的分组被识别是地址去往预定的虚拟地址的分组,则该分组被转发到对应于该确定的链路的服务器负载平衡器5上,并成为负载分担目标的一个元素。
下面参照图7,对在链路选择模块47中通过对源IP地址应用Hash函数以选择链路的程序(上述特定算法)进行说明。
链路选择模块47在由分组辨别模块45转发的分组的源IP地址值(例如,[10.10.10.1=10101001])上应用Hash函数f(x)(定义为不可逆单向函数)。
该Hash函数被用做一种运算技术,以从输入的原文(明文)中生成一个固定长度的伪随机数(Hash值),从而链路选择模块47可以获得一个Hash值(例如[1])作为一个运算结果。
通过利用该Hash值[1],链路选择模块47选择一个链路。在此情况下,选择链路号为[1]的链路。注意到,用于链路选择的Hash值是一个预定的等于或小于选择目标链路总数的值。此外,源IP地址和端口号(TCP端口号)都被设置为关键字信息,并把Hash函数应用到该关键字信息,从而可以选择链路。
在图3和4所示的服务器负载分担系统中,每个服务器负载平衡器5具有图8和9完整示出的结构。
如图8和9所示,服务器负载平衡器5由服务器负载平衡模块51、分组接收模块55、分组转发模块56和故障查找通知模块57组成。该服务器负载平衡模块51包括目的地服务器选择模块52和地址重写模块53。该地址重写模块53具有一个会话表54。
当通过相应的链路(如图8中的箭头线a和b所示),由接收模块55接收到的分组被发送到模块51本身时,该模块指示目的地服务器选择模块52确定目的地服务器7,并指示地址重写模块53重写转发目标分组的目的地IP地址(c)。
目的地服务器选择模块52确定目的地服务器7的方法基本包括(1)基于在OSI参考模型中高于传输层的协议(POP(邮局协议),SMTP(简单邮件传送协议),FTP(文件传送协议),HTTP(超文本传送协议))的类别的负载分担(L4负载平衡),和(2)基于OSI参考模型中的应用层上的信息(诸如应答时间或URL的L′信息)的负载分担(L7负载平衡)。
此外,作为确定目的地服务器7的方法,除了通过测量多个服务器7的负载,在这些服务器7中选择一个具有小负载的服务器的方法和在多个服务器7中选择一个对应于客户机终端3的IP地址的服务器7的方法以外,目的地服务器选择模块52可以采用诸如循环(round-robin)系统、最小连接数系统和静态衡量系统之类的方法。
地址重写模块53进一步把转发目标分组的源IP地址重写为服务器负载平衡器5的IP地址(c)。此外,地址重写模块53设置重写前的原始信息对重写后的信息的映射(c)。
分组接收模块55接收到分组(a,b,f),并且分组转发模块56转发分组(d,g,e)。故障查找通知模块57接收到来自分组接收模块55的一个分组(ICMP-ECHO请求消息)以监测链路故障,并且如果没有故障发生,就通过分组转发模块56发回一个应答(ICMP-ECHO应答消息)。应注意,如果发生故障,就没有应答发回(a,f,g,e)。
图10示出了每个服务器负载平衡器5中的处理程序的流程略图。当接收到来自路由器4的一个转发目标分组时(图10中的步骤S100),服务器负载平衡器5指示服务器负载平衡模块51判断该分组的目的地IP地址是否和虚拟IP地址相同(S101)。
如果和虚拟IP地址相同,服务器负载平衡模块51执行关于该出局分组的服务器负载平衡处理(S102,S103)。
关于该出局分组的服务器负载平衡处理包括(1)确定该分组目的地(即,负载分担目标服务器7的IP地址和负载分担目标服务器7的端口号)的处理(S102),(2)把该转发目标分组的目的地IP地址重写为已确定的服务器7的IP地址和把该端口号重写为确定值的处理(S103),和(3)把该转发目标分组的源IP地址重写为该分组要被转发到的服务器负载平衡器5的IP地址的处理(S103)。
服务器负载平衡模块51存储会话表54,该表格具有上述处理结果之间的映射(重写前的数条信息对重写后的数条信息的映射)。应注意,如果接收到的转发目标分组已经被登记在会话表54中,则确定使用所登记的目的地服务器7的IP地址和端口号。
在服务器负载平衡模块51执行服务器负载平衡处理之后,通过其余的对应链路,分组转发模块55把该转发目标分组转发到路由器4(S104)。
如果在S101中,分组的目的地IP地址和虚拟IP地址不相同,则服务器负载平衡模块51判断接收到的转发目标分组的目的地IP地址是否是去往服务器负载平衡器5(S105)。
如果该目的地IP地址是去往服务器负载平衡器5,则服务器负载平衡模块51执行一个关于来自负载分担目标服务器7的环回(返回)分组的转换处理(S106)。
应注意,如果该目的地IP地址不是去往服务器负载平衡器5,则该转发目标分组被定义为一个用于监测链路故障的分组,从而服务器负载平衡模块51不执行任何处理。
关于该环回分组的转换处理包括(1)通过参考由地址重写模块53保持的会话表54,目的地服务器选择模块52基于转发目标分组的源端口号(作为一个目的地端口号记录在会话表54中)识别会话的处理,和(2)通过参考会话表54,地址重写模块53对转发目标分组的目的地IP地址和源IP地址进行重写的处理。
在服务器负载平衡模块51执行转换处理之后,通过其余的对应链路,分组转发模块55把该转发目标分组转发到路由器4(S107)。
如果路由器4的故障查找模块46把链路故障监测分组发送到服务器负载平衡器5,则服务器负载平衡器5中的故障查找通知模块57通过分组接收模块55接收该链路故障监测分组,并且如果正常(当接收到ICMP-ECHO请求消息时),则通过分组转发模块56发回一个应答(ICMP-ECHO应答消息)。
下面,对上述服务器负载分担系统1的操作的多个示例进行说明。
出局分组的处理首先参照图3和11,对一个关于服务器负载分担系统1中的从客户机终端3发送到负载分担目标服务器7的出局分组的处理进行说明。
当访问负载分担目标服务器7时,连接到IP网络2的客户机终端3发送一个具有一个虚拟IP地址(此处为IpA.1)的分组(第一分组)。
该第一分组(TCP请求消息)具有一个首部字段和一个数据字段,其中该首部字段包含源IP地址“IP-SA[IpC.1]”、目的地IP地址“IP-DA[IpA.1]”、源MAC地址“MAC-SA[M16]”和目的地MAC地址“MAC-DA[M1]”。
通过以下方式获得第一分组中的目的地MAC地址“MAC-DA[M1]”客户机终端3和路由器4发送和接收一个ARP(地址解析协议)请求消息和一个ARP应答消息。
即,把ARP定义为一种用于自动地把IP地址转换成MAC地址的协议,其中当客户机终端3把用于指定目的地IP地址的ARP请求消息广播给路由器4时,对应于该指定的IP地址的路由器把一个包含一对MAC地址和IP地址的ARP应答消息发回到客户机终端3。
当接收到包含目的地IP地址“IP-DA”(表示预先设置(预设)的虚拟IP地址“[IpA.1]”)的第一分组时,路由器4选择多个可正常操作的目标链路之一,并通过所选链路,把一个第二分组转发到服务器负载平衡器(SLB#1)5。
该第二分组(TCP请求消息)具有一个首部字段和一个数据字段,其中该首部字段包含源IP地址“IP-SA[IpC.1]”,目的地IP地址“IP-DA[IpA.1]”,源MAC地址“MAC-SA[M2]”和目的地MAC地址“MAC-DA[M12]”。
通过以下方式获得第二分组中的目的地MAC地址“MAC-DA[M12]”路由器4和服务器负载平衡器(#1)5发送和接收一个ARP请求消息和一个ARP应答消息。
基于服务器负载平衡器5的IP地址预设并识别可选择作为目标链路的链路。
路由器4可以通过以下方式选择链路对接收到的第一转发目标分组的源IP地址“IP-SA[IpC.1]”应用Hash函数。
当通过服务器负载平衡器(#1)5本身容纳的链路中的选定的一个链路,接收到该第二分组(该分组的目的地IP地址“IP-DA”表示虚拟IP地址)时,该平衡器5确定实际应该处理该分组的负载分担目标服务器7,并确定该负载分担目标服务器7的端口号以识别会话。
然后,该服务器负载平衡器5把一个第三分组发送到路由器4,该分组是通过把一个首部字段填充到所接收的第二分组的数据字段组装的,其中在该首部字段中进行以下转换(1)把接收到的第二分组目的地IP地址“IP-DA[IpA.1]”转换成已确定的负载分担目标服务器7的IP地址[IpB.3];(2)把第二分组的目的地端口号值[10]转换成已确定的端口号值[1];(3)把第二分组的源IP地址“IP-SA[IpC.1]”转换成设备本身的IP地址(即,与容纳该分组实际转发到的链路的服务器负载平衡器5相对应的IP地址[IpH.1]);(4)把第二分组的目的地MAC地址“MAC-DA[M12]”转换成路由器4的MAC地址[M3];和(5)把第二分组的源MAC地址“MAC-SA[M2]”转换成设备本身的MAC地址[M13]。
在此,根据一个决策表(未示出)得到路由器4的MAC地址[M3],在该表中预先定义了MAC地址对负载分担目标服务器7的IP地址的映射。
该第三分组(TCP请求消息)具有一个首部字段和一个数据字段,其中该首部字段包含源IP地址“IP-SA[IpH.1]”、目的地IP地址“IP-DA[IpB.3]”、源MAC地址“MAC-SA[M13]”和目的地MAC地址“MAC-DA[M3]”。
此外,服务器负载平衡器5把地址转换之前和之后的目的地端口号和IP地址记录在会话表54中(参见图9中的标号540)。
路由器4从通过链路从服务器负载平衡器5接收到的第三分组的目的地IP地址“IP-DA”确定一个目的地,然后转换首部字段中的源MAC地址“MAC-SA”和目的地MAC地址“MAC-DA”,并作为一个第四分组,把该分组中继(转发)到负载分担目标服务器(#1)7。
该第四分组(TCP请求消息)具有一个首部字段和一个数据字段,其中该首部字段包含源IP地址“IP-SA[Ip H.1]”、目的地IP地址“IP-DA[IpB.3]”、源MAC地址“MAC-SA[M8]”和目的地MAC地址“MAC-DA[M11]”。
通过以下方式获得第四分组中的目的地MAC地址“MAC-DA[M11]”路由器4和负载分担目标服务器(#1)7发送和接收一个ARP请求消息和一个ARP应答消息。
在通过LAN 6接收到从路由器4转发的第四分组并在同一个第四分组上执行一个预定处理之后,该指定负载分担目标服务器(#1)7组装一个应答分组以发送到客户机终端3。
环回(返回)分组的处理下面参照图4和12,对服务器负载分担系统1中的一个来自负载分担目标服务器(#1)7的地址去往客户机终端3的环回(返回)分组的处理进行说明。
通过LAN 6,负载分担目标服务器(#1)7发送地址去往客户机终端3(其地址准确指向服务器负载平衡器(SLB#1)5)的如此组装的应答分组,作为一个第五分组。
该第五分组(TCP请求消息)具有一个首部字段和一个数据字段,其中该首部字段包含源IP地址“IP-SA[IpB.3]”、目的地IP地址“IP-DA[IpH.1]”、源MAC地址“MAC-SA[M11]”和目的地MAC地址“MAC-DA[M8]”。
通过以下方式获得第五分组中的目的地MAC地址“MAC-DA[M8]”路由器4和负载分担目标服务器(#1)7发送和接收一个ARP请求消息和一个ARP应答消息。
当通过LAN 6从负载分担目标服务器7接收到第五分组时,路由器4基于目的地IP地址“IP-DA”确定一个链路,然后转换首部字段中的源MAC地址“MAC-SA”和目的地MAC地址“MAC-DA”,并把该分组作为一个第六分组转发到服务器负载平衡器5。
该第六分组(TCP请求消息)具有一个首部字段和一个数据字段,其中该首部字段包含源IP地址“IP-SA[IpB.3]”、目的地IP地址“IP-DA[IpH.1]”、源MAC地址“MAC-SA[M3]”和目的地MAC地址“MAC-DA[M13]”。
通过以下方式获得第六分组中的目的地MAC地址“MAC-DA[M13]”路由器4和服务器负载平衡器(#1)5发送和接收一个ARP请求消息和一个ARP应答消息。
在此情况中,目的地IP地址“IP-DA”表示服务器负载平衡器(#1)5的IP地址,因此把该第六分组转发到相应的链路上。
当接收到作为环回分组的第六分组时,服务器负载平衡器(#1)5检查会话表54(参见图9中的标号540),并分别进行以下转换(1)把目的地IP地址“IP-DA”转换成该会话中的客户机终端3的IP地址[IpC.1];(2)把源IP地址“IP-SA”转换成该会话中的虚拟IP地址[IpA.1];(3)把目的地端口号值[1]转换成端口号值[10]。
此外,服务器负载平衡器5分别进行以下转换(4)把接收到的第六分组的目的地MAC地址“MAC-DA[M13]”转换成路由器4的MAC地址[M2],和(5)把第六分组的源MAC地址“MAC-SA[M3]”转换成设备本身的MAC地址[M12]。
在此,根据决策表得到路由器4的MAC地址[M2],在该表中预先定义了IP地址对路由器4的MAC地址的映射。
然后,服务器负载平衡器5把一个第七分组发送到路由器4,该分组是通过在第六分组的数据字段中填充进行了地址转换的首部字段组装的。
该第七分组(TCP请求消息)具有一个首部字段和一个数据字段,其中该首部字段包含源IP地址“IP-SA[IpA.1]”、目的地IP地址“IP-DA[IpC.1]”、源MAC地址“MAC-SA[M12]”和目的地MAC地址“MAC-DA[M2]”。
路由器4从接收到的第七分组中的目的地IP地址“IP-DA[IpC.1]”确定目的地,并把一个具有转换后的目的地MAC地址“MAC-DA”和源MAC地址“MAC-SA”的第八分组转发到IP网络2。
该第八分组(TCP应答消息)具有一个首部字段和一个数据字段,其中该首部字段包含源IP地址“IP-SA[IpA.1]”、目的地IP地址“IP-DA[IpC.1]”、源MAC地址“MAC-SA[M1]”和目的地MAC地址“MAC-DA[M16]”。
通过以下方式获得第八分组中的目的地MAC地址“MAC-DA[M16]”客户机终端3和路由器4发送和接收一个ARP请求消息和一个ARP应答消息。
通过IP网络2,客户机终端3接收到对应于从负载分担目标服务器(#1)7发回的应答分组的第八分组。
路由器中的故障检测/恢复处理下面,结合图13对路由器4中的故障检测/恢复(故障查找)处理进行说明。
<故障检测处理>
路由器4周期性地把用于确认基于由RFC792定义的ICMP(因特网控制消息协议)的通信的ICMP-ECHO请求消息(分组)发送到所有服务器负载平衡器(SLB#1至N)5所容纳的各个链路(每个IP地址存在一个链路)上,并把ICMP-ECHO应答消息确认为对此的应答。
如果服务器负载平衡器5容纳的链路中即使有一个没有给出应答,则路由器4判断该服务器负载平衡器5有故障。当检测该故障时,路由器4执行一个缩退处理从负载分担目标链路中去除所有去往检测到故障的服务器负载平衡器5的链路。
在图13所示的示例中,在预定时间内没有从服务器负载平衡器(#1)5容纳的链路(#1,#2)中的链路(#2)发回ICMP-ECHO应答消息,所以路由器4从负载分担目标链路中去除该链路(#2)所属组的所有链路(#1,#2)。在由图5所示的链路选择模块47保持的表48中管理从负载分担目标链路中去除的链路。
应注意,在表48中预先定义了各个服务器负载平衡器5的IP地址值。在表48中还预先定义了哪个链路属于哪个服务器负载平衡器5。
<故障恢复处理>
在上述故障检测处理的情况中,路由器4周期性地把ICMP-ECHO请求消息发送到所有的服务器负载平衡器5中容纳的各个链路上,以便确认通信,并把ICMP-ECHO应答消息确认为对此的应答。
当从服务器负载平衡器5容纳的所有链路(包括在上述故障检测处理中从负载分担目标链路中去除的链路)上发回作为应答的ICMP-ECHO应答消息时,路由器4判断服务器负载平衡器5和其中的链路已经恢复,并执行一个把恢复的链路链接回负载分担目标链路的再链接处理。
在此再链接处理中,检测到的已恢复链路作为负载分担目标链路再次被登记在表48中,这是在检测到恢复后立即被触发的,或通过管理者手动输入命令来触发。
路由器中的缩退/恢复处理中的链路选择处理路由器中的处理下面参照图14,对路由器4中的缩退/恢复处理中的链路选择处理(链路选择算法)进行说明。应注意,该链路选择处理的一个前提假设是存在3个服务器负载平衡器(SLB#1,#2,#3)5。
当在正常状态下,路由器4建立会话S1,S4并把它们分配给第一服务器负载平衡器(#1)5,建立会话S2,S5并把它们分配给第二服务器负载平衡器(#2)5,建立会话S3,S6,S7并把它们分配给第三服务器负载平衡器(#3)5,即,路由器4处于选择链路的状态。
应注意,一个会话涉及使用两个物理链路以发送出局和环回分组。分配给同一个服务器负载平衡器5的多个会话可以在相同的链路上被多路复用。
当在此状态下,在故障检测处理中检测到第一服务器负载平衡器(#1)5中容纳的链路中发生故障时,路由器4仅把建立在第一服务器负载平衡器(#1)5上的会话S1,S4再分配到正常的服务器负载平衡器(#2,#3)5。
即,建立在正常的服务器负载平衡器(#2,#3)5上的会话保持不动。结果,例如会话S2,S5和S1被分配到第二服务器负载平衡器(#2)5,会话S3,S6,S7和S4被分配到第三服务器负载平衡器(#3)5。
为了获得正在进行的会话的连续性,在此链路选择中需要进行缩退处理。即,尽管迄今为止,通过第二服务器负载平衡器(#2)执行服务器负载平衡处理,但如果随后中途通过不同的第三服务器负载平衡器(#3)5执行该处理,则该第三服务器负载平衡器(#3)5识别该会话为新的会话,并因此基于第三服务器负载平衡器(#3)5的算法,确定目的地服务器和端口号。因此,会话有可能被分配到与迄今为止所使用的服务器不同的服务器上。
结果,异常状态发生在高级应用(应用软件)中,并中断了会话。但是,由于链路选择中的缩退处理,可以尽可能地避免会话的中断。
当在故障恢复处理中,检测到第一服务器负载平衡器(#1)中容纳的链路中的故障恢复时,路由器4执行一个处理以把系统恢复到正常链路选择状态。
以上个别讨论的实施例中服务器负载分担系统1包括多个服务器负载平衡器(#1至#N),每个平衡器具有图8所示的结构。例如,在实际的情况的服务器负载平衡器5配置中,多个NIC(网络接口卡)中的每一个实现服务器负载平衡器5的功能,并可以装入同一个设备框体内。此外,单个卡实现路由器4的功能,并可以和多个NIC(每个NIC实现服务器负载平衡器5的功能)一起装入同一个设备框体内。
提供上述实施例中描述的各个处理作为一个可以由计算机执行的程序。该程序可以被记录在诸如CD-ROM、软盘等的记录介质上,也可以通过通信线路发布。
尽管以上仅对本发明的一些实施例进行了详细描述,但本领域的技术人员应该理解,在不背离本发明的新颖教导和优点的情况下,可以对优选实施例进行一些改进。因此,所有类似改进应包括在如权利要求所规定的本发明的范围内。
权利要求
1.一种服务器负载分担系统,包括(A)多个服务器负载平衡器,每个平衡器至少容纳第一和第二链路,所述平衡器包括(a)选择模块,当通过所述第一和第二链路之一接收到地址去往一个预定的虚拟IP地址的转发目标分组时,该模块选择基于该虚拟IP地址的服务器组所指定的多个负载分担目标服务器中的任何一个,并且每个服务器分配有一个唯一的IP地址;和(b)重写模块,该模块把接收到的地址去往虚拟IP地址的转发目标分组的虚拟IP地址重写成所述选定的负载分担目标服务器的唯一IP地址,并把接收到的地址去往虚拟IP地址的转发目标分组的源IP地址重写成一个能够指定所述第一和第二链路中另一个链路的IP地址;和(B)中继设备,通过所述第一和第二链路连接到所述多个服务器负载平衡器中的每一个上,所述中继设备包括(c)识别模块,该模块对接收到的地址去往虚拟IP地址的转发目标分组进行识别;(d)选择模块,该模块选择所述第一和第二链路之一,以便把所识别的地址去往虚拟IP地址的转发目标分组转发到所述多个服务器负载平衡器之一;和(e)转发模块,该模块把通过所述第一和第二链路中的另一个链路接收到的来自所述多个服务器负载平衡器中任何一个的转发目标分组转发到所述选定的负载分担目标服务器,并通过所述第一和第二链路中的另一个链路,把从所述选定的负载分担目标服务器发回的转发目标分组转发到所述多个服务器负载平衡器中的任何一个。
2.根据权利要求1所述的服务器负载分担系统,其中,所述中继设备的所述选择模块基于一个伪随机数选择所述第一和第二链路之一,以便把该分组转发到所述多个服务器负载平衡器中的任何一个,其中该伪随机数是通过把一个单向函数应用到所识别的地址去往虚拟IP地址的转发目标分组中所包含的源IP地址值生成的。
3.根据权利要求1所述的服务器负载分担系统,其中,每个所述服务器负载平衡器还包括一个重写模块,当通过所述中继设备和所述第一和第二链路中的另一个链路,接收到从所述选定的负载分担目标服务器发回的转发目标分组时,该模块把包含在所接收的转发目标分组中的所述选定的负载分担目标服务器的唯一IP地址重写成虚拟IP地址,作为源IP地址,并进一步把包含在所接收的转发目标分组中的能够指定所述第一和第二链路中另一个链路的IP地址重写成已包含在地址去往虚拟IP地址的转发目标分组中的源IP地址,作为目的地IP地址,并使所述中继设备通过所述第一和第二链路之一转发该分组。
4.根据权利要求1所述的服务器负载分担系统,其中,所述中继设备还包括设置模块,该模块把所述多个服务器负载平衡器中的每一个中所容纳的所述第一和第二链路设置成一组,周期性地把一个监测分组发送到每组的所述第一和第二链路中,并把属于包含无应答链路的组的所述第一和第二链路作为故障链路,从选择目标链路中去除。
5.根据权利要求4所述的服务器负载分担系统,其中,所述中继设备还包括设置模块,当在所述多个服务器负载平衡器中的每一个中所容纳的所述第一和第二链路中检测到故障时,该模块以保持以下分配状态的方式,设置把该转发目标分组分配到容纳所述第一和第二正常链路的所述正常服务器负载平衡器上,并仅针对分配到容纳所述第一和第二故障链路的所述故障服务器负载平衡器的转发目标分组,把分配状态改变到所述正常服务器负载平衡器。
6.一种服务器负载分担方法,其中多个服务器负载平衡器中的每一个容纳至少第一和第二链路,所述方法包括(a)当通过所述第一和第二链路之一,接收到一个地址去往预定的虚拟IP地址的转发目标分组时,选择基于该虚拟IP地址的服务器组所指定的多个负载分担目标服务器中的任何一个,并且每个服务器分配有一个唯一的IP地址;和(b)把接收到的地址去往虚拟IP地址的转发目标分组的虚拟IP地址重写成所述选定的负载分担目标服务器的唯一IP地址,并把接收到的地址去往虚拟IP地址的转发目标分组的源IP地址重写成一个能够指定所述第一和第二链路中另一个链路的IP地址;和在通过所述第一和第二链路连接到所述多个服务器负载平衡器中的每一个的中继设备中,所述方法还包括(c)对接收到的地址去往虚拟IP地址的转发目标分组进行识别;(d)选择所述第一和第二链路之一,以便把所识别的地址去往虚拟IP地址的转发目标分组转发到所述多个服务器负载平衡器之一;和(e)把通过所述第一和第二链路中的另一个链路接收到的来自所述多个服务器负载平衡器中任何一个的转发目标分组转发到所述选定的负载分担目标服务器,并通过所述第一和第二链路中的另一个链路,把从所述选定的负载分担目标服务器发回的转发目标分组转发到所述多个服务器负载平衡器中的任何一个。
7.根据权利要求6所述的服务器负载分担方法,还包括在所述中继设备中,基于一个伪随机数选择所述第一和第二链路之一,以便把该分组转发到所述多个服务器负载平衡器中的任何一个,其中该伪随机数是通过把一个单向函数应用到所识别的地址去往虚拟IP地址的转发目标分组中所包含的源IP地址值生成的。
8.根据权利要求6所述的服务器负载分担方法,还包括在每个所述服务器负载平衡器中,当通过所述中继设备和所述第一和第二链路中的另一个链路,接收到从所述选定的负载分担目标服务器发回的转发目标分组时,把包含在所接收的转发目标分组中的所述选定的负载分担目标服务器的唯一IP地址重写成虚拟IP地址,作为源IP地址,并进一步把包含在所接收的转发目标分组中的能够指定第一和第二链路中另一个链路的IP地址重写成已包含在地址去往虚拟IP地址的转发目标分组中的源IP地址,作为目的地IP地址,并使所述中继设备通过所述第一和第二链路之一转发该分组。
9.根据权利要求6所述的服务器负载分担方法,还包括在所述中继设备中,把所述多个服务器负载平衡器中的每一个所容纳的所述第一和第二链路设置成一组,周期性地把一个监测分组发送到每组的第一和第二链路,并把属于包含无应答链路的组的第一和第二链路作为故障链路,从选择目标链路中去除。
10.根据权利要求9所述的服务器负载分担方法,还包括在所述中继设备中,当在所述多个服务器负载平衡器中的每一个中所容纳的第一和第二链路中检测到故障时,以保持以下分配状态的方式,设置把该转发目标分组分配到容纳第一和第二正常链路的所述正常服务器负载平衡器上,并仅针对分配到容纳第一和第二故障链路的所述故障服务器负载平衡器的转发目标分组,把分配状态改变到所述正常服务器负载平衡器。
11.一种服务器负载分担设备,包括把负载分担到多个服务器的多个服务器负载平衡功能,其中根据从客户机终端接收的分组的源识别信息,指定所述服务器负载平衡功能之一以执行处理。
全文摘要
一种服务器负载分担系统,该系统具有多个服务器负载平衡器和一个中继设备。每个平衡器包括选择模块,当通过第一和第二链路之一接收到一个地址去往预定的虚拟IP地址的转发目标分组时,该模块选择基于该虚拟IP地址的服务器组所指定的多个负载分担目标服务器中的任何一个,并且每个服务器分配有一个唯一IP地址;重写模块,把接收到的地址去往虚拟IP地址的转发目标分组的虚拟IP地址重写成所选服务器的唯一IP地址,并把接收到的地址去往虚拟IP地址的分组的源IP地址重写成能够指定第一和第二链路中另一个链路的IP地址。该中继设备包括识别模块;选择模块。
文档编号H04L12/56GK1426211SQ02155549
公开日2003年6月25日 申请日期2002年12月5日 优先权日2001年12月6日
发明者井上留美子, 武田浩一 申请人:富士通株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1