用于对任播数据业务进行负载均衡的方法和系统与流程

文档序号:11142927阅读:405来源:国知局
用于对任播数据业务进行负载均衡的方法和系统与制造工艺

本申请要求2014年9月24日提交的名为“METHOD AND SYSTEM FOR LOAD BALANCING ANYCAST DATA TRAFFIC(用于对任播数据业务进行负载均衡的方法和系统)”的美国专利申请No.14/495,683的优先权,该专利要求2014年5月13日提交的同样名为“METHOD AND SYSTEM FOR LOAD BALANCING ANYCAST DATA TRAFFIC”的美国临时专利申请No.61/992,623的优先权,以上的公开内容通过引用均整体合并入本文。

技术领域

本公开一般地涉及数据业务负载均衡领域。



背景技术:

世界上互联网可访问内容中的很多内容由大型数据中心中所托管的服务器提供。这样的数据中心通常跨多个地理位置分布,并且在全球服务最终用户。典型数据中心容纳数千个服务器,其托管与向最终用户所提供的不同服务相关联的软件应用的多个实例。当最终用户对于例如与网站、社交媒体服务、流送媒体内容项目、游戏服务、或任何其他在线服务相关联的互联网内容作出请求时,该请求被发送给与数据中心所托管的服务相关联的应用实例,以服务该最终用户的请求。



技术实现要素:

根据本公开的一个方面,一种用于对寻址到任播地址的数据业务进行负载均衡的方法包括:由负载均衡(LB)设备的第一集合中的每个LB设备维持第一数据结构,该第一数据结构包括与由LB设备的第一集合的LB设备服务的应用实例的群组中的应用实例相关联的条目。每个所服务的应用实例被包括在所述第一数据结构中的频率指示与对应的所服务应用实例的容量相关联的权重值。在LB设备的第一集合中的LB设备接收到初始被寻址到任播地址的数据分组后,LB设备基于所接收的数据分组的报头字段的第一集合来生成第一散列值。然后,第一集合的LB使用该第一数据结构,基于所生成的第一散列值来识别所服务应用实例中的一个的虚拟互联网协议(IP)地址,并且将该数据分组转发至所识别的应用实例。所述方法还包括:由LB设备的第二集合的LB设备维持第二数据结构,第二数据结构包括与该第一集合中的相应LB设备相关联的条目,LB设备的第一集合中的每个LB设备被包括在所述第二数据结构中的频率指示与第一集合中的对应LB设备相关联的权重值。在LB设备的第二集合中的LB设备接收到初始被寻址到该任播地址的数据分组后,LB基于所接收的数据分组的报头字段的第二集合来生成第二散列值,并且基于所生成的第二散列值,使用第二数据结构来识别第一集合的LB设备。然后,LB的第二集合将该数据分组转发至LB设备的第一集合的所识别的LB设备。

根据本公开的另一方面,一种用于在通信网络中对任播业务进行负载均衡的系统包括:负载均衡(LB)设备的第一集合。该LB设备的第一集合中的每个LB设备被配置为:维持第一数据结构,该第一数据结构包括与通过LB设备的第一集合的LB设备服务的应用实例的群组中的应用实例相关联的条目。每个所服务应用实例被包括在所述第一数据结构中的频率指示与对应的所服务应用实例相关联的权重值。在LB设备的第一集合的LB设备接收到数据分组后,LB设备基于所接收的数据分组的一个或多个第一报头字段来生成第一散列值,寻址到任播地址的数据分组在该系统处被接收;并且使用第一数据结构,基于所生成的第一散列值来识别所服务的应用实例中的一个的虚拟互联网协议(IP)地址。然后第一集合的LB设备将数据分组转发至所识别的应用实例。所述系统还包括负载均衡(LB)设备的第二集合。LB设备的第二集合中的每个LB设备被配置为:维持第二数据结构,该第二数据结构包括与第一集合中的相应LB设备相关联的条目。LB设备的第一集合中的每个LB设备被包括在所述第二数据结构中的频率指示与第一集合中的对应LB设备相关联的权重值。在LB设备的第二集合的LB设备接收到数据分组后,LB设备基于所接收的数据分组的一个或多个第二报头字段来生成第二散列值,寻址到所述任播地址的所述数据分组在所述系统处被接收;并且基于所所生成的第二散列值,使用第二数据结构来识别LB设备的第一集合的LB设备。然后,LB设备将该数据分组转发至第一集合的所识别的LB设备。所述系统进一步包括与任播地址相关联的任播节点,被配置为在接收投递给任播地址的数据分组时,将接收的数据分组转发给LB设备的第二集合的LB设备。

附图说明

本公开的上述和相关目的、特征、和优点在结合以下附图时通过参照下面的具体实施方式将被更充分地理解,其中:

图1示出用于对被寻址到任播地址的数据业务进行负载均衡的单层负载均衡系统的实施方式的框图。

图2示出描述由单层负载均衡系统执行的处理任播数据分组的过程的实施方式的流程图。

图3示出用于对被寻址到任播地址的数据业务进行负载均衡的两层负载均衡系统的实施方式的框图。

图4示出表示两层负载均衡系统的另一个实施方式的框图。

图5示出描述由两层负载均衡系统执行的处置任播数据分组的过程的实施方式的流程图。

图6示出描述用于生成负载均衡器所采用的数据结构的过程的实施方式的流程图。

