CN107438994B - 用于服务器负载均衡的方法、设备和计算机存储介质 - Google Patents

用于服务器负载均衡的方法、设备和计算机存储介质 Download PDF

Info

Publication number
CN107438994B
CN107438994B CN201580079021.XA CN201580079021A CN107438994B CN 107438994 B CN107438994 B CN 107438994B CN 201580079021 A CN201580079021 A CN 201580079021A CN 107438994 B CN107438994 B CN 107438994B
Authority
CN
China
Prior art keywords
network packet
network
rule
destination server
load balancing
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
CN201580079021.XA
Other languages
English (en)
Other versions
CN107438994A (zh
Inventor
J.瓦卡罗
S.坦德
B.斯蒂伊克斯
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.)
Hewlett Packard Development Co LP
Original Assignee
Hewlett Packard Development Co LP
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 Hewlett Packard Development Co LP filed Critical Hewlett Packard Development Co LP
Publication of CN107438994A publication Critical patent/CN107438994A/zh
Application granted granted Critical
Publication of CN107438994B publication Critical patent/CN107438994B/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
    • 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
    • H04L67/1004Server selection for load balancing
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/12Avoiding congestion; Recovering from congestion
    • H04L47/125Avoiding congestion; Recovering from congestion by balancing the load, e.g. traffic engineering
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/38Flow based routing

Landscapes

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

Abstract

示例涉及对服务器进行负载均衡。在一个示例中,计算设备可以:从源设备接收网络分组,网络分组包括指定值的数据;使网络分组中包括的值被除数除;基于该除法的余数从多个服务器中确定网络分组的目的地服务器;以及将网络分组转发到目的地服务器。

Description

