一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

负载均衡的制作方法

2021-11-17 23:36:00 来源:中国专利 TAG:

负载均衡
1.本技术是申请日为2014年12月30日、申请号为201480082808.7、发明名称为“负载均衡”的发明专利申请的分案申请。
技术领域
2.本发明公开一般而言涉及负载均衡。


背景技术:

3.负载均衡器通常用于数据中心以将流量负载散布到可处理特定类型流量的多个可用的计算资源。图1和图2示出了当今数据中心中负载均衡器的两种常见部署。在图1中,负载均衡器100拓扑地部署在网络的边缘处并且在不同类型的vm之间(例如,在web服务器105和应用服务器110之间,以及在应用服务器110和数据库服务器115之间)。负载均衡器100在一些部署中是执行负载均衡功能的独立机器(例如,f5机器)。而且,在一些部署中,负载均衡器是在相同的主计算设备上执行的服务虚拟机(vm),这些主计算设备执行其流量通过负载均衡器进行均衡的不同服务器层。图2示出了作为服务vm(svm)的负载均衡器的一种这种部署。
4.在图1和图2的负载均衡器部署中,负载均衡器用作网络拓扑中的阻塞点位置,因为它们在流量负载增加时变成网络流量瓶颈。此外,这些部署需要手动配置负载均衡器和向这些负载均衡器发送数据包以便允许负载均衡器正确接收和分配负载均衡流量的计算设备。这些部署也不能随着数据流量的增加和减少无缝地增长和收缩接收负载均衡流量的计算设备的数量。


技术实现要素:

5.一些实施例提供了用于负载均衡由源计算节点(scn)发送到一个或多个不同的目的地计算节点(dcn)组的数据消息的新颖方法。在一些实施例中,该方法在源计算节点的出口数据路径中部署负载均衡器。该负载均衡器接收从源计算节点发送的每个数据消息,并且确定数据消息是否寻址到负载均衡器为其散布数据流量以跨(例如,数据流量被引导到的)组中的dcn均衡负载的dcn组之一。当接收到的数据消息未被寻址到负载均衡dcn组之一时,负载均衡器将接收到的数据消息转发到其寻址的目的地。另一方面,当接收到的数据消息被寻址到负载均衡器的dcn组之一时,负载均衡器识别应该接收数据消息的寻址dcn组中的dcn,并将数据消息引导到识别出的dcn。为了将数据消息引导到识别出的dcn,在一些实施例中,负载均衡器将数据消息中的目的地地址(例如,目的地ip地址、目的地端口、目的地mac地址等)从识别出的dcn组的地址改变为识别出的dcn的地址(例如,目的地ip地址)。
6.通过采用这种内联(inline)负载均衡(lb)方法,源计算节点不必被配置为在对其它数据消息进行前述这种寻址的同时将某些数据消息寻址到负载均衡器。该方法还可以无缝地为若干不同的dcn组执行负载均衡。在一些实施例中,源计算节点和(一个或多个)dcn组在数据中心中的一个计算集群内。相应地,一些实施例的方法可以无缝地对从计算集群
中的源计算节点发送到计算集群内的一个或多个dcn组的数据消息进行负载均衡。
7.在一些实施例中,源计算节点是在主机上执行的虚拟机(vm),并且负载均衡器是在相同主机上执行的另一个软件模块。在一些实施例中,其它vm也在主机上执行。在一些实施例中,主机上的vm中的两个或更多个vm(例如,所有vm)使用相同的负载均衡器,而在其它实施例中,主机上的每个vm具有在主机上执行的其自己的负载均衡器。
8.在一些实施例中,主机还执行软件转发元件(sfe)。sfe将主机的vm通信地耦合到彼此和主机外部的其它设备(例如,其它vm)。在一些实施例中,负载均衡器被插入在vm的出口路径中sfe之前。例如,在一些实施例中,每个vm具有连接到sfe的端口的虚拟网络接口卡(vnic)。在这些实施例中的一些实施例中,用于vm的负载均衡器由vm的vnic或由vm的vntc连接到的sfe端口来调用。在一些实施例中,vm在管理程序(hypervisor)之上执行,管理程序是启用主机的共享硬件资源的虚拟化的软件层。在这些实施例中的一些实施例中,管理程序提供向其vm提供内联负载均衡服务的负载均衡器。
9.一些实施例的负载均衡方法在具有执行若干vm和负载均衡器的若干主机的数据中心中实现。在这些实施例中的一些实施例中,负载均衡dcn中的一些或全部是在与scn vm相同或不同的主机上执行的其它vm。可以由一些实施例的负载均衡方法进行负载均衡的源和目的地计算节点的示例包括生成或消费数据消息的数据计算端节点(即,源和数据计算端节点),或当数据消息在数据计算端节点之间被中继时对这些消息执行某种类型的数据处理的中间件(middlebox)服务节点。数据计算端节点(dcen)的示例包括web服务器、应用服务器、数据库服务器等,而中间件服务节点的示例包括防火墙、入侵检测系统、入侵保护系统等。
10.在一些实施例的多主机环境中,主机上的负载均衡器实现分布式负载均衡(dlb)方法。一些实施例的这种dlb方法涉及在执行scn vm的主机上部署一个或多个负载均衡器。主机上的负载均衡器强制执行将数据流量从其主机上的scn vm散布到一个或多个dcn组的dcn所需的负载均衡规则。在这种分布式实现中,每个负载均衡器仅强制执行适用于其scn vm或vm的负载均衡规则。
11.一个或多个控制器的集合促进一些实施例的dlb操作。例如,在一些实施例中,主机上的负载均衡器基于它们负载均衡的数据消息来收集数据流量统计信息。然后,这些负载均衡器将收集到的统计信息传递给聚合统计信息的控制器集合。在一些实施例中,控制器集合然后将聚合的统计信息分发到在主机上执行的负载均衡代理。然后,这些代理分析聚合的统计信息以生成和/或调整负载均衡器(在与代理相同的主机上执行)强制执行的负载均衡标准。在其它实施例中,控制器集合分析聚合的统计信息以生成和/或调整控制器集合然后将其分发到主机以便其负载均衡器强制执行的负载均衡标准。在还有的其它实施例中,控制器集合基于聚合的统计信息生成和分发一些负载均衡标准,同时还将一些或所有聚合的统计信息分发给主机,使得它们的lb代理可以生成其它负载均衡标准。
12.无论生成负载均衡标准的实现如何,数据流量统计信息的收集和聚合允许负载均衡标准被动态调整。例如,当统计信息显示一个dcn的数据流量太拥挤时,负载均衡标准可以被动态调整,以减少该dcn上的负载,同时增加在相同dcn组中的一个或多个dcn上的负载。在一些实施例中,数据流量统计信息的收集和聚合还允许dlb方法通过动态地为dcn组实例化或分配新的dcn vm或通过实例化或分配新的scn vm来减少任何负载均衡的dcn组中
的负载。
13.前面的发明内容旨在用作为对本发明的一些实施例的简要介绍。这不意味着是对本文档中公开的所有发明性主题的介绍或概述。以下的具体实施方式和在具体实施方式中提及的附图将进一步描述在本发明内容中描述的实施例以及其它实施例。相应地,为了理解由本文档描述的所有实施例,需要对发明内容、具体实施方式、附图和权利要求书进行全面审查。而且,所要求保护的主题不受发明内容、具体实施方式和附图中的说明性细节的限制。
附图说明
14.本发明的新颖特征在所附权利要求中阐述。但是,为了解释的目的,在以下图中阐述了本发明的若干实施例。
15.图1和图2示出了当今数据中心中负载均衡器的两种常见部署。
16.图3示出了采用一些实施例的内联负载均衡方法的负载均衡体系架构。
17.图4示出了内联负载均衡器的示例。
18.图5示出了从主机采集统计信息并且基于采集到的统计信息动态调整负载均衡操作的控制器集合的示例。
19.图6示出了执行本发明的一些实施例的负载均衡模块的主机的更详细的体系架构。
20.图7和图8给出了一些实施例的负载均衡规则的示例。
21.图9示出了在一些实施例中负载均衡器执行的过程。
22.图10和11示出了在一些实施例中负载均衡代理执行的两个过程。
23.图12示出了在一些实施例中控制器集合执行的过程。
24.图13示出了显示用于实施例的控制器集合的操作的过程,其中控制器集合分析成员身份更新和/或全局统计信息,并且如果需要的话,响应于该分析指定和/或更新lb规则。
25.图14