图7示出图1和图3中的系统所采用的数据结构的图示。

各个附图中相似的附图标记和名称指示相似的元件。

具体实施方式

在线服务或应用通常包括每个应用或服务的多个应用实例。每个应用或服务的多个应用实例可以驻留在多个计算机服务器上。因此,与多个最终用户访问应用或服务相关联的负载可以跨至少对应的多个应用实例的子集分布。此外,将给定应用或服务的多个应用实例跨不同地理位置分布有助于缩短最终用户所经历的时延。具体的,可以通过具有对应的多个应用实例中的一个或多个的最靠近的地理位置来服务最终用户。虽然通过对应的最靠近地理位置来服务每个最终用户或客户端缩短了时延,但是每个地理位置中的计算机服务器以及其中的应用实例具有有限的容量。当在特定位置处的对于给定应用或服务的需求超出相同位置中的应用实例的容量时,对于应用的超额需求可以溢出到下一个最靠近的位置。

为了解决计算机服务器以及其上所执行的应用实例的有限容量,现有数据中心中在传统上采用域名系统(DNS)服务器来执行负载均衡功能。下文中呈现用于对任播数据业务进行负载均衡的过程、装置、和系统的实施方式。

在基于任播的服务或应用中,全局地使用任播来从多个服务器通告一个或多个互联网协议(IP)地址。然后在访问相同的应用或服务时,由最终用户使用给定应用或服务的任播IP地址。然后,如下面描述的实施方式中所述,跨不同的对应应用实例来对与该任播地址相关联的数据业务——例如来自最终用户的访问该应用或服务的请求进行负载均衡。本文中与任播地址相关联的数据业务又被称作任播业务或任播数据业务。在一些实施方式中,即使互联网路由表发生变化,也在维持对应连接的同时对与例如传输控制协议(TCP)的状态协议相关联的任播业务进行负载均衡和服务。此外,下述实施方式能够允许对于不同位置来指定容量或其他负载均衡度量,并且允许对负载、容量、或任何其他负载均衡度量上的变化的快速的负载均衡响应。

图1示出用于对被寻址到给任播地址的数据业务进行负载均衡的单层负载均衡系统100的实施方式的框图。系统100包括多个任播重定向器节点110a–110c(下面个体地或统一地又被称为任播节点110)、负载均衡器设备120a–120c(下面个体地或统一地又被称为负载均衡器120)、以及多个服务器群集130a–130c(下面个体地或统一地又被称为群集130)。群集130中的每个群集包括若干应用实例131。

由任播节点110在系统100处接收被寻址到任播地址的数据分组10。例如,由任播节点110接收数据分组10。任播节点110是被配置为接收被寻址到任播地址的数据分组10,并且将所接收的数据分组重定向到对应的负载均衡器120的设备。在一些实例中,任播节点110将所接收的数据分组10重定向到对应的负载均衡器120。在其他实例中,进行接收的任播节点110将所接收的数据分组10重定向到负载均衡器120的池,其服务系统100的相应群集130中的一个或多个。

在一些实施方式中,每个任播节点110维持相应的映射或者能够对其访问,所述映射将源互联网协议(IP)地址映射到对应的群集130或者与这样的群集相关联的负载均衡器120。映射又被称为源IP映射。在一些实例中,将每个源IP地址映射到群集130或对应的负载均衡器120,其最靠近与相同的源IP地址相关联的数据分组源。本领域技术人员应当理解,例如基于系统100的管理员所作出的指派,可不同地限定源IP地址与群集130或负载均衡器120之间的映射。在接收被寻址到任播地址的数据分组10时,任播节点110在源IP映射中查找分组的源互联网协议(IP)地址,并将数据分组10重定向到所映射的位置——即与源IP映射中的源IP地址相关联的位置。所映射的位置指示系统100的负载均衡器120或者负载均衡器120池。

在一些实施方式中,任播节点110使用所接收的数据分组10的若干报头字段来确定所接收的数据分组10要被重定向到其的负载均衡器120或者负载均衡器120池。例如,进行接收的任播节点110使用目的地IP地址(诸如虚拟IP(VIP)地址)以及与所接收的数据分组10相关联的源端口来确定多个任播服务群组当中的任播服务群组。在一些实施方式中,进行接收的任播节点110能够使用目的地地址、目的地端口、源IP地址、源端口、协议、或者其任何组合来确定任播服务群组。进行接收的任播节点110也可以使用数据分组有效载荷中所包括的其他信息,诸如连接标识符(ID)等。例如,可以限定两个任播服务群组,一个任播服务群组使用用于后端负载均衡的端点服务器,并且另一个任播服务群组采用用于后端负载均衡的负载均衡服务器。端点服务器被配置为终止传输控制协议(TCP)连接。在其他示例中,可以限定不同的任播服务群组。在将分组的目的地IP地址和源端口映射到对应的任播服务群组时,进行接收的任播节点110对例如指示这样的映射的第二映射或配置信息进行利用。进行接收的任播节点110进一步采用所接收的数据分组10的源IP地址以及与进行接收的任播节点110相关联的源IP映射来确定系统100的区,例如一个或多个群集130。在一些实施方式中,所有任播节点110共享单个源IP映射。在其他实施方式中,可以将不同的任播节点110与完全不同的源IP映射相关联。在一些实施方式中,将每个源IP映射与相应服务相关联。然后,进行接收的任播节点110基于例如第三映射来将所确定的区以及所确定的任播服务群组映射到负载均衡器120或者负载均衡器120池。然后,进行接收的任播节点将所接收的数据分组10重定向到所确定的负载均衡器120或者所确定的负载均衡器120池。

