首页 / 专利库 / 电脑编程 / 计算机虚拟化 / 在负载均衡连接上具有虚拟VIP和源代理的非DSR分布式负载均衡器

在负载均衡连接上具有虚拟VIP和源代理的非DSR分布式负载均衡器

阅读:726发布:2020-05-08

专利汇可以提供在负载均衡连接上具有虚拟VIP和源代理的非DSR分布式负载均衡器专利检索,专利查询,专利分析的服务。并且用于连接的负载均衡的方法和设备可以包括:在计算机设备上的容器主机上的管理组件处基于所述数据分组的目的地IP地址接收至少一个数据分组,其中所述目的地IP地址对应于多个容器主机。所述方法和设备可以包括:从所述计算机设备和通过虚拟网络与所述计算机设备通信的其他计算机设备上的至少一个容器主机选择目的地容器,以均衡数据负载;以及将所述至少一个数据分组的所述源IP地址转换为所述容器主机的本地IP地址。所述方法和设备可以包括:将所述至少一个数据分组的所述目的IP地址改变为所选目的容器的虚拟IP地址,使得所述至少一个数据分组被变换为代理数据分组。,下面是在负载均衡连接上具有虚拟VIP和源代理的非DSR分布式负载均衡器专利的具体信息内容。

1.一种计算机设备,包括:
存储器,用以存储数据和指令;
处理器,与所述存储器通信;
管理组件,与所述计算机设备的虚拟交换机相关联,所述虚拟交换机与所述存储器和所述处理器通信,其中所述管理组件可操作以:
基于所述数据分组的目的地IP地址,在计算机设备上的容器主机处接收至少一个数据分组,其中所述目的地IP地址对应于多个容器主机;
在所述容器主机的所述数据链路层处,从所述计算机设备和通过虚拟网络与所述计算机设备通信的其他计算机设备上的至少一个容器主机中选择目的地容器,以均衡数据负载;
在所述数据链路层处将所述至少一个数据分组的源IP地址转换为所述容器主机的本地IP地址;以及
在所述数据链路层处,将所述至少一个数据分组的所述目的地IP地址改变为所选择的所述目的地容器的虚拟IP地址,使得所述至少一个数据分组被变换为代理数据分组,所述代理数据分组具有所述目的地容器的所述虚拟IP地址的目的地地址和所述容器主机的所述本地IP地址的源地址。
2.根据权利要求1所述的计算机设备,其中所述数据分组的所述目的地地址对应于源容器主机的物理网络地址或所述源容器主机的虚拟IP地址。
3.根据权利要求1所述的计算机设备,其中本地IP地址是虚拟化寻址的并且被包含在所述数据链路层内。
4.根据权利要求1所述的计算机设备,其中所述管理组件还可操作以:
从所选择的所述目的容器接收与所述至少一个数据分组相对应的代理数据响应分组;
基于所述数据响应分组的所述目的地地址,标识最初传输所述至少一个数据分组的客户端;以及
将所述代理数据响应分组变换为数据响应分组,所述数据响应分组将所述客户端的源地址标识为所述数据响应分组的所述目的地地址。
5.根据权利要求4所述的计算机设备,其中所述管理组件还可操作以:通过应用一个或多个规则以逆转对所述代理数据响应分组的目的地地址的所述改变来变换所述代理数据响应分组。
6.根据权利要求1所述的计算机设备,其中所述管理组件还可操作以:通过应用一个或多个负载均衡规则来选择所述目的地容器。
7.根据权利要求6所述的计算机设备,其中所述一个或多个负载均衡规则包括以下项中的一项或多项:涉及阈值的负载均衡、涉及平均使用的负载均衡、源哈希负载均衡、轮询负载均衡;以及最少连接数目负载均衡。
8.一种用于连接的负载均衡的方法,包括:
在计算机设备上的容器主机上的管理组件处基于所述数据分组的目的地IP地址接收至少一个数据分组,其中所述目的地IP地址对应于多个容器主机;
在所述容器主机的所述数据链路层处,从所述计算机设备和通过虚拟网络与所述计算机设备通信的其他计算机设备上的至少一个容器主机中选择目的地容器,以均衡数据负载;
在所述数据链路层处将所述至少一个数据分组的源IP地址转换为所述容器主机的本地IP地址;以及
在所述数据链路层处,将所述至少一个数据分组的所述目的IP地址改变为所选择的所述目的容器的虚拟IP地址,使得所述至少一个数据分组被变换为代理数据分组,所述代理数据分组具有所述目的地容器的所述虚拟IP地址的目的地地址和所述容器主机的所述本地IP地址的源地址。
9.根据权利要求8所述的方法,其中所述数据分组的所述目的地地址对应于源容器主机的物理网络地址或所述源容器主机的虚拟IP地址。
10.根据权利要求8所述的方法,其中本地IP地址是虚拟化寻址的并且被包含在所述数据链路层内。
11.根据权利要求8所述的方法,还包括:
从所选择的所述目的容器接收与所述至少一个数据分组相对应的代理数据响应分组;
基于所述数据响应分组的所述目的地地址,标识最初发送所述至少一个数据分组的客户端;以及
将所述代理数据响应分组变换为数据响应分组,所述数据响应分组将源地址标识为所述数据响应分组的所述目的地地址。
12.根据权利要求11所述的方法,其中变换所述代理数据响应分组还包括:应用一个或多个规则以逆转对所述代理数据响应分组的目的地地址的所述改变。
13.根据权利要求8所述的方法,其中选择所述目的地容器还包括应用一个或多个负载均衡规则。
14.根据权利要求13所述的方法,其中所述一个或多个负载均衡规则包括以下项中的一项或多项:涉及阈值的负载均衡、涉及平均使用的负载均衡、源哈希负载均衡、轮询负载均衡;以及最少连接数目负载均衡。
15.一种存储由计算机设备可执行的指令的计算机可读介质,包括:
至少一条指令,用于使所述计算机设备基于所述数据分组的目的地IP地址在计算机设备上的容器主机处接收至少一个数据分组,其中所述目的地IP地址对应于多个容器主机;
至少一个指令,用于使所述计算机设备在所述容器主机的数据链路层处,从所述计算机设备和通过虚拟网络与所述计算机设备通信的其他计算机设备上的至少一个容器主机中选择目的地容器,以均衡数据负载;
至少一个指令,用于使所述计算机设备在所述数据链路层处将所述至少一个数据分组的所述源IP地址转换为所述容器主机的本地IP地址;以及
至少一个指令,用于使所述计算机设备在所述数据链路层处,将所述至少一个数据分组的所述目的IP地址改变为所选择的所述目的容器的虚拟IP地址,使得所述至少一个数据分组被变换为代理数据分组,所述代理数据分组具有所述目的地容器的所述虚拟IP地址的目的地地址和所述容器主机的所述本地IP地址的源地址。