用于服务器负载均衡的方法、设备和计算机存储介质
背景技术
计算设备之间的网络通信常常通过例如使用分组交换网络从一个设备向另一个传输网络分组来执行。在一些客户端-服务器网络环境中,可以使用多个服务器计算机来处置到和来自多种客户端设备的通信。可以以被设计成确保服务器计算机在处理网络通信时不超负荷的方式来使用网络负载均衡技术。
附图说明
以下详细描述参考各图,其中:
图1是用于服务器负载均衡的示例计算设备的框图。
图2A是用于服务器负载均衡的示例数据流。
图2B是用于对服务器进行负载均衡的示例数据流。
图3是用于服务器负载均衡的示例方法的流程图。
具体实施方式
在分组交换网络中,诸如个人计算机、移动电话和服务器计算机之类的各种设备常常使用网络分组向彼此发送数据。网络分组是经格式化的数据单元,其包括多种信息,诸如源和目的地标识符以及意图用于目的地设备的净荷数据。在诸如使用多个服务器计算机向与服务器计算机通信的多个客户端设备提供服务的云计算环境之类的一些联网环境中,以被设计成确保服务器不关于网络业务超负荷的方式在服务器计算机之间分发传入的网络业务是有用的。
中间网络设备,其是用来路由网络设备(例如,路由器、交换机、可编程网络卡、可编程网络组件或其他这样的设备)之间的网络业务的硬件设备,可以被配置成执行前摄地和/或反应性地对服务器计算机进行负载均衡的操作。在诸如软件定义网络(SDN)之类的某些类型的网络中,网络控制器通过向网络设备提供配置数据来管理中间网络设备,所述配置数据被用来创建用于遍及网络转发网络业务的规则。例如,SDN网络控制器可向SDN内的交换机提供由交换机使用以向 SDN内的服务器转发网络业务的规则。规则可以例如使得交换机通过确定与特定网络分组相关联的随机或伪随机值的模数来确定特定网络分组应该被发送到哪个服务器。为了速度和效率,可以将提供除法的余数的模数用于伪随机服务器选择。例如,更复杂的随机数生成算法或散列函数可能不能够由SDN交换机执行或在SDN交换机上相对不充分地执行。
在操作中,中间网络设备可以从网络控制器接收规则,并且规则可以标识网络业务要被转发到的服务器和与那些服务器相关联的桶 (bucket)。当中间设备接收新的网络分组时,与网络分组相关联的值——诸如源IP或源端口——可以除以与服务器相关联的桶的数目。该除法导致余数,例如,所述余数的值可以从0变动到小于桶的数目的值,并且余数可以被用来选择与目的地服务器中的一个相关联的桶。中间网络设备然后可以将网络分组转发到与所选桶相关联的目的地服务器。在与网络分组相关联的值被随机或伪随机地生成的情况下,余数被用来选择将也为随机或伪随机的服务器。
当对特定服务器进行负载均衡时,网络控制器可以向中间网络设备提供用于对特定服务器进行负载均衡的指令。规则可以使得中间网络设备向负载均衡设备转发将否则被转发到该特定服务器的网络业务。负载均衡设备确定每个接收到的网络分组应该被转发到需要负载均衡的服务器还是被转发到不同的服务器。例如,所述确定可以基于 (例如,基于每个网络分组中包括的TCP_SYN标志或其他元数据确定的)网络分组是新的分组还是由特定服务器处理的现有网络流的部分来做出。在做出确定之后,负载均衡设备可以修改接收到的网络分组的目的地并且将经修改的网络分组提供给中间网络设备,所述中间网络设备将经修改的网络分组转发到其预期目的地。
当服务器负载均衡被以与上面描述的方式类似的方式管理时,中间网络设备可以促进网络业务在服务器设备之间的相对高效的分发。例如,SDN交换机与SDN控制器之间的通信可能相对轻。另外,以上面描述的方式对服务器进行负载均衡可以在具有比在服务器计算机上操作的软件实现负载均衡器更少的可用硬件资源的硬件设备上执行。增加的负载均衡速度和通过上面描述的负载均衡的方式引入的减小的网络等待时间的潜能可能对实现该技术的网络的用户和管理者二者都有益。在跟随的段落中进一步详细地论述了关于网络分组的负载均衡的其他细节和网络分组从一个服务器流到另一个的转变。
图1是用于服务器负载均衡的示例计算设备100的框图。例如,计算设备100可以是中间网络设备,诸如可编程网络交换机、路由器或适合于用作分组交换网络中的中间设备的任何其他电子设备,其包括软件定义网络(SDN)可编程网络元件。在图1的实施例中,计算设备100包括硬件处理器110和机器可读存储介质120。
硬件处理器110可以是一个或多个中央处理单元(CPU)、基于半导体的微处理器,和/或适合于机器可读存储介质120中存储的指令的取回和执行的其他硬件设备。硬件处理器110可以获取、解码和执行指令,诸如122-128,来控制用于服务器负载均衡的过程。作为对取回和执行指令的替代或除了取回和执行指令之外,硬件处理器110 可以包括一个或多个电子电路,其包括用于执行指令中的一个或多个的功能的电子组件。
机器可读存储介质,诸如120,可以是包含或存储可执行指令的任何电子、磁、光学或其他物理存储设备。因此,机器可读存储介质 120可以是例如随机存取存储器(RAM)、电可擦除可编程只读存储器(EEPROM)、存储设备、光盘等。在一些实现中,存储介质120 可以是非瞬时存储介质,其中术语“非瞬时”不包括瞬时传播的信号。如下面详细地描述的,机器可读存储介质120可以编码有一系列可执行指令:122-128,用于复制由计算设备100接收的网络通信。
如在图1中所示,计算设备100从源设备130接收网络分组132,并且网络分组132包括指定值的数据(122)。例如,网络分组132 可以是包括报头部分和净荷部分的互联网协议(IP)分组。所述值可以是与网络分组132相关联的任何数目的值,诸如源端口、源和/或目的地IP地址的至少一部分,和/或网络分组132中包括的字符的数值表示。源设备130是端点设备,诸如个人计算机、移动电话、服务器计算机或网络分组132源于的其他计算设备。网络分组132不需要被直接发送给计算设备100,而可能代之以通过各种中间网络设备并且在一些实现中通过其他端点设备来路由。
计算设备100使网络分组中包括的值被除数除(124)。除数是非零数,其可以由网络控制器提供和/或基于多种事物,诸如计算设备 100可以将网络分组132转发到的服务器的数目。在一些实现中,计算设备100可以将网络分组132转发到的每个服务器可以对应于一个或多个桶,并且除数可以基于桶的数目。例如,在具有五个服务器的情况下,两个桶可以与每个服务器相关联,产生总共10个桶。例如,基于桶的数目的除数可以是桶的数目,例如10,或者可被桶的数目均匀地除的数,例如5、10、15等。在所述值是网络分组132的源IP地址中的最后一组数字(例如,值105)的情况下,计算设备100可以使105被10除。
在一些实现中,所述值和/或服务器和/或桶的数目的除法基于由网络控制器提供的一个或多个规则。例如,在计算设备100是在SDN 中操作的软件定义交换机的情况下,SDN控制器可以生成用于该交换机应该如何转发网络业务的规则并且将规则发送到该交换机,例如用于存储在存储介质120或分离的机器可读存储介质中。使用上面的示例,提供给计算设备100的规则集合可以是:
如果(源IP地址)%(桶的数目)==0;则转发(fwd)端口1。
如果(源IP地址)%(桶的数目)==1;则转发端口2。
如果(源IP地址)%(桶的数目)==2;则转发端口3。
如果(源IP地址)%(桶的数目)==3;则转发端口4。
如果(源IP地址)%(桶的数目)==4;则转发端口5。
如果(源IP地址)%(桶的数目)==5;则转发端口1。
如果(源IP地址)%(桶的数目)==6;则转发端口2。
如果(源IP地址)%(桶的数目)==7;则转发端口3。
如果(源IP地址)%(桶的数目)==8;则转发端口4。
如果(源IP地址)%(桶的数目)==9;则转发端口5。
针对上面的示例规则中的每个,执行例如由“%”符号表示的模运算,通过首先使源IP地址被桶的数目除而获得余数。如下面所描述的,该除法的结果可以用来对网络分组进行负载均衡。
计算设备100基于该除法的余数从服务器组中确定用于网络分组 132的目的地服务器140(126)。使用上面提供的示例值,105除以 10的余数是5。余数5可以用来选择桶,并且可以选取与所选桶对应的服务器作为网络分组132的目的地服务器140。在上面的示例实现中,在规则由网络控制器提供的情况下,第六规则指定的条件被满足。例如,105%10==5。因此,在该情况下,规则指定计算设备100应该将网络分组132转发到与端口1相关联的目的地服务器。在前述示例中,5个不同的端口的使用可以指示存在可以将网络分组转发到的5个不同的服务器,例如,每个服务器与5个端口中的一个对应。在源IP地址值随机的情况下,网络分组在服务器之间的分发也将是随机的。
计算设备100将网络分组132转发到目的地服务器140(128)。在前述示例中,计算设备100将通过端口1将网络分组132转发到目的地服务器140。计算设备100转发网络分组132的方式可以变化。例如,网络分组132可以被封装,并且经封装的分组可以被转发到目的地服务器。在一些实现中,网络分组132的目的地地址被改变成目的地服务器140的地址。
在一些实现中,计算设备100生成指定在与网络分组132相同的流中包括的附加网络分组要被转发到相同目的地服务器140的规则。例如,在——在预定时间段内——网络分组具有相同源地址/端口和相同目的地地址/端口的情况下,网络分组可以被认为是相同流的部分。被生成用以匹配网络流的规则因为其比将引起随机或伪随机分发的 (多个)一般规则更具体而被设计成确保相同网络流的所有网络分组由相同目的地设备处理。使用前述示例值,示例规则可以是:
如果((源IP==105)&(目的地IP==[目的地服务器140的IP]));则转发端口5。
在该情况下,计算设备100接收到的将相同源IP指定为源设备 130并且指定目的地服务器140的目的地IP地址的附加网络分组将被通过端口5转发到目的地服务器140,而没有跟其他规则核对的需要。规则可以具有未在上面的示例中提供的附加特征或特性。例如,规则可以具有期满定时器(expiration timer),在其之后规则被删除、移除或忽略。期满可以被用来防止不相关的网络分组到特定设备的不必要转发。另一示例规则特征或特性可以是指示哪个(哪些)规则优先于其他规则的规则优先级。例如,用以将相同流的网络分组保持在一起的更具体的转发规则可能具有比用于使用模数计算来分发网络分组的规则更高的优先级。
虽然图1将中间计算设备100描绘为在源设备130与目的地服务器140之间的唯一中间网络设备,但是可能在源设备130与计算设备 100之间和/或在计算设备100与目的地服务器140和(多个)其他目的地服务器之间存在任何数目的其他中间网络设备。例如,计算设备 100可以逻辑上位于私有网络的边缘处,从在诸如因特网之类的公共网络中操作的交换机或路由器接收网络分组,并且按照指示通过一个或多个私有网络交换机/服务器将分组转发到私有网络内的各种目的地服务器。
在一些实现中,到目的地设备140或到另一目的地服务器的网络业务可能是不均衡的。例如,如果网络分组的随机或伪随机分发是歪斜的,则一个服务器可能变得超负荷。在这些情况下,计算设备100 可以执行被设计成例如通过将网络业务从每个超负荷的服务器转变到另一可用目的地服务器而对一个或多个超负荷的服务器进行负载均衡的指令。下面例如关于图2A和2B进一步详细地描述用于将网络业务从一个服务器转变到另一个的过程。
图2A是用于服务器负载均衡的示例示例数据流200。图2B是用于对服务器进行负载均衡的示例数据流205。在示例数据流200中,中间网络设备230与源设备210和网络控制器220通信。网络控制器 220提供至少一个规则202,其将服务器标识为网络分组的接收者,服务器中的每个与桶相关联。例如,提供给中间网络设备230的规则 202指定可以经由中间网络设备的各种端口将网络业务转发到的四个不同服务器,并且这四个服务器中的每个与桶(例如,表示由桶的数目进行的除法的可能余数的值)相关联。示例规则202指定使网络分组的源端口被桶的数目(例如,4)除的余数将用来确定将通过哪个端口转发网络分组。
源设备210,其可以是例如比如图1的源设备130之类的设备,向中间网络设备230提供网络分组204。网络分组204包括多种信息,包括源端口、源地址、目的地地址和净荷。所述信息包括值,诸如非零数值,或可以被转换成可除值的数据。在一些实现中,在网络分组204中包括的所述信息的特定部分是非零数值。在一些实现中,可以以多种方式将非数值转换成数值,例如可以将字符转换成其对应的十六进制值,或可以将字母字符转换成数字。
中间网络设备230在接收到网络分组204时使在网络分组204中包括的值被与服务器相关联的桶的总数目除。例如,在数据流200中,可能存在4个桶,针对每个目的地服务器一个。在一些实现中,桶的数目可以是目的地服务器的数目的倍数。例如,使用目的地服务器的数目的倍数可以确保每个服务器对应于与每个其他服务器相同的数目的桶。
中间网络设备230基于规则202和除法的余数确定网络分组204 的目的地服务器。在示例数据流200中,示例规则202指示针对除法的每个可能的余数将使用哪个目的地服务器。在示例数据流200中,当被桶的数目(例如,在该情况下为4)除时,余数将总是在0与小于桶的数目的值之间的值——0、1、2或3。
如在示例规则202中所指示的,当除法的余数是0时,中间网络设备230通过编号的端口来转发网络分组204,所述端口例如端口1,其在该示例中对应于第一服务器240。当除法的余数是1时,通过端口2来转发网络分组,所述端口2对应于第二服务器250。当除法的余数是2时,通过端口3来转发网络分组,所述端口3对应于第三服务器260。当除法的余数是3时,通过端口4来转发网络分组,所述端口4对应于第四服务器270。
在一些实现中,以导致除法的余数的基本上均匀的分布的方式生成所述值。例如,每个源端口可以由诸如源设备210之类的各种计算设备顺序地选择。给定许多顺序地选择的数,顺序地选择的数的除法的余数可能具有基本上均匀的分布。例如,使1与100之间的每个数被四除将导致0作为余数的25次发生,1作为余数的25次发生,2 作为余数的25次发生,以及3作为余数的25次发生。在检查员数据流200中,这将导致网络流在每个目的地服务器之间的均匀分发。
在确定要将网络分组204转发到哪个目的地服务器之后,中间网络设备230将网络分组204转发到该目的地服务器,例如在示例数据流200中为第一服务器240。虽然示例规则202标识中间网络设备230 将通过其转发网络分组的端口,但是也可以使用其他方法,例如转发到特定地址或到用于转发到目的地服务器的不同的网络设备。在一些实现中,可以将网络分组204的目的地地址更新到目的地服务器的地址,和/或可以封装网络分组204以用于转发到其目的地服务器。用于将网络业务转发到各种目的地服务器的其他方法可以被用来将网络分组204提供到预期目的地。
在一些实现中,中间网络设备230可以生成一个或多个附加规则,其被设计成确保在相同网络流中包括的网络分组被转发到相同目的地服务器。在示例数据流200中,中间网络设备230生成附加规则206,其指定以与网络分组204相同的源地址到达的附加网络分组要被通过端口1转发,例如到第一服务器240。规则206也可以与持续时间相关联,在所述持续时间之后规则将超时并且不再被应用。附加规则206 可以具有比由网络控制器220提供的一般规则202更高的优先级,这使得网络分组能够被转发到适当的目的地服务器而不标识在匹配由规则206指定的条件的网络分组中包括的值的模数。
如上面指出的,图2B描绘了用于对服务器进行负载均衡的示例数据流205。在一些实现中,网络控制器220可以例如基于监视服务器的网络业务和系统资源来确定目的地服务器中的一个或多个是不均衡的。在网络控制器220确定特定服务器需要负载均衡的情况下,其可以向中间网络设备230发送用以对该特定服务器进行负载均衡的指令。
在一些实现中,中间网络设备230可以确定特定服务器何时是不均衡的。所述确定可以以多种方式做出。例如,中间网络设备可以使用计数器来确定目的地服务器何时已经接收阈值数目的网络分组或流。阈值可以是预定值,或者可以基于由其他目的地服务器处置的网络业务,例如阈值可以用来确定特定目的地服务器在其已经接收比任何其他目的地服务器多75%的网络分组或比由具有第二高的网络业务的目的地服务器接收的网络分组的数目多50%的网络分组时是不均衡的。中间网络设备230还可以使用其他方法来确定特定服务器是否是不均衡的。例如,可以跟踪网络分组的聚合大小来确定服务器何时是不均衡的。作为另一示例,在生成临时规则用于处置属于相同网络流的网络业务的情况下,可以跟踪对目的地服务器而言有效的多个规则以确定服务器何时是不均衡的。
在示例数据流205中,中间网络设备230从网络控制器220接收负载均衡指令212。指令212指定第一服务器240要被进行负载均衡。对服务器进行负载均衡的方式可以变化,并且在示例数据流205中,中间网络设备230改变指定网络分组要被发送给第一服务器240的任何规则使得规则现在指定网络分组要被转发到负载均衡设备280。在示例数据流205中,规则216中的一些,例如先前将端口1指定为目的地端口的那些,已经被更新到将端口5指定为将通过其转发网络分组的端口。
中间网络设备230从第二源设备215接收第二网络分组214。例如,在第二源设备215是与第一源设备210相同的设备的情况下,第二网络分组可以包括与第一网络分组204相同的源地址。在该情况下,源地址将满足由规则“源地址==<源地址>:转发端口5”指定的条件,并且第二网络分组214将被通过端口5转发到负载均衡设备280。在第二源设备215与第一源设备210不同并且源端口的模数是0的情况下,规则216还指定将第二网络分组214转发到负载均衡设备280。
负载均衡设备280可以是能够网络通信和数据处理的任何计算设备,并且可以包括虚拟计算设备,诸如虚拟交换机,其例如由与中间网络设备通信的服务器计算机实现。特别地,负载均衡设备280确定是否要将第二网络分组214转发到不均衡的服务器,例如第一服务器 240,或者是否应该代之以将第二网络分组214转发到不同的目的地服务器,例如现有目的地服务器中的一个或新的目的地服务器。
在一些实现中,负载均衡设备280可以确定新的网络流的网络分组应该被转发到新的目的地服务器,而当前由不均衡的服务器处理的网络流的网络分组应该继续被发送到不均衡的服务器。这可以例如通过检查网络分组的TCP_SYN标志或其他元数据来确定,所述TCP_SYN标志或其他元数据可以指示网络分组是否正在请求新的连接。在做出确定之后,负载均衡设备280可以修改第二网络分组214,并且将经修改的网络分组218发送回到中间网络设备230。经修改的网络分组218指定哪个目的地设备将是经修改的网络分组218的接收者,并且中间网络设备230将经修改的网络分组218转发到预期接收者。
作为示例,在第二源设备215与第一源设备210相同的情况下,第二网络分组214的源地址与第一网络分组204的源地址相同。在该情况下,第二网络分组214满足由规则“源地址==<源地址>:转发端口5”指定的条件,并且中间网络设备230将第二网络分组214转发到负载均衡设备280。负载均衡设备280基于在第二网络分组214 中包括的会话元数据而确定第二网络分组214属于与第一网络分组 204相同的网络流并且应该由相同服务器(例如,第一服务器240) 处置。负载均衡设备280修改第二网络分组214,或生成新的经修改的网络分组218,并且将经修改的网络分组218提供给中间网络设备 230,所述经修改的网络分组218可以包括第一网络分组204中包括的数据并且将第一服务器240指定为目的地。中间网络设备230然后将经修改的网络分组218转发到第一服务器240。
作为另一示例,在第二源设备215与第一源设备210不同的情况下,第二网络分组214的源地址可能与第一网络分组204的源地址不同。在该情况下,可以将一般规则216应用于第二网络分组214以确定其目的地。在示例数据流205中,如果第二网络分组的源端口的模数是1、2或3,则中间网络设备230将会将第二网络分组相应地转发到第二250、第三260或第四服务器270。如果第二网络分组的源端口的模数是0,则更新的规则使得中间网络设备230将第二网络分组 214转发到负载均衡设备280。
负载均衡设备280基于第二网络分组214的TCP_SYN标志来确定第二网络分组214是新的网络流的开始并且应该由不同于不均衡的服务器的服务器来处置。负载均衡设备280为第二网络分组214选取目的地服务器(诸如第二服务器250),修改第二网络分组214,或生成新的经修改的网络分组218,所述新的经修改的网络分组218指定选取的目的地服务器并且将经修改的网络分组218提供给中间网络设备230。中间网络设备230然后将经修改的网络分组218转发到选取的目的地服务器,所述目的地服务器在示例数据流205中是第二服务器250。在一些实现中,中间网络设备230还可以基于经修改的网络分组而生成新的规则,例如使得属于相同网络流的后续网络业务被转发到第二服务器250的规则。这允许相同流的后续网络分组被直接转发到第二服务器250,而不是被提供到负载均衡设备280。
负载均衡设备280可以确定哪个目的地服务器要以多种方式从新的网络流接收网络分组。在一些实现中,负载均衡设备280可以与网络控制器220通信并且以网络控制器指定的方式分发新的网络流。在一些实现中,负载均衡设备可以随机或伪随机地使得网络分组被发送到现有目的地服务器和/或新的目的地服务器。在另一实现中,负载均衡设备280实现被设计成基于特定目的地服务器的当前负荷来选取特定目的地服务器的逻辑,所述当前负荷例如如由负载均衡设备280或与负载均衡设备280通信的另一设备监视。
图3是用于服务器负载均衡的示例方法的流程图300。方法300 可以由中间网络设备执行,所述中间网络设备诸如在图1中描述的计算设备和/或在图2A和2B中描述的中间网络设备。还可以使用其他计算设备来执行方法300。方法300可以以存储在诸如存储介质120之类的机器可读存储介质上的可执行指令的形式和/或以电子电路的形式来实现。
从网络控制器接收至少一个规则,每个规则将多个服务器中的一个指定为网络分组的满足由该规则指定的条件的接收者(302)。例如,由每个规则指定的条件可以是网络分组的源地址的模数匹配特定值。如果特定分组的源地址的模数匹配用于特定规则的特定值,则网络分组的接收者可以是由该特定规则指定的接收者。
从源设备接收网络分组,网络分组包括指定值的数据(304)。网络分组可以包括许多不同类型的值,数值的或另外的。出于将值用于负载均衡的目的,随机生成的值或伪随机生成的值可以是所指定的值,例如源端口或源地址。
对所述值应用函数以产生余数(306)。例如,可以对所述值应用模函数以获得余数。利用特定除数来应用模函数,并且其导致值除以除数的余数。在一些实现中,用于模函数的除数可以取决于与规则和潜在的目的地服务器相关联的桶的数目。每个桶可以表示导致网络分组被转发到特定服务器的规则和/或值。例如,一个桶可能与例如利用规则的1和5的模数结果相关联,所述规则使得具有导致1或5的模数的值的网络分组被提供给特定目的地服务器。
计算设备确定余数满足由规则中的特定规则指定的条件(308)。例如,应用于接收到的网络分组的源端口的模(5)可能导致0与4 之间的余数。规则中的一个指定被余数满足的条件。
将网络分组转发到由该特定规则指定的目的地服务器(310)。例如,具有由模函数的结果满足的条件的特定规则与特定目的地服务器相关联。该特定目的地服务器被选取作为网络分组的接收者。
在一些实现中,第一规则被生成用于源设备,第一规则指定:在与网络分组相同的流中包括的附加网络分组要被转发到目的地服务器;以及时间段,在所述时间段之后第一规则将超时。第一规则被设计成确保相同流中包括的网络分组由相同的目的地服务器处置,并且超时被设计成确保将来的网络流能够被提供给不同的服务器。
在一些实现中,从网络控制器接收用以对目的地服务器进行负载均衡的指令。例如,当在SDN交换机中实现方法300时,该交换机可以接收用以改变将目的地服务器标识为接收者的转发规则的指令以代之以将诸如虚拟交换机之类的负载均衡设备指定为接收者。
在负载均衡被在例如业务正在从不均衡的服务器转变到一个或多个其他服务器的情形中实现的情况下,负载均衡设备可以确定传入的网络分组将被发送给哪个服务器。在方法300的一些实现中,可以从第二源设备接收第二网络分组。可以做出第二网络分组满足由改变的规则中的一个指定的条件的确定,所述条件例如是第二网络分组的源地址匹配由改变的规则中的一个指定的源地址。响应于该确定,可以将第二网络分组转发到负载均衡设备。然后可以从负载均衡设备接收经修改的网络分组,经修改的网络分组将目的地服务器指定为经修改的网络分组的接收者,并且经修改的网络分组基于第二网络分组。然后可以将经修改的网络分组转发到其预期接收者,例如目的地服务器。例如,前述可以发生在负载均衡设备确定第二网络分组属于已经被目的地设备处置的网络流时。
在方法300的一些实现中,从第二源设备接收第二网络分组,其包括指定第二值的第二数据。可以对第二值应用函数以产生第二余数,并且可以确定第二余数满足由改变的规则中的一个指定的条件。例如,余数可以匹配由改变的规则中的一个指定的值。响应于该确定,可以将第二网络分组转发到负载均衡设备。可以从负载均衡设备接收经修改的网络分组,经修改的网络分组将与目的地服务器不同的目标服务器指定为经修改的网络分组的接收者,并且经修改的网络分组基于第二网络分组。然后可以将经修改的网络分组转发到其预期接收者,例如目标服务器。
前述公开描述了用于对服务器进行负载均衡的多个示例实现。如上面详述的,示例提供用于在中间网络设备处对网络业务进行负载均衡并且使得分组被分发到分离的目的地服务器的机制。其他示例提供用于使用中间网络设备将网络业务从不均衡的服务器转变到一个或多个其他服务器的机制。