本领域技术人员应当理解,使用例如源IP映射的全局映射使由任播节点110对数据分组10的重定向一致。换言之,如果在任播节点110c处而不是任播节点110b处接收数据分组,则任播节点110c会使用源IP映射来将数据分组10重定向到任播节点110b会选择的相同的负载均衡器。

进行接收的任播节点110进一步能够被配置为检查连接表,以确定所接收的数据分组10是否对应于最近由进行接收的任播节点110服务的数据流或会话。如果所接收的数据分组对应于连接表中所指示的数据流或会话,则进行接收的任播节点110将所接收的数据分组10转发到与对应的数据流或会话相关联的目的地。否则,如上所述,进行接收的任播节点110确定负载均衡器120或者负载均衡器120池,并且将所接收的数据分组10重定向到所确定的负载均衡器120或所确定的负载均衡器120池。

在一些实施方式中,每个负载均衡器120是包括处理器和存储器的计算设备。存储器存储与数据分组10起初被寻址到的任播地址相关联的数据结构121和计算机代码指令。计算机代码指令包括软件负载均衡器以用于对与任播地址相关联的数据分组进行负载均衡。在一些实施方式中,软件负载均衡器是虚拟机。负载均衡器120可以包括与相同任播地址相关联的多个软件负载均衡器和/或与多个任播地址相关联的多个软件负载均衡器。数据结构121被负载均衡器120采用,以将与任播地址相关联的数据分组映射到驻留在群集130中的对应应用实例131。在一些实例中,每个负载均衡器120包括用于由相同负载均衡器120服务的每个任播地址的独立数据结构。处理器被配置为执行存储器中存储的计算机代码指令。本领域技术人员应当理解,每个负载均衡器120可以包括多个处理器和/或多个存储器。负载均衡器120包括计算机服务器、终止TCP连接的端点服务器、被配置为执行本文所述的负载均衡的其他电子设备、或者其组合。

在一些实例中,负载均衡器120跨系统100的不同地理区域来分布。例如,负载均衡器120a、120b、和120c分别服务对应的群集130a、130b、和130c。在其他实例中,负载均衡器120可以服务多于一个群集130。负载均衡器120可以服务系统100的区。本文中区指代例如基于对应的地理位置或其他标准而相关的系统100的一个或多个群集130。例如,区可以包括诸如在相同数据中心内彼此地理上紧密接近来安置的多个群集130。在其他实例中,区可以包括通过相对高速的通信链路来相互连接的更为遥远的群集130。此外,区可以由负载均衡器池来服务。

在由任播节点110将所接收的数据分组10重定向到负载均衡器120的池的实例中,可以采用等价多路径(ECMP)路由来将所接收的数据分组转发给负载均衡器120池的特定负载均衡器120。例如,接收数据分组10的设备基于数据分组10的报头字段来生成整数散列值,例如分组的五元组,包括协议、源IP地址、目的地IP地址、源端口、以及目的地端口。然后,进行接收的设备基于所生成的散列值对包括负载平衡器120的标识的表的大小取模来确定目的地负载均衡器120。在一些实施方式中,如以下所进一步描述的,进行接收的设备使用与负载均衡器120所使用的算法相同或基本上相似的算法来确定目的地负载均衡器120。然后,进行接收的设备或者通过重写分组的层二以太网报头以指向目的地负载均衡器120,或者通过利用通用路由封装(GRE)报头以及外部IP报头来对数据分组10封装,将数据分组10递送至目的地负载均衡器120。包括派发分组的目的地IP地址的多个软件负载均衡器的负载均衡器120可以采用相同的途径,将所接收的数据分组10转发给多个软件负载均衡器中的一个。

接收到数据分组10后,进行接收的负载均衡器120或者其上的软件负载均衡器基于数据分组的一个或多个报头字段来生成散列值,例如包括协议、源IP地址、目的地IP地址、源端口、以及目的地端口的分组的五元组。在一些实施方式中,数据结构121包括与进行接收的负载均衡器120所服务的应用实例131的群组相关联的条目。应用实例131的群组对应于与数据分组10到达系统100时被寻址到的任播地址相关联的应用或服务。然后,进行接收的负载均衡器120使用所生成的散列值和数据结构121来确定由进行接收的负载均衡器120服务的应用实例的群组中的应用实例131的目的地IP地址。然后,进行接收的负载均衡器120将数据分组10转发给所确定的应用实例131。

在一些实施方式中,以在数据结构121中包括每个应用实例131的频率反映与相同应用实例131相关联的权重的方式设计数据结构121。与应用实例131相关联的权重指示了负载均衡度量,诸如容量、处理时间、或者与决定要将数据分组转发至哪个应用实例131相关的其他标准。即,与每个应用实例131相关联的权重可以反映:应用实例131有多繁忙或者有多空闲。替选地,与给定应用实例131相关联的权重可以反映,如果使用相同的应用实例131,则对数据分组10进行处理有多快或者有多慢。每个应用的容量可以在每秒的分组、连接、或每秒的同步(SYN)分组、带宽等方面来被限定。处理时间可以在往返延时(RTT)或者本领域已知的其他度量方面来限定。在数据结构121中,应用实例131越频繁被包括,就越可能选择相同的应用实例131以用于处理与数据分组10相关联的请求。