16给出了若干示例,其示出了一些实施例如何通过调整负载均衡标准和通过添加/去除dcn vm来动态调整流量的散布。
26.图17示出了一些实施例的分布式负载均衡体系架构可以用于对去往中间件和来自中间件的数据流量进行负载均衡。
27.图18给出了示出一个vm的内联负载均衡器利用其它vm的多个其它内联负载均衡器形成多个分布式负载均衡器的示例。
28.图19给出了示出一些实施例的分布式负载均衡器可以将数据消息的虚拟地址不同地转换为不同的dcn组的示例。
29.图20示出了分布式负载均衡器集合,其基于所评估的到一组应用服务器的web服务器数据消息的优先级将数据消息引导到或者高优先级的应用服务器的子组或者低优先级的应用服务器组。
30.图21概念性地示出了实现本发明的一些实施例的计算机系统。
具体实施方式
31.在本发明的以下详细描述中,阐述和描述本发明的众多细节、示例和实施例。但
是,对本领域技术人员来说将清楚和显然的是,本发明不限于所阐述的实施例,并且本发明可以在没有所讨论的一些具体细节和示例的情况下实践。
32.一些实施例提供了用于负载均衡由源计算节点(scn)发送到一个或多个不同的目的地计算节点(dcn)组的数据消息的新颖方法。在一些实施例中,该方法在源计算节点的出口数据路径中部署负载均衡器。该负载均衡器接收从源计算节点发送的每个数据消息,并且确定数据消息是否寻址到负载均衡器为其散布数据流量以跨(例如,数据流量被引导到的)组中的dcn均衡负载的dcn组之一。当接收到的数据消息未被寻址到负载均衡dcn组之一时,负载均衡器将接收到的数据消息转发到其寻址的目的地。另一方面,当接收到的数据消息被寻址到负载均衡器的dcn组之一时,负载均衡器识别应该接收数据消息的寻址的dcn组中的dcn,并将数据消息引导到识别出的dcn。为了将数据消息引导到识别出的dcn,在一些实施例中,负载均衡器将数据消息中的目的地址(例如,目的地ip地址)从识别出的dcn组的地址改变为识别出的dcn的地址(例如,目的地ip地址、目的地端口、目的地mac地址等)。
33.可以由一些实施例的方法进行负载均衡的源和目的地计算节点的示例包括生成或消费数据消息的数据计算端节点(即,源和数据计算端节点),或对在数据计算端节点之间中继的数据消息执行一些数据处理的中间件服务节点。数据计算端节点(dcen)的示例包括web服务器、应用服务器、数据库服务器等,而中间件服务节点的示例包括防火墙、入侵检测系统、入侵保护系统等。此外,如本文档所使用的,数据消息是指以特定格式跨网络发送的位的集合。本领域的普通技术人员将认识到,术语数据消息在本文中可以用于指可以跨网络发送的各种格式化的位集合,诸如以太网帧、ip分组、tcp段、udp数据报等。
34.通过采用一些实施例的内联负载均衡(lb)方法,源计算节点不必被配置为在对其它数据消息进行前述这种寻址的同时将某些数据消息寻址到负载均衡器。在一些实施例中,当scn被部署为主机上的虚拟机时,服务被自动地部署用于scn,并且vm部署过程配置用于vm的负载均衡标准。该方法还可以无缝地为若干不同的dcn组执行负载均衡。在一些实施例中,scn和dcn位于数据中心中的一个计算集群内。相应地,一些实施例的方法可以无缝地对从计算集群中的其它源计算节点发送到计算集群内的一个或多个dcn组的数据消息进行负载均衡。
35.图3示出了采用一些实施例的内联负载均衡方法的负载均衡体系架构300。该体系架构是分布式负载均衡(dlb)体系架构,其在若干计算节点中的每一个的出口数据路径中具有负载均衡器305。该示例中的计算节点分为三组服务器,即,web服务器310、应用服务器315和数据库服务器320。在一些实施例中,这三组服务器是通常在数据中心中找到的三层服务器。
36.如图所示,负载均衡器305在这个示例中被放置在每个web或应用服务器的输出处,使得到应用服务器的web服务器数据流量被负载均衡,并且到数据库服务器的应用服务器数据流量被负载均衡。每个负载均衡器强制执行散布从负载均衡器的对应源计算节点(例如,源服务器)发送到作为一个dcn组的一部分的多个目的地计算节点(例如,目的地服务器)的数据流量所需的负载均衡规则。换句话说,这种分布式实现允许每个负载均衡器仅强制执行适用于其源计算节点的负载均衡规则。此外,这种分布式体系架构没有任何这样的负载均衡器:由于其从一个或多个源计算节点接收太多数据消息从而阻止它及时散布来自另一个源计算节点的数据消息而成为阻塞点。
37.在一些实施例中,源和目的地计算节点中的一些或全部是在主机上执行的虚拟机(vm),并且负载均衡器中的一些或全部是在与其源计算节点相同的主机上执行的其它软件模块。图4示出了其中负载均衡器305以及图3的三组服务器310、315和320在数据中心中的六个主机405

430上执行的示例。在图4所示的示例中,在需要其数据消息中的一些进行负载均衡的每个web或应用服务器的每个主机上执行一个lb。但是,在其它实施例中,主机上的一个负载均衡器对主机上的vm中的两个或更多个vm(例如,所有vm)的输出数据消息进行负载均衡。即使在使用一个负载均衡器用于两个或更多个scn vm的这种体系架构下,负载均衡器也实现dlb方案,因为每个负载均衡器只强制执行适用于该主机上的一个或多个scn vm的负载均衡规则。
38.图4示出了除了在主机上执行的vm和负载均衡器之外,在一些实施例中,每个主机还执行软件转发元件(sfe)435。主机上的sfe 435通过主机外部的一个或多个其它转发元件(例如,一个或多个交换机和路由器)将主机的vm通信地耦合到彼此和耦合到主机外部的其它设备(例如,其它主机上的vm)。sfe的示例包括软件交换机、软件路由器等。
39.如图4所示,一些实施例中的负载均衡器被插入在vm的出口路径中sfe之前。例如,在一些实施例中,每个vm具有连接到sfe的端口的虚拟网络接口卡(vnic)。在这些实施例中的一些实施例中,用于vm的负载均衡器由vm的vnic或由vm的vnic连接到的sfe端口来调用。在一些实施例中,vm在管理程序之上执行,管理程序是启用主机的共享硬件资源的虚拟化的软件层。在这些实施例中的一些实施例中,管理程序提供向其vm提供内联负载均衡服务的负载均衡器。
40.图4还示出了每个主机具有两个数据储存装置440和445。第一数据储存装置是lb规则数据储存装置440(例如,数据库),而第二数据储存装置是stat数据储存装置445。在一些实施例中,主机的数据储存装置440存储指定由主机的负载均衡器进行负载均衡的dcn组的dcn vm的ip地址的lb规则。在一些实施例中,lb规则储存装置440不仅存储dcn vm的ip地址,而且还存储负载均衡器用于对数据流量进行负载均衡的负载均衡标准(度量)。虽然在图4中示出了用于所有负载均衡器305的一个lb规则储存装置440,但是本领域普通技术人员将认识到,在其它实施例中,每个负载均衡器305具有其自己的lb规则储存装置440。
41.在一些实施例中,scn vm将数据消息发送到与负载均衡的dcn组相关联的虚拟地址(例如,虚拟ip(vip)地址)。在该数据消息被vm主机的sfe处理之前,scn vm的负载均衡器截取数据消息,并确定它寻址到其输入数据应当由负载均衡器进行负载均衡的dcn组(例如,确定消息的目的地ip地址是dcn组的vip)。然后,负载均衡器用存储在lb规则储存装置440中的dcn vm的物理地址(例如,vm的ip地址)替换数据消息中的虚拟地址。将目的地虚拟地址改变为dcn vm的物理地址是一种形式的目的地网络地址转换。由于虚拟地址被物理地址替换,因此虚拟地址不必路由出主机,这简化了负载均衡方案的部署。
42.在选择应该接收数据消息的dcn vm中,一些实施例中的负载均衡器使用存储在lb规则储存装置440中的负载均衡标准。在改变接收到的数据消息的网络地址之后,负载均衡器将数据消息提供给sfe用于sfe进行处理,使得数据消息可以到达寻址的dcn vm。这种方法的一个内在优点是不需要源地址转换(例如,源nat),因为流量返回到生成流量的scn vm。
43.stat数据储存装置445存储关于负载均衡的数据消息的统计信息。例如,当负载均
衡器305将数据消息散布到一个或多个负载均衡的dcn组时,在一些实施例中,负载均衡器存储关于多少个数据消息和/或多少个数据流正在被发送到每个负载均衡的dcn组中的每个dcn的统计信息。在其它实施例中,负载均衡器存储其它统计信息,如下面进一步描述的。虽然在图4中示出了用于所有负载均衡器305的一个stat数据储存装置445,但是本领域普通技术人员将认识到,在其它实施例中,每个负载均衡器305具有其自己的stat数据储存装置445。
44.在一些实施例中,存储在每个主机上的stat数据储存装置445中的统计信息被传递到促进一些实施例的dlb操作的一个或多个lb控制器的集合。然后,控制器集合聚合它从每个主机接收到的统计信息。控制器集合然后(1)将聚合的统计信息分发到每个主机,使得每个主机可以定义和/或调整其负载均衡标准,和/或(2)分析聚合的统计信息以指定和分发负载均衡标准中的一些或全部用于负载均衡器强制执行。以这种方式,负载均衡标准可以基于存储在stat数据储存装置445中的统计信息被动态调整。
45.在一些实施例中,控制器集合还动态地实例化vm或将vm分配给scn或dcn组,以便减少任何负载均衡的dcn组中的负载。当控制器集合检测到scn或dcn组之一中的vm已崩溃或有其它操作问题时,控制器集合还可以动态地实例化vm或将vm分配给这些组。在这种情况下,分布式负载均衡器的负载均衡操作可以被调整,以便使用新实例化的或分配的vm,并减少或消除已崩溃或有操作问题的vm的使用。
46.图5示出了从主机采集统计信息并且基于采集到的统计信息动态调整负载均衡操作的控制器集合的示例。具体地,该图示出了一些实施例的多主机系统500。如图所示,该系统包括多个虚拟化主机505

515、负载均衡(lb)控制器集合520、以及一个或多个vm管理控制器的集合525。如图5所示,主机505

515、lb控制器集合520以及vm管理器集合525通过网络575通信地耦合,其中网络575可以包括局域网(lan)、广域网(wan)或多个网络的网络(例如,互联网)。
47.vm管理控制器525提供用于定义(例如,分配或实例化)和管理每个主机上的一个或多个vm的控制和管理功能。在一些实施例中,这些控制器还提供用于定义和管理在主机的公共软件转发元件上定义的多个逻辑网络的控制和管理功能。在一些实施例中,除了主机505

515中的每一个被示为包括用于与lb控制器集合520交互的lb代理560,而没有示出主机的其它组件(诸如lb和stat数据储存装置440和445)之外,主机505

515类似于图4的主机405