Claims (12)

1.一种用于服务器负载均衡的中间网络设备,中间网络设备包括:
硬件处理器;以及
存储指令的数据存储设备,所述指令在被硬件处理器执行时使得硬件处理器:
从源设备接收网络分组,网络分组包括指定值的数据;
使网络分组中包括的值被除数除;
基于除法的余数来从多个服务器中确定网络分组的目的地服务器;以及
将网络分组转发到目的地服务器,
其中所述指令进一步使得所述硬件处理器:
从网络控制器接收用以对目的地服务器进行负载均衡的指令;
从第二源设备接收第二网络分组,所述第二网络分组包括指定第二值的第二数据;
确定第二网络分组去往目的地服务器;以及
响应于确定第二网络分组去往目的地服务器,将第二网络分组转发到负载均衡设备;
从负载均衡设备接收经修改的网络分组,所述经修改的网络分组将i)目的地服务器或ii)与目的地服务器不同的目标服务器指定为经修改的网络分组的接收者,经修改的网络分组基于第二网络分组;以及
将经修改的网络分组转发到接收者,
其中所述指令还使得所述硬件处理器:
生成用于源设备的第一规则,所述第一规则指定:
在与网络分组相同的流中包括的附加网络分组要被转发到目的地服务器。
2.根据权利要求1所述的中间网络设备,其中:
多个桶中的每个对应于所述多个服务器中的仅一个;
所述多个服务器中的每个对应于所述多个桶中的至少一个;以及
除数基于在所述多个桶中包括的桶的数目。
3.根据权利要求1所述的中间网络设备,其中指令进一步使得硬件处理器:
生成目的地规则,其指定在与网络分组相同的流中包括的附加网络分组要被转发到目的地服务器。
4.根据权利要求1所述的中间网络设备,其中:
第二网络分组要被转发到目的地服务器的确定基于:
第二值除以除数;或
规则,其指定从第二源设备接收的网络分组要被转发到目的地服务器;以及
负载均衡设备通过确定第二网络分组是现有流的部分还是新流的第一分组来确定经修改的网络分组的接收者。
5.一种编码有指令的非瞬时机器可读存储介质,所述指令可由用于服务器负载均衡的中间网络设备的硬件处理器执行,机器可读存储介质包括指令以使得硬件处理器:
从网络控制器接收将多个服务器标识为网络分组的接收者的至少一个规则,所述多个服务器中的每个与至少一个桶相关联;
从源设备接收网络分组,网络分组包括指定值的源数据;
使网络分组中包括的值被与所述多个服务器相关联的桶的总数目除;
基于i)所述至少一个规则和ii)除法的余数来从所述多个服务器中确定网络分组的目的地服务器;以及
将网络分组转发到目的地服务器,
其中所述指令进一步使得所述硬件处理器:
从第二源设备接收第二网络分组;
确定第二网络分组满足由改变的规则中的一个指定的条件;
响应于确定第二网络分组满足由改变的规则中的一个指定的条件,将第二网络分组转发到负载均衡设备;
从负载均衡设备接收经修改的网络分组,所述经修改的网络分组将目的地服务器指定为经修改的网络分组的接收者,经修改的网络分组基于第二网络分组;以及
将经修改的网络分组转发到接收者,
其中所述指令还使得所述硬件处理器:
生成用于源设备的第一规则,所述第一规则指定:
在与网络分组相同的流中包括的附加网络分组要被转发到目的地服务器。
6.根据权利要求5所述的存储介质,
其中所述第一规则还指定时间段,在所述时间段之后第一规则将超时。
7.根据权利要求6的所述存储介质,其中指令进一步使得硬件处理器:
从网络控制器接收用以对目的地服务器进行负载均衡的指令;以及
针对包括第一规则的指定网络分组要被转发到目的地服务器的每个规则,改变规则以将网络分组转发到负载均衡设备。
8.根据权利要求7所述的存储介质,其中指令进一步使得硬件处理器:
从第二源设备接收第二网络分组,所述第二网络分组包括指定第二值的第二数据;
使网络分组中包括的第二值被与所述多个服务器相关联的桶的总数目除;
基于第二值的除法的第二余数,确定第二网络分组匹配与目的地服务器相关联的所述至少一个桶中的一个;
响应于确定第二网络分组匹配与目的地服务器相关联的所述至少一个桶中的一个,将第二网络分组转发到负载均衡设备;
从负载均衡设备接收经修改的网络分组,所述经修改的网络分组将与目的地服务器不同的目标服务器指定为经修改的网络分组的接收者,经修改的网络分组基于第二网络分组;以及
将经修改的网络分组转发到接收者。
9.一种用于服务器负载均衡的方法,其由硬件处理器实现,方法包括:
从网络控制器接收至少一个规则,每个规则将多个服务器中的一个指定为网络分组的满足由规则指定的条件的接收者;
从源设备接收网络分组,网络分组包括指定值的数据;
对所述值应用函数以产生余数;
确定余数满足由所述至少一个规则中的特定规则指定的条件;以及
将网络分组转发到由特定规则指定的目的地服务器,
其中所述方法进一步包括:
从第二源设备接收第二网络分组;
确定第二网络分组满足由改变的规则中的一个指定的条件;
响应于确定第二网络分组满足由改变的规则中的一个指定的条件,将第二网络分组转发到负载均衡设备;
从负载均衡设备接收经修改的网络分组,所述经修改的网络分组将目的地服务器指定为经修改的网络分组的接收者,经修改的网络分组基于第二网络分组;以及
将经修改的网络分组转发到接收者,
其中所述方法还包括:
生成用于源设备的第一规则,所述第一规则指定:
在与网络分组相同的流中包括的附加网络分组要被转发到目的地服务器。
10.根据权利要求9所述的方法,
其中所述第一规则还指定时间段,在所述时间段之后第一规则将超时。
11.根据权利要求10所述的方法,进一步包括:
从网络控制器接收用以对目的地服务器进行负载均衡的指令;
针对包括第一规则的将目的地服务器指定为接收者的每个规则,改变规则以将负载均衡设备指定为接收者。
12.根据权利要求9所述的方法,进一步包括:
从第二源设备接收第二网络分组,所述第二网络分组包括指定第二值的第二数据;
对第二值应用函数以产生第二余数;
确定第二余数满足由改变的规则中的一个指定的条件;
响应于确定第二余数满足由改变的规则中的一个指定的条件,将第二网络分组转发到负载均衡设备;
从负载均衡设备接收经修改的网络分组,所述经修改的网络分组将与目的地服务器不同的目标服务器指定为经修改的网络分组的接收者,经修改的网络分组基于第二网络分组;以及
将经修改的网络分组转发到接收者。
CN201580079021.XA 2015-06-26 2015-06-26 用于服务器负载均衡的方法、设备和计算机存储介质 Active CN107438994B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2015/038048 WO2016209275A1 (en) 2015-06-26 2015-06-26 Server load balancing