进行接收的负载均衡器120使用所生成的散列值来选择数据结构121的条目。例如,进行接收的载均衡器120可以选择具有等于所生成的散列值对数据结构的大小或者数据结构的元素部分的大小取模的索引的数据结构条目。数据结构121的每个条目指示对应的应用实例131。例如,数据结构121的每个条目包括对应应用实例131的目的地IP地址。然后,进行接收的负载均衡器120将数据分组10转发给具有从所选择的数据结构条目获得的目的地IP地址的应用实例131。

在一些实施方式中,数据结构121是单个表,其中每行或者替选地每列包括与系统100的对应位置——例如群集130或区相关联的应用实例的条目。因此,进行接收的负载均衡器120可以首先选择行或者替选地选择列,并且然后基于所生成的散列值来选择所选择的行或者替选地所选择的列内的条目。在一些实施方式中,数据结构121包括多个表,其中每个表对应于系统100的位置,例如区或群集130。在这样的情况下,进行接收的负载均衡器120可以首先选择表,并且然后基于所生成的散列值来选择所选择的表内的条目。

进行接收的负载均衡器120可以以不同的方式来选择与系统100的位置相对应的表或子表,例如行或列。例如,所述选择可以基于将IP子网与系统100的对应位置相关联的映射。可以通过观察来自每个IP子网的业务通常到达系统100的哪个位置来限定这样的映射。替选地,可以基于系统100的管理员作出的指派或者基于IP子网与系统100的位置130之间的距离和RTT来限定映射。进行接收的负载均衡器120在映射中查找与所接收的数据分组10相关联的源IP地址,并且得到位置或者位置的加权列表。如果从映射中检索到位置的加权列表,则进行接收的负载均衡器可以基于对应的权重以及使用数据分组10的一个或多个报头字段——例如五元组来生成的另一个散列值,从列表中选择位置。但是,如果不使用加权列表,则进行接收的负载均衡器120检查在映射中指示的最靠近的位置是否具有足够的可用容量来处理数据分组10。如果是,则选择该最靠近的位置,否则检查如映射中所指示的下一个最靠近的位置,并且以此类推。考虑到每个位置与对应的表或子表相关联,则在从映射中选择位置时,进行接收的负载均衡器120选择表或子表以用于为数据分组10确定目的地应用实例131。本领域技术人员应当理解,代替一个或多个表,数据结构121可以替选地包括一个或多个树或者本领域已知的任何其他数据结构。

进行接收的负载均衡器120还可以在选择应用实例131之前检查连接表,以确定所接收的数据分组10是否对应于与现有连接相关联的流或会话。如果发现所接收的数据分组10与现有连接相关联,则将数据分组10转发到与连接表中的该连接相关联的应用实例。否则,进行接收的负载均衡器120根据数据结构121确定应用实例131,并将数据分组10转发到所确定的应用实例131。此外,在接收到数据分组10后,如果数据分组10先前已经被封装一次或多次,则负载均衡器120可以进一步解封装该数据分组10。因此,进行接收的负载均衡器120解封装数据分组10,直到达到内部分组,并且然后检索用于确定处理数据分组10的应用实例131的任何报头字段。

每个群集130包括维护与一个或多个服务相关联的应用实例的一个或多个计算机服务器——例如内容传递服务器和/或应用服务器。在图1中,群集130a-130c中的每一个包括若干应用实例131,所述应用实例131与通过数据分组10在到达系统100时被寻址到的任播地址来访问的应用或服务相关联。给定的群集130中的应用实例131可以驻留在单个计算机服务器中,或者也可以分布在相同群集130的多个计算机服务器当中。应用实例131通过对应的目的地IP地址来被寻址。如本文所引用的应用实例包括对网页或应用的最终用户的请求进行服务的服务器应用的副本,所述网页或应用诸如电子邮件应用、游戏应用、社交媒体应用、日历应用、或者任何其它在线应用。接收数据分组10的应用实例131处理与数据分组10相关联的请求。

图2示出描述由单层负载均衡系统100执行的处理任播数据分组的过程200的实施方式的流程图。过程200包括以下过程:由任播节点110接收被寻址到任播地址的数据分组10(阶段210);由任播节点110将所接收的数据分组10转发至负载均衡器120(阶段220);以及由负载均衡器120确定数据分组是否与先前所服务的流或会话相关联(阶段230)。如果确定数据分组与先前所服务的流或会话相关联,则过程200包括将数据分组10转发至与先前所服务的流或会话相关联的应用实例(阶段240)。否则,过程200包括:从多个子数据结构中选择子数据结构(阶段250),基于所选择的子数据结构以及数据分组10的一个或多个报头字段来确定应用实例131(阶段260),以及将该数据分组转发至所确定的应用实例(阶段270)。