430。lb代理560从stat数据储存装置445采集收集到的统计信息,并将这些统计信息中继到lb控制器集合520。在一些实施例中,lb代理560在将处理后的统计信息中继到lb控制器集合之前聚合和/或分析一些统计信息,而在其它实施例中,lb代理将收集到的原始统计信息中继到lb控制器集合。
48.lb控制器集合520聚合它从主机的lb代理接收到的统计信息。在一些实施例中,lb控制器集合520然后将聚合的统计信息分发给在主机上执行的lb代理。然后,这些代理分析聚合的统计信息以生成和/或调整与代理在相同的主机上执行的负载均衡器强制执行的lb规则或标准。
49.在其它实施例中,控制器集合分析聚合的统计信息以生成和/或调整控制器集合然后分发给主机用于其负载均衡器强制执行的lb规则或标准。在这些实施例中的一些实施例中,控制器集合将相同的lb规则和/或标准分发给一组相关联的负载均衡器中(即,在一
组dcn的dcn当中分发数据消息的一组负载均衡器中)的每个负载均衡器,而在其它实施例中,控制器将不同的lb规则和/或标准分发给一组相关联的负载均衡器中的不同负载均衡器。此外,在一些实施例中,控制器集合将更新的lb规则和/或标准分发给相关联的一组负载均衡器中的一些负载均衡器,而不将更新的lb规则和/或标准分发给该相关联组中的其它负载均衡器。
50.在还有的其它实施例中,控制器集合基于聚合的统计信息生成并分发一些负载均衡规则或标准,同时还将一些或所有聚合的统计信息分发给主机,使得它们的lb代理可以生成其它负载均衡规则或标准。本领域普通技术人员将意识到,lb规则和/或标准并不总是基于聚合的统计信息来调整。而是只有当聚合的统计信息需要这样的修改时,lb规则和/或标准才会被修改。
51.无论生成lb规则的实现如何,数据流量统计信息的收集和聚合允许lb规则或标准被动态调整。例如,当统计信息显示一个dcn的数据流量太拥挤时,lb规则或标准可以对于将数据消息发送到该dcn组的scn的负载均衡器进行动态调整,以便减少该dcn上的负载,同时增加相同dcn组中的一个或多个其它dcn上的负载。在一些实施例中,数据流量统计信息的收集和聚合还允许lb控制器集合520通过动态地指示vm管理控制器集合525为dcn组实例化或分配新的dcn vm或通过实例化或分配新的scn vm来减少负载均衡的dcn组中的任何dcn上的负载。
52.图6示出了执行本发明的一些实施例的负载均衡模块的主机600的更详细的体系架构。如图所示,主机600执行多个vm 605、sfe 610、一个或多个负载均衡器的集合615、lb代理620以及发布器622。主机还具有lb规则储存装置440和stat数据储存装置445,以及组成员身份数据储存装置684、策略数据储存装置682、聚合(全局)的统计数据储存装置686和连接状态储存装置690。
53.sfe 610在主机上执行,以通过在主机外部操作的一个或多个转发元件(例如,交换机和/或路由器)将主机的vm通信地耦合到彼此和耦合到主机外部的其它设备(例如,其它主机上的其它vm)。如图所示,sfe 610包括连接到主机的物理网络接口卡(图中未示出)的端口630和连接到每个vm的vnic 625的端口635。在一些实施例中,vnic是由虚拟化软件(例如,由管理程序)实现的物理网络接口卡(pnic)的软件抽象。每个vnic负责通过其对应的sfe端口在其vm和sfe 610之间交换数据消息。如图所示,用于其数据消息的vm出口数据路径包括(1)vm的vnic 625,(2)连接到该vnic的sfe端口635,(3)sfe 610,以及(4)连接到主机的pnic的sfe端口630。
54.通过其端口630和nic驱动器(图中未示出),sfe 610连接到主机的pnic以发送传出分组和接收传入分组。sfe 610执行消息处理操作以将它在其一个端口上接收到的消息转发到其另一个端口。例如,在一些实施例中,sfe尝试使用vm数据消息中的报头值来将消息与基于流的规则匹配,并且在找到匹配时,执行由匹配规则指定的动作(例如,将分组传递到其端口630或635之一,这些端口引导分组以提供给目的地vm或pnic)。在一些实施例中,sfe从数据消息中提取虚拟网络标识符和mac地址。这些实施例中的sfe使用提取的vni来识别逻辑端口组,并且然后使用mac地址来识别端口组内的端口。在一些实施例中,sfe 610是软件交换机,而在其它实施例中,它是软件路由器或组合的软件交换机/路由器。
55.在一些实施例中,sfe 610实现一个或多个逻辑转发元件(例如,逻辑交换机或逻
辑路由器),其中sfe在多主机环境中的其它主机上执行。在一些实施例中,逻辑转发元件可跨越多个主机来连接在不同主机上执行但属于一个逻辑网络的vm。换句话说,可以定义不同的逻辑转发元件以为不同的用户指定不同的逻辑网络,并且每个逻辑转发元件可以由多个主机上的多个sfe来定义。每个逻辑转发元件将一个逻辑网络的vm的流量与由另一个逻辑转发元件服务的另一个逻辑网络的vm的流量隔离。逻辑转发元件可以连接在相同主机和/或不同主机上执行的vm。
56.在一些实施例中,sfe端口635包括对一个或多个模块的一个或多个功能调用,该一个或多个模块对在端口处接收到的传入和传出分组实现特殊的输入/输出(i/o)操作。对于端口的这些功能调用之一是负载均衡器集合615中的负载均衡器。在一些实施例中,负载均衡器对传出数据消息执行负载均衡操作,该传出数据消息被寻址到其输入流量正在该组中的dcn当中散布以便减少在任何一个dcn上的负载的dcn组。对于图6所示的实施例,每个端口635具有其自己的负载均衡器615。在其它实施例中,端口635中的一些或全部共享相同的负载均衡器615(例如,所有端口共享一个负载均衡器,或者作为同一逻辑网络的一部分的所有端口共享一个负载均衡器)。
57.由端口635实现的其它i/o操作的示例包括防火墙操作、加密操作、消息封装操作(例如,沿着隧道发送消息以实现覆盖逻辑网络操作所需的封装操作)等。通过实现一堆这样的功能调用,端口可以在一些实施例中实现对传入和/或传出消息的一系列i/o操作。其它实施例不是从端口635调用i/o操作符(包括负载均衡器集合615),而是从vm的vnic或从sfe的端口630调用这些操作符。
58.负载均衡器615基于在lb规则储存装置440中指定的lb规则来执行其负载均衡操作。对于负载均衡的dcn组的虚拟地址(例如,vip),lb规则储存装置440存储负载均衡规则,其指定数据消息可以被引导到的组的dcn的两个或更多个物理地址(例如,ip地址)。在一些实施例中,该负载均衡规则还包括用于指定负载均衡器应该如何跨与虚拟地址相关联的组的dcn散布流量的负载均衡标准。
59.这种负载均衡标准的一个示例在图7中示出,图7给出了存储在lb规则储存装置440中的负载均衡规则的示例。如图所示,该数据存储包括多个lb规则700,每个lb规则与一个负载均衡的dcn组相关联。在该示例中,每个负载均衡规则包括(1)识别元组705的数据消息集合,(2)负载均衡的dcn组的若干dcn的若干ip地址710,以及(3)用于每个ip地址的权重值715。
60.每个规则的元组集合705包括规则相关联的dcn组的vip地址(作为目的地ip地址)。在一些实施例中,元组集合705仅包括vip地址。在其它实施例中,元组集合还包括诸如源ip地址、源端口、目的地端口和协议的其它数据消息标识符,其与目的地ip地址一起形成五元组报头值。在一些实施例中,负载均衡器通过将一个或多个消息标识符值(例如,目的地ip地址、或五元组报头值中的一个或多个)与规则元组集合705进行比较来搜索lb数据储存装置,以识别具有与消息标识符值匹配的元组集合的规则。
61.每个lb规则的ip地址710是作为dcn组的成员的dcn的ip地址,其中该dcn组具有在规则的元组集合705中指定的vip地址。在一些实施例中,dcn的地址作为由控制器集合初始提供(例如,以便配置负载均衡器)的数据的一部分提供或者在由控制器集合提供的对dcn组信息的后续更新中提供。
62.用于每个lb规则的ip地址的权重值715为负载均衡器提供了将流量散布到由ip地址识别的dcn的标准。例如,在一些实施例中,负载均衡器使用加权轮询方案将流量散布到负载均衡的dcn组中的dcn。作为一个示例,假设dcn组具有五个dcn,并且用于这些dcn的ip地址的权重值是1、3、1、3和2。基于这些值,负载均衡器将如下分发作为十个新流的部分的数据消息:将1个分发到第一个ip地址、将3个分发到第二个ip地址、将1个分发到第三个ip地址、将3个分发到第四个ip地址、并且将2个分发到第五个ip地址。
63.如下面进一步描述的,在一些实施例中,用于lb规则的权重值由lb代理620和/或lb控制器集合基于负载均衡器存储在stat数据储存装置445中的lb统计信息来生成和调整。为了从容地(gracefully)在不同负载均衡标准之间切换,在一些实施例中,lb规则为对不同时间段有效的lb规则的不同负载均衡标准指定时间段。
64.图8示出了具有这种时间段参数的负载均衡规则800的示例。在一些实施例中,这些lb规则存储在lb规则储存装置440中。每个lb规则800具有识别元组805、一个或多个ip地址集合810和一个或多个权重值集合815的一条消息。每个ip地址集合810具有两个或更多个ip地址,并且每个权重值集合815与ip地址集合相关联,并且具有用于其相关联的ip地址集合中的每个ip地址的一个权重值。
65.在图8所示的示例中,每个规则具有多个ip地址集合和多个权重值集合。每个ip地址集合及其相关联的权重值集合表示一个负载均衡标准集合。对于这些负载均衡标准集合中的每一个,每个规则具有指定ip地址集合810及其相关联的权重值集合815在其期间有效的时间段的时间值820。例如,在lb规则中,用于一个ip地址集合的时间值可能指定“在2014年9月1日下午1点之前”,而用于另一个ip地址集合的时间值可能指定“在2014年9月1日下午12:59之后”。这两个时间段允许负载均衡器在2014年9月1日下午1点从使用一个ip地址集合及其相关联的权重值集合无缝切换到另一个ip地址集合及其相关联的权重值集合。这两个ip地址集合可能完全相同,并且它们可能只在其相关联的权重值集合中不同。可替代地,两个ip地址集合可能不同。两个ip地址集合可能不同但具有重叠的ip地址(例如,一个集合可能具有五个ip地址,而当从dcn组添加或去除一个dcn时,另一个集合可能具有这五个ip地址中的四个)。可替代地,两个ip地址集合可能由于没有共同的ip地址而不同。
66.在图8中,时间段值和权重值在lb规则中被使用。本领域普通技术人员将认识到,在其它实施例中,lb规则确实包括权重值,但是包括允许负载均衡器在不同的负载均衡的dcn集合之间从容地切换的时间值。如前所述,两个dcn集合可能由于具有互斥的dcn而不同,或者它们可能由于具有一个或多个共同的dcn和一个或多个非共同的dcn而不同。
67.如图6所示,主机还包括连接状态储存装置690,其中负载均衡器存储数据记录,其允许负载均衡器维持用于作为相同流的一部分的数据消息的连接状态,并且从而将作为相同流的一部分的数据消息有状态地分发到相同dcn。更具体地,每当负载均衡器基于消息的组目的地地址(例如,目的地vip)来识别用于数据消息的dcn时,负载均衡器不仅用dcn的地址(例如,用dcn ip地址)替换组目的地地址,而且还在连接状态储存装置690中存储识别用于作为相同流的一部分的后续数据消息的dcn的记录。该记录存储识别出的dcn的目的地ip地址以及数据消息的报头值(例如,五元组值)。在一些实施例中,为了快速访问,连接数据储存装置690是基于数据消息报头值的散列来进行散列索引的。
68.为了识别用于接收到的数据消息的dcn,负载均衡器首先检查连接状态储存装置
690以确定其是否先前已经识别出用于接收在与接收到的消息相同的流中的数据消息的dcn。如果是,则负载均衡器使用在连接状态存储中识别出的dcn。只有当负载均衡器没有在连接状态储存装置690中找到连接记录时,负载均衡器才在一些实施例中检查lb规则储存装置440中的lb规则,以便识别接收数据消息的dcn。
69.通过利用作为相同流的一部分的后续数据消息的消息标识符搜索连接状态储存装置690,负载均衡器可以识别其先前识别出的用于相同流的数据消息的dcn,以便使用相同的dcn用于作为相同流的一部分的消息(即,以便有状态地执行其负载均衡操作)。在一些实施例中,当负载均衡器(从sfe端口630或635)接收由dcn发送到scn的数据消息时,负载均衡器也使用连接状态储存装置690记录,以在逆向流路径上用虚拟组地址(例如,组vip地址)替换dcn的目的地地址。在逆向流中的数据消息的目的地地址变换之后,负载均衡器将数据消息返回给调用它的sfe端口,使得sfe端口可以将数据消息引导到scn vm。
70.在一些实施例中,连接状态储存装置690与lb数据储存装置440不同地进行寻址。例如,如上所述,在一些实施例中,连接状态储存装置690基于散列的消息标识符值(例如,五元组标识符值)来存储其连接状态记录,而不使用这种散列寻址方案用于lb规则数据储存装置440。在一些实施例中,散列值指定连接状态储存装置690中存储对应的消息标识符集合的存储器位置。由于这种寻址方案,负载均衡器生成消息标识符集合的散列来识别连接状态储存装置690中的一个或多个位置,以检查匹配的消息标识符集合。在其它实施例中,lb规则数据储存装置440也是基于元组集合705的散列进行散列索引的。
71.在图6中,为所有负载均衡器615示出了仅一个lb规则数据储存装置440和仅一个连接状态储存装置690。在其它实施例中,每个负载均衡器具有其自己的规则数据储存装置440和连接状态储存装置690。在还有的其它实施例中,主机具有若干规则数据储存装置440和连接状态储存装置690,但是两个或更多个负载均衡器可以共享规则数据储存装置或连接状态储存装置(例如,均衡作为同一逻辑网络的一部分的两个vm的负载的两个负载均衡器)。如下面通过参考图18进一步描述的,具有其自己的规则数据储存装置440和连接状态储存装置690的每个负载均衡器615允许这些储存装置更小并且更容易更快地进行搜索。
72.在一些实施例中,每次负载均衡器615对数据消息执行负载均衡操作(即,将消息的目的地虚拟地址替换为dcn的目的地地址)时,负载均衡器更新它在stat数据储存装置445中维护的、用于它中继到作为其负载均衡操作的一部分被寻址到的dcn的数据流量的统计信息。统计信息的若干示例在上面提供并且将在下面进一步描述。
73.在一些实施例中,lb代理620采集(例如,周期性地收集)负载均衡器存储在(一个或多个)stat数据储存装置445中的统计信息,并且将这些统计信息中继到lb控制器集合520。基于lb控制器集合520从各种主机的各种lb代理采集的统计信息,lb控制器集合(1)将聚合的统计信息分发到每个主机的lb代理,使得每个lb代理可以定义和/或调整其负载均衡标准,和/或2)分析聚合的统计信息,以指定和分发负载均衡标准中的一些或全部用于负载均衡器强制执行。
74.在lb代理从lb控制器集合接收新的负载均衡标准的一些实施例中,lb代理将这些标准存储在主机级lb规则储存装置688中,以便传播到(一个或多个)lb规则储存装置440。在lb代理从lb控制器集合接收聚合的统计信息的实施例中,lb代理将聚合的统计信息存储在全局统计数据储存装置686中。在一些实施例中,lb代理620分析该储存装置686中的聚合
的统计信息以定义和/或调整负载均衡标准(例如,权重值),它然后将负载均衡标准存储在lb规则存储器688中以便传播到(一个或多个)lb规则储存装置440。发布器622检索lb代理620存储在lb规则储存装置688中的每个lb规则,并且将检索到的规则存储在需要强制执行该规则的负载均衡器615的lb规则储存装置440中。
75.lb代理620不仅基于新接收到的聚合的统计信息传播lb规则更新,而且它还基于从lb控制器集合520接收到的对dcn组的更新来传播lb规则或更新lb规则。lb代理620将它从lb控制器集合520接收到的每个dcn组的成员存储在组数据储存装置684中。当从dcn组中添加或去除dcn时,lb代理620将该更新存储在组储存装置684中,并且然后制定对lb规则的更新以将该dcn的目的地地址添加到应该包括该地址的lb规则中或将其从已经包括该地址的lb规则中去除。再次,lb代理620将这种更新的规则存储在规则数据储存装置688中,从那里发布器将它们传播到需要强制执行这些规则的负载均衡器的(一个或多个)lb规则储存装置440。
76.当dcn被添加到dcn组时,更新的lb规则使得负载均衡器将dcn组数据消息中的一些引导到所添加的dcn。可替代地,当dcn从dcn组中去除时,更新的lb规则使得负载均衡器把将去往去除的dcn的数据消息重新引导到该组中的其它dcn。但是,即使在dcn被有意地指定为从dcn组中被去除之后,负载均衡器在一些实施例中也可以继续将作为被引导到该dcn的先前流的一部分的数据消息发送到该dcn(例如,在该dcn去除之后的短时间内)。这允许dcn随着它处理的流终止逐渐和从容地从dcn组中去除。一些实施例还通过使用时间值来指定何时应当使用用于相同lb规则的不同lb标准来实现离开应当从dcn组去除的dcn的从容地变换。一些实施例也使用这种时间值来从容地向dcn组添加新的dcn。
77.在一些实施例中,lb代理620在策略储存装置682中存储响应于新供应的dcn vm及其相关联的负载均衡器和/或响应于更新的全局统计信息和/或调整后的dcn组成员身份而引导lb代理的操作的lb策略。策略储存装置682中的策略在一些实施例中由lb控制器集合520提供。
78.图9示出了负载均衡器615在一些实施例中执行的过程900。如图所示,当负载均衡器从其对应的sfe端口635接收(在905)数据消息时,过程900开始。当该端口从其vm接收到数据消息时,它中继该消息。在一些实施例中,端口通过向负载均衡器传递对数据消息的引用(例如,识别存储器中存储数据消息的位置的句柄)来中继数据消息。
79.接下来,该过程确定(在910)接收到的数据消息的目的地地址是否是负载均衡器必须均衡其输入的dcn组的虚拟地址(例如,vip地址)。为了做出这种确定,过程900检查lb规则数据储存装置440中存储该过程对其进行负载均衡的dcn组的虚拟地址的表。
80.当该过程确定(在910)数据消息不引导到负载均衡的虚拟地址时,该过程沿着消息的数据路径发送(在915)消息,而不对消息执行任何目的地地址转换。该操作(在915)需要向调用它的sfe端口635通知该过程已经完成处理vm数据消息。然后,sfe端口635可以将vm数据消息交递给sfe 610,或者可以调用另一个i/o链操作符以对vm数据消息执行另一个操作。在915之后,该过程结束。
81.在另一个方面,当该过程确定(在910)数据消息被引导到负载均衡的虚拟地址时,该过程确定(在920)连接状态高速缓存690是否存储识别数据消息应该被路由到的dcn的记录。如上所述,每次负载均衡器使用lb规则来引导dcn组的dcn的新数据消息流时,负载均衡
器在一些实施例中在连接状态高速缓存690中创建记录以存储dcn的物理ip地址,使得当负载均衡器接收到同一个流(即,具有相同的消息属性集合)内的另一个数据消息时,它可以将其路由到它用于同一个流中的先前数据消息的相同dcn。
82.此外,如上所述,在一些实施例中,连接状态高速缓存690基于作为识别数据消息报头值的属性的流的散列版本的散列地址值来存储每个流的记录。这种寻址方案允许负载均衡器快速搜索高速缓存690。因此,在搜索规则数据存储库440之前,负载均衡器首先从接收到的数据消息的消息属性集合生成散列值(例如,消息的五元组的散列)以识别高速缓存690中的一个或多个存储器位置,并且然后使用该散列值来检查该(一个或多个)存储器位置,以确定高速缓存是否存储具有与接收到的vm数据消息匹配的属性集合的连接流记录。
83.当过程900在高速缓存690中识别(在920)用于接收到的数据消息的流的记录时,该过程(在925)然后用存储在高速缓存690中的记录中的dcn目的地地址(例如,用dcn ip地址)替换消息的目的地地址(即,虚拟组地址,诸如vip地址)。在925,该过程沿着其数据路径发送地址转换后的数据消息。在一些实施例中,该操作需要向(调用负载均衡器以启动过程900的)sfe端口635返回通信,以让端口知道负载均衡器已完成其vm数据消息的处理。然后,sfe端口635可以将数据消息交递给sfe 610,或者可以调用另一个i/o链操作符以对数据消息执行另一个操作。在925,过程900还在一些实施例中更新其在stat储存装置445中维护的用于消息由过程900寻址到其的dcn的统计信息。这种更新反映了新的数据消息向该dcn的传输。在925之后,过程900结束。
84.当过程900确定(在920)连接高速缓存690没有存储用于接收到的数据消息的流的记录时,过程900搜索(在930)lb规则数据存储库440以识别用于在905处接收到的数据消息的lb规则。为了识别数据存储库440中的lb规则,在一些实施例中,该过程将接收到的数据消息的属性集合与识别规则的元组(例如,图7的元组705)的数据消息进行比较以识别具有与消息的属性集合匹配的元组集合的规则。在一些实施例中,该过程使用不同的消息属性集合来执行这种比较操作。例如,在一些实施例中,消息属性集合仅包括在910处被使用以确定消息是否被引导到负载均衡的dcn组的消息的目的地ip地址(例如,所寻址的dcn组的vip)。在其它实施例中,消息属性集合包括其它属性,诸如其它五元组标识符中的一个或多个(例如,源ip、源端口、目的地端口和协议中的一个或多个)。在一些实施例中,消息属性集合包括诸如虚拟网络标识符(vni)的逻辑网络标识符、虚拟分布式路由器标识符(vdri)、逻辑mac地址、逻辑ip地址等。
85.如上所述,在一些实施例中,每个lb规则包括两个或更多个目的地地址(例如,ip地址710),其是作为具有在规则的元组集合705中指定的虚拟地址(例如,vip地址)的dcn组的成员的dcn的目的地地址(例如,ip地址)。当该过程识别lb规则(在930)时,它选择规则的目的地地址(例如,ip地址)之一来替换消息中的虚拟地址(例如,vip地址)。此外,如上所述,每个lb规则存储用于促进过程选择lb规则的目的地地址之一来替换消息的虚拟目的地标识符的标准。在一些实施例中,存储的标准是以上参考图7和8描述的权重和/或时间值。相应地,在一些实施例中,过程900基于存储在规则中的选择标准来选择匹配的规则的目的地地址之一。
86.在改变数据消息的目的地地址之后,该过程(在935)沿着其数据路径发送数据消息。再次,在一些实施例中,该操作需要向(调用负载均衡器以启动过程900的)sfe端口635
返回通信,以让端口知道负载均衡器已完成其数据消息的处理。然后,sfe端口635可以将vm数据消息交递给sfe 610或者可以调用另一个i/o链操作符以对vm数据消息执行另一个操作。
87.在935之后,过程变换到940,其中在连接高速缓存数据存储库690中,它创建记录,以识别用于转发作为与在905处接收到的数据消息相同的流的一部分的数据消息的dcn(即,以识别dcn目的地标识符)。在一些实施例中,该记录基于在905处识别出的消息属性集合的散列值在高速缓存690中进行寻址。在940,过程900还更新它在stat储存装置445中维护的用于消息由过程900寻址到其的dcn的统计信息。这种更新反映了新的数据消息向该dcn的传输。在940以后,该过程结束。
88.图10和11示出了lb代理620在一些实施例中执行的两个过程。图10示出了lb代理620在每次它从lb控制器集合520接收到更新的组成员身份和/或全局统计信息时执行的过程1000。如图所示,过程1000在它从lb控制器集合520接收到用于至少一个dcn组的更新统计信息和/或对至少一个dcn组的更新的成员身份时开始(1005)。
89.接下来,过程1000确定(在1010)接收到的更新是否包括对lb代理为其生成和/或维护lb规则的至少一个dcn组的成员身份的更新。如果没有,该该过程变换到1020。否则,该过程在组成员身份储存装置684中创建和/或更新(在1015)一条或多条记录,以存储该过程在1005处接收到的更新的组成员身份。从1015,该过程变换到1020。
90.在1020处,过程1000确定接收到的更新是否包括用于lb代理为其生成和/或维护lb规则的至少一个dcn组的更新的统计信息。如果没有,则该过程变换到1030。否则,该过程在全局统计储存装置686中创建和/或更新(在1025)一条或多条记录,以存储该过程在1005处接收到的更新的全局统计信息。从1025,过程变换到1030。
91.在1030处,该过程启动分析组成员身份储存装置684和/或全局统计储存装置686中的更新记录的过程,以在主机级lb规则数据储存装置688中更新组成员身份(例如,ip地址)和/或一个或多个lb规则的负载均衡标准(例如,权重或时间值)。该分析过程将在下面参考图11进一步描述。从主机级lb规则数据储存装置688,发布器622将每个新的或更新的lb规则传播到需要处理新的或更新的lb规则的各个负载均衡器615(在同一主机上)的(一个或多个)lb规则数据储存装置640。在发布每个新的或更新的lb规则时,发布器622不将lb规则发布到不需要处理该规则的负载均衡器(在同一主机上)的规则数据储存装置640。
92.在1030之后,过程1000结束。
93.图11示出了lb代理620在一些实施例中执行以分析组成员身份储存装置684和/或全局统计储存装置686中的更新记录,以便在主机级lb规则数据储存装置688中更新组成员身份(例如,ip地址)和/或一个或多个lb规则的负载均衡标准(例如,权重或时间值)的过程1100。在一些实施例中,当lb代理加电时(例如,当其主机加电时),lb代理执行相同或类似的过程,以在主机上配置负载均衡器的lb规则,并且当新的scn vm在主机上被实例化时,lb代理执行相同或类似的过程,以配置实例化vm的负载均衡器的lb规则。
94.如图所示,该过程1100初始地在lb代理的主机上选择(在1105)负载均衡器615。在一些实施例中,该过程仅选择(在1105)受导致该过程执行的一条或多条更新记录影响的负载均衡器。接下来,在1110处,该过程选择所选择的负载均衡器必须对其进行负载均衡的dcn组的虚拟地址(例如,vip)。然后,该过程检索用于由所选择的虚拟地址识别出的dcn组
的存储的统计信息和组成员身份数据。
95.在1120处,该过程分析在1115处检索到的成员身份和统计信息记录。基于这种分析,该过程确定主机级lb规则数据储存装置688中的一个或多个lb规则的组成员身份(例如,ip地址)和/或负载均衡标准(例如,权重或时间值)是否应该为所选择的负载均衡器指定和/或修改。为了执行这种分析,过程1100使用在策略储存装置682中指定的一个或多个策略。如果该过程确定它应该为所选择的组指定或更新组成员身份和/或负载均衡标准,则该过程执行(在1120)这种指定或更新,并且然后将指定或更新的组成员身份和/或负载均衡标准存储在(在1125)存储在lb数据储存装置688中的一个或多个lb规则中。如上所述,主机lb规则储存装置688中指定或更新的lb规则由发布器622分发到在同一主机上对到所选择的组的输入流量执行负载均衡操作的任何负载均衡器的lb数据储存装置440。下面将描述更新负载均衡标准和/或组成员身份的若干示例。
96.在1125之后,该过程确定(在1130)它是否已检查所选择的负载均衡器必须进行负载均衡的所有虚拟组标识符(即,所有的dcn组)。如果没有,则它选择(在1135)另一个虚拟组标识符(即,另一个dcn组),并返回到1115以对该新选择的虚拟组标识符执行操作1115