说明书全文

在负载均衡连接上具有虚拟VIP和源代理的非DSR分布式负载

均衡器

背景技术

[0001] 本公开涉及负载均衡。
[0002] 通常,计算机设备通过选择数据分组的目的地和/或尝试均衡在网络上通信的若干节点之间的数据分组的负载,在计算机设备的TCP/IP层上路由数据分组。随着数据分组在堆栈中的处理更高,处理时间可能会增加。
[0003] 因此,在本领域中需要改进负载均衡。发明内容
[0004] 以下呈现了本公开的一个或多个实现的简化的发明内容,以便于提供对这种实现的基本理解。本发明内容不是所有预期实现的广泛概述,并且既不旨在标识所有实现的关键或重要元素,也不旨在描绘任意或所有实现的范围。其唯一目的是以简化的形式呈现本公开的一个或多个实现的一些概念,作为稍后呈现的更详细描述的序言。
[0005] 一个示例实现涉及一种计算机设备。该计算机设备可以包括用于存储数据和指令的存储器、与该存储器通信的处理器、与计算机设备的虚拟交换机相关联的管理组件,该虚拟交换机和该存储器和处理器通信,其中该管理组件可操作用于:基于数据分组的目的地IP地址,在计算机设备上的容器主机处接收至少一个数据分组,其中该目的IP地址对应于多个容器主机;在容器主机的数据链路层处,从计算机设备和通过虚拟网络与计算机设备通信的其他计算机设备中的至少一个容器主机中选择目的地容器,以均衡数据负载;在数据链路层处将至少一个数据分组的源IP地址转换为容器主机的本地IP地址;并且在所述数据链路层处,将所述至少一个数据分组的所述目的地IP地址改变为所选目的容器的虚拟IP地址,使得所述至少一个数据分组被变换为代理数据分组,所述代理数据分组具有所述目的地容器的所述虚拟IP地址的目的地地址和所述容器主机的所述本地IP地址的源地址。
[0006] 另一示例实现涉及一种用于连接的负载均衡的方法。该方法可以包括在计算机设备上的容器主机上的管理组件处,基于数据分组的目的地IP地址接收至少一个数据分组,其中目的地IP地址对应于多个容器主机。该方法还可以包括在容器主机的数据链路层处,从计算机设备和通过虚拟网络与计算机设备通信的其他计算机设备上的至少一个容器主机中选择目的地容器,以均衡数据负载。该方法还可以包括在数据链路层处将至少一个数据分组的源IP地址转换为容器主机的本地IP地址。该方法还可以包括在所述数据链路层处,将所述至少一个数据分组的所述目的IP地址改变为所选目的容器的虚拟IP地址,使得所述至少一个数据分组被变换为代理数据分组,所述代理数据分组具有所述目的地容器的所述虚拟IP地址的目的地地址和所述容器主机的所述本地IP地址的源地址。
[0007] 另一示例实现涉及存储由计算机设备可执行的指令的计算机可读介质。所述计算机可读介质可以包括至少一条指令,用于使所述计算机设备基于所述数据分组的目的地IP地址在计算机设备上的容器主机处接收至少一个数据分组,其中所述目的地IP地址对应于多个容器主机。所述计算机可读介质可以包括至少一个指令,用于使所述计算机设备:在容器主机的数据链路层处,从计算机设备和通过虚拟网络与计算机设备通信的其他计算机设备上的至少一个容器主机中选择目的地容器,以均衡数据负载。所述计算机可读介质可以包括至少一个指令,用于使所述计算机设备:在数据链路层处将至少一个数据分组的源IP地址转换为容器主机的本地IP地址。所述计算机可读介质可以包括至少一个指令,用于使所述计算机设备:在所述数据链路层处,将所述至少一个数据分组的所述目的IP地址改变为所选目的容器的虚拟IP地址,使得所述至少一个数据分组被变换为代理数据分组,所述代理数据分组具有所述目的地容器的所述虚拟IP地址的目的地地址和所述容器主机的所述本地IP地址的源地址。
[0008] 与本公开的实现有关的其他优点和新颖特征将在下面的描述中部分地阐述,并且对于本领域技术人员而言,在对以下内容进行检查或通过其实践学习后,将变得更加显而易见。附图说明
[0009] 在附图中:
[0010] 图1是根据本公开的实现的示例计算机设备的示意性框图
[0011] 图2是根据本公开的实现的在计算机设备上操作的示例管理组件的示意框图;
[0012] 图3是根据本公开的实现的用于连接的负载均衡的示例方法流程;
[0013] 图4示出了根据本公开的实现的作为负载均衡的示例而发生的对寻址格式的示例改变;以及
[0014] 图5是根据本公开的实现的示例计算机设备的示意性框图。