Publications (2)

Publication Number Publication Date
CN107438994A CN107438994A (zh) 2017-12-05
CN107438994B true CN107438994B (zh) 2021-02-05

Family

ID=57586605

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201580079021.XA Active CN107438994B (zh) 2015-06-26 2015-06-26 用于服务器负载均衡的方法、设备和计算机存储介质

Country Status (4)

Country Link
US (1) US10742722B2 (zh)
EP (1) EP3281369B1 (zh)
CN (1) CN107438994B (zh)
WO (1) WO2016209275A1 (zh)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9225638B2 (en) 2013-05-09 2015-12-29 Vmware, Inc. Method and system for service switching using service tags
US9774537B2 (en) 2014-09-30 2017-09-26 Nicira, Inc. Dynamically adjusting load balancing
US10225137B2 (en) 2014-09-30 2019-03-05 Nicira, Inc. Service node selection by an inline service switch
US9935827B2 (en) 2014-09-30 2018-04-03 Nicira, Inc. Method and apparatus for distributing load among a plurality of service nodes
US10594743B2 (en) 2015-04-03 2020-03-17 Nicira, Inc. Method, apparatus, and system for implementing a content switch
US11252227B2 (en) * 2016-12-27 2022-02-15 Cisco Technology, Inc. System and method of managing flow state in stateful applications
US10797966B2 (en) 2017-10-29 2020-10-06 Nicira, Inc. Service operation chaining
US11012420B2 (en) 2017-11-15 2021-05-18 Nicira, Inc. Third-party service chaining using packet encapsulation in a flow-based forwarding element
CN108090158B (zh) * 2017-12-12 2021-02-02 中国联合网络通信集团有限公司 数据处理方法和数据处理系统
US10797910B2 (en) 2018-01-26 2020-10-06 Nicira, Inc. Specifying and utilizing paths through a network
US10805192B2 (en) 2018-03-27 2020-10-13 Nicira, Inc. Detecting failure of layer 2 service using broadcast messages
US11245753B2 (en) * 2018-08-17 2022-02-08 Fastly, Inc. User space redirect of packet traffic
US11595250B2 (en) 2018-09-02 2023-02-28 Vmware, Inc. Service insertion at logical network gateway
US10944673B2 (en) 2018-09-02 2021-03-09 Vmware, Inc. Redirection of data messages at logical network gateway
US11194610B2 (en) 2019-02-22 2021-12-07 Vmware, Inc. Service rule processing and path selection at the source
US11140218B2 (en) 2019-10-30 2021-10-05 Vmware, Inc. Distributed service chain across multiple clouds
US11283717B2 (en) 2019-10-30 2022-03-22 Vmware, Inc. Distributed fault tolerant service chain
US11223494B2 (en) 2020-01-13 2022-01-11 Vmware, Inc. Service insertion for multicast traffic at boundary
US11153406B2 (en) 2020-01-20 2021-10-19 Vmware, Inc. Method of network performance visualization of service function chains
US11659061B2 (en) 2020-01-20 2023-05-23 Vmware, Inc. Method of adjusting service function chains to improve network performance
US11277331B2 (en) 2020-04-06 2022-03-15 Vmware, Inc. Updating connection-tracking records at a network edge using flow programming
CN111614726B (zh) * 2020-04-24 2023-03-24 深圳震有科技股份有限公司 一种数据转发方法、集群系统及存储介质
CN111556154A (zh) * 2020-04-27 2020-08-18 深圳震有科技股份有限公司 数据传输方法、装置、设备及计算机可读存储介质
US11734043B2 (en) 2020-12-15 2023-08-22 Vmware, Inc. Providing stateful services in a scalable manner for machines executing on host computers
US11611625B2 (en) 2020-12-15 2023-03-21 Vmware, Inc. Providing stateful services in a scalable manner for machines executing on host computers

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103595648A (zh) * 2012-08-17 2014-02-19 国际商业机器公司 用于在服务器的接收侧进行负载均衡的方法和系统
CN104067578A (zh) * 2012-01-23 2014-09-24 思科技术公司 无分组重排序的动态负载均衡

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6601084B1 (en) * 1997-12-19 2003-07-29 Avaya Technology Corp. Dynamic load balancer for multiple network servers
TW501008B (en) * 2001-05-03 2002-09-01 Via Tech Inc Symmetric dual-slot type data hash method and its related network switching device
JP4499622B2 (ja) 2005-03-30 2010-07-07 富士通株式会社 トラフィック分散装置,トラフィック分散プログラム及びパケット中継方法
US8799918B2 (en) 2006-09-11 2014-08-05 Microsoft Corporation Dynamic network load balancing using roundtrip heuristic
US8489750B2 (en) 2008-02-28 2013-07-16 Level 3 Communications, Llc Load-balancing cluster
US8776207B2 (en) * 2011-02-16 2014-07-08 Fortinet, Inc. Load balancing in a network with session information
US8897154B2 (en) * 2011-10-24 2014-11-25 A10 Networks, Inc. Combining stateless and stateful server load balancing
CN104054304A (zh) 2012-01-11 2014-09-17 日本电气株式会社 计算机系统、控制器、交换机、通信方法以及存储网络管理程序的记录介质
US9386085B2 (en) 2012-04-04 2016-07-05 Radware, Ltd. Techniques for providing scalable application delivery controller services
US9130977B2 (en) 2012-04-18 2015-09-08 Radware, Ltd. Techniques for separating the processing of clients' traffic to different zones
US9680764B2 (en) * 2013-04-06 2017-06-13 Citrix Systems, Inc. Systems and methods for diameter load balancing
CN103795805B (zh) 2014-02-27 2017-08-25 中国科学技术大学苏州研究院 基于sdn的分布式服务器负载均衡方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104067578A (zh) * 2012-01-23 2014-09-24 思科技术公司 无分组重排序的动态负载均衡
CN103595648A (zh) * 2012-08-17 2014-02-19 国际商业机器公司 用于在服务器的接收侧进行负载均衡的方法和系统