1130。否则,该过程变换到1140,在那里它确定它是否已为其主机上的所有负载均衡器检查更新(例如,它是否已检查受新的或更新的组成员身份和统计信息数据影响的所有负载均衡器)。如果是,则该过程结束。如果没有,则该过程在与lb代理相同的主机上选择(在1145)另一个负载均衡器,并且然后为该新选择的负载均衡器重复操作1110

1140。
97.图12示出了lb控制器集合520中的一个或多个lb控制器在一些实施例中执行的过程1200。如图所示,当过程1200从一个或多个lb代理接收到统计信息和/或接收到对一个或多个dcn组的成员身份更新时开始(1205)。过程1200在一些实施例中从lb控制器集合的另一个过程接收组成员身份更新。例如,当lb控制器集合被虚拟化管理器集合525通知新的vm已为dcn组创建或已从dcn组终止时,lb控制器集合向过程1200通知新的dcn vm已被添加到dcn组或已从dcn组中去除。
98.在1205之后,该过程更新(在1210)(1)lb控制器集合520基于在1205处接收到的统计信息进行维护的全局统计信息,和/或(2)lb控制器集合520基于在1205处接收到的组更新进行维护的(一个或多个)组成员身份。接下来,在1215处,该过程基于更新的统计信息确定它是否应该具有为该组指定的或从该组中去除的一个或多个scn或dcn vm。例如,当更新的统计信息导致dcn组的聚合的统计信息超过用于该dcn组的总体阈值负载值时,过程1200确定必须为该dcn组指定(例如,分配或实例化)一个或多个新的dcn,以减少先前为该组指定的dcn上的负载。类似地,当更新的统计信息导致dcn组中的一个或多个dcn的聚合的统计信息超过阈值负载值时,过程1200可以确定必须为该dcn组指定(例如,分配或实例化)一个或多个新的dcn,以减少拥塞的dcn上的负载。相反,当更新的统计信息显示dcn组中的dcn未被充分利用或不再用于处理任何流时,过程1200确定(在1215)必须为dcn组去除dcn。
99.当过程1200确定(在1215)应该为该组添加或去除一个或多个scn或dcn vm时,该过程请求(在1220)vm管理集合525添加或去除该vm,并且然后变换到1225。当该过程确定(在1215)不需要为该组添加或去除scn或dcn vm时,它也变换到1225。在1225处,该过程确定是否已达到其将lb控制器集合维护的成员身份更新和/或全局统计信息分发到在一个或多个主机上执行的一个或多个lb代理的时间。
100.在一些实施例中,过程1200定期地分发成员身份更新和/或全局统计信息。但是,在其它实施例中,每当这个数据被修改时,过程1200分发用于一个或多个dcn组的成员身份更新和/或全局统计信息。除了请求从组中添加或去除vm之外,当作为组的一部分的vm故障时,组成员身份可以改变。这种vm故障必须被中继到lb代理,使得它们可以修改其相关联的负载均衡器的lb规则。在一些实施例中,过程1200分发的成员身份更新数据将故障dcn与有意去除的dcn(即,还未故障但已从dcn组中去除的dcn)区分开来。这种区分允许负载均衡器的操作对于故障的dcn和有意去除的dcn进行不同的修改。对于故障的dcn,负载均衡器停止使用故障的dcn,而对于有意去除的dcn,负载均衡器在一些实施例中可以在接收到成员身份更新之后继续使用去除的dcn一段时间(例如,对于直到特定时间的新流,或对于由dcn处理的先前接收到的流)。为了使负载均衡器停止使用故障的dcn,在一些实施例中,在负载均衡器的连接储存装置690中指定故障dcn的连接记录被去除。
101.当该过程确定(在1225)它不需要分发新数据时,它变换到1230以确定它是否已接收到它需要更新其记录的任何更多的统计信息和/或成员身份更新。如果是,则该过程变换回到1210以处理新接收到的统计信息和/或成员身份更新。如果没有,则该过程变换回到1225以再次确定它是否应该将新数据分发到一个或多个lb代理。
102.当该过程确定(在1225)应该分发(一个或多个)成员身份更新和/或全局统计信息时,它将该数据分发(在1235)到需要处理该数据的一个或多个lb代理,以指定和/或更新它们为其主机上的负载均衡器维护的负载均衡规则。在1235之后,该过程确定(在1240)它是否已接收到它需要为其更新它的记录的任何更多的统计信息和/或成员身份更新。如果没有,则该过程保持在1240,直到它接收到统计信息和/或成员身份更新,在那时它变换回到1210以处理新接收到的统计信息和/或成员身份更新。
103.在以上参考图10