具体实施方式

[0015] 本公开涉及用于通过虚拟数据网络在数据链路层(例如第2层)处进行通信的多个计算机设备、容器、虚拟机或任意运行时环境之间的连接的负载均衡的设备和方法。该设备和方法可以包括例如操作每个计算机设备上的一个或多个容器的容器主机。容器可以包括例如彼此独立的自包含应用以及在计算机设备上在容器外部执行的其他进程
[0016] 容器主机可以包括虚拟交换机和与虚拟交换机相关联的管理组件,该管理组件可操作用于将从客户端接收的数据分组从容器主机路由到所选容器目的地以用于处理。管理组件可以应用一个或多个负载均衡规则来确定哪个容器可以接收数据分组,使得数据分组可以跨虚拟网络的容器被分发。
[0017] 另外,管理组件可以充当客户端的代理,并使用因特网协议第2层(例如数据链路层)上的虚拟IP地址与容器高效交换与分组相关的通信。特别地,管理组件可以将传输数据分组的客户端的源IP地址变换为分配给容器主机的本地化IP地址。在数据链路层(或第2层)之外,本地化IP地址可能不可见。这样,容器主机的本地化IP地址可以被完全虚拟化,并且不被配置在容器主机的IP层(例如第3层)或传输层(例如第4层)中,从而避免了上层处理。
[0018] 另外,管理组件可以将数据分组的目的IP地址变换为所选目的容器的虚拟IP地址,以将数据分组传输到目的容器。这样,管理组件可以使用第2层源和目的地寻址将所接收的数据分组跨通过虚拟网络通信的容器主机上运行的任意容器分发。
[0019] 管理组件可以从选定的目的地容器接收相应的响应分组,并且可以应用一个或多个规则来变换响应分组的源和目的地寻址,以传输回客户端。
[0020] 换句话说,设备和方法在第2层而不是第3层中执行负载均衡决策。此外,设备和方法在第2层中执行源IP的代理。通过在容器主机网络的数据链路层处进行执行分布式负载均衡和代理消息交换,可以通过减少处理每个数据分组所需的CPU周期数目来改进系统处理。此外,可以增加数据吞吐量。
[0021] 现在参考图1,示出了示例负载均衡系统100,其可以分发从一个或多个客户端110所接收的数据分组34,该客户端110通过外部网络104与计算机设备102、106进行通信。在一个实现中,系统100可以使用非直接服务器返回(DSR)分布式负载均衡来均衡从一个或多个客户端110所接收的数据分组34。负载均衡器可以分布在通过虚拟网络108进行通信的所有节点上。在一个示例中,系统100可以包括通过虚拟网络108进行通信的一个或多个计算机设备102、106。每个计算机设备102、106可以分别包括容器主机10、12,容器主机10、12分别由计算机设备102、106的处理器30、33和/或存储器31、32执行。存储器31、32可以被配置用于存储定义和/或与容器主机10、12相关联的数据和/或计算机可执行指令,并且处理器30、33可以执行容器主机10、12。存储器31、32的示例可以包括但不限于计算机可用的存储器类型,例如随机存取存储器(RAM)、只读存储器(ROM)、磁带、磁盘、光盘、易失性存储器、非易失性存储器及其任意组合。处理器30、33的示例可以包括但不限于如本文所述经过特殊编程的任意处理器,包括控制器微控制器、专用集成电路(ASIC)、现场可编程阵列(FPGA)、片上系统(SoC)或其他可编程逻辑或状态机。计算机设备102、106可以包括可以连接到网络的任意移动或固定计算机设备。计算机设备102、106可以是例如计算机设备,诸如台式计算机或膝上型计算机或平板计算机、蜂窝电话、游戏设备、混合现实虚拟现实设备、音乐设备、电视、导航系统、相机、个人数字助理(PDA)或手持设备、或具有与一个或多个其他设备的有线和/或无线连接能的任意其他计算机设备。
[0022] 容器主机10、12可以操作一个或多个容器14、15和16。容器14、15和16可以包括例如彼此独立但可以共享计算机设备资源(例如存储器32、处理器30和/或由存储器32和处理器30实现的操作系统)的自包含应用。此外,容器14、15和16可能不知道在计算机设备102、106上的容器14、15和16外部执行的其他应用和/或进程,并且每个容器都可以共享主机操作系统,包括内核和库。每个容器14、15和16可以由容器地址11、13和17标识,使得可以通过使用例如分组报头中的容器地址11、13和17作为分组的目的地地址,将数据分组34路由到相应的容器14、15和16。可以将容器地址11、13和17分配给容器主机10和12,但在网络中的其他任意地方都不可见。例如客户端110可能不了解容器地址11、13和17。在一种实现中,可以使用虚拟机(VM)代替容器主机10、12。此外,可以使用具有自己IP地址的任何计算机网络资源而不是容器主机10、12。
[0023] 在一种实现中,在外部网络104上运行的诸如路由器的路由组件109可以从客户端110接收数据分组34,并决定哪个计算机设备102、106或容器主机10、12接收数据分组34。应该注意的是,这可以被认为是负载均衡的初始平。例如每个容器主机10、12可以与虚拟化地址相关联,使得数据分组34可以标识每个容器主机10、12的地址。作为响应,路由组件109可以使用该地址经由网络接口组件(NIC)26将数据分组34传递到容器主机10或经由NIC28传递到容器主机12。对于此示例的目的,路由组件109将数据分组34传递到NIC 26,NIC 26可以将数据分组34传输到容器主机10的虚拟交换机18。虚拟交换机18可以与管理组件20通信,该管理组件20可以执行负载均衡并选择容器14、15和16中的一个用于接收数据分组34,以便于均衡虚拟网络108的容器14、15和16和/或容器主机10、12上的数据负载。应该注意,NIC 28、虚拟交换机19和管理组件21可以执行与NIC 26、虚拟交换机18和管理组件20类似的功能以用于将任何数据分组传递到容器主机12。
[0024] 例如再次参考容器主机10,管理组件20可以生成具有第2层虚拟化源和目的地地址的代理数据分组51,以发送到容器14(当基于负载均衡选择了容器14时),并且可以作为响应,从容器14接收代理数据分组响应52。此外,管理组件20可以将第2层虚拟化的源和目的地地址转换回原始寻址,以生成数据分组响应54,以响应于数据分组34来传输到客户端110。这样,管理组件20可以充当代理并与容器14、15、16的网络交互,以使用第2层寻址和处理来执行数据分组34的负载均衡。
[0025] 通过在第2层(数据链路层)执行负载均衡并使用第2层来创建代理寻址,例如将源VIP地址改变为容器主机10的本地IP地址,并将目的地IP地址改变为选定的目的地容器的目的地VIP地址,因此管理组件20能够实现数据链路层而不是TCP/IP层22、24的使用,从而降低了与负载均衡连接相关联的处理成本。例如可以例如通过消除上层处理来减少所需的CPU周期的数目。此外,通过在数据链路层上执行负载均衡,可以增加吞吐量。此外,通过避免物理IP地址的使用,容器主机10操作管理组件20能够实现与不支持DSR的平台的兼容性,并且还改进了可扩展性。
[0026] 现在参考图2,示出了与容器主机10一起使用的更详细的示例管理组件20,以执行连接的负载均衡并充当客户端110与虚拟网络中的一个或多个容器14、15和16进行通信的中介或代理。尽管下面的描述涉及与容器主机10相关联的管理组件20,但是应当注意,与容器主机12相关联的管理组件21也可以执行类似的功能。在一个实现中,管理组件20可以在容器主机12的虚拟交换机18内实现和/或与虚拟交换机18通信。此外,管理组件20可以在容器主机10的数据堆栈的数据链路层(例如,第2层)上操作。
[0027] 管理组件20可以从客户端110接收一个或多个数据分组34,该客户端110与诸如因特网的外部网络104通信。数据分组34可以包括源VIP地址42,管理组件20可以使用该源VIP地址42来将客户端110识别为传输数据分组34的源。另外,数据分组34可以包括目的地IP地址36,目的地IP地址36将容器主机10标识为数据包34的目的地。目的地IP地址36可以是容器主机10的物理网络地址38。此外,目的地IP地址36可以是容器主机10的虚拟IP地址40,其中可以与诸如容器主机12的其他容器主机共享这样的虚拟地址,以使数据分组通常能够被传递到容器主机的虚拟网络。这样,管理组件20可以支持与容器主机相关联的任意类型的IP地址。在一个实现中,当管理组件20接收到具有通常与容器主机的虚拟网络相关联的目的地IP地址36的任意分组时,管理组件20可以自动对所接收的分组进行负载均衡。
[0028] 管理组件20可以包括负载均衡组件43,该负载均衡组件43可操作用于将数据分组34分发到通过虚拟网络108进行通信的容器主机10,12中的任意一个。负载均衡组件43可以将一个或多个负载均衡规则44应用于接收到的数据分组34,以标识目的地容器46以接收每个数据分组34。示例负载均衡规则44可以包括但不限于:涉及阈值的负载均衡(例如基于满足阈值的存储器或CPU使用);与群集中的其他节点(例如,在这种情况下,其他容器14、15、
16和/或其他容器主机)相比涉及平均使用的负载均衡;用于基于用户的IP地址将用户(例如,客户端110)或用户组保留在相同容器14、15、16和/或其他容器主机10、12上的源哈希负载均衡;轮询(round robin)负载均衡;以及最少连接数目的负载均衡(例如,在负载均衡时使用尽可能少的数目或连接)。例如,目的地容器46可以选自容器14、15和16(图1)。负载均衡规则44可以在容器主机10和/或12内部运行的容器14、15、16中的任意一个之间分发数据分组34的数据负载。这样,负载可以在跨虚拟网络108上进行通信的容器主机10、12中的任意一个被分发。
[0029] 负载均衡组件43可以与代理组件50通信,该代理组件50可操作以将数据分组34的源地址和目的地地址转换为第2层代理源地址和第2层代理目的地地址,以生成要传输到目的地容器46的代理数据分组51。在一个实现中,代理组件50可以包括网络地址转换器(NAT),该网络地址转换器(NAT)可操作用于将数据分组的原始源地址和目的地地址转换为特定于第2层的虚拟地址,以在虚拟网络内进行高效通信。例如代理组件50可以将数据分组34的源VIP地址42转变为代理源地址,诸如容器主机10的本地IP地址35。本地IP地址35可以是特定于数据链路层(例如第2层)的虚拟地址,这不是真实的物理地址。例如本地IP地址35可以是动态IP地址(DIP)。这样,本地IP地址35可以在数据链路层内被完全虚拟化,并且可以不被配置在容器主机10、12中的任意一个的IP层(例如第3层)或传输层(例如第4层)中。
代理数据分组51可以包括本地IP地址35作为代理数据分组51的源地址,使得当管理组件20将代理数据分组51传输到所选的目的地容器46时,目的地容器46将容器主机10标识为代理数据分组51的源。
[0030] 另外,代理组件50可以将所接收的数据分组34的目的地IP地址36转变成代理目的地地址,例如所选目的地容器46的目的地VIP地址48。例如目的地VIP地址48也可以是动态IP地址(DIP)。代理组件50将目的地VIP地址48包括在代理数据分组51中,使得可以使用第2层将代理数据分组51路由到目的地容器46。换句话说,代理组件50用新的虚拟网络第2层寻址方案替换接收到的数据分组34的原始源地址和目的地地址,以将接收到的数据分组34变换为由管理组件20传输的代理数据分组51。用例如目的地VIP地址48的代理目的地地址替换数据分组34的原始目的地IP地址36允许与容器主机10、12相关联的任意目的地IP地址36用作虚拟IP地址,该虚拟IP地址可以被路由到通过虚拟网络108通信的任意容器14、15和16。此外,通过用容器主机10的本地IP地址35替换数据分组34的源VIP地址42,使管理组件
20能够充当客户端110的中介并使用第2层寻址和处理来执行非DRS分布式负载均衡。
[0031] 当目的地容器46完成对代理数据分组51的处理时,目的地容器46可以将代理数据分组响应52提供回管理组件20。代理数据分组响应52可以将所选目标容器46的目的地VIP地址48标识为代理数据分组响应52的源,并且可以将容器主机10的本地IP地址35标识为代理数据分组响应52的目的地。
[0032] 代理组件50可以接收代理数据分组响应52,并且可以应用一个或多个状态规则,该状态规则记住被应用于从客户端110所接收的原始数据分组34的目的地IP地址36和源VIP地址42的改变,使得数据分组响应54可以被传输回客户端110。代理组件50可以生成数据分组响应54,以将容器主机10的目的地IP地址36作为数据分组响应54的源地址,并将客户端110的源VIP地址42作为目的地地址。这样,管理组件20可以配置并输数据分组响应54,从而可以将其路由回特定的客户端,例如在这种情况下为客户端110,该客户端最初将数据分组34传输至容器主机10、12。
[0033] 通过执行负载均衡并使用数据链路层来创建代理寻址,例如将源VIP地址42改变为容器主机10的本地IP地址35,将目的地IP地址36改变为选的目的地容器46的目的地VIP地址48,管理组件20能够实现例如数据链路层的第2层而不是TCP/IP层22、24的使用,从而降低了与负载均衡连接相关的处理成本。例如可以例如通过消除上层处理来减少所需的CPU周期的数目。此外,通过在数据链路层上执行连接的负载均衡,可以增加吞吐量。此外,通过避免物理IP地址的使用,操作管理组件20的容器主机10能够实现与不支持DSR的平台的兼容性,并且还改进了可扩展性。
[0034] 现在参考图3和图4,示例方法300(图3)是可由计算机设备102或106(图1)的管理组件20或21(图1)使用,以将一个或多个数据分组34(图2)负载均衡到容器14、15、16之一以进行处理的通用方法,这结合在方法300的执行过程中发生的对源地址和目的地地址格式(图4)的示例改变而被讨论。
[0035] 在302处,方法300可以包括基于数据分组的目的地IP地址在计算机设备上的容器主机处接收至少一个数据分组。例如在一种实现中,管理组件20可以从与诸如因特网的外部网络104通信的客户端110接收一个或多个数据分组34。数据分组34可以包括源VIP地址42,源VIP地址42可以被管理组件20用来标识传输了数据分组34的客户端110。此外,数据分组34可以包括标识在网络上进行通信的一个或多个容器主机10、12的目的地IP地址36。目的地IP地址36可以是容器主机10的物理网络地址38,或容器主机10的虚拟IP地址40(例如使得其可以由网络上的例如容器主机12的其他容器主机共享)。这样,管理组件20可以支持与容器主机10、12相关联的任意IP地址。
[0036] 在304处,方法300可以包括:在容器主机的数据链路层处,从计算机设备和通过虚拟网络与计算机设备通信的其他计算机设备上的至少一个容器主机中选择目的地容器,以均衡数据负载。例如在一种实现中,管理组件20可以包括负载均衡组件43,该负载均衡组件43可操作用于跨通过虚拟网络108进行通信的容器主机10、12和/或容器14、15、16中的任何一个分发数据负载。负载均衡组件43可以将一个或多个负载均衡规则44应用于所接收的数据分组34,以标识目的地容器46以接收数据分组34。例如可以从容器14、15和16(图1)中选择目的地容器46。负载均衡规则44可以在容器主机10和/或12内运行的容器14、15、16中的任意一个之间分发数据分组34的数据负载。这样,负载可以跨通过虚拟网络108进行通信的容器主机10、12中任何一个被分发。
[0037] 在306,方法300可以包括在数据链路层处将至少一个数据分组的源IP地址转换为容器主机的本地IP地址。例如负载均衡组件43还可以使用代理组件50将传输数据分组34的客户端110的源IP地址转变成容器主机10的本地IP地址35。本地IP地址35可以完全被虚拟化,使得本地IP地址35可能不被配置在容器主机10、12的IP层(例如第3层)或传输层(例如第4层)中。
[0038] 在308,方法300可以包括在数据链路层处将至少一个数据分组的目的IP地址改变为所选目的容器的虚拟IP地址,使得至少一个数据分组被变换为代理数据分组,代理数据分组具有目的地容器的虚拟IP地址的目的地地址和容器主机的本地IP地址的源地址。例如在一种实现中,负载均衡组件43还可以使用代理组件50,该代理组件50可操作用于将所接收的数据分组34的目的IP地址36转变成所选目的容器46的目的VIP地址48,使得数据分组34可以使用目的地VIP地址48被路由到目的地容器46。将数据分组34的目的地IP地址36改变为目的地VIP地址48,允许与容器主机10、12关联的任意目的地IP地址36被用作虚拟IP地址,其可以被路由到通过虚拟网络108通信的任意容器14、15和16。
[0039] 在310处,方法300可包括从目的地容器接收代理数据响应分组。管理组件20可以响应于从容器主机10所接收的代理数据分组51而从目的地容器46接收代理数据分组响应52。代理数据分组响应52可以将容器主机10的本地IP地址35标识为代理数据分组响应52的目的地。另外,代理数据分组响应52可以将目的地容器46的目的地VIP地址48标识为代理数据分组响应52的源。
[0040] 在312,方法300可以包括将代理数据响应分组变换为将客户端的源地址标识为数据响应分组的目的地地址的数据响应分组。代理组件50可以应用一个或多个规则来标识客户端110的源地址。这些规则可以是有状态的规则,其记住在虚拟网络内的第2层上的负载均衡期间对数据分组34的目的地和源地址所做的改变。代理组件50可以用容器主机10的目的地IP地址36替换容器主机10的本地IP地址35。此外,代理组件50可以用客户端110的源VIP地址42替换目的地容器46的目的地VIP地址48。因此,数据分组响应54可以将客户端110的客户端110的源VIP地址42指示为目的地地址,将容器主机10的目的IP地址36指示为数据分组响应54的源。这样,数据分组响应54可以从外部网络104被路由回传输数据分组34的客户端110。
[0041] 现在参考图4,其也参考图1进行了讨论,示出了当根据方法300进行操作时管理组件20对数据分组34,代理数据分组51,代理数据分组响应52和数据分组响应54的地址报头402、410、420和430的示例性改变。同样,关于寻址格式参考图1,负载均衡容器主机10、12的IP地址为10.10.10.200和10.10.10.201,但是对应的管理组件20、21(以及相应的负载均衡组件43)的VIP地址是2.2.2.2:80,并且后端容器14、15、16具有分别为192.168.1.5、
192.168.1.6和192.168.1.7的DIP。在图4所示的示例中,客户端110的源VIP地址为
1.1.1.1,并且容器主机10的虚拟IP地址为具有端口80的2.2.2.2。此外,在图1所示的示例中,容器14的目的地容器VIP地址为192.168.1.5:8000,容器15的目的地容器VIP地址为
192.168.1.6:8000,并且容器16的目的地容器VIP地址为192.168.1.6:8000。
[0042] 外部客户端110可以将数据分组34发送到容器主机10的虚拟IP地址40(图1)。物理网络可以将数据分组34路由到在虚拟网络108上通信的任意容器主机10和12,因为在此示例中,容器主机10和容器主机12两者均具有带有端口80的虚拟IP地址40和41 2.2.2.2(参见图1)。数据分组34包括地址报头402,其具有1.1.1.1的源介质访问控制(MAC)地址402、2.2.2.2的目的地MAC地址404、1.1.1.1:9000的源VIP地址406、以及2.2.2.2:80的目的地VIP地址408。在所示的示例中,物理网络可以基于数据分组34的目的地VIP地址408将数据分组34路由到容器主机10。
[0043] 在容器主机10处,管理组件20可以创建代理数据分组51,如上面参考图1-3所讨论的,以发送给容器14、15、16中的所选择的一个(基于负载均衡规则)。代理数据分组51包括地址头部410,其具有本地主机的源MAC地址412(例如容器主机10的代理地址),192.168.1.5的目的地MAC地址414、192.168.1.8:8686的源VIP地址416、和192.168.1.5:
8000的目的地VIP地址418。因此,管理组件20可以将代理数据分组51传输到所选后端容器的目的地VIP地址418。目的地虚拟IP地址418和源VIP地址416两者均已完全被虚拟化,并且未被配置在任意容器主机10、12的IP层(例如第3层)或传输层(例如第4层)中。
[0044] 后端容器,例如容器14、15、16中的选定容器之一,可以生成代理数据分组响应52。代理数据分组响应52包括地址头部420,其具有192.168.1.5的源MAC地址422、本地主机的目的地MAC地址424(例如容器主机10的代理地址)、192.168.1.5:8000的源VIP地址426、和
192.168.1.8:8686的目的VIP地址428。当后端容器发送虚拟IP 192.168.1.8的地址解析协议(ARP)时,容器主机10将以10.10.10.200的MAC地址进行响应,以使代理数据分组响应52返回到容器主机10。
[0045] 管理组件20可以接收代理数据分组响应52,并且可以应用一个或多个规则来创建数据分组响应54以传输到客户端110。数据分组响应54包括地址报头430,地址报头430具有本地主机的源MAC地址432、1.1.1.1的目的地MAC地址434、2.2.2.2:80的源VIP地址436、和1.1.1.1:9000的目的地VIP地址438。一个或多个规则可以是容器主机10的第2层中的有状态规则,其将客户端110标识为数据分组34的源,使得可以将数据分组响应54传输到客户端
110。这样,数据分组响应54可以在容器主机10的数据链路层(例如,层2)中被变换。
[0046] 另外,应注意,通过使用系统100来执行非直接源路由并在第2层中执行负载均衡,系统100可以提供功能来对实际上未分配给节点中的任意一个的VIP进行负载均衡,因为系统100捕获了第2层中的数据分组,并将该分组代理到选定的端点。因此,在单个配置中,系统100支持负载均衡,能够实现使用特定IP对代理进行负载均衡连接,并提供用于使用任意IP作为可路由至机器的VIP的功能。因此,系统100通过避免在第3层或更高层中配置VIP来解决问题。此外,它节省了在第3层和/或第4层中执行本公开中讨论的所有这些任务的成本。此外,用户不需要处理VIP的容器主机上的网络配置中的任意一个。
[0047] 例如在WINDOWS操作系统中的示例实现中,可以使用Windows中的vmswitch扩展驱动器(VFP)来实现管理组件20。从HNS API,可以为负载均衡器配置添加新接口。除标准负载均衡器配置外,用户可以指定源VIP和VIP。源VIP是用于将数据分组发送到所选动态IP地址(DIP)的代理IP。在覆盖网络的情况下,系统不需要关心网络(路由)配置,因此,如本文所述,源IP地址可以作为保留IP被添加到本地机器中,其媒体访问控制(MAC)地址与管理组件20的MAC地址相同。用户可以将此源VIP用作所有群集容器主机10、12的远程端点。默认情况下,VIP可以是用于目的地VIP的管理IP地址,其允许分布式负载均衡的性能。分布式负载均衡可以包括使数据分组能够传输到容器主机群集的任意节点的连接。并且,如果用户指定与本地管理组件IP地址不同的地址,则负载均衡可以相应地被配置。对于这种情况,系统被设置为使得物理路由器将用于VIP的分组传递到容器主机10、12之一,并在将VIP传递到容器主机的同时将VIP保留在分组中。
[0048] 现在参考图5,示出了根据一种实现的示例计算机设备102,与图1相比,包括其他组件细节。在一个示例中,计算机设备102可以包括处理器30,用于执行与本文所述的组件和功能中的一个或多个相关联的处理功能。处理器30可以包括单个或多个处理器或多核处理器的集合。此外,处理器30可以被实现为集成处理系统和/或分布式处理系统。
[0049] 计算机设备102可以进一步包括存储器32,诸如用于存储由处理器30执行的应用的本地版本。存储器32可以包括可由计算机使用的一种类型的存储器,诸如随机存取存储器(RAM)、只读存储器(ROM)、磁带、磁盘、光盘、易失性存储器、非易失性存储器及其任意组合。另外,处理器30和存储器32可以包括并执行容器主机10、12(图1)。
[0050] 此外,计算机设备102可以包括通信组件58,该通信组件58利用本文描述的硬件软件和服务来提供用于建立和维护与一个或多个参与者的通信。通信组件58可以在计算机设备102上的组件之间以及计算机设备102与外部设备之间进行通信,诸如跨通信网络和/或串行或本地连接到计算机设备102的设备定位的设备。例如通信组件58可以包括一个或多个总线,并且可以进一步包括分别与发射机和接收机相关联的传输链组件和接收链组件,其可操作用于与外部设备对接。
[0051] 另外,计算机设备102可以包括数据存储60,数据存储60可以是硬件和/或软件的任意合适的组合,其提供了结合本文所述的实现采用的信息、数据库和程序的大容量存储。例如数据存储60可以是用于管理组件20(图1)的数据仓库
[0052] 计算机设备102还可包括用户接口组件62,该用户接口组件62可操作用于从计算机设备102的用户接收输入,并且还可操作用于生成用于呈现给用户的输出。用户接口组件62可以包括一个或多个输入设备,包括但不限于键盘、数字键盘、鼠标、触敏显示器、导航键、功能键、麦克语音识别组件、能够从用户接收输入的任意其他机制、或其任意组合。
此外,用户接口组件62可以包括一个或多个输出设备,包括但不限于显示器、扬声器、触觉反馈机制、打印机、能够向用户呈现输出的任意其他机制、或其任意组合。
[0053] 在一种实现中,用户接口组件62可以传输和/或接收与管理组件20的操作相对应的消息。此外,处理器30执行管理组件20或数据存储60可以存储它们。
[0054] 如在本申请中使用的,术语“组件”、“系统”等旨在包括与计算机有关的实体,诸如但不限于硬件、固件、硬件和软件的组合、软件、或执行中的软件。例如组件可以是但不限于在处理器上运行的进程、处理器、对象、可执行文件、执行线程、程序和/或计算机。作为说明,在计算机设备上运行的应用和计算机设备都可以是组件。一个或多个组件可以驻留在执行的进程和/或线程中,并且组件可以位于一台计算机上和/或分布在两个或多个计算机之间。另外,这些组件可以从其上存储有各种数据结构的各种计算机可读介质执行。组件可以诸如根据具有一个或多个数据分组的信号,通过本地和/或远程过程来通信诸如来自一个组件的数据,该组件通过信号的方式与本地系统中的、分布式系统中的、和/或跨诸如具有其他系统的因特网的网络的另一个组件进行交互。
[0055] 此外,术语“或”旨在表示包括性的“或”而不是排他性的“或”。也就是说,除非另有说明,或者从上下文中可以清楚地看出,短语“X采用A或B”是旨在表示任意自然的包容性排列。也就是说,以下任意一种情况都满足短语“X采用A或B”:X采用A;X采用B;或X采用A和B两者。此外,除非另外说明或从上下文清楚地理解为单数形式,否则在本申请和所附权利要求中使用的冠词“一”和“一个”通常应被解释为意指“一个或多个”。
[0056] 可以根据可以包括多个设备、组件、模等的系统来呈现各种实现或特征。应当理解和意识到,各种系统可以包括附加的设备、组件、模块等,和/或可以不包括结合附图所讨论的所有设备、组件、模块等。这些方法的组合也可以使用。
[0057] 结合本文公开的实施例描述的方法的各种说明性逻辑、逻辑块和动作可以用以下各项来实现或执行:通用处理器中经过特殊编程的一个、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其他可编程逻辑设备、分立门或晶体管逻辑、分立硬件部件、或被设计为执行本文描述的功能的它们的任意组合。通用处理器可以是微处理器,但可替代地,处理器可以是任意常规处理器、控制器、微控制器或状态机。处理器也可以被实现为例如DSP和微处理器的组合的计算机设备的组合、多个微处理器、与DSP核结合的一个或多个微处理器、或任意其他这样的配置。另外,至少一个处理器可以包括一个或多个组件,所述一个或多个组件可操作用于执行上述步骤和/或动作中的一个或多个。
[0058] 此外,结合本文所公开的实现描述的方法或算法的步骤和/或动作可以直接体现在硬件中、在由处理器执行的软件模块中或在两者的组合中。软件模块可以驻留在RAM存储器、闪存、ROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬盘、可移动磁盘、CD-ROM或本领域已知的任意其他形式的存储介质中。示例性存储介质可以耦合到处理器,使得处理器可以从该存储介质读取信息,以及可以向该存储介质写入信息。替代地,存储介质可以与处理器集成在一起。此外,在一些实现中,处理器和存储介质可以驻留在ASIC中。另外,ASIC可以驻留在用户终端中。替代地,处理器和存储介质可以作为分立组件驻留在用户终端中。另外,在一些实现中,方法或算法的步骤和/或动作可以作为代码和/或指令的一个或任何组合或集合驻留在机器可读介质和/或计算机可读介质上,其可以被并入计算机程序产品中。
[0059] 在一个或多个实现中,可以以硬件、软件、固件或其任意组合来实现所描述的功能。如果以软件实现,则功能可以作为一个或多个指令或代码被存储在或传输到计算机可读介质上。计算机可读介质包括计算机存储介质和通信介质两者,该通信介质包括有助于将计算机程序从一个地方传递到另一地方的任意介质。存储介质可以是计算机可以访问的任意可用介质。作为示例而非限制,这种计算机可读介质可以包括RAM、ROM、EEPROM、CD-ROM或其他光盘存储装置、磁盘存储装置或其他磁性存储设备、或可用于以指令或数据结构形式存储所需程序代码且可由计算机访问的任何其他介质。本文使用的磁盘和光盘包括压缩盘(CD)、激光光盘、光盘、数字多功能光盘(DVD)、软盘和蓝光光盘,其中光盘通常以磁性方式复制数据,而光盘通常以激光方式以光学方式复制数据。上述的组合也应被包括在计算机可读介质的范围内。
[0060] 尽管已经结合本公开的示例描述了本公开的实现,但是本领域技术人员将理解,可以在不脱离本发明范围的情况下对上述实现进行改变和修改。通过考虑说明书或根据本文公开的示例的实践,其他实现对于本领域技术人员将是显而易见的。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