当最终用户请求或消费与任播地址相关联的在线服务时,将从该最终用户发送的对应数据分组寻址到相同的任播地址。一个或多个任播节点110接收被寻址到任播地址的数据分组(阶段210)。例如,由与数据分组源最靠近的任播节点110接收被寻址到任播地址的每个数据分组。在接收到被寻址到任播节点的数据分组后(阶段210),进行接收的任播节点可以检查连接表,以确定所接收的数据分组是否与先前所服务的流或会话——例如已经建立的连接相关联。如果确定数据分组与现有的流或会话相关联,则进行接收的任播节点110将该数据分组转发给与现有的流或会话相关联的下一跳。对连接表的检查是可选的,因为其可以通过除了进行接收的任播节点110之外的另一个网络元件或设备来实施,或者可以将其完全跳过。

如果确定数据分组与诸如同步(SYN)数据分组或数据分组的现有流或会话不相关联——其中流先前已经通过不同的任播节点,或者进行接收的任播节点110没有执行检查,则任播节点将数据分组转发给负载均衡器(LB)120(阶段220)。在转发数据分组时(阶段220),进行接收的任播节点110可以基于数据分组的一个或多个报头字段——例如源IP地址、目的地IP地址、和/或源端口以及与进行接收的任播节点110相关联的子数据结构,确定负载均衡器120。此外,任播节点110可以在将数据分组转发给负载均衡器120之前对数据分组解封装和/或利用一个或多个新报头对其封装。

在接收到数据分组后,负载均衡器120可以检查连接表,以确定所接收的数据分组是否与先前所服务的流或会话——例如已经建立的连接相关联(阶段230)。如果确定数据分组与现有的流或会话相对应,则LB 120将该数据分组转发给对现有的流或会话进行服务的应用实例(阶段240)。对连接表的检查是可选的,因为其可以通过除了LB 120之外的另一个网络元件或设备来实施,或者可以将其完全跳过。

如果确定数据分组与诸如同步(SYN)数据分组或数据分组的现有的流或会话不相关联——其中流先前已经通过不同的任播节点,或者LB 120没有执行检查,则该LB从由LB 120维持的数据结构121中选择子数据结构(阶段250)。例如,如果数据结构121是单个表,则所选择的子数据结构可以是该表的行或列。在数据结构121包括多个表的其他实例中,所选择的子数据结构是多个表中的表。对子数据结构的选择可以基于数据分组的报头字段以及IP子网与系统100的对应位置之间的子数据结构。替选地,所述选择可以基于数据分组的报头字段以及反映列表中每个子数据结构的权重的子数据结构的列表。数据结构121中的每个子数据结构表示与系统100的对应位置——例如群集130或区相关联的应用实例131的冗余列表。对应的子数据结构中包括应用实例131的频率依赖于与相同应用实例131相关联的权重值。

然后,LB 120使用数据分组的一个或多个报头字段,根据所选择的子数据结构确定应用实例131(阶段260)。例如,LB 120使用数据分组的一个或多个报头字段来生成散列值,并且然后使用所生成的散列值来确定子数据结构的条目。LB 120可以计算所生成的散列值对子数据结构的大小取模,并且将结果用作所选择的条目的索引。本领域技术人员应当理解,可以以不同的方式使用数据分组的报头字段来识别子数据结构的条目以用于选择。所选择的子数据结构的每个条目包括与对应的应用实例131相关联的IP地址,例如目的地IP地址。然后,LB 120将数据分组转发至所确定的应用实例131(阶段270),其中对与数据分组相关联的请求进行服务。

图3示出用于对寻址到任播地址的数据业务进行负载均衡的两层负载均衡系统300的实施方式的框图。系统300包括:任播重定向器节点310a-310c——下面个体地或统一地又被称为任播节点310,第一层负载均衡器设备320a–320c——下面个体地或统一地又被称为第一层负载均衡器320,第二层负载均衡器设备325a–325c——下面个体地或统一地又被称为第二层负载均衡器325,以及例如群集330a–330c的多个服务器群集330a–330c——下面个体地或统一地又被称为群集330。群集330a–330c中的每一个包括与通过任播地址访问的服务相关联的若干应用实例331。

任播节点310被配置为将被寻址到对应的任播地址的所接收的数据分组10转发至一个或多个第一层LB 320中的第一层LB 320。任播节点310基于数据分组10的一个或多个报头字段——例如源IP地址、目的地IP地址、和/或源端口以及与任播节点310相关联的子数据结构,确定用于转发该数据分组的第一层LB 320。此外,任播节点310可以在将数据分组转发给所选择的第一层LB 320之前将数据分组解封装和/或利用一个或多个新报头对其封装。此外,与关于图1所述的任播节点110类似,任播节点310可以在接收到数据分组后检查连接表。

在一些实施方式中,每个第一层LB 320包括第一数据结构321,以用于将所接收的数据分组映射到相应的第二层LB 325。在一些实例中,第一数据结构321包括第二层LB 325的冗余列表,使得第一数据结构中包括每个第二层LB 325的频率依赖于与相同的第二层LB 325或者对应位置相关联的权重值。例如,权重可以反映每个对应位置处的可用容量、到每个对应位置的RTT、另一负载均衡标准、或者其组合。第一层LB 320基于数据分组10的一个或多个报头字段,从对应的第一数据结构321中选择第二层LB 325。然后,第一层LB 325将数据分组10转发给所选择的第二层LB 325。在一些实例中,第一层LB 320使用数据分组10的报头字段来生成散列值,并且基于所生成的散列值来从第一数据结构321中选择第二层LB 325。在其他实例中,可以与关于图2所述的对子数据结构的选择(阶段250)类似地来执行由第一层LB 320对第二层LB 325的选择。第一层LB 320对第二层LB 325的选择可以依赖于由第一层LB 320对连接表进行检查(类似于图2中的阶段230、阶段240和阶段250)。