12描述的实施例中,lb控制器集合520将全局统计信息分发到lb代理,lb代理分析该数据以指定和/或调整其维护的lb规则。但是,在其它实施例中,lb控制器集合520分析它采集的全局统计信息,并且基于该分析指定和/或调整lb规则,它然后将lb规则分发到lb代理。在这些实施例中,lb代理简单地将它们从lb控制器集合接收到的lb规则或规则修改存储在主机级lb规则储存装置688中,用于分发到负载均衡器615的各个lb规则储存装置440。
104.图13示出了显示用于实施例的lb控制器集合的操作的过程1300,在该实施例中lb控制器集合分析成员身份更新和/或全局统计信息,并且响应于该分析,如果需要的话,指定和/或更新lb规则。除了包括操作1312以及用操作1325和1335替换操作1225和1235之外,该过程类似于图12的过程1200。
105.在1312处,过程1300分析成员身份和统计信息记录,并且如果需要的话,指定和/或更新一个或多个lb规则的组成员身份(例如,ip地址)和/或负载均衡标准(例如,权重或时间值)。除了当由lb控制器集合的过程1300执行时,操作1312可能生成用于多个主机的负载均衡器的lb规则或规则更新之外,该操作类似于图11的过程1100的操作1120。从1312,该过程变换到如上所述的1215。
106.在1325处,过程1300确定它是否必须分发新指定和/或更新的lb规则。如果不是,则该过程变换到如上所述的1230。否则,该过程变换到1335以将新指定和/或更新的lb规则分发到具有需要强制执行指定和/或更新的lb规则的负载均衡器的主机的lb代理。在1335
之后,该过程变换到如上所述的1240。
107.图14