Also Published As

Publication number Publication date
CN107438994A (zh) 2017-12-05
US20180176294A1 (en) 2018-06-21
EP3281369A4 (en) 2018-04-18
WO2016209275A1 (en) 2016-12-29
EP3281369B1 (en) 2020-11-04
US10742722B2 (en) 2020-08-11
EP3281369A1 (en) 2018-02-14

Similar Documents

Publication Publication Date Title
CN107438994B (zh) 用于服务器负载均衡的方法、设备和计算机存储介质
US20230327964A1 (en) Distributed packet deduplication
KR102536676B1 (ko) 패킷 처리 방법 및 장치, 및 관련 디바이스들
US10812524B2 (en) Method, and devices for defending distributed denial of service attack
US10313362B2 (en) Systems and methods for real-time configurable load determination
US20150281087A1 (en) Forwarding data packets using a service-based forwarding policy
US9602428B2 (en) Method and apparatus for locality sensitive hash-based load balancing
US9282064B2 (en) Method for processing a plurality of data and switching device for switching communication packets
CN106534394B (zh) 用于管理端口的设备、系统和方法
US11570108B2 (en) Distribution of network traffic to software defined network based probes
US9032524B2 (en) Line-rate packet filtering technique for general purpose operating systems
US9456030B2 (en) Methods of operating load balancing switches and controllers using modified flow entries
CN110798400B (zh) 报文转发方法及装置
WO2016177191A1 (zh) 一种报文的处理方法及装置
CN106797384B (zh) 以不同的协议将请求路由到集群中的相同端点
CN111740910A (zh) 一种报文处理方法、装置、网络传输设备及报文处理系统
CN104618253A (zh) 一种动态变更的传输报文处理方法和装置
CN111193756A (zh) 一种vxlan隧道负载均衡方法及相关设备
CN116545921A (zh) 基于ecmp的报文转发方法、装置、设备及存储介质
JP5154313B2 (ja) Sipメッセージ振分方法およびsipメッセージ振分装置
US11005884B2 (en) Denial of service mitigation with two-tier hash
CN109005120B (zh) 一种报文处理方法及网络设备
CN111866046A (zh) 一种实现集群的方法及相关设备
US20230164149A1 (en) Causing or preventing an update to a network address translation table
US10680998B2 (en) Method, system, and computer program product for a network device in switchless 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