每个第二层LB 325与系统300的位置——例如区或群集330相关联,并且包括与系统300的相同位置相关联的对应的第二数据结构326。第二数据结构326包括与相同位置相关联的应用实例的冗余列表。第二数据结构326中包括每个应用实例的频率反映了与相同应用实例相关联的权重值。这样的权重可以反映每个应用实例处的可用容量、到每个应用实例的RTT、其他负载均衡标准、或者其组合。所选择的第二层LB 325接收数据分组10,并且基于数据分组10的一个或多个报头字段来根据对应的第二数据结构326确定应用实例。例如,第一层LB 320使用数据分组10的报头字段生成散列值,并且基于所生成的散列值从第一数据结构321中选择第二层LB 325。在一些实施方式中,第二数据结构326的每个条目包括与对应的应用实例相关联的IP地址——例如目的地IP地址。在选择IP地址时能够将所生成的散列值用作第二数据结构中的条目的索引。然后,第二层LB 325将数据分组10转发给所确定的应用实例。

每个群集330包括维护与一个或多个服务相关联的应用实例的一个或多个计算机服务器——例如内容传递服务器和/或应用服务器。在图3中,群集330a–330c中的每个包括若干应用实例331,所述应用实例331与通过数据分组10在到达系统300时被寻址到的任播地址来访问的应用或服务相关联。给定的群集330中的应用实例331可以驻留在单个计算机服务器中,或者也可以分布在相同群集330的多个计算机服务器当中。应用实例331通过对应的目的地IP地址来被寻址。接收数据分组10的应用实例331处理与该数据分组10相关联的请求。如图3所图示,可以由一个或多个第二层LB 325对系统300的每个群集330或区进行服务。例如,在由第二层LB 325a对群集330a进行服务时,由两个第二层LB 325b和325b’对群集330b进行服务。

图4示出两层负载均衡系统300的另一个实施方式的框图。为了便于说明,图4所示的框图只描绘了系统300的单个任播节点310、两个第一层LB 320a和320b、两个第二层LB 325a和325b、以及两个群集330a和330b。系统300还包括第一控制器312、第二控制器322、第三控制器327、以及全局负载均衡控制器350。

第一控制器312包括网络元件、计算机服务器、或另一电子设备。第一控制器312通过诸如源IP映射、连接表的信息和/或在处理被寻址到对应任播地址的所接收的数据分组10时由任播节点310采用的其他信息来配置任播节点310。第一控制器312可以从一个或多个数据库或者系统300的其他设备获取这样的信息,并且向任播节点310提供对应的更新。

第二控制器322包括网络元件、计算机服务器、或另一电子设备。第二控制器322通过提供诸如与系统300的每个位置——例如群集330或区相关联的权重的信息、将数据分组路由至系统300的位置的路由信息、连接表、和/或在处理所接收的数据分组10时由第一层LB 320采用的其他信息来配置第一层LB 320a和320b。第二控制器322可以从全局负载均衡控制器350、一个或多个数据库、或者系统300的其他设备获取这样的信息,并且向第一层LB 320提供对应的更新。

第三控制器327包括网络元件、计算机服务器、或另一电子设备。第三控制器327通过提供诸如与系统300的对应位置中的每个应用实例331相关联的权重这样的信息、将数据分组10路由至应用实例331的路由信息、和/或在处理所接收的数据分组10时由第二层LB 320采用的其他信息来配置第二层LB 325a和325b。第三控制器327可以从一个或多个数据库或者系统300的其他设备获取这样的信息,并且向第二层LB 320提供对应的更新。

在图4中,系统300的不同组件之间的连续线指示数据分组路径(又被称为数据平面),虚线指示配置信息/指令的流(又被称为控制平面),并且间断线指示反馈路径(其也是控制平面的一部分)。在一些实施方式中,每次第一层LB 320将数据分组转发给系统300的位置或者对应的第二层LB 325时,第一层LB 325就将该转发报告给全局负载均衡控制器350。此外,第二层LB 325可以将数据分组10的转发报告给全局负载均衡控制器350和/或系统300的其他设备。全局负载均衡控制器350使用第一层LB 320所报告的信息来更新与系统300的不同位置相关联的权重。第二层LB 325所报告的信息被全局负载均衡控制器350或者与第二层LB 325相关联的位置本地的设备用来更新与不同的应用实例331相关联的权重。在一些实施方式中,能够将群集330配置为将其服务器或应用实例331的状态信息提供给全局负载均衡控制器350和/或系统300中的其他设备。全局负载均衡控制器350或者系统300中的其他设备能够使用群集330所报告的信息来更新与不同的应用实例331相关联的权重。在一些实施方式中,全局负载均衡控制器350还从路由器和/或关于链路拥塞的网络元件获得数据。