16给出了若干示例,其示出了一些实施例如何通过调整负载均衡标准和通过添加/去除dcn vm来动态调整流量的散布。这些示例中的每一个按照多个操作阶段示出,该多个操作阶段显示若干内联负载均衡器1400动态地调整它们如何将来自若干web服务器vm 1405的数据流量散布到若干应用服务器vm 1410。在这些示例中,每个负载均衡器1400与一个web服务器1405相关联,而应用服务器vm 1410是与一个虚拟地址标识符相关联的一个dcn组1450的一部分。此外,负载均衡器1400、web服务器1405和应用服务器1410在一个或多个主机上执行。在主机上,一个或多个lb代理620执行以与lb控制器集合520交换统计信息,以便允许负载均衡操作基于动态检测到的负载条件来动态地更新。为了简化这些图,lb代理620在图14

16中没有示出。
108.在三个操作阶段1401

1403中,图14示出了其中负载均衡标准基于动态检测到的负载条件进行调整的示例。在该示例中,每个负载均衡器1400使用加权轮询方案分发来自其相关联的web服务器1405的数据消息。控制该方案的权重值由(一个或多个)lb代理基于由lb控制器集合520提供的全局负载统计信息进行调整。这些统计信息指定应用服务器vm 1410上的负载。
109.在图14的第一操作阶段1401中,每个负载均衡器1400在应用服务器vm 1410当中均匀分发其web服务器vm 1405的数据消息。这种均匀分发在该图中通过在负载均衡器1400a上开始并且在应用服务器1410上终止的线上的10、10、10、10和9的指示绘出。这些数字是负载均衡器1400a正在引导到应用服务器1410的活动数据流的数量。如图所示,在这个阶段中的负载均衡器1400a将其操作基于权重值1、1、1、1和1。这些权重值指定负载均衡器应当均匀地将从web服务器1405a到应用服务器组1450的接下来的五个新数据消息流分发到五个应用服务器1410。
110.第一阶段1401还示出了从每个负载均衡器1400接收本地连接统计信息的lb控制器集合520。这些统计信息由在图14中未示出的负载均衡器的lb代理收集和中继。第一阶段1401还示出了其中一个所提供的本地连接统计信息的示例,它是负载均衡器1400a提供给lb控制器集合520的本地统计信息1420。该本地统计信息1420示出了负载均衡器1400a当前具有正在分别引导到组1450的应用服务器1410a

1410e的10、10、10、10和9个活动流。
111.在不同的实施例中,负载均衡器使用不同的技术来量化它们正在引导到每个应用服务器1410的活动流的数量。在一些实施例中,负载均衡器暂停(即,去除)在特定时间段之后不活动的流(即,它们还没有接收到任何新的数据消息)。其它实施例使用其它技术来量化活动流的数量。
112.其它实施例不是指定活动流的数量来表达dcn(即,在该示例中为应用服务器)上的数据流量负载,而是使用其它流量度量。例如,在一些实施例中,负载均衡器1400收集它们路由到每个应用服务器1410的数据消息(例如,数据分组)的数量。其它示例收集诸如tcp rtt和窗口大小、重传等的其它流量度量。还有的其它实施例收集其它负载度量(诸如往返延迟、tcp窗口大小等),其表示每个负载均衡器检测的、到该负载均衡器将流量引导到的每个dcn的负载。在一些实施例中,负载均衡器的lb代理测量这些其它负载度量(例如,往返延迟或tcp窗口大小),而在其它实施例中,负载均衡器测量这些负载度量中的一个或多个(例如,往返延迟或tcp窗口大小)。
113.第二阶段1402示出了将全局负载统计信息分发到每个负载均衡器1400的lb代理(图中未示出)的lb控制器集合520。在一些实施例中,全局负载统计信息是负载均衡器(通过lb代理)提供给lb控制器集合520的本地统计信息的聚合。第二阶段1402示出了全局连接统计信息的示例,全局连接统计信息是负载均衡器1400a的lb代理从lb控制器集合520接收到的全局统计信息1425。如图所示,本示例中的全局统计信息示出了五个应用服务器1410a

1410e的活动连接的以下数量:131、135、101、100和86。这些连接的数量表示所有五个负载均衡器1400正在从五个web服务器1405分发到五个应用服务器1410a

1410e的活动流的数量。
114.与收集到的本地统计信息一样,在其它实施例中,分布式全局统计信息是不同类型的流量和/或负载度量。在一些实施例中,分布式全局统计信息包括对于dcn组中的每个dcn,表示该dcn上的数据消息流量负载的聚合消息流量数据。这种负载数据的示例包括由dcn接收到的数据消息的数量(例如,分组的数量)、由dcn处理的流的数量、由dcn接收到的数据消息字节的数量等。在一些实施例中,度量可以被归一化为时间单位,例如,每秒、每分钟等。此外,在一些实施例中,分布式全局统计信息按照将dcn的负载与组中其它dcn的负载进行比较的相对拥塞百分比表示每个dcn上的数据消息负载。
115.在一些实施例中,分布式全局统计信息包括到每个dcn的聚合往返延迟(例如,平均往返延迟)、每个dcn的聚合tcp窗口大小值(例如,平均tcp窗口大小)等。此外,在一些实施例中,分布式全局统计信息部分或完全基于lb控制器集合520通过直接与dcn(例如,与应用服务器1410)交互而收集到的度量。在其中全局统计信息完全基于由lb控制器集合直接收集到的度量的一些实施例中,lb控制器集合不收集负载均衡器1400在本地收集的统计信息。
116.第二阶段1402还示出了负载均衡器1400a用于将新流散布到应用服务器1410的权重值的调整。这些权重值由(一个或多个)lb代理620基于接收到的全局统计信息1425进行调整。权重值在它们被调整之后为1、1、2、2、3。这些权重值指示负载均衡器1400a以加权轮询方法如下散布接下来的九个新的数据消息流:1个到第一应用服务器1410a、1个到第二应用服务器1410b、2个到第三应用服务器1410c、2个到第四应用服务器1410d、以及3个到第五应用服务器1410e。如上所述,一些实施例在lb规则中指定和使用时间段值,以便允许负载均衡器在不同的权重值集合之间从容地变换以动态地调整其负载均衡操作。
117.第三阶段1403示出了在权重值的这种调整之后,负载均衡器1400a对流的相对均匀分发变得朝与较高权重值相关联的应用服务器1410(即,应用服务器1410c、1410d和1410e)偏斜。具体地,该阶段示出了一旦权重值被调整,(从web服务器1405到应用服务器1410的)流的数量从20、20、20、19和19变为23、23、26、26和28。
118.在图14所示的示例中,负载均衡标准(即,本示例中的权重值)由(一个或多个)lb代理基于由lb控制器集合520分发的全局统计信息进行调整。但是,在其它实施例中,lb控制器集合基于lb控制器集合从负载均衡器和/或从(一个或多个)dcn组收集到的统计信息来调整和分发负载均衡标准。在这些实施例中,负载均衡器使用由lb控制器集合分发的负载均衡标准来执行或调整其负载均衡操作。在这些实施例中的一些实施例中,lb控制器集合还用初始的权重值初始地定义lb规则,并将这些规则分发到负载均衡器(通过lb代理)用于负载均衡器存储和使用。
119.在三个操作阶段1501

1503中,图15示出了将dcn添加到dcn组以减轻dcn组成员上的流量负载的示例。该示例遵循图14的示例的第三阶段1403。图15的第一阶段1501示出了将第六应用服务器1410f添加(例如,分配或实例化)到应用服务器组1450。该第六应用服务器1410f已通过lb控制器集合520指示vm管理控制器集合525将先前创建的应用服务器vm分配给该组,或者为该组实例化新的应用服务器vm而被添加到该组。
120.第一阶段1501还示出了向负载均衡器1400的lb代理(图中未示出)提供全局统计信息1520和组更新1522的lb控制器集合520。全局统计信息1520示出了每个应用服务器当前正在处理大约50k个流,这在该示例中被假设为接近对于每个应用服务器的流的阈值最大数量。如图所示,在该阶段中,从负载均衡器1400a到应用服务器的流的数量为20k、18k、21k、17k和19k。
121.组更新1522通知负载均衡器第六应用服务器1410f已被添加到应用服务器组1450。响应于该组更新,web服务器1405a的lb代理(图中未示出)调整该web服务器的负载均衡器1400a强制执行的lb规则的权重值。如第一阶段1501所示,调整后的权重值为1、1、1、1、1、1000。该权重值集合指示负载均衡器基于将接下来的五个新流分配给应用服务器1410a

1410e的加权轮询方案将接下来的1005个新的数据流从web服务器1405a分配给应用服务器1410a

