CN109937401B - 经由业务旁路进行的负载均衡虚拟机的实时迁移 - Google Patents

经由业务旁路进行的负载均衡虚拟机的实时迁移 Download PDF

Info

Publication number
CN109937401B
CN109937401B CN201780070413.9A CN201780070413A CN109937401B CN 109937401 B CN109937401 B CN 109937401B CN 201780070413 A CN201780070413 A CN 201780070413A CN 109937401 B CN109937401 B CN 109937401B
Authority
CN
China
Prior art keywords
host
virtual machine
identification information
destination
source
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
CN201780070413.9A
Other languages
English (en)
Other versions
CN109937401A (zh
Inventor
R·普里
V·巴德瓦杰
M·西瓦库马
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.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Technology Licensing LLC
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 Microsoft Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Publication of CN109937401A publication Critical patent/CN109937401A/zh
Application granted granted Critical
Publication of CN109937401B publication Critical patent/CN109937401B/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
    • H04L67/1014Server selection for load balancing based on the content of a request
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system
    • G06F9/5088Techniques for rebalancing the load in a distributed system involving task migration
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/46Interconnection of networks
    • H04L12/4633Interconnection of networks using encapsulation techniques, e.g. tunneling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0803Configuration setting
    • H04L41/0813Configuration setting characterised by the conditions triggering a change of settings
    • H04L41/082Configuration setting characterised by the conditions triggering a change of settings the condition being updates or upgrades of network functionality
    • 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
    • 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
    • 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
    • H04L67/1023Server selection for load balancing based on a hash applied to IP addresses or costs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/40Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass for recovering from a failure of a protocol instance or entity, e.g. service redundancy protocols, protocol state redundancy or protocol service redirection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/4557Distribution of virtual machine instances; Migration and load balancing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/46Interconnection of networks
    • H04L12/4604LAN interconnection over a backbone network, e.g. Internet, Frame Relay
    • H04L2012/4629LAN interconnection over a backbone network, e.g. Internet, Frame Relay using multilayer switching, e.g. layer 3 switching
    • 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/1038Load balancing arrangements to avoid a single path through a load balancer

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本文中描述了用于通过至少一个虚拟机的实时迁移来管理两个虚拟机之间的负载均衡器旁路的方法、***和设备。在一个方面,可以在与源主机相关联的源虚拟机和与目的地主机相关联的目的地虚拟机之间建立负载均衡器旁路。可以将源虚拟机标识信息、源主机标识信息、目的地虚拟机标识信息和目的地主机标识信息与例如旁路数据结构中的旁路是否活动的指示相关联。在确定源虚拟机或目的地虚拟机中的至少一个到第三主机的实时迁移已经完成时,可以利用第三主机的标识信息更新旁路数据结构以在实时迁移完成之后保持负载均衡器旁路。

Description

经由业务旁路进行的负载均衡虚拟机的实时迁移
技术领域
本公开总体上涉及虚拟机的实时迁移,并且更具体地涉及软件定义网络中的负载均衡虚拟机的实时迁移。
背景技术
网络虚拟化在用于各种应用的现代数据中心中是常见的。虚拟化允许数据中心租户使用适合各种工作负载的寻址方案来创建网络,并且还允许租户管理员根据需要在其网络内设置网络策略。
这些虚拟化租户网络是数据中心的底层物理网络的顶层。因此,租户虚拟机(VM)中的网络接口直接连接到虚拟化的租户网络(或覆盖网络)。知晓虚拟化网络和物理网络两者的交换机执行适当的转换,以确保以覆盖端点和底层端点两者都不知道租户管理员意图的网络虚拟化的细节的方式来传送分组去往和来自虚拟化网络端点。
虚拟化感知交换机的编程通常由软件定义网络(SDN)控制器完成。SDN控制器可以保持数据中心中的预期网络状态的存储库,并且还包含用于实现该状态的逻辑,例如,通过编程开关。
负载均衡是现代数据中心中期望的典型功能。负载均衡器将虚拟化IP(VIP)映射到一组数据中心IP(DIP)。DIP端点可以表示租户的虚拟化网络内的端点。VIP通常是因特网或至少数据中心可路由的,例如,它们通常不是虚拟化的。另一方面,DIP通常是虚拟化的。为了在非虚拟化(VIP)端点与虚拟化(DIP)端点之间执行转换,在SDN控制器下运行的负载均衡器必须知晓SDN控制器打算在数据中心中实现的网络虚拟化策略。负载均衡器还必须与SDN控制器中的其他组件协同工作以实现在租户空间中虚拟化的工作负载的负载均衡。
在典型的数据中心中,主机有时需要停止服务,例如,用于对服务器软件的服务、维护、升级等。在这种情况下,租户工作负载通常被实时迁移到另一主机,以便工作负载经历最少的停机时间或没有停机时间。在实时迁移方案中,确保能够在目的地主机上还原在迁移工作负载内运行的所有进程的CPU上下文。以类似的方式,确保在目的地主机处恢复在迁移工作负载处终止的网络流也是有益的。对于源自数据中心外部的流(诸如来自负载均衡器的流)也是如此。
在其他情况下,DIP端点可能未被虚拟化,诸如在它们与对数据中心的基础设施有贡献的VM相关联的情况下。这些DIPS也可能落后于或与负载均衡器一起工作和/或实时迁移。如本文中使用的,DIP端点可以是虚拟化的或非虚拟化的。
在大多数数据中心中,跨负载均衡器的大部分业务是由于源自数据中心中的VM的业务并且针对数据中心内的另一VM,使得源VM和目的地VM两者都在负载均衡器之后。从负载均衡器的角度来看,这被称为东西业务(EW业务)。在某些情况下,可以将EW业务配置为旁路负载均衡器。通过VM的实时迁移来管理和保持这些EW业务旁路可能会带来挑战。因此,可以对通过实时迁移来保持EW业务旁路的技术进行改进。
发明内容
本公开的说明性示例包括但不限于方法、***和各种设备。在一个方面,本文中描述了用于通过至少一个虚拟机的实时迁移来管理两个虚拟机之间的负载均衡器旁路的方法、***和设备。在一个方面,可以在与源主机相关联的源虚拟机和与目的地主机相关联的目的地虚拟机之间建立负载均衡器旁路。可以将源虚拟机标识信息、源主机标识信息、目的地虚拟机标识信息和目的地主机标识信息与例如旁路数据结构中的旁路是否活动的指示相关联。在确定源虚拟机或目的地虚拟机中的至少一个到第三主机的实时迁移已经完成时,可以利用第三主机的标识信息更新旁路数据结构以在实时迁移完成之后保持负载均衡器旁路。
下面描述***和方法的其他特征。特征、功能和优点可以在各种示例中独立地实现,或者可以在其他示例中组合,其进一步的细节可以参考以下描述和附图来看出。
附图说明
下文中将参考附图更全面地描述本公开的实施例,在附图中:
图1描绘了经由负载均衡器与一个或多个虚拟资源通信的客户端设备的示例图。
图2描绘了与多个虚拟机通信的软件负载均衡器的示例架构。
图3描绘了经由负载均衡器到一个或多个虚拟机的入站业务的示例。
图4描绘了经由负载均衡器到一个或多个虚拟机的入站业务的另一示例。
图5描绘了到一个或多个虚拟机的入站和出站业务的示例。
图6描绘了两个虚拟机之间的数据中心内业务旁路的示例。
图7描绘了用于建立数据中心内业务旁路的两个虚拟机之间的示例通信。
图8描绘了针对虚拟机之一的实时迁移而优化的两个虚拟机之间的数据中心内业务旁路的示例。
图9描绘了用于管理负载均衡器的东西业务旁路的示例数据结构。
图10描绘了用于通过两个虚拟机中的至少一个虚拟机的实时迁移来管理两个虚拟机之间的负载均衡器旁路的示例过程,该方法包括。
图11描绘了其中可以实施本文中描述的技术的示例通用计算环境。
具体实施方式
本文中描述了用于通过至少一个虚拟机的实时迁移来支持或管理两个虚拟机之间的负载均衡器旁路的***和技术。在现有数据中心***中,可以生成通知并且将其发送到数据中心中的每个主机以更新与所迁移的VM相关联的主机信息。该通知过程可以通过在MUX或负载均衡器处保持心跳机制来优化。每个主机可以向MUX发送心跳以指示它仍然在使用MUX知晓的/将主机编程为实现的旁路流。MUX可以基于这些心跳保持高速缓存、表或数据结构,并且仅为关联于与迁移VM通信的VM的主机生成VM的实时迁移通知。
图1示出了包括与数据中心或其他虚拟平台122通信的客户端设备102的示例***100。在一个示例中,可以表示对由数据中心122提供的虚拟化服务的请求的任何设备或源的客户端102可以有一些工作要由数据中心122来执行。在一个示例中,客户端设备102可以与域名***(DNS)104通信以获取在数据中心122中运行的服务或其他过程的一个或多个虚拟化IP地址(VIP)。在操作106,客户端设备102可以发送针对由数据中心122管理的特定服务、应用或数据的查找请求。DNS 104可以查找与该请求相关联的服务或数据,并且返回与所请求的数据、服务等相关联的至少一个VIP。然后,在操作110,客户端设备可以与数据中心122通信。在一些方面,这可以通过TCP、UDP或其他通信协议来进行,如本领域已知的。
数据中心可以实现负载均衡器112,负载均衡器112可以在资源或虚拟机(VM)或VM实例114-120之间分配传入业务。如本文中使用的,VM实例可以是在主机设备上执行的VM的实例。相同VM的多个实例(例如,相同的配置、数据、逻辑等)可以在相同或不同的设备或主机上同时执行。在一些方面,负载均衡器112可以包括硬件组件。在其他情况下,负载均衡器112可以用软件实现,例如,实现为软件负载均衡器(SLB)。如在本公开的其余部分中描述的,将仅详细描述SLB。然而,应当理解,本文中描述的技术也可以容易地在硬件负载均衡器中实现。负载均衡器112可以将寻址到VIP的数据(例如,分组)转换为数据中心因特网协议地址(DIP),以路由到一个或多个资源114-120。负载均衡器112还可以通过转换目的地为诸如客户端设备102等外部位置的分组来提供出站因特网连接。在一些情况下,负载均衡器112还可以提供数据中心内路由,例如在资源114、116、118或120的任何资源之间,例如由链路124表示的。
图2示出了可以实现一个或多个软件负载均衡器112的示例数据中心200。如图所示,软件负载均衡器(SLB)112是包括多个数据中心组件的分布式***,这些组件协同工作以执行负载均衡和网络地址转换(NAT)功能。
在一些方面,负载均衡器112可以包括网络控制器202,网络控制器202可以控制数据中心200/VM的路由、寻址和其他方面。网络控制器202可以包括软件负载均衡器管理器(SLBM)204、206、208的一个或多个实例。每个SLBM 204、206、208可以处理通过一个或多个API进入的SLB命令并且负责编程目标状态。每个SLBM 204、206、208可以在SLB 112中的不同组件之间同步状态。在一些方面,每个SLBM 204、206、208可以负责特定数目的VM 228、230、240、242和/或多个主机设备244、246等。
网络控制器202/SLBM实例204、206、208可以与一个或多个多路复用器(MUX)214、216、218通信。多路复用器214、218、218中的每个可以使用ToR或例如可以从诸如因特网等一个或多个网络接收业务的其他匿名网络技术来接收经由路由器210、212路由的业务。在一些方面,一个或多个路由器210、212可以使用等成本多路径路由(ECMP)来将入站业务路由到一个或多个MUX 214、216、218。在一些方面,一个或多个路由器210、212可以使用边界网关协议(BGP)与MUX 214、216、218通信。每个SLBM 204、206、208可以确定用于向MUX 214、216、218分发业务/请求的策略。每个SLBM 204、206、208还可以确定用于将数据从MUX 212、214、216路由到一个或多个主机244、246(例如,启用超V的主机)的策略。每个SLBM 204、206、208还可以管理将VIP映射到不同VM 228、230、240、242的DIP的VIP池,
每个MUX 212、214、216可以负责处理数据。每个MUX 212、214、216可以向路由器210、212通告其自己的IP地址以作为针对与其相关联的所有VIP的下一跳。多路复用器212、214、216可以从路由器210、212接收业务,并且可以执行负载均衡以将业务映射到可用VM228、230、240、242。
可以包括各种类型和配置的计算设备(诸如服务器)的每个主机设备244、246可以执行SLB主机代理220、232或以其他方式与其相关联。每个SLB主机代理220、232可以负责编程主机244、246上的规则。每个SLB主机代理220、232也可以是用于出站连接的SLBM 204、206、208的请求端口。每个SLB主机代理220、232可以向VM 228、230、240、242发送健康探测(例如,寻址到与每个VM相关联的DIP,其中DIP在租户的虚拟网络空间中),并且经由一个或多个VM交换机226、238来从VM接收关于它们的健康、状态等的响应。每个VM交换机226、238可以与虚拟机过滤平台(VFP)相关联以促进多租户VM实现。在一些方面,每个主机244、246上的NIC代理222、234可以促进创建虚拟化NIC,SLB主机代理220、232可以从该虚拟化NIC发送探测请求。
在一些方面,每个主机设备244、246可以与管理程序(hypervisor)相关联。在一些方面,SLB主机代理220和232可以经由管理程序或Hyper-V主机执行。每个SLB主机代理220、232可以监听来自控制器202/SLBM 204、206、208的SLB策略更新以及到相应的VM交换机226、238的程序规则。VM交换机226、238可以被设计为促进在软件定义的网络(SDN)中进行操作,并且处理用于SLB解封装和NAT的数据路径。交换机226、238可以通过MUX 214、216、218接收入站业务,并且通过MUX 214、216、218或者直接地向外部IP路由出站业务,以旁路MUX 214、216、218。
在一些情况下,DIP端点可能未被虚拟化,诸如在它们与对数据中心的基础设施有贡献的VM相关联的情况下。这些DIPS也可能落后于或与负载均衡器一起工作和/或实时迁移。如本文中使用的,DIP端点可以是虚拟化的或非虚拟化的,并且所描述的技术可以对两种类型的DIP进行操作。
下面,将参考图3和4描述入站数据流,将参考图5描述出站流程,并且将参考图6描述数据中心内流程。
图3描绘了经由负载均衡器到一个或多个虚拟机的入站业务的示例过程流程300。第一连接或流程可以被描绘为虚线320。在所示的示例***中,如流程320a和320b所示,流程320可以采用两条路径通过MUX 214或通过MUX 216而到达VM 228。第二流程322可以指向VM 230,并且可以被路由通过MUX 216。
如图所示,顶层或第一层可以包括网络302(诸如因特网)和路由器210,路由器210可以负责经由ECMP来将分组分发到MUX 214、216,例如,在数据平面的第3层上。MUX 214和216可以在第二层上,并且可以经由将VIP转换为DIPS来提供封装,以将数据路由到数据平面的第4层上的一个或多个VM 228、230、240、242。由于ECMP散列可能不是固有稳定的,因此MUX 214和216可以保持一致的散列以确保来自相同流的分组被路由到相同的服务器或VM。多路复用器214和216可以使用通用路由封装(NVGRE)以经由虚拟可扩展LAN(VXLAN)或网络虚拟化将分组封装到VM,诸如与DIP相关联的VM。
VM 228、230、240、242可以在第三层上,并且每个可以使用NAT功能304-310,NAT功能可以对从MUX 214、215接收的分组进行解封装,并且将它们传递到相应的VM。
图4描绘了到由诸如上面参考图2描述的软件负载均衡器等负载均衡器管理的数据中心/VM的另一入站数据流400。可以对目的地为VIP的分组进行负载均衡并且将其传送到VM的DIP。当配置VIP时,每个MUX 214、216可以通告到其第一跳路由器(例如,数据中心(DC)边界路由器406)的路由,以宣告其自身为该VIP的下一跳。如操作426所示,这使得路由器406基于ECMP在所有MUX节点214、216上分发经由网络或因特网302接收的目的地为VIP的分组。在接收到分组时,MUX 216可以基于一个或多个负载均衡算法来为连接选择DIP。然后,在操作428,MUX 216可以将设置所选择的DIP的所接收的分组作为目的地地址封装在分组的外部报头中。在一些情况下,MUX 216可以使用IP中IP(IP-in-IP)协议、VXLAN、NVGRE或其他类似协议来封装分组。然后,在操作430,MUX 216可以使用在MUX 216处的常规IP路由来传输封装的分组。在一些情况下,MUX 216和DIP(这里是DIP x 420)不需要在相同的VLAN上,它们可以仅在它们之间具有IP(第3层)连接。在操作432,位于与目标DIP(DIP3 420)相同的物理机器224上的主机代理或SLB代理220可以拦截该封装的分组,移除外部报头,并且重写目的地地址和端口。在一些方面,可以由SLB代理220、232编程的VFP 224、236可以拦截封装的分组。SLB代理220可以记录该NAT状态。然后,SLB代理220可以经由VM交换机226来将重写的分组发送到与DIP3 420相关联的VM。然后,在操作434,SLB主机代理220可以将重写的分组发送到VM。
当VM发送用于该连接的回复分组时,在操作436,它被SLB代理220拦截。在操作438,VFP 224、236(由SLB代理220编程)可以基于在操作432记录的状态执行反向NAT,并且重写源地址和端口。然后,在操作438,SLB代理220可以朝向连接的源将分组发送到路由器406。返回分组可以旁路MUX 216,从而节省数据分组处理资源和网络延迟。这种旁路返回路径上的负载均衡器的技术可以称为直接服务器返回(DSR)。在某些情况下,并非单个连接的所有分组都会在同一MUX 216处结束;但是,单个连接的所有分组必须被传递到同一DIP。下面的表1示出了通过上述流程寻址分组的示例。如本文所述,为简单起见而呈现IP,但是第4层转换(例如,映射VIP:PortA到DIP:PortB)可以作为负载均衡和NAT的一部分而发生。
Figure BDA0002058875220000091
表1
图5描绘了经由负载均衡器到一个或多个虚拟机的出站和入站业务的示例过程流程500。从高级别,可以在几个步骤或操作中描述出站业务。首先,主机插件或SLB代理220可以首先从SLBM 208请求SNAT端口。SLBM 208可以在MUX 214、216、218上配置SNAT端口,并且将端口配置器提供给SLB代理220。然后,SLB代理220可以将NAT规则编程到虚拟交换机/VFP中以进行路由/网络地址转换。现在将更具体地参考图5来更详细地描述出站处理流程。
在一些方面,SLBM 208可以为出站连接启用分布式NAT,使得即使对于需要源NAT(SNAT)的出站连接,也可以不需要通过MUX 214、216、218来路由输出分组。图500示出了如何处理出站SNAT连接的分组的示例。在操作502,与DIP(诸如DIP3 420)相关联的VM可以首先发送包含其DIP作为源地址、目的地端口和外部地址作为目的地地址的分组。VFP 224、236可以拦截分组并且识别该数据分组需要SNAT。在操作504,主机/SLB代理220可以将分组保持在队列中,并且向SLBM 208发送消息以请求用于连接的外部可路由的VIP和端口。在操作506,SLBM 208可以从可用端口的池中分配VIP和端口,并且向每个MUX 214、216、218配置该分配。然后,在操作508,SLBM 208可以将该分配发送到SLB代理220。SLBM 208可以使用该分配来重写分组,使得其源地址和端口现在包含VIP和指定端口。在操作510,SLBM 208可以将重写的分组直接发送到路由器406。来自外部目的地的返回分组的处理类似于入站连接。在操作512,返回分组由路由器406发送到MUX 214、216、218之一。(基于操作506中的映射)MUX 218已经知晓DIP3应当接收该分组,因此在操作514,它以DIP3作为目的地利用DIP3封装分组,并且将分组发送到主机244。SLB代理220拦截返回分组,执行反向转换,使得分组的目的地地址和端口现在是DIP3和目的地端口。然后,在操作516,SLB主机代理220可以将分组发送到与DIP3 420相关联的VM。下面的表2示出了通过上述流程寻址分组的示例。
Figure BDA0002058875220000101
表2
在一些方面,可以针对云服务/数据中心中的VM之间的出站业务共享因特网VIP。可以为每个DIP预分配一个或多个端口以确保最小保证的出站连接,而其余端口可以动态分配。在某些情况下,可以优化端口分配以最大化到不同目的地的并发连接。
图6示出了在负载均衡器后面的虚拟机之间的数据中心内或东到西(EW)业务的示例过程流程600。
当分组被引导到负载均衡的VIP端点时,它到达负载均衡器MUX。负载均衡器MUX负责将传入连接负载均衡到虚拟化数据中心IP地址(DIP)。因此,MUX拥有负载均衡决策,因此,寻址到虚拟化端点的所有数据分组必须通过MUX。结果,MUX成为带宽方面的网络阻塞点。这可以通过具有MUX的池来改善,其中每个MUX实例具有相似的状态。传入分组可以分发给这些MUX;然而,仍然希望不使每个分组通过MUX池,以节省MUX池处可用的分组处理带宽。对于始发和终止于数据中心内的VIP定向流,有机会旁路MUX。
在旁路MUX的情况下,MUX仍然可以拥有选择DIP端点以将VIP目的地分组负载均衡到其的决定。MUX可以将所选择的DIP端点传送到VIP定向分组的源。然后,源处的SDN交换机可以执行MUX将执行的变换(例如,分组寻址),并且将其分组直接引导到所选择的DIP端点的主机。对于所选择的DIP端点的主机处的SDN交换机,来自源SDN交换机的分组看起来与来自MUX的分组没有区别。因此,目的地SDN交换机处的处理可以照常进行,而不需要任何的实现改变。
因此,想要与VIP端点通话的源有效地旁路MUX,并且分组直接从源(PA)的提供者地址流到目的地的提供者地址(PAd)而不通过MUX。这减少了用于数据中心内业务的MUX上的带宽负载,并且释放了MUX以处理来自/指向因特网端点的业务。
在一些情况下,为了扩展到数据中心内业务的带宽需求,可以经由本文中称为快速路径或EW业务旁路的过程来将业务卸载到终端***或分布。对于EW业务,负载均衡器可以确定当该连接的第一数据分组到达时新连接应当进入哪个DIP。一旦做出关于连接的决定,它可以被持久化。因此,可以将DIP信息发送到源主机和目的地主机上的主机或SLB代理,以便它们可以直接通信。这使得分组被直接传送到托管一个或多个DIP VM的主机,并且旁路两个方向的MUX,从而实现由底层网络支持的全容量通信。路由的这种改变对源VM和目的VM都可以是透明的。
在一个示例中,由数据中心404提供的两个服务620和622可以分别被分配以虚拟地址VIP1和VIP2。这两个服务620和622使用上述用于负载均衡和SNAT的过程经由VIP1和VIP2彼此通信。在示例处理流程600中,用于连接的分组流可以由VM DIP1 418(属于服务1)发起到VIP2 622。在操作602,DIP1 418的源主机244可以使用VIP1在TCP SYN分组上执行SNAT,并且将其发送到VIP2。在操作604,可以将该分组传送到MUX 216,MUX 216将分组朝目的地DIP2 424转发。在操作606,当DIP2 424答复该分组时,该分组由目的地主机246使用VIP2进行SNAT,并且被发送到MUX 214。在该操作608,MUX 214使用其SNAT状态并且将该分组发送到DIP1 418。用于该连接的后续分组遵循相同的路径。
每个MUX 214、216可以配置有能够进行Fastpath的一组源和目的地子网。在操作610,一旦在VIP1 620与VIP2 622之间完全建立了连接(例如,TCP三向握手已经完成),MUX216就可以向VIP1 620发送重定向消息,以向它通知该连接被映射到DIP2 424。该重定向分组进入处理VIP1 620的MUX 214,VIP1 620查找其表以知道该端口被DIP1 418使用。然后,在操作612和614,MUX 214可以分别向DIP1 418和DIP2 424的主机244和246发送重定向消息。重定向消息可以由在vSwitch端口内运行的与DIP VM 418、424相对应的主机/SLB代理220、232/VFP 224、236拦截。VFP 224、236可以针对端口创建流状态,使得目的地为VIP 622的流中的其他分组由主机244的VFP 224直接发送到主机246以用于DIP 418。主机/SLB主机代理220、232各自负责配置规则,使得端口能够拦截来自MUX 214、216的重定向分组,并且创建旁路MUX 214、216所需要的流状态。
由VFP 224、236对旁路流完成的工作使得分组看起来与离开MUX 214、216之后的分组完全相同(外部分组被引导到与主机246相对应的PA地址和与DIP 424相对应的内部MAC)。因此,在与DIP VM 424相对应的vSwitch端口内运行的VFP 236处的处理与该分组到达旁路流的事实无关。
源主机244上的主机代理220可以拦截重定向分组,并且确定该连接应当直接发送到DIP2 424。类似地,目的地主机246上的主机代理232可以拦截重定向消息,并且确定该连接应当发送到DIP1 418。在操作616,一旦完成该交换,就直接在源主机244与目的地主机246之间直接交换用于该连接的任何未来分组。
图7示出了利用单个MUX 214建立EW业务旁路的两个VM DIP 418和424之间的示例通信交换或过程700。
过程700可以开始于在操作702处,VM DIP1 418从DIP1向VIP2发送SYN分组。VFP224变换分组以使得分组从VIP1寻址到VIP2(例如,它执行SNAT以将源DIP1变换为VIP1)。操作702可以不需要封装。SYN分组可以被路由通过MUX 214,MUX 214可以在操作704将分组封装为从DIP1、PA1到VIP2、PA2。MUX 214可以选择特殊的源IP地址,诸如MUX PA1,该地址可以与SLBM自身VIP相同。外部目的地IP可以是包含DIP2 424的主机的PA,诸如PA2。与主机246/DIP2 424相关联的VFP 236可以接收分组,并且在操作710,将分组重新封装为DIP1、PA1至DIP2、PALocal。在操作702或704之后/在某些情况下,与操作710的执行同时,MUX 214可以在操作706处发送标识L4处的流的5元组的通用路由封装(GRE)封装分组、或者帮助标识到与VM DIP1 418相关联的VFP 224的流或配置的通信信道的任何字段集。在一些情况下,操作706可以包括发送一些其他流标识符,例如,仅L3流,诸如ICMP,这些标识符与L4相比可以具有另一组标识符。在操作708,VFP 224可以以DIP2作为目的地为(VIP2,PA2,DIP1,PA1,TCP)创建流状态。在操作710之后,VM DIP2 424可以将在操作712从DIP2寻址到VIP1的SYNACK分组发送到VFP 236。操作712可能不需要封装。然后,在操作714,VFP 236可以发送寻址到VIP1的SYN ACK分组,该分组可以由MUX 214拦截。操作714还可以包括MUX 214通过封装将分组路由到DIP1(经由类似于操作702的SNAT过程),其中外部地址被选择作为与DIP1的主机相对应的PA的MUX特殊源IP地址,或者从VM DIP1 418的VIP2、PA2到DIP1、PA1。然后,在操作716,VM DIP1 418可以通过发送从DIP1寻址到VIP2的ACK数据分组来进行响应。在操作718,VFP 224可以拦截ACK数据分组,并且从VIP1重新传输寻址到DIP2-VIP2、PA2的分组。在操作720,VFP 236可以接收该分组并且将其重新寻址到DIP2。VM DIP2 424可以接收分组,在该分组上完全建立MUX旁路信道。
当DIP端点被实时迁移时,在底层网络上托管它的节点(例如,主机)的PA发生改变。例如,PAd改变为PAd1。先前旁路MUX以到达与DIP端点相对应的SDN交换机的所有流现在将到达与DIP相对应的先前主机/SDN交换机。
在实时迁移场景中,需要一种机制来向数据中心中的所有主机通知DIP工作负载的实时迁移。如果没有这样的机制,在租户工作负载将实时迁移的数据中心中使用EW优化是不可行的。这将对流经数据中心内的负载均衡器的业务吞吐量产生巨大的负面影响。
当前,负载均衡器MUX不保持其已经直接编程EW通信中涉及的两个(主机)SDN开关的流的状态。保持状态是非平凡的(non-trivial),主要是因为MUX不知道在MUX编程了两个SDN开关之后流将继续多长时间(例如,流可以持续数小时或在几秒内结束)。为了解决此限制(缺乏关于哪些流当前旁路MUX的任何中心知识),SDN控制器中的SLBM组件可以向数据中心中发生实时迁移的所有主机发送通知,而不管是否每个主机有涉及实时迁移VM的任何旁路的流程。这种技术虽然有效,但其缺点是,将为不包含当前与实时迁移VM通信的任何租户工作负载的主机生成很多通知。
下面描述对于在发生实时迁移时通知MUX以更新数据中心内流的问题的另一解决方案。
图8示出了可以实现用于向相关VM通知实时迁移以更新EW业务旁路数据流的过程的示例***800。***800可以包括两个主机244和246,每个主机分别提供虚拟机VM DIP1228和VM DIP2 240。每个主机244和246可以是数据中心的一部分,并且可以在负载均衡器或MUX(诸如MUX 214)之后。主机244可以与PA1相关联,而主机246可以与PA2和VIP2相关联。主机/VM DIP1 228可以与诸如VIP1等VIP相关联,而主机246/VM DIP2 240可以与VIP2相关联。
在一个示例中,VM 228可以具有要被发送到VM 240的一个或多个分组。在这种情况下,VM DIP1 228可以将分组寻址到VIP2,其中分组的源是DIP1。与主机244相关联的VFP224/VM交换机226可以对分组进行NAT,以使其来自VIP1。主机244可以将该修改的分组传送到MUX 214。MUX 214可以选择用于对其进行负载均衡的DIP端点,诸如DIP2。MUX 214可以另外修改内部分组上的MAC以对应于所选择的DIP。然后,MUX 214可以封装分组,选择特殊地址作为PA源PA1(也是VIP,SLBM自身VIP),并且选择所选择的DIP主机的PA作为目标P2。在接收到分组时,主机246的VFP 236/VM交换机238可以对分组执行另一NAT功能,并且将分组寻址到DIP2,以将分组传送到VM DIP2 240。
MUX 214可以促进为该通信路由创建MUX旁路,从而在主机244与主机246之间产生直接路由802,其中PA1、VIP1作为源并且PA2和VIP2作为目的地。在一些方面,可以根据过程600来执行建立旁路通信路由。这可以包括将重新路由信息发送到至少主机244/SLB代理220,并且在一些情况下,也发送到主机246/SLB代理232。MUX 214或其MUX 214是组件的负载均衡器可以建立将源标识信息和目的地标识信息相关联的旁路数据结构或表。源标识信息可以包括源主机和源VM信息,并且目的地标识信息可以包括目的地主机和目的地VM信息。该数据表可以在负载均衡器的所有MUX实例上复制,例如,使用提供跨节点的数据复制的分布式***平台(诸如Service Fabric)。图9示出了示例旁路数据结构900。
示例数据结构900可以包括链接到用于旁路的源信息904的目标或目的地信息902。源信息904还可以链接到给定目标与源之间的旁路是否有效的指示906。在一个示例中,该指示可以包括时间戳,例如指示旁路被例如源VM或目标VM之一使用或更新的最后时间。在一个示例中,目标/目的地和源标识信息中的每个可以包括与相应的DIP、VIP和PA相关联的标识符。在一些方面,DIP标识符可以包括媒体访问控制层(MAC)地址。在一些示例中,VIP信息可以包括租户网络标识符(TNI),诸如虚拟子网ID(VSID)。虚拟子网可以为同一虚拟子网或广播域中的VM实现第3层IP子网语义。VSID在数据中心内可以是唯一的,并且可以标识虚拟子网。
在数据结构900的一个示例中,第一散列表902由与仍然在使用的流的目标相对应的DIP MAC、VSID和提供者地址(PA,即底层地址)键入(key)。第一散列表902存储第二散列表904作为其值。第二散列表904也与例如与流源相对应的DIP MAC、VSID和提供者地址(PA)的组合类似地被键入。存储在该内部散列表906中的值是时间戳。在一个示例中,目标信息910可以链接到源信息918,源信息918可以链接到时间戳928。应当理解,数据结构900仅作为示例给出,使得数据结构900的其他组织指定本文中考虑了旁路数据流,包括使用不同的信息来标识源和目的地VM、主机设备和业务流。
在一个示例中,与时间戳相反,可以在内部散列表中保持整数TTL字段。在工作线程经过n秒之后,TTL字段可以均匀地减少n个单位。这样,不需要考虑跨多路复用池复制该信息时的时间漂移。然后,来自主机的更新可以包括原始TTL值,或者包括增加当前TTL的量。允许主机对更新的调步进行一些控制,例如与较长运行流相对应的更新可以承受连续更大的TTL,并且相应地增加来自主机的更新间隔。在某些情况下,可以实现在每个端口级别甚至每个主机级别从主机批量处理这种更新。这样,可以减少在MUX与主机之间交换的流保持活动消息的数目。
再次参考图8,主机(诸如具有活动旁路流的主机244)可以周期性地更新它仍然在使用该流的MUX 214(或MUX池中的任何其他MUX)。在发送更新分组时,主机244可以将目标DIP的MAC、VSID及其主机DIP PA、以及其自己的PA VSID和MAC传送到MUX 214。MUX 214可以使用标识目标的字段来查找相关的散列表902。在该内部散列表904中,MUX 214然后从与源相对应的字段中查找键并且更新时间戳906。
在一些情况下,MUX实例214内的周期性线程或进程可以使内部散列表中在可配置的时间量内没有心跳(例如,尚未更新)的条目到期或删除。
当在操作804发生例如VM DIP1 228和VM DIP2 240中的一个或两者到不同主机806的实时迁移时,MUX 214可以检查实时迁移的DIP MAC(例如,如VM DIP2 240所示)并且搜索以找到与该DIP MAC相对应的散列表902中的键。如果与DIPS 240相对应的DIP MAC存在于表中(例如,在第一散列表902中),并且仅与PA(例如,PA 3而不是先前的PA2)的实时迁移的DIP MAC不同,则MUX 214可以得出结论,即,DIP2 240是实时迁移。然后,MUX 214可以搜索内部散列表904的键。与目标DIP MAC、VSID和PA相关联的这些键标识具有以迁移DIP作为其目标的活动旁路流的主机。MUX 214可以更新这些条目或流以指示新主机的PA。在操作808和810,MUX 214可以向这些主机发送重定向消息以将它们在其流中的PA地址更新为DIP的新PA地址(在实时迁移之后)。在一些情况下,重定向消息可以使用因特网控制消息协议(ICMP)实现,其中诸如目的地PA、目的地MAC等附加字段包含在ICMP分组中的自定义字段中。
图10示出了用于通过两个虚拟机中的至少一个虚拟机的实时迁移来管理两个虚拟机之间的负载均衡器旁路的示例过程1000。过程1000可以由负载均衡器(诸如负载均衡器112)、软件负载均衡器(SLB)的一个或多个方面(诸如SLB管理器208、SLB代理220、232、VM交换机226、238和/或VFP 224、236和/或MUX 214、216、218和/或VM 228、230、240、242)执行。在一个方面,一个或多个MUX和/或负载均衡器112可以执行过程1000的大部分或全部操作。
如图所示,并且如本公开中使用的,虚线可以指示操作或组件是可选的,使得可以在没有所指示的操作或组件的情况下实现所描述的技术。
如图所示,过程1000可以开始于操作1002,其中可以在与源主机相关联的源虚拟机和与目的地主机相关联的目的地虚拟机之间建立负载均衡器旁路。在一些情况下,操作1002可以包括上述的一个或多个方面过程600、700和/或800。在一些情况下,操作1002可以是可选的,使得负载均衡器或MUX可以在不直接建立或配置旁路的情况下意识到旁路。例如,这可以在第一MUX建立旁路并随后脱机,并且另一MUX可以接管离线MUX的操作时发生。
在上述第一种情况下,MUX或负载均衡器可以将源虚拟机标识信息、源主机标识信息、目的地虚拟机标识信息和目的地主机标识信息与旁路数据结构中的旁路是否活动的指示相关联。在一些情况下,旁路数据结构可以采用上述数据结构900的形式。例如,旁路数据结构可以包括键入目的地虚拟机标识信息和目的地主机标识信息的第一散列表。第一散列表可以包含键入主机虚拟机标识信息和源主机标识信息的第二散列表。第二散列表可以包含该指示。该指示可以包括与旁路条目由源主机或目的地主机之一更新的最后时间相对应的时间戳。在一些实现中,MUX可以周期性地检查每个时间戳以确定过期的或未使用的旁路。这可以包括将时间戳与可配置的时间段阈值进行比较。如果时间戳太旧,使得最后使用或更新旁路超出时间阈值,则可以通过MUX删除旁路条目,例如,以节省MUX/负载均衡器用于保持旁路的存储器空间。
在其他情况下,表的数据结构可以采用其他形式,只要源和目的地标识信息与旁路是否有效的某种指示相关联。在上述第二种情况下,MUX可以继承或获取该数据结构,而无需主动创建或修改它,例如通过负载均衡器或负载均衡器管理器(例如,SLBM)。
接下来,在操作1006,负载均衡器或MUX可以确定源虚拟机或目的地虚拟机中的至少一个到第三主机的实时迁移已经完成。在一些方面,操作1006可以包括确定源主机标识信息或目的地主机标识信息已经改变而没有在源虚拟机标识信息或目的地虚拟机标识信息中的相应变化。如上面参考图8所描述的,这可以包括主机的PA的变化,而没有DIP MAC上的相应变化。
接下来,在操作1008,可以利用第三主机的标识信息来更新或修改旁路数据结构,以在实时迁移完成之后保持负载均衡器旁路。操作1008可以包括搜索旁路数据结构或表并且更新与迁移的DIP相关联的迁移的主机的迁移前PA的任何实例。
在一些方面,过程1000还可以包括操作1010,其中可以将已更新的旁路数据结构的至少一部分传送到源主机或目的地主机(例如,与没有迁移的DIP相关联的主机)中的至少一个和第三主机。在一些情况下,可以将已更新的旁路表的至少一部分传送到迁移前源和目的地主机。
在一些方面,过程1000可以启用或包括根据已更新的旁路数据结构来将至少一个数据分组从第一源虚拟机传输到目的地虚拟机,例如在至少一个源或目的地主机的实时迁移已经完成之后。
如下所述,上述技术可以在一个或多个计算设备或环境上实现。图11描绘了示例通用计算环境,例如,其可以包含负载均衡器112、SLBM 208、网络控制器202、SLB代理220、232、NC代理234、VM交换机226、238、VFP 224、236、MUX 214、216、218或VM 228、230、240、242的一个或多个方面,其中可以顺序本文中描述的一些技术。计算***环境1102仅是合适的计算环境的一个示例,并且不旨在对本公开的主题的使用范围或功能提出任何限制。计算环境1102也不应当被解释为具有与示例操作环境1102中示出的任一组件或其组合相关的任何依赖性或要求。在一些实施例中,各种所描绘的计算元件可以包括被配置为实例化本公开的特定方面的电路。例如,本公开中使用的术语电路可以包括被配置为通过固件或开关来执行功能的专用硬件组件。在其他示例实施例中,术语电路可以包括通过包含可操作以执行功能的逻辑的软件指令来配置的通用处理单元、存储器等。在电路包括硬件和软件的组合的示例实施例中,实现者可以编写包含逻辑的源代码,并且源代码可以编译成可以由通用处理单元处理的机器可读代码。由于本领域技术人员可以理解,现有技术已经发展到硬件、软件或硬件/软件的组合之间几乎没有差异的程度,因此选择硬件与软件来实现特定功能是一种留给实施者的设计选择。更具体地,本领域技术人员可以理解,软件过程可以转换为等效的硬件结构,并且硬件结构本身可以转换为等效的软件过程。因此,硬件实现与软件实现的选择是设计选择之一,并且留给实现者。
计算机1102(其可以包括移动设备或智能电话、平板电脑、膝上型电脑、台式计算机或联网设备的集合、云计算资源等中的任何一种)通常包括各种计算机可读介质。计算机可读介质可以是可以由计算机1102访问的任何可用介质,并且包括易失性和非易失性介质、可移动和不可移动介质。***存储器1122包括易失性和/或非易失性存储器形式的计算机存储介质,诸如只读存储器(ROM)1123和随机存取存储器(RAM)1160。包含有助于在计算机1102内的元件之间传送信息的基本例程(例如在启动期间)的基本输入/输出***1124(BIOS)通常存储在ROM 1123中。RAM 1160通常包含立即可访问和/或当前正在由处理单元1159操作的数据和/或程序模块。作为示例而非限制,图11示出了操作***1125、应用程序1126、包括负载均衡器旁路应用1165的其他程序模块1127、和程序数据1128。
计算机1102还可以包括其他可移动/不可移动的易失性/非易失性计算机存储介质。仅作为示例,图11示出了从不可移动的非易失性磁介质读取或向其写入的硬盘驱动器1138、从可移动的非易失性磁盘1154读取或向其写入的磁盘驱动器1139、以及从诸如CDROM或其他光学介质等可移动的非易失性光盘1153读取或向其写入的光盘驱动器1104。可以在示例操作环境中使用的其他可移动/不可移动的易失性/非易失性计算机存储介质包括但不限于磁带盒、闪存卡、数字通用盘、数字录像带、固态RAM、固态ROM等。硬盘驱动器1138通常通过诸如接口1134等不可移动存储器接口连接到***总线1121,并且磁盘驱动器1139和光盘驱动器1104通常通过诸如接口1135或1136等可移动存储器接口连接到***总线1121。
上面讨论并且在图11中示出的驱动器及其相关联的计算机存储介质为计算机1102提供计算机可读指令、数据结构、程序模块和其他数据的存储。例如,在图11中,硬盘驱动器1138被示出为存储操作***1158、应用程序1157、其他程序模块1156和程序数据1155。注意,这些组件可以与操作***1125、应用程序1126、其他程序模块1127和程序数据1128相同或不同。操作***1158、应用程序1157、其他程序模块1156和程序数据1155在这里被给予不同的数字以说明它们至少是不同的副本。用户可以通过诸如键盘1151和通常称为鼠标、轨迹球或触摸板的指示设备1152等输入设备来向计算机1102中输入命令和信息。其他输入设备(未示出)可以包括麦克风、操纵杆、游戏手柄、圆盘式卫星天线、扫描仪、视网膜扫描器等。这些和其他输入设备通常通过耦合到***总线1121的用户输入接口1136连接到处理单元1159,但是可以通过诸如并行端口、游戏端口或通用串行总线(USB)等其他接口和总线结构连接。显示器1142或其他类型的显示设备也经由诸如视频接口1132等接口连接到***总线1121。除了显示器之外,计算机还可以包括可以通过输出***接口1133连接的其他***输出设备,诸如扬声器1144和打印机1143。
计算机1102可以使用到一个或多个远程计算机(诸如远程计算机1146)的逻辑连接在联网环境中操作。远程计算机1146可以是个人计算机、服务器、路由器、网络PC、对等设备或其他公共网络节点,并且通常包括上面关于计算机1102描述的很多或所有元件,尽管图11中仅示出了存储器存储设备1147。图11中描绘的逻辑连接包括局域网(LAN)1145和广域网(WAN)1149,但是也可以包括其他网络。这种网络环境在办公室、企业范围的计算机网络、内联网、因特网和云计算资源中很常见。
当在LAN网络环境中使用时,计算机1102通过网络接口或适配器1137连接到LAN1145。当在WAN网络环境中使用时,计算机1102通常包括调制解调器1105或用于通过诸如因特网等WAN 1149建立通信的其他装置。可以是内置的或外置的调制解调器1105可以经由用户输入接口1136或其他适当的机制连接到***总线1121。在联网环境中,相对于计算机1102或其部分描述的程序模块可以存储在远程存储器存储设备中。作为示例而非限制,图11将远程应用程序1148示出为驻留在存储器设备1147上。可以理解,所示出的网络连接是示例的,并且可以使用在计算机之间建立通信链路的其他手段。
在一些方面,其他程序1127可以包括负载均衡器旁路应用或子例程1165,其包括如上所述的功能的。在一些情况下,负载均衡器旁路应用1165可以执行过程600、700、800和/或1000的一些或所有操作,并且可以利用数据结构900。在一些方面,计算设备1102还可以与诸如VM 228、230等一个或多个VM通信。
前面部分中描述的每个过程、方法和算法可以在由一个或多个计算机或计算机处理器执行的代码模块中实施,并且完全或部分地通过这样的代码模块来自动化。这些代码模块可以存储在任何类型的非暂态计算机可读介质或计算机存储设备上,诸如硬盘驱动器、固态存储器、光盘等。过程和算法可以部分或全部地在专用电路中实现。所公开的过程和过程步骤的结果可以持久地或以其他方式存储在任何类型的非暂态计算机存储装置中,诸如例如易失性或非易失性存储装置。上述各种特征和过程可以彼此独立地使用,或者可以以各种方式组合。所有可能的组合和子组合都旨在落入本公开的范围内。另外,在一些实现中可以省略某些方法或过程框。本文中描述的方法和过程也不限于任何特定顺序,并且与其相关的块或状态可以以其他适当的顺序执行。例如,所描述的块或状态可以以不同于具体公开的顺序的顺序来被执行,或者多个块或状态可以在单个块或状态中组合。示例块或状态可以以串行、并行或以某种其他方式执行。可以向所公开的示例实施例添加块或状态或从其中移除块或状态。本文中描述的示例***和组件可以与所描述的不同地配置。例如,与所公开的示例实施例相比,可以添加、移除或重新布置元素。
还应当理解,各种项目被示出为在使用的同时存储在存储器中或存储在存储装置上,并且这些项目或其部分可以在存储器与其他存储设备之间传送以用于存储器管理和数据完整性的目的。或者,在其他实施例中,一些或所有软件模块和/或***可以在另一设备上的存储器中执行,并且经由计算机间通信与所示的计算***通信。此外,在一些实施例中,***和/或模块中的一些或全部可以以其他方式实现或提供,诸如至少部分以固件和/或硬件,包括但不限于一个或多个专用集成电路(ASIC)、标准集成电路、控制器(例如,通过执行适当的指令,并且包括微控制器和/或嵌入式控制器)、现场可编程门阵列(FPGA)、复杂可编程逻辑器件(CPLD)等。一些或所有模块、***和数据结构也可以存储在要由适当的驱动器或经由适当的连接来读取的计算机可读介质上(例如,作为软件指令或结构化数据),诸如硬盘、存储器、网络或便携式媒体物品。出于本说明书和权利要求的目的,短语“计算机可读存储介质”及其变体不包括波、信号和/或其他暂态和/或无形通信介质。***、模块和数据结构还可以作为所生成的数据信号(例如,作为载波或其他模拟或数字传播信号的一部分)在各种计算机可读传输介质上传输,包括基于无线和基于有线/电缆的介质,并且可以采用各种形式(例如,作为单个或多路复用模拟信号的一部分,或者作为多个离散数字分组或帧)。在其他实施例中,这种计算机程序产品也可以采用其他形式。因此,本公开可以用其他计算机***配置来实践。
除非另有明确说明或者在所使用的上下文中以其他方式理解,否则本文中使用的诸如“可以(can)”、“可以(could)”、“可以(might)”、“可以(may)”、“例如(e.g.)”等条件语言通常旨在表达某些实施例包括而其他实施例不包括某些特征、元素和/或步骤。因此,这种条件语言通常不旨在暗示一个或多个实施例以任何方式需要特征、元素和/或步骤,也不旨在暗示一个或多个实施例必须包括用于决定(无论是否有作者输入或提示)这些特征、元素和/或步骤是否被包括在任何特定实施例中或将在任何特定实施例中执行的逻辑。术语“包括(comprising)”、“包括(including)”、“具有(having)”等是同义的并且以开放式方式包含性地使用,并且不排除其他元素、特征、动作、操作等。此外,术语“或”以其包含性意义(而不是以其排他性的意义)使用,因此当使用时,例如,为了连接元素列表,术语“或”表示列表中的一个、一些或所有元素。
虽然已经描述了某些示例实施例,但是这些实施例仅作为示例呈现,并且不旨在限制本公开的范围。因此,前面的描述中的任何内容都不旨在暗示任何特定的特征、特性、步骤、模块或块是必需的或必不可少的。实际上,本文中描述的新颖方法和***可以以各种其他形式来实施;此外,在不脱离本公开的精神的情况下,可以对本文中描述的方法和***的形式进行各种省略、替换和改变。所附权利要求及其等同物旨在涵盖落入某些公开内容的范围和精神内的这样的形式或修改。

Claims (19)

1.一种数据中心***,包括:
源主机设备,目的地主机设备和第三主机设备;
多个虚拟机,其中所述多个虚拟机中的源虚拟机由所述源主机设备提供,并且所述多个虚拟机中的目的地虚拟机由所述目的地主机设备提供;以及
负载均衡器,所述负载均衡器与所述源主机设备、所述目的地主机设备、所述第三主机设备和所述多个虚拟机通信地耦合,其中所述负载均衡器被配置为:
在所述源虚拟机和所述目的地虚拟机之间建立负载均衡器旁路;
将源虚拟机标识信息、源主机标识信息、目的地虚拟机标识信息和目的地主机标识信息与旁路数据结构中的指示相关联,其中所述指示对所述负载均衡器旁路是否有效进行指示;
确定所述源虚拟机或所述目的地虚拟机中的至少一个到所述第三主机设备的实时迁移已经完成;以及
利用所述第三主机设备的标识信息来更新所述旁路数据结构,以在所述实时迁移完成之后保持所述负载均衡器旁路。
2.根据权利要求1所述的数据中心***,其中所述负载均衡器还被配置为:
将已更新的所述旁路数据结构传送到所述源主机设备、所述目的地主机设备或所述第三主机设备中的至少一项。
3.根据权利要求1所述的数据中心***,其中所述源虚拟机被配置为:
根据已更新的所述旁路数据结构,将至少一个数据分组传输到所述目的地虚拟机,其中所述源虚拟机或所述目的地虚拟机中的至少一个与所述第三主机设备相关联。
4.根据权利要求1所述的数据中心***,其中确定所述源虚拟机或所述目的地虚拟机中的至少一个到所述第三主机设备的实时迁移已经完成还包括:
确定所述源主机标识信息或所述目的地主机标识信息已经改变而没有所述源虚拟机标识信息或所述目的地虚拟机标识信息的对应变化。
5.一种用于通过两个虚拟机中的至少一个虚拟机的实时迁移来管理所述两个虚拟机之间的负载均衡器旁路的方法,所述方法包括:
在与源主机相关联的源虚拟机和与目的地主机相关联的目的地虚拟机之间建立负载均衡器旁路;
将源虚拟机标识信息、源主机标识信息、目的地虚拟机标识信息和目的地主机标识信息与旁路数据结构中的指示相关联,其中所述指示对所述负载均衡器旁路是否有效进行指示;
确定所述源虚拟机或所述目的地虚拟机中的至少一个到第三主机的实时迁移已经完成;以及
利用所述第三主机的标识信息来更新所述旁路数据结构,以在所述实时迁移完成之后保持所述负载均衡器旁路。
6.根据权利要求5所述的方法,还包括:
将已更新的所述旁路数据结构传送到所述源主机、所述目的地主机或所述第三主机中的至少一项。
7.根据权利要求5所述的方法,还包括:
根据已更新的所述旁路数据结构,将至少一个数据分组从所述源虚拟机传输到所述目的地虚拟机,其中所述源虚拟机或所述目的地虚拟机中的至少一个与所述第三主机相关联。
8.根据权利要求5所述的方法,其中确定所述源虚拟机或所述目的地虚拟机中的至少一个虚拟机到所述第三主机的实时迁移已经完成还包括:
确定所述源主机标识信息或所述目的地主机标识信息已经改变而没有所述源虚拟机标识信息或所述目的地虚拟机标识信息的对应变化。
9.根据权利要求5所述的方法,其中所述旁路数据结构包括键入所述目的地虚拟机标识信息和所述目的地主机标识信息的第一散列表,其中所述第一散列表包含键入所述主机虚拟机标识信息和所述源主机标识信息的第二散列表,并且其中所述第二散列表包含所述指示。
10.根据权利要求5所述的方法,其中所述源虚拟机标识信息、所述源主机标识信息、所述目的地虚拟机标识信息、所述目的地主机标识信息和所述指示包括所述旁路数据结构中的多个旁路条目中的第一旁路条目,并且其中所述指示包括与所述第一旁路条目由所述源主机或所述目的地主机中的一个主机更新的最后时间相对应的时间戳。
11.根据权利要求10所述的方法,还包括:
将所述时间戳与阈值时间段进行比较;以及
基于所述比较删除所述第一旁路条目。
12.一种计算***,包括:
源主机;
目的地主机;以及
用于通过两个虚拟机中的至少一个虚拟机的实时迁移来管理所述两个虚拟机之间的负载均衡器旁路的计算设备,所述计算设备被配置为:
在与所述源主机相关联的源虚拟机和与所述目的地主机相关联的目的地虚拟机之间建立所述负载均衡器旁路;
将源虚拟机标识信息、源主机标识信息、目的地虚拟机标识信息和目的地主机标识信息与旁路数据结构中的指示相关联,其中所述指示对所述负载均衡器旁路是否有效进行指示;
确定所述源虚拟机或所述目的地虚拟机中的至少一个到第三主机的实时迁移已经完成;以及
利用所述第三主机的标识信息来更新所述旁路数据结构,以在所述实时迁移完成之后保持所述负载均衡器旁路。
13.根据权利要求12所述的计算***,其中所述计算设备还至少被配置为:
将已更新的所述旁路数据结构传送到所述源主机、所述目的地主机或所述第三主机中的至少一项。
14.根据权利要求12所述的计算***,其中所述计算设备还至少被配置为:
根据已更新的所述旁路数据结构,将至少一个数据分组从所述源虚拟机传输到所述目的地虚拟机,其中所述源虚拟机或所述目的地虚拟机中的至少一个与所述第三主机相关联。
15.根据权利要求12所述的计算***,其中至少被配置为确定所述源虚拟机或所述目的地虚拟机中的至少一个到所述第三主机的实时迁移已经完成的计算设备还包括至少被配置为执行以下操作的所述至少一个计算设备:
确定所述源主机标识信息或所述目的地主机标识信息已经改变而没有所述源虚拟机标识信息或所述目的地虚拟机标识信息的对应变化。
16.根据权利要求12所述的计算***,其中所述旁路数据结构包括键入所述目的地虚拟机标识信息和所述目的地主机标识信息的第一散列表,其中所述第一散列表包含键入所述主机虚拟机标识信息和所述源主机标识信息的第二散列表,并且其中所述第二散列表包含所述指示。
17.根据权利要求12所述的计算***,其中所述源虚拟机标识信息、所述源主机标识信息、所述目的地虚拟机标识信息、所述目的地主机标识和所述指示包括所述旁路数据结构中的多个旁路条目中的第一旁路条目,并且其中所述指示包括与所述第一旁路条目由所述源主机或所述目的地主机中的一个主机更新的最后时间相对应的时间戳。
18.根据权利要求17所述的计算***,其中所述至少一个计算设备还至少被配置为:
将所述时间戳与阈值时间段进行比较;以及
基于所述比较删除所述第一旁路条目。
19.根据权利要求12所述的计算***,其中所述计算设备包括负载均衡器、负载均衡管理器或多路复用器中的至少一项。
CN201780070413.9A 2016-11-15 2017-11-08 经由业务旁路进行的负载均衡虚拟机的实时迁移 Active CN109937401B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/352,512 US10320895B2 (en) 2016-11-15 2016-11-15 Live migration of load balanced virtual machines via traffic bypass
US15/352,512 2016-11-15
PCT/US2017/060483 WO2018093616A1 (en) 2016-11-15 2017-11-08 Live migration of load balanced virtual machines via traffic bypass

Publications (2)

Publication Number Publication Date
CN109937401A CN109937401A (zh) 2019-06-25
CN109937401B true CN109937401B (zh) 2023-07-11

Family

ID=60452773

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201780070413.9A Active CN109937401B (zh) 2016-11-15 2017-11-08 经由业务旁路进行的负载均衡虚拟机的实时迁移

Country Status (4)

Country Link
US (1) US10320895B2 (zh)
EP (1) EP3542268A1 (zh)
CN (1) CN109937401B (zh)
WO (1) WO2018093616A1 (zh)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105337952B (zh) * 2014-08-14 2018-07-20 新华三技术有限公司 用于抑制主机频繁迁移的方法和装置
US10356223B1 (en) * 2016-03-17 2019-07-16 Amazon Technologies, Inc. Connection migration for Internet of Things (IoT) devices
US10552195B2 (en) * 2017-12-08 2020-02-04 Vmware, Inc. Migration of virtual infrastructures
US11070475B2 (en) * 2018-12-13 2021-07-20 Google Llc Transparent migration of virtual network functions
WO2020121317A1 (en) * 2018-12-15 2020-06-18 Telefonaktiebolaget Lm Ericsson (Publ) Efficient network address translation (nat) in cloud networks
US11102114B2 (en) 2018-12-28 2021-08-24 Alibaba Group Holding Limited Method, apparatus, and computer-readable storage medium for network optimization for accessing cloud service from on-premises network
WO2020202169A1 (en) * 2019-04-04 2020-10-08 Telefonaktiebolaget Lm Ericsson (Publ) Service handling in software defined networking based container orchestration systems
US11520612B2 (en) 2019-11-13 2022-12-06 International Business Machines Corporation Virtual machine migration detection by a hosted operating system
US11436043B2 (en) 2019-11-13 2022-09-06 International Business Machines Corporation Operating system code patching during live migration
US11102100B2 (en) * 2019-11-19 2021-08-24 Vmware, Inc. Optimized and scalable method of detecting dead internet key exchange (IKE) peers
CN111679885B (zh) * 2020-05-29 2023-10-13 泰康保险集团股份有限公司 确定虚拟机漂移方法、装置、介质及电子设备
CN112286539B (zh) * 2020-10-29 2024-05-21 上海掌门科技有限公司 应用会员共享方法和设备
CN113301143B (zh) * 2021-05-21 2022-07-12 河南工学院 一种基于稳定匹配的sdn分布式控制平面负载均衡方法
CN113709220B (zh) * 2021-08-16 2024-03-22 华云数据控股集团有限公司 虚拟负载均衡器的高可用实现方法、***及电子设备
CN114205360B (zh) * 2021-12-08 2024-04-16 京东科技信息技术有限公司 数据传输方法、装置及***
US11843536B1 (en) 2023-01-18 2023-12-12 Bank Of America Corporation Systems, methods, and apparatuses for determining data routing in an electronic environment

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101351784A (zh) * 2005-12-30 2009-01-21 阿西式·A·潘迪亚 运行时自适应搜索处理器
CN101924693A (zh) * 2009-04-01 2010-12-22 威睿公司 用于在虚拟机间迁移进程的方法和***
CN105208048A (zh) * 2014-05-30 2015-12-30 株式会社日立制作所 全局迁移管理器、网关、虚拟机迁移***及其方法

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001081249A1 (en) * 2000-04-21 2001-11-01 Watervisions International, Inc. Formation of composite materials with expandable matter
US8909946B2 (en) * 2005-11-15 2014-12-09 Microsoft Corporation Efficient power management of a system with virtual machines
US8112513B2 (en) * 2005-11-30 2012-02-07 Microsoft Corporation Multi-user display proxy server
JP5391601B2 (ja) * 2008-07-18 2014-01-15 富士通株式会社 資源転送システム、資源転送方法、情報処理装置及びコンピュータプログラム
US8190769B1 (en) 2008-12-30 2012-05-29 Juniper Networks, Inc. Methods and apparatus for provisioning at a network device in response to a virtual resource migration notification
US8416692B2 (en) 2009-05-28 2013-04-09 Microsoft Corporation Load balancing across layer-2 domains
CN101593133B (zh) * 2009-06-29 2012-07-04 北京航空航天大学 虚拟机资源负载均衡方法及装置
US8327060B2 (en) 2009-11-30 2012-12-04 Red Hat Israel, Ltd. Mechanism for live migration of virtual machines with memory optimizations
JP5190084B2 (ja) 2010-03-30 2013-04-24 株式会社日立製作所 仮想マシンのマイグレーション方法およびシステム
US9141625B1 (en) 2010-06-22 2015-09-22 F5 Networks, Inc. Methods for preserving flow state during virtual machine migration and devices thereof
US8819678B2 (en) 2010-12-15 2014-08-26 Red Hat Israel, Ltd. Live migration of a guest from a source hypervisor to a target hypervisor
US9104460B2 (en) 2011-05-31 2015-08-11 Red Hat, Inc. Inter-cloud live migration of virtualization systems
US9424144B2 (en) 2011-07-27 2016-08-23 Microsoft Technology Licensing, Llc Virtual machine migration to minimize packet loss in virtualized network
US8935457B2 (en) * 2011-07-29 2015-01-13 International Business Machines Corporation Network filtering in a virtualized environment
US9152448B2 (en) 2012-05-11 2015-10-06 Vmware, Inc. Performance of load balancing modules with migration awareness
US9246998B2 (en) * 2012-10-16 2016-01-26 Microsoft Technology Licensing, Llc Load balancer bypass
US9215129B2 (en) * 2013-04-11 2015-12-15 International Business Machines Corporation Automatically constructing protection scope in a virtual infrastructure
EP3117312A1 (en) 2014-03-10 2017-01-18 Nokia Solutions and Networks Oy Notification about virtual machine live migration to vnf manager
US10013276B2 (en) 2014-06-20 2018-07-03 Google Llc System and method for live migration of a virtualized networking stack
US10481933B2 (en) 2014-08-22 2019-11-19 Nicira, Inc. Enabling virtual machines access to switches configured by different management entities
CN104270416B (zh) * 2014-09-12 2018-03-13 杭州华为数字技术有限公司 负载均衡控制方法及管理节点

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101351784A (zh) * 2005-12-30 2009-01-21 阿西式·A·潘迪亚 运行时自适应搜索处理器
CN101924693A (zh) * 2009-04-01 2010-12-22 威睿公司 用于在虚拟机间迁移进程的方法和***
CN105208048A (zh) * 2014-05-30 2015-12-30 株式会社日立制作所 全局迁移管理器、网关、虚拟机迁移***及其方法

Also Published As

Publication number Publication date
US20180139272A1 (en) 2018-05-17
WO2018093616A1 (en) 2018-05-24
EP3542268A1 (en) 2019-09-25
CN109937401A (zh) 2019-06-25
US10320895B2 (en) 2019-06-11

Similar Documents

Publication Publication Date Title
CN109937401B (zh) 经由业务旁路进行的负载均衡虚拟机的实时迁移
US11283707B2 (en) Segment routing with fast reroute for container networking
US11695695B2 (en) Logical L3 daemon
US20210258254A1 (en) Route advertisement by managed gateways
US20210336997A1 (en) Method and system for virtual machine aware policy management
EP3984181B1 (en) L3 underlay routing in a cloud environment using hybrid distributed logical router
US9531676B2 (en) Proxy methods for suppressing broadcast traffic in a network
US8369333B2 (en) Method and apparatus for transparent cloud computing with a virtualized network infrastructure
US20180139101A1 (en) Flow sate transfer for live migration of virtual machine
US9203753B2 (en) Traffic optimization using network address and port translation in a computer cluster
US11895030B2 (en) Scalable overlay multicast routing
US11936612B2 (en) Address resolution handling at logical distributed routers
US11516125B2 (en) Handling packets travelling towards logical service routers (SRs) for active-active stateful service insertion

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