图5示出描述由两层负载均衡系统300执行的处理任播数据分组的过程500的实施方式的流程图。过程200包括以下过程:由任播节点310接收被寻址到任播地址的数据分组10(阶段510);由任播节点310将所接收的数据分组10转发至第一层LB 320(阶段520);由第一层LB 320确定数据分组是否与先前所服务的流或会话相关联(阶段530);如果确定数据分组10与先前所服务的流或会话相关联,则将数据分组10转发至与先前所服务的数据流或会话相关联的应用实例(阶段540);否则,基于由第一层LB 320维持的第一数据结构以及数据分组10的一个或多个报头字段来选择第二层LB 325(阶段550);将数据分组转发至所选择的第二层LB 325(阶段560);基于由第二层LB 325维持的第二数据结构以及数据分组10的一个或多个报头字段,由所选择的第二层LB 325确定应用实例331(阶段570);以及将数据分组转发至所确定的应用实例(阶段580)。

过程500的阶段510-540类似于关于图2所述的过程200的阶段210-240,除了使用第一层LB 325(如图3和图4所示)代替负载均衡器120之外(如图1所示)。此外,阶段530和阶段540是可选的,因为其可以通过除了第一层LB 325之外的另一设备来执行对连接表的检查。接收数据分组10的第一层LB 320基于由第一层LB 320维持的第一数据结构321以及数据分组10的一个或多个报头字段来选择第二层LB 325(阶段550)。第一数据结构321包括系统300中的第二层LB 325或对应位置——例如群集330或区的冗余列表。第一数据结构321中包括每个第二层LB 325或对应位置的频率依赖于与相同对应位置相关联的权重值。权重可以反映每个对应位置处的可用容量、到每个对应位置的RTT、另一负载均衡标准、或者其组合。在一些实例中,第一层LB 320使用数据分组10的报头字段生成散列值,并且基于所生成的散列值来从第一数据结构321中选择第二层LB 325。例如,第一层LB 320使用所生成的散列值对第一数据结构的大小取模,来作为要从第一数据结构中选择的条目的索引。然后,第一层LB 320将数据分组转发至所选择的第二层LB 325,或者转发至与所选择的位置相关联的第二层LB 32(阶段560)。

接收数据分组10的第二层LB 325基于由第二层LB 325维持的第二数据结构326以及数据分组10的一个或多个报头字段来确定应用实例331(阶段570)。第二数据结构326包括应用实例331的冗余列表。第二数据结构326中包括每个应用实例331的频率依赖于与应用实例331相关联的权重值。权重可以反映每个对应应用实例331处的可用容量、到每个对应应用实例331的RTT、其他负载均衡标准、或者其组合。第二层LB 325使用数据分组10的报头字段生成散列值,并且基于所生成的散列值来根据第二数据结构326确定应用实例331。例如,第二层LB 325使用所生成的散列值对第二数据结构326的大小取模,来作为要从第二数据结构326中选择的条目的索引。然后,第二层LB 325将数据分组10转发至所确定的应用实例331(阶段580)。

图6示出描述用于生成负载均衡器所采用的冗余列表的过程600的实施方式的流程图。例如,考虑到实体的列表中的每个与对应的权重值相关联,选择比列表中的实体数目更大的质数作为待生成的冗余列表的大小。执行过程600的处理器为给定实体列表中的每个实体选择偏移值和步进值(阶段610)。然后,处理器从给定的实体列表中选择实体(阶段620)。所述选择能够基于实体的标识(例如名称、名称的一部分、标识字符串等)的伪随机置换来被完成。处理器将所选择实体的冗余列表中已经包括的实体数目与对应的动态阈值相比较(阶段630)。例如,将动态阈值定义为与所选择的实体相对应的权重乘以迭代数目。如果发现已经包括的条目数目小于动态阈值(阶段630),则处理器检查由待生成的冗余列表中的偏移值指示的位置是否为空(阶段640)。如果发现由偏移值指示的位置并非为空,则处理器通过将其递增对应的步进值并且截取经递增的值对冗余列表的大小的取模,以更新该偏移值(阶段650)。然后,处理器检查由所更新的偏移值指示的位置是否为空(阶段640)。重复阶段650和阶段640,直到检测到空位置为止。如果在任意点,过程的结果(阶段640)都指示空位置,则处理器在该空位置处添加与所选择的实体相对应的条目(阶段660)。一旦在冗余列表中添加了所选择的实体的条目(阶段660),或者发现所选择的实体的已经添加的条目的数目大于动态阈值(阶段630),则处理器检查在当前迭代中是否已经处理了给定列表中的所有实体(阶段670)。如果给定列表中的所有实体未全被处理,则处理器从给定列表中选择新的实体以用于进行处理(阶段620)。否则,处理器递增迭代数目(阶段680),并且然后从给定列表中选择实体以用于进行处理(阶段620)。处理器对图6所述的阶段进行迭代,直到冗余列表被填满。

过程600生成冗余列表作为一维表,例如行或列、树、子树、或任何其他数据结构。给定列表中的实体可以是应用实例131或331、负载均衡器120或325、或者负载均衡系统100或300的位置。在所生成的冗余列表中,每个实体重复的频率依赖于与相同实体相对应的权重值。在将冗余列表的大小选择为远大于给定列表中的实体总数目——例如大100倍的实例下,冗余列表中包括实体的频率变为几乎与对应的权重成比例。所生成的冗余列表的大小相对于给定列表中的实体数目越大,相同实体的频率与权重之间的比例就越准确。