1410f,并且然后将下1000个流分配给应用服务器1410f。
122.在接收组更新1522之后,其它web服务器1405的其它负载均衡器的lb规则通过其各自的(一个或多个)lb代理类似地进行调整。响应于这些调整后的权重值,第六应用服务器1410f上的负载开始增加,而头五个应用服务器1410a

1410e上的负载开始减小,如第二阶段1502所示。第二阶段1502示出了向负载均衡器1400的lb代理(图中未示出)提供更新的全局统计信息1525的lb控制器集合。更新的全局统计信息1525示出了该五个应用服务器1410a

1410e上的负载已经下降到40k、39k、41k、38k和39k,而第六应用服务器1410f上的负载已升至18k。在这个阶段,从负载均衡器1400a到应用服务器的流的数量现在是14k、12k、13k、15k、16k和8k。
123.第二阶段102还示出了响应于更新的全局统计信息,负载均衡器1400a的权重值已经被调整为1、1、1、1、3。在接收到全局统计信息1525之后,其它web服务器1405的其它负载均衡器的权重值也由其各自的(一个或多个)lb代理进行调整。然后,第三阶段1503示出了响应于这些权重值调整,跨应用服务器1410的负载已达到44k、42k、43k、45k、46k和35k,如更新的全局统计信息1535所指示的。在该阶段中,从负载均衡器1400a到应用服务器的流的数量现在是12k、12k、13k、14k、13k和13k。
124.在三个操作阶段1601

1603中,图16示出了当需要较少的dcn来处理dcn组上的负载时从dcn组中去除dcn的示例。该示例遵循图15的示例的第三阶段1503。图16的第一阶段1601示出了向负载均衡器1400的lb代理(图中未示出)提供全局统计信息1620和组更新1622的lb控制器集合520。全局统计信息1620示出了应用服务器1410分别处理22k、26k、27k、28k、28k和26k的流。如图所示,在这个阶段,从负载均衡器1400a到应用服务器的流的数量是6k、7k、10k、9k、10k和10k。
125.第一阶段1601还示出了lb控制器集合520提供通知负载均衡器应当从应用服务器组1450中去除第一应用服务器1410a的组更新1622。响应于该组更新,web服务器1405a的lb代理(图中未示出)调整该web服务器的负载均衡器1400a强制执行的lb规则的权重值。如第
一阶段1601所示,调整后的权重值为0、2、1、1、1、1。该权重值集合指示负载均衡器基于将接下来的两个新流分配给应用服务器1410b的加权轮询方案将接下来的6个新的数据流从web服务器1405a分配给应用服务器1410b

1410f,并且然后将接下来的四个流单独分配给四个应用服务器1410c

1410f中的每一个。
126.在接收到组更新1622之后,其它web服务器1405的其它负载均衡器的lb规则通过其各自的(一个或多个)lb代理类似地进行调整。响应于这些调整后的权重值,第一应用服务器1410a上的负载开始减小,而其它五个应用服务器1410b

1410f上的负载开始增加,如第二阶段1602所示。第二阶段1602示出了向负载均衡器1400的lb代理(图中未示出)提供更新的全局统计信息1625的lb控制器集合。更新的全局统计信息1625示出了应用服务器1410a上的负载已经下降到12k个流,而应用服务器1410b

1410f上的负载已经增加到30k、32k、31k、32k和30k个流。在该示例中,应用服务器1410a上的负载不会立即下降到零,因为该服务器继续为它已在处理的流接收数据消息。
127.第二阶段还示出了从负载均衡器1400a到应用服务器的流的数量现在为5k、8k、9k、8k、10k和9k。第二阶段1602还示出了响应于更新的全局统计信息,负载均衡器1400a的权重值已被调整为0、1、1、1、1、1。在接收到全局统计信息1625之后,其它web服务器1405的其它负载均衡器的权重值也由其各自的(一个或多个)lb代理进行调整。
128.然后,第三阶段1603示出了响应于这些权重值调整,应用服务器1410a已经被有效地从dcn组1450中去除,因为它不再接收来自负载均衡器1400的任何流。该阶段还示出了其它应用服务器1410b

f上的负载已达到40k、39k、41k、38k和39k个流,如更新的全局统计信息1635所指示的。在此阶段,从负载均衡器1400a到应用服务器的流的数量现在为0、12k、13k、14k、13k和13k。
129.上面的示例示出了添加新的dcn以减轻流量负载。在一些实施例中,dcn上的负载可以通过添加或去除scn vm来调整。此外,尽管上述示例中的lb规则包括促进负载均衡器动态调整负载的权重值,但是本领域普通技术人员将认识到,在其它实施例中,负载均衡器基于动态检测到的负载条件使用其它机制动态地调整数据流量负载。
130.在上述示例中,负载均衡器被描述为均衡数据计算端节点(dcen)(诸如web服务器、应用服务器和数据库服务器)的不同层之间的数据流量。但是,在一些实施例中,分布式负载均衡体系架构可以用于对去往和来自中间件服务节点的数据流量进行负载均衡。换句话说,在一些实施例中,dcn组中的dcn可以是中间件服务节点(诸如防火墙、入侵检测器、wan优化器等)。
131.此外,如图17所示,在一些实施例中,内联负载均衡器可以被配置为将最初发送到dcen的数据消息路由到中间件服务节点集合。在该示例中,内联负载均衡器1700(与web服务器vm 1705相关联)将web服务器1705发送到应用服务器1710的数据流量引导到防火墙中间件vm 1720。在将数据消息引导到防火墙1720时,内联负载均衡器执行在防火墙1720当中散布数据消息负载的负载均衡操作。一旦由防火墙1720处理,防火墙过滤的数据消息就由内联负载均衡器1730(与防火墙vm 1700相关联)分发到应用服务器1710。如图所示,在该示例中,防火墙服务器是在与web服务器和应用程序服务器相同的主机上执行的服务vm。
132.为了将寻址到应用服务器的虚拟地址(例如,vip)的数据流量引导到防火墙vm,负载均衡器1700在一些实施例中(1)执行用防火墙vm的虚拟地址替换应用服务器虚拟地址的
虚拟地址(例如,vip)转换,并且然后(2)基于其负载均衡标准在防火墙vm之间散布接收到的数据流量。在一些实施例中,负载均衡器1700地址转换在消息标识符中(例如,在分组报头中)插入允许防火墙vm 1720和负载均衡器1730确定其接收到的消息被引导到应用服务器1710的标识符。为了做出这种确定,在一些实施例中,负载均衡器1730被配置有使得负载均衡器能够将接收到的数据消息与应用服务器1710相关联的规则。
133.如上所述,vm 605的内联负载均衡器615可以对多个不同的dcn组执行多个不同的负载均衡操作。这是因为负载均衡器615可以应用多个不同的dcn组的负载均衡规则。这些规则存储在负载均衡数据储存装置440中,如以上参考图6

8所描述的。
134.图18示出了一个内联负载均衡器可以利用多个不同内联负载均衡器集合形成多个不同的分布式负载均衡器。图18给出了两个内联负载均衡器集合,其将vm的两个不同集合1805和1810的数据消息分发到两个不同的dcn组1820和1825。一个vm,vm1,是vm集合1805和1810两者的一部分。每个内联负载均衡器类似于图6的内联负载均衡器615。
135.如图18所示,vm1的内联负载均衡器1815强制执行存储在其负载均衡储存装置1840中的负载均衡规则1850和1855。这些负载均衡规则1850和1855指示负载均衡器1815将分别引导到dcn组1820和1825的vm1的数据消息分发到这些组中的dcn。此外,在该示例中,虚拟机vm2的内联负载均衡器1870强制执行用于为dcn组1820分发数据消息的lb规则,而虚拟机vm3的内联负载均衡器1875强制执行用于为dcn组1825分发数据消息的lb规则。用于dcn组1820的vm1和vm2的内联负载均衡器1815和1870的lb规则可以具有相同的lb标准或不同的lb标准。类似地,用于dcn组1825的vm1和vm3的内联负载均衡器1815和1870的lb规则可以具有相同的lb标准或不同的lb标准。这些负载均衡规则(例如,规则1850和1855)及其相关联的负载均衡储存装置(例如,储存装置1840)类似于负载均衡规则700和800以及图6

8的负载均衡储存装置440。
136.如图18所示,vm组1805的内联负载均衡器(例如,vm1和vm2的1815和1870)形成在dcn组1820的dcn当中分发来自组1805的vm的数据消息的分布式负载均衡器1880。类似地,如图所示,vm组1810的内联负载均衡器(例如,vm1和vm3的1815和1875)形成在dcn组1825的dcn当中分发来自组1810的vm的数据消息的分布式负载均衡器1890。
137.每个分布式负载均衡器1880或1890是逻辑构造,因为它不是物理世界中的一个项目,而是概念上表示一组相关联的内联负载均衡器执行以在dcn组上分发数据消息负载的一个负载均衡操作集合。在这种分布式方法中,每个内联负载均衡器只需要存储其实现的分布式负载均衡器的负载均衡规则。换句话说,这种分布式方法中的每个内联负载均衡器只需要存储其相关联的vm可能发出的dcn组数据消息的负载均衡规则。此外,在这种分布式方法中,每个内联负载均衡器只需要在其连接数据存储库(例如,连接数据储存装置690)中维护由负载均衡器的相关联的vm发送的数据消息流的流连接状态。由于所有这些原因,一些实施例的内联负载均衡器是快速和高效的,因为它们维护小的lb规则和它们可以快速搜索的连接状态数据储存装置。
138.在图18所示的示例中,通过作为两个相关联的负载均衡器集合(一个用于vm组1805和另一个用于vm组1810)的一部分,内联负载均衡器1815被示为是两个分布式负载均衡器1880和1890的一部分。在其它示例中,内联负载均衡器可以是任意数量n个分布式负载均衡器的一部分,当具有另一个n个内联负载均衡器集合时,它对被引导到n个不同dcn组的
数据消息强制执行n个负载均衡规则。
139.图19示出了另一个示例,其示出了一些实施例的内联负载均衡器可以将数据消息的虚拟地址不同地转换为不同的dcn组。具体地,该图示出了五个web服务器1905的五个内联负载均衡器1900,其将到与应用服务器的第一组1910相关联的第一vip的数据消息引导到该组1910的应用服务器1915和1920并对其进行负载均衡,同时将到与应用服务器的第二组1930相关联的第二vip的数据消息引导到该组1930的应用服务器1935和1940并对其进行负载均衡。
140.在一些实施例中,内联负载均衡器对寻址到相同虚拟地址的数据消息进行不同的引导和负载均衡。例如,一些实施例在被寻址的dcn组内定义优先级子组,并且基于不同优先级数据消息的优先级将它们负载均衡到不同的子组。例如,图20示出了内联负载均衡器集合2000,其基于评估的数据消息的优先级将到应用服务器的组2050的web服务器数据消息引导到应用服务器的高优先级子组2040或应用服务器的低优先级组2045。
141.在不同的实施例中,负载均衡器2000不同地评估来自web服务器2005的数据消息的优先级。例如,在一些实施例中,负载均衡器基于web服务器从其接收到数据消息的源的身份来评估数据消息的优先级。在评估数据消息的优先级之后,负载均衡器将接收到的数据消息引导到具有对应优先级的应用服务器子组。
142.许多上述特征和应用被实现为软件过程,其被指定为记录在计算机可读存储介质(也被称为计算机可读介质)上的指令集合。当这些指令被一个或多个处理单元(例如,一个或多个处理器、处理器的核心、或其它处理单元)执行时,它们使得这(一个或多个)处理单元执行在指令中指示的动作。计算机可读介质的示例包括,但不限于,cd

