本申请是2014年6月20日提交的第14/310,492号美国专利申请的继续申请,在此通过引用将其公开内容并入。
背景技术:
动态迁移(Live migration)是将正在运行的虚拟机从一个主机移动到另一主机的行为,其保留虚拟设备连接性、网络连接和虚拟机健康状态报告。迁移期间,性能可能受到,例如,为复制内存而暂停虚拟机的影响,或受到与虚拟机的新主机建立连接的影响。
技术实现要素:
本公开的一方面提供一种由虚拟化网络设备辅助动态迁移的方法,该方法包含:由虚拟化网络设备向源主机上的迁移访客发送分组,该分组将由源主机转发到目标主机;经源主机接收来自目标主机上迁移访客的分组;由虚拟化网络设备确定是否完成从源主机到目标主机的迁移访客的迁移;以及当确定迁移完成时,直接从虚拟化网络设备向目标主机上的迁移访客发送分组。确定是否完成迁移访客的迁移可以包括在虚拟化网络设备处直接从目标主机上的访客接收一个或多个分组,并且基于接收到的一个或多个分组,识别到迁移完成。
本公开的另一方面提供一种系统,包含源主机、在源主机上运行的迁移访客、与源主机通信的目标主机、以及与源主机上的迁移访客通信的其它虚拟化网络设备。源主机被配置为将从其它网络设备接收的流量转发到目标主机,并且将从目标主机接收的流量转发到其它网络设备。目标主机被配置为当完成迁移访客的迁移时直接向其它网络设备发送分组。其它网络设备被配置为确定何时从目标主机直接接收到分组,并且作为响应,直接向目标主机上的迁移访客发送分组。该系统可以进一步包括网络控制器,其被配置为向其它虚拟化网络设备提供用于与目标主机上的迁移访客直接通信的令牌。一些示例中,在迁移开始前,迁移访客被通知迁移,并且响应于该通知,迁移访客可以被配置为改变它的状态。例如,迁移访客可以将其自身放置在关闭现有连接并且拒绝将来处理的请求的模式。作为另一示例,迁移访客可以与另一系统通信,该通信导致在迁移期间该另一系统将未来处理的请求指向网络上的其它资源。
本公开的又一方面提供一种方法,该方法包含在源主机的迁移访客处接收迁移访客将被从源主机迁移到目标主机的指示。响应于接收到指示,迁移访客采取预定行动。进一步,迁移访客被从源转移到目标。源主机将从源主机上迁移访客的其它网络设备接收的流量转发到目标主机,并且还将从代表迁移访客的目标主机接收的流量转发到其它网络设备。
附图说明
图1是根据本公开的各方面的示例系统。
图2是根据本公开的各方面的图1的系统的组件框图。
图3是根据本公开的各方面的另一示例系统。
图4是根据本公开的各方面的图3的系统的组件框图。
图5是根据本公开的各方面的示例方法的流程图。
图6是根据本公开的各方面的另一示例方法的流程图。
具体实施方式
概述
本公开提供了一种用于虚拟化网络堆栈的动态迁移的系统和方法。
动态迁移的发生并不中断在第一虚拟化或非虚拟化网络计算设备和迁移中的虚拟网络堆栈之间的网络连接。第一虚拟化或非虚拟化网络计算设备可以是虚拟机、交换机、主机或任何其它网络设备。虚拟网络堆栈可以是虚拟机、linux容器或任意其它类型的虚拟网络堆栈。以下示例中,第一虚拟化或非虚拟化网络计算设备被称为第一设备,并且迁移中的虚拟网络堆栈被称为虚拟机,但应当理解这些示例不是限制。并且,应当理解这些仅是示例,并且所述构思可被应用于各种场景。例如,多个第一设备可以使用下述技术与迁移中的虚拟机通信。
第一设备与驻留在源主机上的虚拟机通信。迁移期间,第一设备继续与源主机上的虚拟机通信。完成迁移之前,源虚拟机和目标虚拟机执行代理流量的转发(如,双向或单向转发)。例如,源虚拟机代理来自第一设备的所有传入流量并且将其转发给目标虚拟机。目标虚拟机被配置为接受代理的传入流量,并且还代理经源虚拟机的所有传出流量。这样的双向转发可以从虚拟机从源向目标移动的时刻持续到网络上受影响的节点被重编程。集中式虚拟网络编程控制器告知第一设备虚拟机已迁移到目标主机,从而第一设备可以与目标主机上的虚拟机重新开始通信。而且,控制器还可以告知其余网络这一变化。
根据一示例,作为对“代理源处的所有流量并且执行双向转发”的替换或附加,与控制器和目标主机通信的“其它”虚拟机(VM)辅助无缝迁移。例如,目标VM主机联络控制器以订阅网络更新。控制器向其它VM提供用于与目标主机上的VM直接通信的令牌。其它VM、源主机和目标主机可以从虚拟机被向目标主机转移的时刻起执行三角路由,直到,例如网络被更新为止。例如,其它VM向源VM主机发送流量,该流量被转发到目标VM主机,直到其它VM从目标VM主机接收到传入的分组。此时,使用从控制器接收到的令牌认证并指明传出路径,其它VM直接向目标主机上的VM发送分组。作为另一示例,当从未被识别的发送器接收到分组时,其它VM主机质询控制器,从而其它VM主机可以切换为直接向目标VM发送分组。
为了在以上示例的任一个中支持从源主机到目标主机的平滑变换,一个或多个规则可被安装在诸如源和/或“其它”VM主机的网络设备上。例如,规则可以由控制器安装。规则可以针对迁移的特定阶段,诸如限电(brownout)(如,当迁移目标正开启并且虚拟机状态正从源主机转移到目标主机时)、断电(如,为VM在目标上重新开始做准备,当暂停虚拟机因而其余VM状态可以从源移动到目标时)、断电后(如,当完成迁移并且目标负责所有处理时)和取消(如,所有迁移相关的设定被移除)。
限电期间,虚拟机驻留在源主机上。迁移源可以接收并向任意其它虚拟机(VM)发送流量。并且,任意其它VM可以从迁移源接收流量;任意其它VM将只向迁移源发送流量。控制器还将改变迁移源的转发表并且在用于转发流量的迁移源上安装迁移表。源主机和目标主机二者都具有辅助网络重编程的主机代理进程,其在本地运行或作为虚拟机管理器进程的部分。使能迁移源的主机代理从在本地转发流量切换为向迁移目标转发。
断电期间,需要从源迁移到目标的任何网络状态被迁移(如,有状态的防火墙状态)。进行切换时只涉及迁移源的主机代理。控制器无需做任何事。尽管一些实施方案中,可以在断电时段开始时执行切换,但在其它实施方案中,直到断电后才转发流量以防在断电前或断电期间取消迁移。
断电后期间,控制器提供指向迁移目标的路线。并且,来自迁移源的流量仍被转发到迁移目标。例如,源主机和目标主机可以执行双向转发、单向转发或三角路由。因而,除了迁移转发流,迁移源上的多数流将是未安装的。而且,在三角路由的情况中,来自迁移目标的响应将被直接发送到第一设备,第一设备之后可以与目标主机上的虚拟机直接通信,而不是经源主机转发流量。
当取消迁移时发生取消。例如,限电或断电期间,目标主机可能崩溃,或可能发生某些其它事件,其导致迁移的取消。取消期间,控制器移除为迁移设立的所有流。例如,使能第一设备要么从源主机要么从目标主机接收分组的第一设备上的规则将被重编程以只支持与源相应的规则。目标主机上的任意网络编程被移除并且源主机上的任意转发相关的编程被移除。
根据一些示例,可以通过在全部虚拟机状态已被转移前在目标处开始运行来减少断电的持续时间。例如,在限电阶段期间,虚拟机状态可以被预复制,其后跟着断电,在断电时虚拟机任务的运行被转移到目标主机并且其余状态可以或不可以转移。而且,断电之后复制其余状态时可能存在复制后限电阶段。
本公开的一方面提供使访客VM面临即将发生的动态迁移,从而使能访客VM采取行动。一种行动可以是在访客VM迁移前改变它们的健康状态。例如,访客VM可以将其自身放置在“无用(lame duck)”状态,其中它向其它系统通信“它此时不接受新任务和连接但完成已进行的任何任务”。在这方面,访客VM可以,例如,从负载均衡池移除它们自身并且关闭现有连接。这可以帮助整个网络的负载均衡。而且,这对于诸如在线游戏系统的对断电延迟敏感的用户可能尤其有帮助。
示例系统
图1示出示例系统100,其中正在运行的访客正被从源主机向目标主机迁移。如所示,网络计算设备120、源主机130和目标主机160是网络150的元件。该网络还包括网络控制器180,其与网络150中的一个或多个设备通信。
网络150可以是数据中心、负载均衡服务器场,或者,包括互连外设的背板或母板上组件的系统的任何其它类型的计算环境。网络150和介于中间的节点可以包含各种配置和协议,其包括互联网、万维网、内联网、虚拟私有网络、广域网、局域网、使用专属于一个或多个公司的通信协议的私有网络、以太网、WiFi(诸如802.11,802.11b、g、n或其它这样的标准)和HTTP,以及前述的各种组合。
网络控制器180可被直接或间接链接到网络150的每个节点,并且可被用来建立节点之间的连接或向特定节点提供信息。例如,网络控制器180可被用来提供网络更新、帮助信息从一个节点转移到另一节点等。某些示例中,网络控制器180可以存储并处理关于网络150的拓扑或可连接到网络150的其它各种网络的各个拓扑的信息。网络控制器180可以是,例如,传统的或专用的网络接口控制器(NIC)。NIC可在网络上实现并且经,例如,扩展卡、母板、以太网芯片或任意其它介质连接到网络。
网络计算设备120可以是虚拟化的或非虚拟化的计算设备。例如,网络计算设备120可以是中央处理单元(CPU)、虚拟机、linux容器、路由器、交换机或能够发送和接收分组的任意其它网络设备。网络计算设备120可以通过例如有线或无线连接与源主机130和访客110通信。
源主机130可以是任意类型的计算设备或计算设备的系统,该计算设备能够作为访客110的主机。例如,源主机130可以包括具有在其上操作的一个或多个虚拟机或其它访客的管理程序(未示出)。尽管图1中只示出了访客110,但应当理解,多个访客可以在任意给定时间运行在源主机130上。某些示例中,源主机130可以在诸如嵌套虚拟化中被虚拟化。例如,源主机130可以是虚拟机、linux容器等。
类似于源主机130,目标主机160也可以是能够作为访客110的主机的任意类型的计算设备。某些示例中,目标主机可被虚拟化。
为了发起动态迁移,目标主机160联系源主机130上的虚拟机管理器(VMM)。例如,可以在目标主机160上开启VMM任务。这一任务可以联系源主机130上的VMM,包括,例如,执行认证。之后可以开始断电阶段,其中访客110的规格和状态从源主机130转移到目标主机160。
根据某些示例,响应于被(如,目标160或源130)通知其即将发生迁移,访客110可以采取预定的行动。这一行动的一示例是改变它的状态,诸如健康状态。例如,访客110可以将其自身放置在“无用”状态,除了诸如健康或不健康的其它状态外也可以识别该状态。在无用状态下,访客110可以关闭任意现有连接并且将其自身从负载均衡池移除。例如,访客110可以完成待处理的任务而不接受任何新任务。
在将访客110向目标主机160移动时,可以例如经源主机130维持网络计算设备120和访客110之间的通信。例如,源主机130可以充当在网络计算设备120和目标主机160之间的双向转发代理。目标主机160被配置为接受来自源130上访客110的代理传入流量,并且经源130代理传出流量。
当完成迁移时,目标160和源130中的至少一个可以通知网络控制器180。网络控制器180可以相应改变访客110的物理主机IP地址,使其与访客110在目标主机160上的新位置对应。因此,想要与访客110通信的客户可以向合适的物理主机发送分组。而且,某些示例中,网络控制器180可以将访客110位置的变化通知给网络计算设备120和网络150的其它计算设备。例如,控制器180可以向网络设备提供访客110的新地址。因而,网络计算设备120和其它设备可以重新开始与目标主机160上访客110的直接通信。
一旦网络设备120开始与目标160上的访客110通信,源130就可以离开并且目标160可以拆除传入和传出转发配置。例如,可以删除源130和目标160上的转发规则。根据一示例,在经源130转发的流量下降到0后,源130和目标160可以等待预定时段,诸如一分钟,之后再删除转发规则。这可以适应在对网络设备更新目标160上访客110的新地址时的时间变化。根据另一示例,使用基于反馈的机制,从而只在清楚地知道所有客户都已被通知“改变到目标160”时才停止转发。
图2提供包括源130和控制器180的系统100的特定组件的框图。
源130包括存储器132以及与存储器132通信的一个或多个处理器139。存储器132存储可由处理器139访问的信息,该信息包括可由处理器139运行的指令138。存储器还包括可被处理器检索、操作或存储的数据134。存储器可以是能够存储可由处理器访问的信息的任意类型的存储器,诸如硬盘驱动器、存储卡、ROM、RAM、DVD、CD-ROM、可写存储器和只读存储器。
处理器139可以是任意传统处理器,诸如商用的中央处理单元(“CPU”)或图形处理单元(“GPU”)。替换地,处理器可以是专用组件,诸如专用集成电路(“ASIC”)、现场可编程门阵列(“FPGA”)或其它基于硬件的处理器。作为另一示例,处理器139可以是量子计算机。
存储器132包括可根据指令138、由处理器检索、操作或存储的数据134。例如,尽管该系统和方法不受任意特定数据结构的限制,但是数据可被存储在计算机寄存器中,在相关数据库中作为具有多个不同字段和记录的表或者XML文档。数据还可被格式化为任意计算机可读格式,诸如但不限于,二进制值、ASCII或Unicode。而且,数据134可以包含足以识别相关信息的任意信息,诸如数字、描述性文本、专有代码、指针、对存储在其它存储器(包括其它网络位置)中的数据的引用或者函数用来计算相关数据的信息。
指令138可以是可由(多个)处理器139直接运行(诸如机器代码)或间接运行(诸如脚本)的任意指令集。在这方面,术语“指令”、“步骤”和“程序”在本文可互换使用。指令可以存储为用于由处理器直接处理的目标代码格式,或包括按要求译码或预先编译的脚本或独立源代码模块的集合的任意其它计算机语言。
例如,指令138可由处理器运行,例如从迁移目标接收与访客迁移关联的信息。一些示例中,响应于接收到信息,访客可以采取行动。例如,访客110可以更新它的状态,诸如通过将其健康状态变化为“无用”状态。这一状态下,访客可以完成任何待处理的任务,而不接受任何新任务。指令138可以进一步提供处理在网络设备120和目标160之间的双向转发。例如,数据134可以包括具有一个或多个转发规则的流表,其用于处理从网络设备120接收的、去往迁移的访客110的流量,并且用于处理从目标160接收的、去往网络设备120的流量。指令138甚至可以进一步提供一旦完成迁移就拆除连接。例如,源130可以在完成迁移后为了流量降下来而等待一段预定时间,并且然后从流表中移除双向转发规则。作为另一示例,一旦与被迁移访客110通信的所有网络设备确认它们已经切换到与目标160通信,源130上设置的转发规则就可以被拆除。
尽管图2功能性地将处理器139和存储器132示出在同一方框内,但将理解,处理器和存储器可以实际包含多个处理器和存储器,它们可以或不可以存储在同一物理外壳内。例如,指令和数据的某些可被存储在可移除CD-ROM上,并且其它指令和数据存储在只读计算机芯片内。指令和数据的某些或全部可被存储在物理上远离处理器139但仍可被处理器139访问的位置。类似地,处理器139可以实际包含:可以或不可以并行操作的处理器的集合。一些示例中,存储器132和/或一个或多个处理器139可以是管理程序的部分。
类似于源130,控制器180也可以包括存储器182和一个或多个处理器189。一个或多个处理器189也可以采用与源(多个)处理器139有关的上述任何形式。存储器182包括数据184和指令188。存储器182可以是任意类型并且可以包括与源存储器132有关的上述任何特征。指令188提供检测动态迁移的完成并且更新目标主机上访客的地址。动态迁移完成的检测可以包括,例如,从源130和目标160中的一个接收指示迁移完成的通知。更新地址可以包括为目标和源编程从而为迁移做准备,并且为剩余网络编程从而知晓该源和目标。指令188可以进一步提供告知诸如网络设备120的其它网络设备动态迁移完成。这可以进一步包括向网络设备提供目标上访客的更新后的地址。
图3示出另一示例系统300。类似于图1的系统100,系统300可以包括若干相连的网络组件,诸如源330、目标360和控制器380。源330、目标360和控制器380可以类似于以上结合图1-2描述的源130、目标160和控制器180。
系统300可以进一步包括驻留在“其它”主机320上的“其它”访客325,“其它”主机320与源330、目标360和控制器380通信地耦接。其它主机320可以,结合源330和目标360,执行如上所述的三角路由。这可被执行,例如,作为对图1中上述双向转发的附加或替换。类似于源主机和目标主机,其它主机可以是任意类型的虚拟化或非虚拟化网络设备。尽管只示出了一个其它主机和一个其它访客,但可以实现多个其它主机和多个其它访客。
这一示例中,目标主机360联络控制器380,例如如通信342所示,来订阅网络更新。响应于查表请求344,控制器向其它主机320提供令牌,如通信346所示。令牌可被用来与目标主机360上的访客310直接通信。
尽管图3的示例示出了执行查表请求344,但其它示例中,用于与目标主机360上的迁移访客310通信的流可以在需要发生转发前推送给其它主机。例如,可以在限电和/或断电期间向其它主机推送流。
其它访客325向源主机330发送流量352,该流量被转发到目标主机360,如通信354所示。源主机330继续转发这些流量,直到其它访客325从目标主机360接收到传入的分组(通过356示出)。当其它访客325从目标主机360上的访客310接收到分组356时,其它访客325开始与目标360上的访客310直接通信,如通信358所示。例如,其它主机320使用从控制器380接收的令牌来认证并且指定从其它访客325到目标主机360上访客310的传出路径。在此方面,在接收到来自目标360上访客310的第一传入分组后,使能其它访客325“知晓”访客310的新位置,并且其它访客325自动切换为与目标360上的访客310直接通信。
图4提供其它访客320的示例框图。如上所述,其它访客325可以是虚拟机或任意其它虚拟化网络组件。其它访客320可以在驻留在网络中任意主机设备上的管理程序上运行。
其它访客325包括存储器422和一个或多个处理器429,其中存储器422包括数据424和指令428。这些组件可以和以上结合图2描述的存储器和处理器类似。指令428可以提供接收用于与目标主机上的访客通信的令牌,向源主机上的访客发送流量,并且检测来自目标主机上访客的传入分组。当检测到传入分组时,指令428可以进一步提供使用接收到的令牌认证并且指定传出路径,以及在指定的传出路径上直接向目标主机上的访客发送分组。
示例方法
图5提供示出用于虚拟化网络堆栈从源到目标的动态迁移的方法500的示例流程图。应当理解,以下方法涉及的操作不需要按所述确切顺序执行。而是,可以不同顺序地或同时地处理各种操作,并且可以添加或省略操作。
方框510中,目标向与迁移有关的源发送信息。例如,可以在目标主机上开启虚拟机管理器(VMM)以触发动态迁移。目标VMM可以联络源VMM以发起迁移。根据其它示例,该联络可由目标主机发起,和/或可以针对源主机或源访客。进一步的示例包括联络目标的源、联络源和目标两者的第三方设备、或用于发起迁移的任何其它机制。
方框520中,源从目标接收信息。例如,源主机、源VMM和/或源访客可以接收信息。一些示例中,该信息可以充当告知访客将要被迁移的通知。
一些示例中,响应于被通知即将发生迁移,源主机上的访客可以采取行动。一种行动是可以改变它的健康状态,诸如通过将其自身放置在无用模式。
方框540中,源向目标转发从诸如另一访客、主机或其它设备的虚拟化或非虚拟化网络设备接收的流量。例如,网络控制器可以在用于转发流量的源上的流表中安装转发规则。类似地,目标可以接收被转发的流量并且向源转发去往网络设备的传出流量(方框550)。从而,源可以接收从目标转发的流量并且将它提供给网络设备。
方框560中,可以确定迁移是否完成。当,例如,访客已经完成从源到目标的移动时,或者当已更新网络设备从而与目标主机上的访客通信时,可以认为迁移完成。根据一示例,源主机可以检测访客已被迁移到目标主机。作为另一示例,例如,可以由网络控制器通知源迁移完成。如果迁移还未完成,则源将继续在网络设备和目标之间执行转发。
如果方框560中确定迁移完成,则方框550中,在目标主机上重新开始处理并且目标主机上的访客直接从网络设备接收分组。例如,控制器可以向网络设备提供目标主机上访客的已更新的地址,因而使能直接通信。
图6提供示出用于由“其它”访客辅助的虚拟化网络堆栈的动态迁移的方法600的另一示例流程图。类似于图5的方法500,可以不同顺序地或同时地处理方法600中涉及的操作,并且可以添加或省略操作。
方框610中,其它访客接收用于与目标主机上的迁移访客通信的令牌。例如,响应于查表请求,该令牌可从网络控制器接收。令牌可以提供认证并且指定到目标的传出路径。例如,令牌可被用来认证直接从目标接收的分组,认证要直接传出到目标的分组,认证从目标到其它访客的传入路径上的分组,等等。
方框620中,其它访客向源主机上的迁移访客发送网络流量。这些流量在源中被接收(方框630),并且被转发到目标(方框640)。
方框650中,目标从源接收被转发的流量,并且还向源转发去往其它访客的传出流量。
方框660中,其它访客确定是否已从目标主机上的迁移访客接收到传入的分组。如果没有,则源和目标继续向其它访客转发流量/转发来自其它访客的流量。然而,当其它访客从目标接收到传入的分组时,可以向其它访客发送迁移完成的信号。
因而,方框670中,其它访客直接向目标上的迁移访客发送分组。例如,其它访客使用从网络控制器接收的令牌来认证并且指明用于通信的传出路径。
方法600可以提供更加无缝的转换,因为一旦迁移完成,其它访客就准备好开始向目标上的访客发送分组。例如,其它访客有来自控制器的用于建立到目标的传出路径的令牌,并且因而一旦完成迁移,不必要等待来自控制器的更新。
前述技术是进一步有益的,因为它们提供将访客虚拟机的活动进程以对访客最小的影响从源主机移动到目标主机。访客进程可能经受最小延迟或无延迟或无终止。而且,使迁移访客面临即将发生的动态迁移,并且作为响应,允许迁移访客采取行动,也是有益的。例如,将迁移访客放置在无用模式,帮助最小化对负载均衡操作的影响,并且因而允许应用的持续运行。这可能对对断电延迟敏感的应用尤其有益。
由于可以在不脱离权利要求所限定的主题的情况下使用以上讨论的特征的这些和其它变化和组合,所以示范性方面的先前描述应当作为说明而不作为对权利要求限定的主题的限制。还将理解,本文所述示例的提供(以及像“诸如”、“如”、“包括”等一样表述的条文)不应当被解释为将权利要求的主题限制在特定示例;而是,该示例意图只示出许多可能方面的某些方面。