图7示出图1和图3中的系统所采用的数据结构的图示。考虑例如群集130a或330a的群集A的三个应用实例A_1、A_2、和A_3,以及例如群集130b或330b的群集B的三个应用实例B_1、B_2、和B_3,图7中的表的每个行描绘了基于对应的权重集合来生成的过程600(如图6所示)的样本输出,其具有等于17的大小。例如,第一行对应于一个输出,其中与每个应用实例A_1、A_2、和A_3相关联的权重等于1.0,并且与应用实例B_1、B_2、和B_3相关联的权重等于0.0。从任意行到下一行,将应用实例A_1、A_2、和A_3的权重值递减0.1,并且将应用实例B_1、B_2、和B_3的权重值递增0.1。

因为在图7所示的表中与应用实例相关联的权重从一行到下一行缓慢变化,所以从一行到下一行只观察到很小的变化。实际上,通过检查图7的表的列可以看到,因为权重从一行到下一行发生轻微变化,所以跨每个列只发生很小的变化。

考虑这样的场景,其中图1的群集130a包括应用实例A_1、A_2、和A_3,并且这些应用实例中的每一个都经历溢出。例如20%的溢出需求要被重定向到具有可用容量的下一个最靠近的群集,例如包括应用实例B_1、B_2、和B_3的图1的群集130b。因此,关于与图1的群集130a相关联的任播业务,0.8的权重值与应用实例A_1、A_2、和A_3中的每一个相关联,0.2的权重值与应用实例B_1、B_2、和B_3中的每一个相关联。这样,图7中的表的第三行的情况表示与图1的群集130a相关联的子数据结构的样本。此外,假定应用实例B_1、B_2、和B_3具有足够的带宽来服务到达群集130b的任播业务,当虑及与图1所示的群集130b相关联的任播业务时这些应用实例都会具有相等的权重1.0。因此,图7中的表的最后一行表示与图1的群集130b相关联的子数据结构的样本。

对任何一组连续的行进行比较,能够观察到从一行到下一行只有很小的条目变化。这样的观察指示,权重值的小变化(从一行到下一行权重值变化了±0.1)对数据路径具有轻微的影响。添加或去除与小权重值相关联的应用实例也会对相应行或子数据结构的条目具有轻微的影响。生成行或子数据结构的方式(使用图6所示的过程600来生成)导致向相应应用实例131或331(如图1和图3所示)指派新请求的一致性。在一些实施方式中,权重值上的小变化和/或添加/去除与小权重相关联的应用实例不会导致数据业务的重新路由(或者在网络路由器或其他网络元件处重新计算路由表),因为这样的变化对数据业务的负载均衡具有轻微的影响。

考虑类似的场景,例如具有与先前段落所讨论的相同的权重的场景,其中应用实例与图3的群集330a相关联,并且应用实例B_1、B_2、和B_3与图3的群集330b相关联,则图7中的表的第三行表示与图3的群集330a相关联的第二数据结构326的样本。此外,图7中的表的最后一行表示与图3的群集330b相关联的第二数据结构326的样本。

在本说明书中描述的主题和操作的实施方式能够以数字电子电路、或者以包含在有形介质、固件、或硬件上的计算机软件——包括本说明书中公开的结构及其结构等同物、或者以它们中的一个或多个的组合来实现。在本说明书中描述的主题内容的实施方式能够被实现为在有形介质上所包含的一个或多个计算机程序,即计算机程序指令的一个或多个模块,所述一个或多个计算机程序在一个或多个计算机存储介质上编码,用于由数据处理装置执行或者控制数据处理装置的操作。计算机存储介质能够是以下或被包括在其中:计算机可读存储介质、计算机可读存储基板、随机或串行存取存储器阵列或设备、或者它们的一个或多个的组合。计算机存储介质也能够是一个或多个单独的组件或介质(例如多个CD、盘、或其他存储设备)或者被包括在其中。计算机存储介质可以是有形的和非暂时性的。

本说明书中描述的操作能够被实现为由数据处理装置对一个或多个计算机可读存储设备上所存储的数据或者从其他源接收的数据执行的操作。过程和逻辑流程也能够由专用逻辑电路——例如FPGA(现场可编程门阵列)或ASIC(专用集成电路))执行,并且装置也能够被实现为专用逻辑电路。

虽然本说明书包含许多具体实施方式细节,但是它们不应被解释为对任何发明或可以要求保护的范围的限制,而应当被解释为特定于特定发明的特定实施方式的特征的描述。在单独的实施方式的场境下在本说明书中描述的某些特征也能够在单个实施方式中组合实现。相反,在单个实施方式的场境下描述的各个特征也能够在多个实施方式中单独地或者以任何合适的子组合来实现。此外,虽然上面可以将特征描述为以某些组合来起作用,并且甚至最初如此要求保护,但是有时候能够将来自要求保护的组合的一个或多个特征从该组合中删去,并且所要求保护的组合可以涉及子组合或子组合的变型。

对“或”的引用可以被解释为包含性的,使得使用“或”描述的任何词项可以指示所描述的词项中的单个、一个以上、以及全部中的任何一个。标记“第一”、“第二”、“第三”等不一定意图指示排序,并且通常仅用于区分相同或相似的项目或元素。

因此,已经描述了本主题的特定实施方式。其他实施方式也落入所附权利要求书的范围内。在一些情况下,权利要求书中所阐述的动作能够以不同的顺序执行并且仍然达到期望的结果。此外,附图中描绘的过程不一定需要所示的特定顺序或连续顺序来达到期望的结果。在某些实施方式中,可以利用多任务或并行处理。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1