rom、闪存驱动器、ram芯片、硬盘驱动器、eprom等。计算机可读介质不包括无线地或通过有线连接传递的载波和电子信号。
143.在本说明书中,术语“软件”是指包括驻留在只读存储器中的固件或者可以被读入到存储器中用于被处理器处理的存储在磁储存装置中的应用。此外,在一些实施例中,多个软件发明可以被实现为更大程序的子部分,同时保留不同的软件发明。在一些实施例中,多个软件发明也可以被实现为单独的程序。最后,一起实现本文所描述的软件发明的单独程序的任意组合是在本发明的范围之内。在一些实施例中,当软件程序被安装以在一个或多个电子系统上操作时,该软件程序定义执行并运行该软件程序的操作的一个或多个特定的机器实现。
144.图21概念性地示出了实现本发明的一些实施例的计算机系统2100。计算机系统2100可以用于实现上述主机、控制器和管理器中的任一个。由此,它可以用于执行上述过程的任一个。该计算机系统包括各种类型的非临时性机器可读介质和用于各种其它类型的机器可读介质的接口。计算机系统2100包括总线2105、(一个或多个)处理单元2110、系统存储器2125、只读存储器2130、永久储存设备2135、输入设备2140和输出设备2145。
145.总线2105统一地表示通信地连接计算机系统2100的众多内部设备的所有系统、外围设备和芯片组总线。例如,总线2105将(一个或多个)处理单元2110与只读存储器2130、系统存储器2125和永久储存设备2135通信地连接。
146.从这些各种存储器单元中,(一个或多个)处理单元2110检索要执行的指令和要处理的数据,以便执行本发明的过程。(一个或多个)处理单元在不同实施例中可以是单个处
理器或多核心处理器。只读存储器(rom)2130存储由(一个或多个)处理单元2110和计算机系统的其它模块所需要的静态数据和指令。另一方面,永久储存设备2135是读和写存储器设备。这个设备是即使当计算机系统2100关闭时也存储指令和数据的非易失性存储单元。本发明的一些实施例使用大容量储存设备(诸如磁或光盘及其对应的盘驱动器)作为永久储存设备2135。
147.其它实施例使用可去除储存设备(诸如软盘、闪存驱动器等)作为永久储存设备。与永久储存设备2135一样,系统存储器2125是读和写存储器设备。但是,与储存设备2135不同,系统存储器是易失性读和写存储器,诸如随机存取存储器。系统存储器存储处理器在运行时需要的一些指令和数据。在一些实施例中,本发明的过程被存储在系统存储器2125、永久储存设备2135和/或只读存储器2130中。从这些各种存储器单元中,(一个或多个)处理单元2110检索要执行的指令和要处理的数据,以便执行一些实施例的过程。
148.总线2105还连接到输入和输出设备2140和2145。输入设备使用户能够传递信息和选择到计算机系统的命令。输入设备2140包括字母数字键盘和定点设备(也称为“光标控制设备”)。输出设备2145显示由计算机系统生成的图像。输出设备包括打印机和显示设备,诸如阴极射线管(crt)或液晶显示器(lcd)。一些实施例包括诸如用作输入和输出设备两者的触摸屏的设备。
149.最后,如图21所示,总线2105还通过网络适配器(图中未示出)将计算机系统2100耦合到网络2165。以这种方式,计算机可以是计算机的网络(诸如局域网(“lan”)、广域网(“wan”)、或内联网、或诸如互联网的网络的网络)的一部分,计算机系统2100的任何或所有组件可以与本发明结合使用。
150.一些实施例包括电子组件,诸如微处理器、在机器可读或计算机可读介质(可替代地称为计算机可读存储介质、机器可读介质或机器可读存储介质)中存储计算机程序指令的储存设备和存储器。这种计算机可读介质的一些示例包括ram、rom、只读压缩盘(cd

rom)、可记录压缩盘(cd

r)、可重写压缩盘(cd

rw)、只读数字多功能盘(例如,dvd

rom,双层dvd

rom)、各种可记录/可重写dvd(例如,dvd

ram、dvd

rw、dvd rw等)、闪存存储器(例如,sd卡、小型sd卡、微型sd卡等)、磁和/或固态硬盘驱动器、只读和可记录盘、超密度光盘、任何其它光或磁介质、以及软盘。计算机可读介质可以存储可由至少一个处理单元执行的并且包括用于执行各种操作的指令集合的计算机程序。计算机程序或计算机代码的示例包括诸如由编译器产生的机器代码,以及包括由计算机、电子组件、或利用解释器的微处理器执行的更高级代码的文件。
151.虽然以上讨论主要指执行软件的微处理器或多核心处理器,但是一些实施例由一个或多个集成电路来执行,诸如专用集成电路(asic)或现场可编程门阵列(fpga)。在一些实施例中,这种集成电路执行在该电路自身上存储的指令。
152.如在本说明书中所使用的,术语“计算机”、“服务器”、“处理器”、以及“存储器”都是指电子或其它技术设备。这些术语不包括人或人群。为了本说明书的目的,术语显示或正在显示意味着在电子设备上显示。如本说明书中所使用的,术语“计算机可读介质”、“多个计算机可读介质”和“机器可读介质”被完全限制为以由计算机可读的形式存储信息的有形的、物理的对象。这些术语不包括任何无线信号、有线下载信号、以及任何其它短暂或临时信号。
153.虽然本发明已经参考许多特定细节进行了描述,但是本领域普通技术人员将认识到,在不脱离本发明的精神的情况下,本发明可以以其它特定形式体现。例如,虽然上面参考若干主机体系架构描述了负载均衡过程,但是本领域普通技术人员将意识到,这些过程可以在各种各样的不同体系架构中实现,这些体系架构在沿着主机外其出口路径的各种不同位置处对消息进行负载均衡。例如,在一些实施例中,负载均衡过程在主机的pnic中实现。换句话说,在一些实施例中,主机的pnic检查vm消息以确定在将它们发送到主机外或将它们发送到其目的地gvm之前是否应该对其进行负载均衡。
154.在许多上述示例中,虚拟地址是负载均衡器用dcn vm的物理ip地址替代的vip。但是,本领域普通技术人员将认识到,在其它实施例中,虚拟地址是不同类型的地址,并且负载均衡器执行其它地址转换操作。例如,在一些实施例中,负载均衡器将虚拟端口地址转换为物理端口地址(即,执行l4地址转换操作),以替代执行ip网络地址转换(用物理ip地址替换vip)或与执行ip网络地址转换结合。在还有的其它实施例中,负载均衡器通过mac重新引导操作将数据消息引导到dcn组中的dcn,mac重新引导操作用应该接收数据消息的dcn的mac地址替换一个mac地址。在一些实施例中,dcn连接到逻辑上跨越多个主机的一个分布式逻辑交换机,并且mac重新引导将寻址到逻辑交换机的一个端口的数据消息引导到逻辑交换机的另一个端口。
155.在许多上述示例中,lb代理基于由控制器集合分发的数据调整在其主机上执行的负载均衡器的负载均衡标准。普通技术人员将意识到,在其它实施例中,负载均衡器本身基于由控制器集合分发的数据来调整其负载均衡标准。
156.本说明书贯穿全文参考包括虚拟机(vm)的计算和网络环境。但是,虚拟机仅仅是计算节点的一个示例,也被称为可寻址节点。本发明的一些实施例同样适用于利用在主计算设备上定义的端口抽象以允许在该主机上执行的多个程序共享该主机上的公共资源的任何计算节点。由此,在一些实施例中,计算节点可以包括非虚拟化物理主机、虚拟机、在主机操作系统之上运行而不需要管理程序或单独的操作系统的容器、以及管理程序内核网络接口模块。
157.在一些实施例中,vm使用由虚拟化软件(例如,管理程序、虚拟机监视器等)虚拟化的主机的资源与在主机上其自己的客户操作系统一起操作。租户(即vm的所有者)可以选择在客户操作系统之上要操作哪些应用。另一方面,一些容器是在主机操作系统之上运行而不需要管理程序或单独的客户操作系统的构造。在一些实施例中,主机操作系统使用名称空间将容器彼此隔离,并且因此提供在不同容器内操作的不同应用组的操作系统级隔离。这种隔离类似于在虚拟化系统硬件的管理程序虚拟化环境中提供的vm隔离,并且因此可以被视为隔离在不同容器中操作的不同应用组的一种虚拟化形式。这种容器比vm更轻巧。
158.在一些实施例中,管理程序内核网络接口模块是包括具有管理程序内核网络接口和接收/发送线程的网络堆栈的非

vm dcn。管理程序内核网络接口模块的一个示例是作为vmware公司的esxi
tm
管理程序的一部分的vmknic模块。
159.本领域普通技术人员将认识到,虽然本说明书提到vm,但是给出的示例可以是任何类型的dcn,包括物理主机、vm、非

vm容器和管理程序内核网络接口模块。事实上,在一些实施例中,示例网络可以包括不同类型的dcn的组合。
160.许多图(例如,图9

13)概念性地示出了过程。这些过程的特定操作可能没有以所
示出和描述的确切顺序执行。特定操作可能没有在一系列连续的操作中执行,并且不同的特定操作可能在不同的实施例中执行。此外,过程可以使用若干子过程来实现,或者作为更大的宏过程的一部分来实现。鉴于上述,本领域普通技术人员将理解,本发明不受上述说明性细节的限制,而是由所附权利要求来限定。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献