云计算是对在远程位置中可用并且可通过网络(诸如互联网)访问的计算资源(硬件和软件)的使用。在具有许多计算装置的计算环境(诸如具有许多服务器计算机的虚拟服务器或云计算环境)中,使用计算资源可提供数个优点,包括成本优点和/或快速适应于变化的计算资源需要的能力。
私有企业网络关于使用扩展云计算资源的重要考虑因素是将应用程序从私有的基于企业的网络移动(或迁移)到云计算环境的容易性。例如,现有的基于企业的网络应用程序的复杂性可导致应用程序迁移任务是耗时的、易出错的并且是危险的努力。
附图简述
图1是示出根据本公开的示例性实施方案的从基于企业的网络到计算服务环境的应用程序迁移的网络图。
图2A和图2B是示出涉及远程客户端创建和配置支持应用程序迁移的私有计算机网络的交互的示例性实施方案的网络图。
图3是示出用于提供支持将应用程序迁移到客户端的计算机网络的互连计算系统的示例性实施方案的网络图。
图4是示出根据本公开的示例性实施方案的在多租户环境中运行的使用应用程序迁移服务的多个虚拟机实例的示例性系统图。
图5示出根据一个实施方案的包括与控制平面相关联的多个管理部件的示例性系统的其他细节,所述多个管理部件可用于迁移一个或多个应用程序。
图6示出可根据本公开的一个实施方案配置的多个主机计算机、路由器和交换器的实例,所述多个主机计算机、路由器和交换器是用于运行虚拟机实例的硬件资产,其中主机计算机具有应用程序迁移相关的功能。
图7是根据本公开实施方案的将应用程序从基于企业的网络迁移到计算服务提供方的多租户网络的示例性方法的流程图。
图8是根据本公开实施方案的将应用程序从基于企业的网络迁移到计算服务提供方的多租户网络的另一示例性方法的流程图。
图9是根据本公开实施方案的将应用程序从基于企业的网络迁移到计算服务提供方的多租户网络的又一示例性方法的流程图。
图10描绘其中可实现所描述的创新的合适计算环境的一般化实例。
详细描述
虚拟机图像包含启动虚拟环境中的虚拟机所需的操作系统(例如,Linux)和其他数据。虚拟机图像类似于物理计算机的磁盘卷,并且可包括文件系统、作为机器开启所需的操作系统和其他部件。为了启动虚拟机,需要选择硬件。硬件选择可通过实例类型来完成,所述实例类型可允许多种不同大小的存储器、CPU容量、I/O性能等。虚拟机图像和实例类型的组合可用于创建可在云计算资源(诸如多租户网络环境中的主机服务器计算机)上启动的“实例”或虚拟机。
如本文所用,术语“虚拟机”和“虚拟机实例”可互换。
如本文所用,术语“计算服务提供方”可以是指能够将计算和存储容量作为服务传递到一个或多个最终接受方的云提供方。可由组织或代表组织为组织建立计算服务提供方(也就是说,计算服务提供方可提供“私有云环境”)。在其他实例中,计算服务提供方可支持其中多个客户独立操作的多租户环境(即,公共云环境)。就此而言,多个客户(例如,多个企业)可租用多租户环境内的资源,诸如服务器计算机。
如本文所用,术语“基于企业的网络”(或“企业私有网络”或“企业网络”)可以是指企业(例如,公司或另一个商业机构)拥有的计算机系统的网络。通常,限于公司的员工在基于企业的网络内进行信息访问。在这种意义上,企业网络是单租户系统。然而,外部用户可通过企业门户(诸如web接口)获得数据。通常,企业网络中的服务器计算机不可由第三方租用。
如本文所用,术语“移动”或“迁移”虚拟机是指将虚拟机从一个服务器计算机移动到另一个服务器计算机。例如,使虚拟机终止或以其他方式暂停在当前服务器计算机处运行终止,并且在另一个服务器计算机处启动。就此而言,一种或多种软件包装和分布格式(例如,开放虚拟化格式或OVF)可用于包装虚拟机并将虚拟机迁移到新服务器计算机。
如本文所用,术语“资源监测指标”可包括由应用程序(或用于运行应用程序的虚拟机)对计算资源的实际使用。例如,计算资源可与托管应用程序(或虚拟机)的一个或多个服务器计算机相关联,并且可包括对CPU资源、存储器资源、可用存储资源、磁盘I/O利用等的使用。可在确定的(例如,固定的)时间段内来执行对此类指标的监测,并且可生成平均值(具有或不具有标准偏差调整)。可替代地,还可生成此类指标的快照,所述快照可指示某一时间点时的资源使用。
如本文所用,术语“性能指标”可包括与主机服务器(或由服务器托管的虚拟机)的架构相关联的一个或多个指标或特性。例如,主机服务器架构可由以下性能指标中的一个或多个来表征:CPU速度、存储器容量、存储容量、网卡特性(例如,速度)、视频卡特性(例如,分辨率和视频处理速度)、磁盘I/O速度等。
图1是示出根据本公开的示例性实施方案的从基于企业的网络到计算服务环境的应用程序迁移的网络图。参考图1,计算服务环境100可以是能够将计算和存储容量作为服务传送到最终接受方的社区的计算服务提供方(即,云提供方)。本文参考图4-6公开关于计算机服务环境/提供方的其他细节。计算服务环境100包括多个主机服务器计算机105a、…、105n、应用程序迁移服务140a和端点145。
主机服务器计算机(例如,105a)可包括CPU 110、存储器115和存储装置120。主机服务器105a可被配置来执行管理程序125或被配置成能够执行多个虚拟机实例(VMI)130a、…、130n的另一种类型的程序。
web服务通常用于云计算。web服务是在通过web或云在网络地址下提供的软件功能。客户端向服务器发起web服务请求并且服务器处理所述请求并返回适当的响应。客户端web服务请求通常使用例如API请求来发起。为了简单目的,下文将通常将web服务请求描述为API请求,但是应理解,可做出其他web服务请求。API请求是到限定的请求响应消息系统的程序性接口,其常常以JSON或XML表达,所述程序性接口通过web暴露—最常见的是借助于基于HTTP的web服务器暴露。因此,在某些具体实施中,API可被定义为一组超文本传输协议(HTTP)请求消息连同对响应消息的结构的定义,它们可以呈可扩展标记语言(XML)或JavaScript对象表示(JSON)格式。API可指定执行动作的一组功能或例程,所述动作包括完成特定任务或允许与软件部件交互。当web服务从客户端装置接收API请求时,web服务可生成对请求的响应并且将所述响应发送到所述请求中所标识的端点。
计算服务环境100包括端点145,所述端点145是设计来接收并处理API请求(诸如来自应用程序迁移服务140a的API请求190)的DNS地址。具体感兴趣的API请求是与私有子网信息150、相关性信息155和资源监测指标160相关联的API请求190,如下文所描述。
应用程序迁移服务140a可包括合适的电路、逻辑和/或代码并且可以可操作来迁移在远程服务器计算机(例如,客户端私有网络170内的主机计算机175a)上运行的一个或多个应用程序(例如,应用程序185)。应用程序的迁移可基于例如从客户端私有网络170处的应用程序迁移服务140b接收的私有子网信息150、相关性信息155和资源监测指标160中的一个或多个。
客户端私有网络170可以是远程客户端网络,诸如基于企业的网络。客户端网络170可包括多个主机服务器计算机175a、…、175n。示例性主机服务器计算机(例如,175a)可包括CPU 171、存储器172和存储装置173。主机服务器(例如,175a)可被配置来运行一个或多个VMI,诸如VMI 180a-180c。一个或多个应用程序(诸如应用程序185)可在VMI(例如,VMI 180a)上运行。应用程序185可依赖于一个或多个另外的VMI(例如,VMI 180b-180c)。例如,应用程序185可安装在VMI 180a上,但是应用程序185所使用的另外的功能(例如,一个或多个数据库或另外的软件模块)可安装在其他VMI(例如,VMI180b-180c)上。就此而言,在实例中,当选择应用程序185来迁移(例如,从客户端私有网络170迁移到计算服务提供方100)时,运行应用程序185的VMI(即,VMI 180a)可与应用程序185所依赖于(或使用)的任何剩余VMI(即,VMI 180b-180c)一起迁移。
客户端私有网络还可包括应用程序迁移服务部件140b,其可以可操作来向计算服务环境100提供私有子网信息150、相关性信息155或资源监测指标160中的一个或多个。例如,应用程序迁移服务140b可通过端点145与应用程序迁移服务140a直接通信(例如,140b可定期地发起通信以报告信息,诸如150、155或160;可替代地,140b可响应于API请求190提供此类信息)。应用程序迁移服务140a和140b可以是例如分别在计算服务环境100和客户端私有网络170内的服务器计算机的操作系统上运行的软件应用程序。
在操作中,可(例如,由用户)正主机计算机175a处激活用户接口122。用户接口122可包括文本框122a(或另一接口),其用于接收标识将要从客户端私有网络170迁移到计算服务环境100的应用程序的输入。例如,用户可在文本框122a中指示应用程序185的名称,然后可通过点击“迁移”按钮122b(或通过激活另一种类型的用户接口,诸如屏幕轻敲等)发起迁移过程。
在接收应用程序185的名称之后,计算服务环境100中的应用程序迁移服务140a可使用API请求190中的一个获取私有子网信息150,私有子网信息150可指示主机175a以及VMI 180a-180c中的一个或多个是否在客户端私有网络170的私有子网络(或子网)(例如,虚拟私有云、虚拟局域网等)中。应用程序迁移服务140a然后可在计算服务环境100内创建私有网络(例如,虚拟私有云)并且分配用于在迁移之后托管VMI的子网(例如,VPC/子网创建和分配141a)。
应用程序迁移服务140a可从应用程序迁移服务140b获取相关性信息155。相关性信息155可包括标识应用程序185在其上运行的虚拟机(即,VMI 180a)以及应用程序185可使用(或依赖于)的其他任何VMI(即,VMI 180b-180c)的信息。应用程序迁移服务140a然后可从应用程序迁移服务140b获取资源监测指标160。资源监测指标160可指示由应用程序185中的一个或多个、运行应用程序185的VMI(即,VMI 180a)以及应用程序185所依赖于的VMI(即,VMI 180b-180c)中的任一个对计算资源的使用。例如,资源监测指标160可包括与主机计算机175a相关联(由于主机计算机175a用于运行VMI 180a-180c)的CPU资源、存储器资源、可用存储资源、磁盘I/O利用等。在实例中,当相关的VMI 180b-180c中的一个或多个根据服务器计算机175a、…、175n中的另一个运行时,那么资源监测指标160还将指示也与所述主机计算机相关联的资源的计算资源使用。例如,资源监测指标160可由CPU 171或由主机计算机175a(或剩余主机计算机175a、…、175n中的任一个)内的专用模块(未示出)收集。
在获取相关性信息155和资源监测指标160之后,应用程序迁移服务140a可使资源监测指标160中的一个或多个与主机服务器105a(或剩余主机服务器105a、…、105n中的任一个)的性能指标139匹配,以选择计算服务环境100内的虚拟机实例类型(用于迁移VMI180a-180c)和主机服务器计算机类型来托管来自客户端私有网络170的所迁移VMI(与所迁移应用程序)。性能指标139可包括主机服务器计算机105a(或剩余主机服务器105a、…、105n中的任一个)的CPU速度、存储器容量、存储容量、网卡特性(例如,速度)、视频卡特性(例如,分辨率和视频处理速度)、磁盘I/O速度等中的一个或多个。
在示例性实施方案中,VMI 180a(运行应用程序185)和相关的VMI 180b-180c都可由客户端私有网络170中的主机服务器计算机175a托管。资源监测指标160可指示由VMI 180a-180c使用的主机175a的计算资源的量(例如,VMI 180a-180c可使用总共5GB的磁盘空间、1GB的RAM、1.7GHz的CPU时钟速度等)。在虚拟私有云(VPC)和子网创建和分配(在141a处)之后,应用程序迁移服务140a可通过使资源监测指标160与主机服务器计算机105a、…、105n中的一个或多个的性能指标139匹配,来选择虚拟机实例类型和主机服务器计算机类型(用于在迁移应用程序185之后启动VMI 108a-108c)。VMI和主机计算机类型选择在图1中反映为141b。
例如,应用程序迁移服务140a可选择与1GB的RAM和5GB的磁盘空间相关联的虚拟机实例类型,以及与2GHz的CPU时钟速度、1.5GB的RAM和7GB的磁盘空间相关联的主机服务器计算机类型(例如,主机服务器计算机105a)。就此而言,通过使资源监测指标160与性能指标139匹配,可实现计算服务环境100内的计算资源的有效利用,并且可选择VMI和主机服务器计算机类型以用于将应用程序185迁移到所选择VMI类型的VMI上并且在所述VMI上启动相关性信息155所标识的VMI(即,VMI 108a-180c),所选择VMI类型的VMI由所选择主机计算机类型的主机计算机托管。
在实例中,当相关的VMI 180b-180c(即,应用程序185所依赖于的VMI,其由相关性信息155标识符)由客户端私有网络170中的不同主机计算机(例如,175n)托管时,资源监测指标160可包括对与主机服务器计算机175a以及175n相关联的计算资源的使用。应用程序迁移服务140a然后可通过使资源监测指标160与主机服务器计算机105a、…、105n中的一个或多个的性能指标139匹配,来针对两个主机服务器计算机选择VMI类型和主机服务器计算机类型(用于启动第一主机服务器计算机上的VMI 180a,以及第二主机服务器计算机上的VMI 180b-180c)。
VMI 180a-180c然后可从客户端私有网络170迁移到计算服务环境100。更具体地说,至少一个文件打包格式(例如,OVF)可用于包装VMI 180a-180c,将它们迁移到计算服务环境100,然后在所选择VMI类型的并且由所选择主机服务器计算机类型的主机服务器托管的VMI上启动它们,如由主机/VMI类型选择141b所指示。所迁移VMI 180a-180c可传递到由所选择主机服务器计算机中的一个或多个托管的所选择VMI(即,VMI传递141c)并在其上启动。就此而言,应用程序迁移服务140a可以可操作来将迁移实例从资源格式(例如,与客户端私有网络170兼容的VMI格式)变换成目标格式(例如,与计算服务环境100兼容的VMI格式)。在变换期间,应用程序迁移服务140a还可安装在计算服务环境100处运行呈目标格式的所迁移VMI所必需的一个或多个驱动器。
根据本公开的示例性实施方案,应用程序迁移服务140a还可获取托管VMI 180a-180c的主机服务器(或多个服务器)的名称,以及与托管服务器相关联的IP地址(例如,主机服务器175a的IP1地址)和/或VMI 180a-180c的IP地址。应用程序迁移服务140a然后可通过将托管所迁移VMI的主机服务器(105a)的名称和IP地址改变成先前的托管服务器(175a)的名称和IP地址来执行IP和主机名称改变141d。此外,IP和主机名称改变141d可将所迁移VMI的IP地址改变成与VMI 180a-180c的IP地址相同。
根据本公开的另一个示例性实施方案,在应用程序迁移服务140a执行资源监测指标160与性能指标139的匹配之后,所确定的用于托管所迁移应用程序和VMI的VMI类型和服务器计算机类型可被传达到私有网络170以用于确认或替代性选择。例如,客户端私有网络170可使用用户接口(诸如122)来显示由计算服务环境100执行的对VMI类型和主机服务器计算机类型的自动选择。客户端私有网络170处的用户然后可确认这种自动选择,或者可指定对用于启动所迁移应用程序185和VMI 180a-180c的不同的VMI类型和服务器计算机类型的替代性选择。
图2A和图2B是示出涉及远程客户端创建和配置支持应用程序迁移的私有计算机网络的交互的示例性实施方案的网络图。图2A是示出计算服务提供方205的示例性实施方案的网络图,所述计算服务提供方205允许远程客户端创建并配置计算机网络以供客户端使用。在这个实例中,创建并配置的计算机网络是对客户端的现有私有计算机网络的私有网络扩展,并且计算服务提供方205通过一个或多个公共网络2200(例如,通过互联网)来向客户端(未示出)提供这种功能。因此,远程客户端可使用CSP计算服务提供方(“CSP”)205来动态地修改它们私有计算机网络的大小和/或能力,诸如通过在公共网络200上使用云计算技术。
具体地说,在图2A的实例中,数个客户端(未示出)通过公共网络200与CSP管理器模块210交互以创建并配置对远程现有客户端私有网络230的各种私有计算机网络扩展220,其中计算机网络扩展220中的至少一些被配置来使得能够从一个或多个对应客户端私有网络230通过公共网络200(例如,借助于通过互连200a和200b建立的VPN连接)进行安全私有访问。在这个示例性实施方案中,管理器模块210有助于向远程客户端提供CSP 205的功能、诸如结合CSP 205的各种其他模块(未示出)以及由CSP 205使用的各种计算节点和联网装置(未示出),以提供私有计算机网络扩展220。在至少一些实施方案中,CSP管理器模块210可在CSP 205的一个或多个计算系统(未示出)上执行,并且可提供一个或多个API,所述一个或多个API使得远程计算系统能够与模块210以编程方式交互,从而代表客户端访问CSP 205的一些或所有功能(例如,创建、配置私有网络扩展220和/或发起对其的使用)。此外,在至少一些实施方案中,客户端替代地可与模块210手动地交互(例如,通过由模块210提供的用户接口)以执行一些或所有此类动作。CSP 205还可包括具有如参考图1描述的功能的应用程序迁移服务140a。
公用网络200可以是例如可能由不同方操作的链接网络的公共可访问网络,诸如互联网。远程客户端私有网络230各自可包括一个或多个现有私有网络,诸如公司或其他私有网络(例如,家庭、大学网络等),所述网络是非特权用户部分或完全不可访问的并且包括客户端的计算系统和/或其他联网装置。在示例性实施方案中,客户端私有网络230可包括运行应用程序的一个VMI(例如,VMI1,类似于图1中的VMI 180)以及多个VMI(例如,VMI2和VMI3,是在VMI1上运行的应用程序所依赖的)。VMI VMI1-VMI3可连接在私有子网245中(例如,运行VMI1-VMI3的主机服务器计算机可连接在子网245中)。
在所示实例中,所提供网络扩展220各自包括多个计算节点(未示出),所述多个计算节点中的至少一些由CSP 205提供或者以其他方式在CSP 205的控制下提供,并且所提供网络扩展220中的每一个可由它们被提供用于的客户端以各种方式配置。所示实施方案中的网络扩展220中的每一个可以是仅可由创建它的客户端访问的私有计算机网络,尽管在其他实施方案中,由CSP 205为客户端提供的至少一些计算机网络可以是公共可访问的和/或可以是并非是对其他现有计算机网络的扩展的独立计算机网络。类似地,虽然实例中的所提供计算机网络220是对是私有网络的远程客户端计算机网络230的扩展,但是在其他实施方案中,所提供计算机网络220可以是对不是私有网络的客户端计算机网络230的扩展。
根据本公开的示例性实施方案,应用程序迁移服务140a可将应用程、所述应用在其上运行的VMI(例如,VMI1)以及任何相关的VMI(例如,VMI2-VMI3)从客户端私有网络230迁移到所提供计算机网络220内的一个或多个服务器计算机(类似于参考图1描述的应用程序迁移功能)。此外,所迁移VMI1-VMI3可连接在计算服务提供方205内的私有子网250中,如图2A所示。
可以各种方式实现远程客户端私有计算机网络230与为客户端提供的对应私有计算机网络扩展220之间的私有访问,诸如通过在它们之间建立允许以安全私有方式通过公共网络200互通的VPN连接或其他安全连接。例如,CSP 205可在其计算节点和其他计算系统上自动执行适当的配置以实现对客户端的具体私有网络扩展220的VPN访问,诸如通过自动地配置由CSP 205托管的一个或多个VPN机构(例如,软件和/或硬件VPN机构),和/或可自动地将适当的配置信息(例如,凭证、接入点和/或其他参数)提供给客户端以允许托管在远程客户端私有网络230上的VPN机构建立VPN访问。在已适当地实现和/或配置VPN访问之后,可在远程客户端私有网络与私有网络扩展之间建立VPN连接,诸如由客户端使用IPsec(“互联网协议安全”)或其他适当的通信技术发起。例如,在一些实施方案中,可建立到使用MPLS(“多协议标签交换”)进行数据传输的网络或其间的VPN连接或其他安全连接,诸如替代基于IPsec的VPN连接。
此外,在所示实施方案中,各种网络可访问的远程资源服务240通过公共网络200对远程计算系统可用,包括对远程客户端私有网络230上的计算系统可用。资源服务240可向远程计算系统提供各种功能,诸如对资源服务240中的至少一些来说,向远程计算系统提供对各种类型的计算相关的资源的访问权。此外,由CSP 205提供的私有网络扩展220中的至少一些可被配置来对远程资源服务240中的至少一些提供私有或其他专门化访问,其中所提供访问任选地对如通过虚拟连接215本地提供的私有网络扩展220的计算节点(它们是私有网络扩展220的一部分)呈现,尽管与远程资源服务240的实际通信可通过公共网络200(例如,通过互连200b和200c)发生。在其他地方更详细地讨论了关于建立和使用对远程资源服务的此类私有或其他专门化访问的另外细节。
如先前所指出,所提供网络扩展220各自可由客户端以各种方式来配置。例如,在至少一些实施方案中,CSP 205提供多个计算节点,所述多个计算节点可供用于与向客户端提供的网络扩展一起使用,使得每个所提供网络扩展220可包括客户端配置数量的多个计算节点,这些计算节点专用作所提供网络扩展的一部分。具体地说,客户端可与模块210交互以配置为客户端提供的计算机网络中初始地将要包括的计算节点的数量(例如,通过与由CSP 205提供的API进行的一个或多个程序性交互)。此外,在至少一些此类实施方案中,稍后可动态地向所提供客户端计算机网络添加或从其移除计算节点(例如,通过与由CSP 205提供的API进行的一个或多个程序性交互),诸如在所提供计算机网络已由客户端置于使用中(例如,通过指示在特定计算节点上发起或终止具体程序的执行)之后。此外,在至少一些实施方案中,CSP 205可提供多个不同类型的计算节点,例如像具有各种性能特性(例如,处理器速度、可用存储器、可用存储装置等)和/或其他能力的计算节点。如果是这样的话,在至少一些此类实施方案中,客户端可指定所提供客户端计算机网络中将要包括的计算节点的类型。
此外,在至少一些实施方案中,客户端可与模块210交互以配置为客户端提供的计算机网络的网络地址(例如,通过与由CSP 205提供的API进行的一个或多个程序性交互),并且在至少一些此类实施方案中,稍后可针对所提供客户端计算机网络动态地添加、移除或修改网络地址,诸如在所提供计算机网络已经由客户端置于使用中之后。例如,如果被配置的特定所提供计算机网络是对现有远程客户端计算机网络的扩展,那么客户端可指定一个或多个地址范围(例如,无类别域间路由(“CIDR”)地址码组)或其他网络地址组(所述其他网络地址组是现有远程客户端计算机网络所使用的网络地址的子集),使得所指定网络地址得以用于所提供计算机网络的计算节点。在一些情况下,此类配置的网络地址可以是从公共网络200上的计算系统不可直接寻址的虚拟或私有网络地址(例如,如果现有远程客户端计算机网络和对应所提供网络扩展使用用于客户端计算机网络和它的所提供网络扩展的网络地址转换技术和/或虚拟网络技术),而在其他情况下,所配置网络地址中的至少一些可以是可从公共网络200上的计算系统直接寻址的公共网络地址(例如,是静态互联网可路由IP地址或其他不改变的网络地址的公共网络地址)。
在其他实施方案中,CSP 205可自动地选择将要用于至少一些所提供计算机网络扩展的至少一些计算节点的网络地址,诸如基于可供用于由CSP 205使用的网络地址,基于选择是由对应于所提供计算机网络的远程现有计算机网络使用的相关网络地址的网络地址等。此外,在至少一些实施方案(其中CSP 205通过诸如在基础网络之上使用叠加网络来向客户端提供虚拟网络)中,每个客户端可被允许指定将要用于它们的所提供计算机网络的任何网络地址,即使多个客户端为它们的相应所提供计算机网络指定相同或叠加的网络地址也是如此—在此类实施方案中,CSP 205管理相异地为每个客户端管理网络地址,使得第一客户端可具有与第一客户端的所提供计算机网络的具体指定的网络地址相关联的第一计算节点,而相异的第二客户端可具有与第二客户端的所提供计算机网络地址的相同的具体指定的网络地址相关联的相异的第二计算节点。
一旦为所提供计算机网络配置或以其他方式确定网络地址,CSP205就可通过使用DHCP(“动态主机配置协议”)或用于网络地址动态分配的其他技术等以诸如随机方式将网络地址分配给针对所提供计算机网络选择的各个计算节点。此外,即使针对特定计算机网络使用了公共网络地址,CSP 205也可以其他方式(诸如使用特定公共网络地址来充当特定远程资源服务的访问机构,如在其他地方更详细描述的)映射要使用的那些公共网络地址中的一个或多个,使得由那个特定计算机网络的计算节点向那个特定公共网络地址发送的通信将转发到对应远程资源服务而不是互联网或那个特定公共网络地址被分配给的其他网络上的另一个计算系统。图2B提供关于使用所配置网络地址来在所提供计算机网络内路由通信的实例的另外细节。
此外,在至少一些实施方案中,客户端可与模块210交互以配置为客户端提供的计算机网络的网络拓扑信息(例如,通过与由CSP 205提供的API进行的一个或多个程序性交互),并且在至少一些此类实施方案中,随后可针对所提供计算机网络动态地修改此类网络拓扑信息,诸如在所提供计算机网络已经由客户端置于使用中之后。例如,客户端可指定将要作为所提供计算机网络的一部分的联网装置(例如,路由器、交换器等)和/或其他网络装置或节点(例如,防火墙、代理服务器、网络存储装置、打印机等)的具体类型,和/或可指定将要分组在一起或以其他方式享有共同互通特性的所提供计算机网络的计算节点的子集(例如,是互通未得到过滤的子网的一部分和/或与特定联网装置相关联的计算节点的特定子集)。
此外,在至少一些实施方案中,所提供计算机网络的指定配置信息可包括联网装置和/或计算装置组之间的路由信息或其他互连性信息。此外,在至少一些实施方案中,CSP 205可在多个地理位置中(例如,在多个地理分布的数据中心中)提供可用计算节点,并且由客户端针对所提供计算机网络指定的配置信息可进一步指示一个或多个地理位置,所提供计算机网络的计算节点将要定位在所述一个或多个地理位置中(例如,以便通过将它们定位在多个地理位置中来在所提供计算机网络的计算节点之中提供故障容许),和/或可以其他方式提供关于所提供计算机网络的计算节点如何交互操作的偏好或要求的信息,所述信息由CSP 205使用来选择一个或多个此类地理位置(例如,用于计算节点互通的最小或最大网络延迟或带宽;计算节点之间的最小或最大网络接近度;计算节点之间的最小或最大地理近度;具有对在所有此类地理位置中不可用的特定资源或功能的本地访问权;具有相对于其他外部计算系统(诸如相对于客户端的远程计算机网络和/或相对于远程资源服务;等等)指定的位置等)。
如其他地方更详细地讨论,在至少一些实施方案中,使用CSP 205的底层基础网络来管理所提供计算机网络的计算节点之间的互连和互通,并且如果是这样的话,在至少一些此类似实施方案中,可使用CSP 205的底层基础网络和对应模块来模拟一些或所有所配置网络拓扑信息。例如,由CSP 205提供的计算节点中的每一个可与CSP 205的节点通信管理器模块相关联,所述节点通信管理器模块管理去往和来自其相关联计算节点的通信。如果是这样的话,可通过使用计算节点的相关联通信管理器模块模拟防火墙装置以便以与一个或多个模拟的防火墙装置一致的方式拒绝或以其他方式处置去往和/或来自计算节点的通信。此类节点通信管理器模块可通过控制互通如何和是否在计算节点之间传递,并且通过用适当的响应信息对来自计算节点的对信息的请求(例如,ARP请求或地址解析协议)作出响应,来类似地模拟路由器和子网。CSP 205的一个或多个外部通信管理器模块可管理由CSP 205提供的计算节点与外部计算系统之间的通信,诸如以便类似地模拟防火墙装置并且强制执行指定的网络访问约束,以及以便管理远程资源服务的所配置访问机构和到远程客户端私有计算机网络的安全连接。可类似地模拟其他类型的网络拓扑信息,并且可参考图3在下文讨论关于在一些实施方案中使用CSP 205的各种模块的另外细节。
此外,在至少一些实施方案中,客户端可与模块210交互以配置为客户端提供的计算机网络的网络访问约束信息(例如,通过与由CSP 205提供的API进行的一个或多个程序性交互),并且在至少一些此类实施方案中,随后可针对所提供计算机网络动态地修改此类网络访问约束信息,诸如在所提供计算机网络已经由客户端置于使用中之后。例如,客户端可基于诸如以下各项中的一项或多项来指定关于所提供计算机网络的一些或所有计算节点是否和如何被允许与所提供计算机网络的其他计算节点通信和/或与其他外部计算系统通信的信息:通信的方向(传入对比传出);通信的类型(例如,基于所包括内容的类型和/或所使用通信协议的类型,诸如以允许对文本而不是图像的HTTP请求并且不允许FTP请求);其他计算系统的位置(例如,是否是所提供计算机网络的一部分、对应于所提供计算机网络的远程客户端计算机网络的一部分、私有或其他专门化访问已经对其建立的远程资源服务的一部分、在所提供计算机网络和任何对应远程客户端计算机网络的外部等);其他计算系统的类型;等等。此外,如其他地方更详细讨论,在至少一些实施方案中,所提供计算机网络可被配置来对一个或多个远程资源服务提供私有或其他专门化访问,诸如通过是所提供计算机网络的一部分或以其他方式在所提供计算机网络本地的所配置访问机构。以类似于用于网络拓扑信息和其他路由信息的方式,CSP 205可以各种方式强制执行所提供计算机网络的网络访问约束信息。参考图3在下文讨论了与在一些实施方案中管理所提供计算机网络的通信有关的另外细节。
图2B示出关于可由CSP 205(或计算服务提供方的其他实施方案)为客户端提供的示例性计算机网络220A的另外细节,其中在这个实例中,所提供计算机网络220A是对客户端的远程私有计算机网络(诸如图2A的远程私有计算机网络230中的一个)的私有网络扩展。在这个实例中,以概念性方式示出用于所提供计算机网络220A的各种连接和通信路径以展示可配置网络访问约束和网络拓扑的类型,并且图3展示关于可用于创建所提供计算机网络(诸如示例性所提供计算机网络220A)的底层基础网络和连接的实例的另外细节。
具体地说,在图2B中,所提供计算机网络220A包括位于第一地理位置1 260处(例如,地理位置1处的第一数据中心处)的由CSP205提供的各种计算节点(或主机服务器计算机),其中在这个实例中,各种计算节点被配置到逻辑组264、265和266中(例如,以对应于不同子网和/或相关联的所配置联网装置,未示出)。在这个实例中,单个概念性虚拟路由器262被示出为在地理位置1处以控制那些计算节点与其他计算系统之间的通信,以便展示可能发生的通信的不同类型,尽管所提供计算机网络220A实际上可在地理位置1处具有多个或没有所配置联网装置,并且计算机网络220A可由地理位置1处的可配置网络服务以各种方式来实现,诸如借助于多个物理互连路由器或其他联网装置,通过使用底层基础网络和控制底层基础网络之上的通信的相关联模块等。在这个实例中,虚拟路由器262根据用于所提供计算机网络220A的所配置信息(包括所配置网络拓扑信息、对远程资源服务的所配置私有或其他专门化访问以及其他所配置网络访问约束信息),诸如以便将发送到所提供计算机网络220A内的网络地址的通信路由到所提供计算机网络220A上的对应目的地计算节点,并且视情况将其他通信路由到所提供计算机网络220A外部的其他网络地址。此外,虚拟路由器262可阻断或以其他方式管理所配置防火墙装置、所配置网络拓扑信息或其他所配置网络访问约束所不允许的通信。
在这个实例中,计算机网络220A被提供用于示例性客户端1,并且是对客户端1的远程计算机网络的网络扩展。客户端1的远程计算机网络包括在第一远程位置位点A 290处的多个计算系统(未示出),并且虚拟路由器262被配置来通过地理位置1处的虚拟通信链路270与那多个计算系统通信。例如,所提供计算机网络220A可包括到位点A 290处的多个计算系统的一个或多个所配置VPN连接,并且通信链路270可对应于一个或多个此类VPN连接。此外,客户端1的远程计算机网络可任选地包括一个或多个其他位置处的计算系统,诸如示出的任选位点B 292,并且如果是这样的话,虚拟路由器262还可被配置来与其他位置处的那些其他计算系统通信,诸如通过到位点B 292的任选虚拟通信链路272(例如,通过直接到位点8的一个或多个其他所配置VPN连接)。
当多个VPN连接或其他安全连接用于远程计算机网络的远程计算系统时,每个连接可对应于远程计算系统的子集(例如,通过与远程计算机网络的对应于那些远程计算系统的网络地址的子集相关联),以使得通信被路由到适当的连接。在其他实施方案中,多个VPN连接或其他安全连接可用于一个或多个位置处的远程计算系统,但是各自可支持到任何远程计算系统的通信,诸如如果多个连接是冗余替代(例如,用于负载平衡)的话。此外,在一些实施方案中,客户端的远程计算机网络可包括多个位点处的多个计算系统,但是可以仅使用到远程计算系统的单一VPN连接或其他安全连接,其中远程计算机网络负责将通信路由到适当的位点和计算系统。
此外,所提供计算机网络220A可被配置来允许所提供计算机网络220A的计算节点与通常可在互联网296或其他公共网络上访问的其他外部计算系统之间的所有通信、一些通信或不允许其间的通信。如果至少一些此类外部通信得到允许,那么虚拟路由器262还可被配置来诸如结合用于所提供计算机网络220A的任选虚拟边界路由器255,通过所提供计算机网络220A的任选虚拟通信链路278与外部那多个计算系统通信。虚拟边界路由器255可以各种方式物理地实现,诸如由CSP 205使用管理外部计算系统与地理位置1处的由CSP 205提供的各种计算节点之间的通信的一个或多个实际防火墙装置或边界路由器装置(例如,支持由CSP 205向使用CSP 205的那些计算节点的客户端提供的众多计算机网络的实际装置),通过使用底层基础网络和控制底层基础网络之上的通信(例如,以阻止被拒绝通信由所提供计算机网络220a的计算节点发送到基础网络上)的相关联模块等。此外,在概念上,虚拟边界路由器255还可有助于管理到提所供计算机网络220A外部的其他计算系统的其他通信,诸如到位点A和B处的远程客户端计算机网络的通信、到一个或多个远程资源服务的通信等。
此外,所提供计算机网络220A可被配置来对一个或多个远程资源服务提供私有或其他专门化访问,诸如通过分配所提供计算机网络220A的一个或多个网络地址以表示那些一个或多个远程资源服务,以及通过任选地配置将要采取以用于发送到那些所分配网络地址的通信的特定动作。在这个实例中,虚拟路由器262已被配置来通过所提供计算机网络220a的虚拟通信链路274274对远程资源服务294提供本地访问。因此,例如,如果所提供计算机网络220a的计算节点中的一个将通信发送到所提供计算机网络220a的映射到通信链路274274的特定网络地址,那么虚拟路由器可将那个通信转发到所提供计算机网络220a外部的远程资源服务294(例如,通过互联网或其公他共网络)。在其他实施方案中,远程资源服务294可实现是CSP205的一部分或以其他方式在地理位置1处的接口,并且如果是这样的话,发送到所提供计算机网络220A的映射到通信链路274的特定网络地址的通信替代地可转发到远程资源服务的那个接口以进行处置。
此外,在至少一些实施方案中,虚拟通信链路274可被配置来以各种方式管理通过链路发送的通信,诸如以便在那些通信被转发到远程资源服务294之前以一种或多种方式对它们进行修改,或者否则以专门化方式访问远程资源服务294。例如,在所示实施方案中,虚拟通信链路274可被配置成对应于远程资源服务294内的特定命名空间,其中由远程资源服务294提供的计算相关的资源的子集是那个命名空间的一部分。相应地,虚拟通信链路274可被配置来访问特定命名空间内的资源,诸如通过修改或转换通信以使用与特定命名空间相关联的名称或其他标识符,通过使用远程资源服务的支持指示特定命名空间的特定接口等。
此外,如果虚拟通信链路274被配置成对应于特定命名空间或以其他方式对应于由远程资源服务294提供的资源的子集,那么所提供计算机网络220A可任选地进一步被配置成包括也对应于相同远程资源服务294但被配置来以其他方式访问远程资源服务294的一个或多个其他虚拟通信链路。例如,所提供计算机网络220A可任选地包括相异虚拟通信链路276,所述相异虚拟通信链路276被配置来以与虚拟通信链路274相异的方式访问远程资源服务294,诸如以对应于相异第二命名空间,以不对应于任何特定命名空间,以使用远程资源服务294的客户的与用于通信链路274的客户标识符相异的标识符,等等。在这个实例中,虚拟通信链路274和276被配置来使用在这个实例中分别表示为链路274和276的ID 1和ID 2的不同的标识符(例如,不同的命名空间标识符)。因此,所提供计算机网络220a的计算节点可能能够访问来自远程资源294的不同类型的功能。此外,虽然此处未示出,但是所提供计算机网络220A可类似地被配置来使用到一个或多个其他远程资源服务(未示出)的其他虚拟通信链路访问那些其他远程资源服务。
除了或替代配置虚拟链路274以访问远程资源服务294的特定命名空间,在至少一些实施方案中,虚拟通信链路可被配置来向远程资源服务294提供另外的信息以允许远程资源服务294验证通信的位置或其他源是所提供计算机网络220a。例如,在所示实施方案中,虚拟通信链路274可被配置成对应于一个或多个特定标识符或者与由计算服务提供方或由远程资源服务294、294提供的计算机网络220a相关联的其他访问控制指示符,使得由通过虚拟通信链路274访问的远程资源服务294提供的新的和/或现有的计算相关的资源的子集与访问控制指示符相关联,供远程资源服务294使用来限制对那些资源的访问。
相应地,虚拟通信链路274可被配置来以各种方式使用与所提供计算机网络220a相关联的指定的另外指示符,诸如以便将通信修改成包括另外的指示符,在不修改通信的情况下连同通信一起发送另外的指示符,使用远程资源服务的支持包括此类另外的指示符的特定接口,等等。另外,如果虚拟通信链路274被配置成对应于一个或多个另外的指示符,那么所提供计算机网络220A可任选地进一步被配置成包括也对应于相同远程资源服务294但被配置来以其他方式访问远程资源服务294的一个或多个其他虚拟通信链路。例如,所提供计算机网络220A可任选地配置相异虚拟通信链路276来访问远程资源服务294而不使用任何另外的指示符(例如,以便对远程资源服务294提供与否则将可公共获得的访问相同的访问),以使用与虚拟通信链路274一起使用的那些相异的一个或多个其他另外的访问控制指示符,以使用远程资源服务294的客户的与用于虚拟通信链路274的客户标识符相异的标识符,等等。此外,虽然此处未示出,但是所提供计算机网络220a可类似地被配置来使用到一个或多个其他远程资源服务(未示出)的其他虚拟通信链路(诸如,被配置来与虚拟通信链路274使用相同的一个或多个另外的指示符或以其他方式配置的其他虚拟通信链路)来访问那些其他远程资源服务。
根据本公开的示例性实施方案,应用程序280d可在由客户端私有网络位点A 290的主机服务器托管的VMI 280a上运行。应用程序280d还可利用(即,可依赖于)由VMI 280b-280c提供的功能。此外,所提供计算机网络220A可使用提供如参考图1描述的功能的应用程序迁移服务140a。例如,应用程序迁移服务140a可用于将应用程序280d迁移到所提供网络220A内的主机服务器264。更具体地说,VMI280a-280c可被迁移,如参考图1所解释,并且在主机计算机264处分别作为VMI1、VMI2和VMI3来启动。在实例中,当例如VMI280b-280c和VMI 280a由两个不同的服务器计算机托管时,那么在迁移所有VMI之后,VMI 280b-280c可在所提供计算机网络220A处作为一个不同服务器(例如,主机服务器265)处的VMI2-VMI3来启动。此外,由于原始的VMI 280a-280c在私有子网280e中,所以在迁移之后,新的VMI VMI1-VMI3也可放置在私有子网250A中。
在所示实施方案中,除了CSP 205的地理位置1处的计算节点之外,所提供计算机网络220A还可包括位于第二地理位置2 280处(例如,在地理位置2处的相异第二数据中心处)的由CSP 205提供的计算节点284。相应地,虚拟路由器262可被配置成包括到所提供计算机网络220a在地理位置2处的部分的任选虚拟通信链路268。在这个实例中,所提供计算机网络220A在地理位置2处的部分类似地以概念性虚拟路由器282示出,以便管理去往和来自计算节点284的通信,包括通过虚拟通信链路288与所提供计算机网络220A在地理位置1处的部分通信。在各种实施方案中,CSP 205在不同地理位置处的计算节点之间的此类通信可以各种方式来处置,诸如通过借助于互联网或其他公共网络发送通信(例如,作为安全通道的一部分,所述安全通道诸如使用CSP 205所支持的加密的安全通道),通过以私有安全方式发送通信(例如,通过地理位置之间的专用租借线),等等。此外,虽然此处未示出,但是所提供计算机网络220A在地理位置2处的部分可类似地包括针对地理位置1处的部分示出的一些或所有相同类型的其他虚拟通信链路,所述其他虚拟通信链路诸如到远程客户端私有网络(例如,通过与到地理位置1的任何VPN连接相异的一个或多个VPN连接)、到远程资源服务、到互联网等。
应理解,出于示例性目的而包括图2B的示例性所提供计算机网络220A,并且由CSP 205为客户端提供的其他计算机网络可不包括所有类型的所配置通信链路和网络拓扑信息,和/或可包括此处未示出的其他类型的所配置通信链路和网络拓扑信息。例如,在一些实施方案和情况中,除了或替代计算节点,所提供计算机网络可包括所配置装置和其他资源,并且如果是这样的话,每个这样的其他资源可任选地被分配所提供计算机网络的网络地址。此外,可使用多种类型的底层物理装置、连接和模块来实现图2B中示出的概念性装置和通信链路。此外,虽然此处未示出,但是客户端可执行与远程资源服务进行的多种其他类型的交互,不管是从所提供计算机网络还是替代地其他远程计算系统,诸如以预订/登记来使用资源,接收/创建各种凭证(例如,用户ID、密码等)、从其他远程计算系统(例如,是远程私有公司网络的一部分)创建稍后从所提供计算机网络(例如,对私有公司网络的网络扩展)访问的资源和/或命名空间,等等。
图3是用于诸如通过计算服务提供方的实施方案来提供计算机网络的计算系统的示例性实施方案的网络图。具体地说,在这个实例中,数个物理计算系统共同位于数据中心300中并且通过各种联网装置和一个或多个物理网络互连。在这个实例中,由计算服务提供方使用物理计算系统和其他装置通过以下方式为客户端提供多个计算机网络:将所提供计算机网络中的每一个建立并保持为虚拟网络,并且将物理网络用作虚拟网络叠加在其上的基础网络。例如,关于图2B的实例,数据中心300可位于地理位置1处,并且所示物理计算系统可用于提供所提供计算机网络220A的计算节点264、265和266。在至少一些实施方案中,叠加网络和底层基础网络的使用可对所提供计算机网络的计算节点透明。
因此,在这个实例中,由计算服务提供方提供的计算机网络被实现为通过底层物理基础网络发送通信的虚拟叠加网络。在各种实施方案中,所提供虚拟叠加网络可以各种方式实现,诸如在一些实施方案中不对通信进行封装(例如,通过将针对物理基础网络的网络协议配置的虚拟网络的虚拟网络地址信息嵌入在通信中)。作为一个说明性实例,可使用32位1Pv4(“第四版互联网协议”)网络地址来实现虚拟网络,并且那些32-位虚拟网络地址可作为由物理基础网络使用的128-位1Pv6(“第六版互联网协议”)网络地址的一部分嵌入,诸如通过重设通信包或其他数据传输的报头(例如,使用无状态IP/ICMP转换或SIIT),或以其他方式修改此类数据传输以将它们从它们被配置所针对的第一联网协议转换成相异第二联网协议。
作为另一个说明性实例,可使用相同的网络寻址协议(例如,1Pv4或1Pv6)来实现虚拟网络和基础网络两者,并且使用虚拟网络地址的通过所提供虚拟叠加网络发送的数据传输可在其通过基础网络被发送时被修改成使用对应于基础网络的不同的物理网络地址,但是原始虚拟网络地址被存储在已修改数据传输中或以其他方式被跟踪,使得数据传输在它们离开基础网络时可被恢复至它们的原始形式。在其他实施方案中,可使用通信的封装来实现叠加网络中的至少一些。
图3所示的实例包括由计算服务提供方的实施方案操作的具有多个物理计算系统的数据中心300。数据中心300连接到数据中心300外部的一个或多个公共网络335,所述一个或多个公共网络335提供通过私有网络340对一个或多个远程计算系统345a的访问、对在其他地理位置处的各自具有多个计算系统的一个或多个其他全局可访问数据中心360的访问、以及对一个或多个其他远程计算系统345b的访问。公共网络335可以是例如可能由各个相异方操作的公共可访问网络的网络(诸如互联网),并且私有网络340可以是例如从私有网络340外部的计算系统完全或部分不可访问的公司网络。计算系统345b各自可以是例如直接连接到互联网(例如,通过电话线、电缆调制解调器、数字用户线(“DSL”)等)的家庭计算系统。
在这个实例中,计算服务提供方的管理器模块3310有助于对虚拟的所提供计算机网络进行配置,并且计算服务提供方的多个其他模块用于通过修改进入和/或离开基础网络的通信而诸如从物理基础网络的边缘实现所提供计算机网络的功能。具体地说,在这个实例中,计算服务提供方的多个节点通信管理器模块各自管理去往和来自相关联计算节点的通信,诸如所示节点通信管理器模块309a、309d和350。此外,在这个实例中,计算服务提供方的外部通信管理器模块370管理数据中心300内的物理计算系统与外部计算系统之间的通信,如下文更详细地讨论。虽然在这个实例中仅示出了单个外部通信管理器模块370,但是应理解,可使用多个装置实现模块370的功能,诸如用于冗余和负载平衡。
数据中心300包括数个物理计算系统(例如,运行一个或多个虚拟机实例的主机服务器计算机)305a-305d和355a-355n,以及计算服务提供方的CSP节点通信管理器模块350和管理器模块310,模块350在一个或多个其他计算系统(未示出)上执行以管理相关联计算系统355a-355n的通信,模块310在一个或多个计算系统(未示出)上执行。在这个示例性实施方案中,每个物理计算系统305a-305d托管多个虚拟机计算节点并且还包括虚拟机(“VM”)节点通信管理器模块(例如,作为用于物理计算系统的虚拟机管理程序监测器的一部分),诸如计算系统305a上的CSP VM节点通信管理器模块309a和虚拟机307a,并且诸如计算系统305d上的CSP VM节点通信管理器模块309d和虚拟机307d。虚拟机计算节点中的每一个可由计算服务提供方用作为客户端提供的计算机网络的相异计算节点。在这个实例中,物理计算系统355a-355n不执行任何虚拟机,并且因此各自可用作相异计算节点,所述相异计算节点是由计算服务提供方为客户端提供的计算机网络的一部分。在其他实施方案中,数据中心处的所有物理计算系统可托管或不托管虚拟机。
例如,远程计算系统345a可以是基于企业的网络的一部分。应用程序APP1可在由基于企业的网络的远程计算系统345a的主机服务器390托管的VMI1上运行。应用程序APP1还可利用(即,可依赖于)由同样由同一主机服务器390托管的VMI2和VMI3提供的功能。计算服务提供方(例如,公共云网络)的数据中心300可使用提供如参考图1描述的功能的应用程序迁移服务140a。例如,应用程序迁移服务140a可用于将应用程序APP1迁移到数据中心300内的主机服务器305b。更具体地说,VMI1-VMI3可从主机390迁移,如参考图1所解释,并且在数据中心300内的主机计算机305b处分别作为VMI1、VMI2和VMI3来启动。
原始VMI(在远程计算系统345a内的主机390上运行的VMI1-VMI3)可连接在私有子网391中。在迁移之后,新启动的VMI(主机服务器305b中的VMI1-VMI3)还可被放置在私有子网393中。此外,作为迁移过程的一部分,可将主机服务器计算机305b的名称和IP地址改变成与计算系统345a的基于企业的网络内的主机服务器390的名称(例如,“HOST 1”)和IP地址(例如,IP1)相同。
这个示例性数据中心还包括多个物理联网装置,诸如交换器315a和315b、边缘路由器325a-325c和核心路由器330a-330c。交换器315a是包括物理计算系统305a-305c的物理网络的一部分,并且连接到边缘路由器325a。交换器315b是包括物理计算系统305d、355a-355n以及提供CSP节点通信管理器模块350和CSP系统管理器模块310的计算系统的相异物理网络的一部分,并且连接到边缘路由器325b。由交换器315a-315b建立的物理网络进而通过中间互连网络320连接到彼此和其他网络(例如,公共网络335),所述中间互连网络320包括边缘路由器325a-325c和核心路由器330a-330c。边缘路由器325a-325c在两个或更多个网络之间提供网关。例如,边缘路由器325a在由交换器315a建立的物理网络与互连网络320之间提供网关。边缘路由器325c在互连网络320与公共网络335之间提供网关。核心路由器330a-330c管理互连网络320内的通信,诸如视情况通过基于此类数据传输的特性(例如,包括源和/或目的地基础网络地址、协议标识符等的报头信息)和/或互连网络320本身的特性(例如,基于物理网络拓扑等的路线)转发包或其他数据传输。
所示节点通信管理器模块管理向和从相关联计算节点发送的通信。例如,节点通信管理器模块309a管理相关联虚拟机计算节点307a,节点通信管理器模块309d管理相关联虚拟机计算节点307d,并且其他节点通信管理器模块中的每一个可类似地管理一个或多个其他相关联计算节点的群组的通信。所示节点通信管理器模块可管理计算节点之间的通信,以便在中间物理基础网络(例如,互连网络320以及与交换器315a和315b相关联的物理网络)之上叠加特定虚拟网络,并且可实现防火墙策略和其他网络访问约束以控制此类通信。外部通信管理器模块370管理进入和离开数据中心300的外部通信,诸如以关于此类外部通信进一步在数据中心300内的基础网络之上实现叠加网络。外部通信管理器模块370可采取动作以实现防火墙策略和其他网络访问约束,包括针对所提供计算机网络配置的允许对数据中心300外部的远程资源服务进行私有或其他专门化访问的访问机构,并且任选地包括到外部远程客户端计算机网络的至少一些VPN连接,或替代地可结合实现此类VPN连接的计算服务提供方的部分的其他硬件和/或软件(未示出)操作。
因此,作为一个说明性实例,计算系统305a上的虚拟机计算节点307a中的一个连同以下各项可以是客户端的特定所提供虚拟计算机网络(例如,图2B的所提供计算机网络220A)的一部分:计算系统305d虚拟机计算节点307d中的一个和计算系统355a(以及任选地这个数据中心中或同样由计算服务提供方使用的一个或多个其他数据中心360中的其他计算节点),以及用于表示虚拟网络的虚拟网络地址的1Pv4。其他虚拟机计算节点307a、虚拟机计算节点307d以及计算系统355b-355n(以及其他所示计算节点)当前可专用于向其他客户端提供的其他计算机网络,当前可未被分配给所提供计算机网络并且可供计算服务提供方使用,和/或也可以是同一特定所提供虚拟计算机网络的一部分。为客户端而在是特定所提供虚拟计算机网络的一部分的虚拟机计算节点307a上执行的程序然后可将传出通信(未示出)引导到特定所提供虚拟计算机网络的虚拟机计算节点307d,诸如通过指定那个所提供虚拟计算机网络的被分配给目的地虚拟机计算节点307d的虚拟网络地址。节点通信管理器模块309a接收传出通信,并且在至少一些实施方案中确定是否要授权发送传出通信,诸如基于关于发送虚拟机计算节点307a和/或关于目的地虚拟机计算节点307d的先前配置的信息,和/或通过与系统管理器模块310动态地交互(例如,以获得授权确定、以获得一些或所有此类信息等)。
如果节点通信管理器模块309a确定传出通信被授权(或不执行这种授权确定),那么模块309a确定对应于通信的目的地虚拟网络地址的实际物理基础网络位置。在这个实例中,互连网络使用1Pv6来表示通过互连网络连接的计算节点的实际网络地址,并且模块309a重设传出通信的报头,使得其被定向到使用实际1Pv6基础网络地址的节点通信管理器模块309d。节点通信管理器模块309a可通过例如与系统管理器模块310动态地交互来确定要使用的对应于目的地虚拟计算节点307d的虚拟网络地址的实际1Pv6目的地网络地址,或可先前确定并存储了那个信息(例如,响应于来自发送虚拟机计算节点307a的对关于那个目的地虚拟网络地址的信息的先前请求,诸如使用地址解析协议或ARP的请求)。在这个实例中,所使用的实际1Pv6目的地网络地址内嵌虚拟目的地网络地址和另外的信息,以便在不进行封装的情况下通过叠加网络发送通信。
当节点通信管理器模块309d通过互连网络320接收通信时,它从实际1Pv6目的地网络地址提取虚拟目的地网络地址和另外的信息,并且确定通信要被引导到虚拟机计算节点307d中的哪一个。节点通信管理器模块309d接着任选地诸如通过以下方式来针对目的地虚拟机计算节点307d确定通信是否被授权:从实际1Pv6源网络地址提取虚拟源网络地址和另外的信息,并且确认具有那个虚拟源网络地址的计算节点实际上由转发通信的节点通信管理器模块(在这个实例中,节点通信管理器模块309a)管理,以便阻止恶意发送方盗用源网络地址。如果确定通信被授权(或节点通信管理器模块309d不执行这种授权确定),那么模块309d诸如通过以下方式来重设传入通信的报头以使得其被引导到使用虚拟网络的适当1Pv4网络地址的目的地虚拟机计算节点307d:使用发送虚拟机计算节点的虚拟网络地址作为源网络地址并且使用目的地虚拟机计算节点的虚拟网络地址作为目的地网络地址。
在重设传入通信的报头之后,模块309d然后将已修改通信转发到目的地虚拟机计算节点。在至少一些实施方案中,在将传入通信转发到目的地虚拟机之前,模块309d还可执行与安全性相关的另外的步骤。例如,模块309d可检验发送虚拟机计算节点被授权与目的地虚拟机通信(例如,基于属于同一虚拟网络和/或基于针对那个所提供虚拟网络指定的网络访问约束信息,与同一客户或其他实体相关联,与计算节点被授权互通的不同实体相关联,等等),和/或检验传入通信是所允许类型的,诸如基于由模块309d先前获取的信息或基于与系统管理器模块310交互。
如果发送虚拟机计算节点307a替代地(或另外地)将传出通信(未示出)引导到数据中心300外部的一个或多个预期目的地计算系统,那么节点通信管理器模块309a以类似方式接收并处理传出通信。预期外部目的地计算系统可以是例如是同一特定所提供虚拟计算机网络的一部分的另一计算节点(例如,在特定所提供计算机网络是其扩展的远程虚拟客户端计算机网络上,或在同样由计算服务提供方用来提供特定虚拟计算机网络的一部分的另一数据中心360处)、远程资源服务的计算系统、在互联网上公共可访问的计算系统等。在至少一些实施方案和情况中,模块309a可首先确定是否要对发送传入通信进行授权,并且如果是的话,确定对应于通信的目的地网络地址的实际物理基础网络位置。在这个实例中,所确定物理基础网络位置对应于外部通信管理器模块370,诸如如果模块370与在其他情况下未被分配给节点通信管理器模块的所有虚拟和/或实际网络地址相关联的话。当模块370通过互连网络320接收通信时,它类似地从所接收通信提取目的地网络地址和另外的信息,并且确定是否和如何转发通信,包括任选地针对预期的目的地确定通信是否被授权。如果确定通信被授权(或模块370不执行这种授权确定),那么模块370重设传入通信的报头以使得其被引导到使用适当的1Pv4公共网络地址(或适用于公共网络335的其他网络地址)的目的地,然后通过公共网络335转发已修改通信。
因此,如以上所指出,在所示实施方案中,外部通信管理器模块370处理来自所提供计算机网络的传出通信,包括通过针对远程资源服务配置的访问机构发送到那些远程资源服务的传出通信。在至少一些实施方案和情况中,如果通过针对特定所提供计算机网络配置的访问机构将传出通信发送到远程资源服务,那么模块370和/或发送计算节点的相关联节点通信管理器模块可采取进一步动作。例如,特定所提供虚拟计算机网络可具有针对特定远程资源服务配置的映射到所述远程资源服务的特定命名空间的访问机构(例如,通过计算系统345b中的一个或多个或者通过另一数据中心360处的一个或多个计算系统提供的远程资源服务),并且发送虚拟机计算节点307a可通过所配置访问机构发送通信。针对特定所提供计算机网络配置的到远程资源服务的访问机构可以是例如特定所提供计算机网络的虚拟网络地址,所述虚拟网络地址被分配以表示那个所配置访问机构,并且如果是这样的话,那个分配的虚拟网络地址可与模块370相关联以使得传出通信被引导到模块370。
在通过公共网络335将这种传出通信转发到远程资源服务之前,模块370可采取各种动作以反映所使用访问机构的配置,诸如以修改输出通信以参考或以其他方式使用访问机构所对应于的特定命名空间。在此类情况中,模块370可以各种方式确定访问机构的命名空间和其他配置信息,诸如通过本地存储配置信息、联系系统管理器模块310以获取配置信息等。此外,模块370可以各种方式确定如何和何时修改通信以使用特定命名空间,诸如通过远程资源服务先前将对应配置信息提供给计算服务提供方(例如,指示命名空间的一个或多个特定消息参数的指示;用于命名或参考资源的一个或多个特定消息参数的指示,其任选地可包括命名空间标识符;允许指示命名空间或以其他方式使用命名空间信息的消息的类型的指示;等等)。
作为一个具体说明性实例,远程资源服务可提供数据存储服务,并且传出通信可以是对访问特定的存储相关的资源(例如,以检索所存储数据的所存储对象或其他群组)的请求。如果是这样的话,特定存储资源可先前已由客户端创建为由客户端限定的命名空间的一部分,诸如通过使用所提供计算机网络外部(例如,客户端的远程私有计算机网络上的计算系统。通过配置用于特定所提供计算机网络的访问机构以使用那同一个命名空间,所提供计算机网络的计算节点可访问并使用客户端的现有所存储资源。作为说明性实例,如果客户端的远程私有计算机网络是公司网络,那么客户端可使用不同的命名空间来存储不同类型的数据,诸如以将敏感的人力资源数据存储在第一命名空间中,将限制的软件开发软件和其他数据存储在第二命名空间中,并且通过第三命名空间存储在整个公司一般可用的其他公司数据。
如果计算服务提供方的所提供计算机网络仅由公司的特定子集(例如,人力资源人员)使用,那么特定所提供计算机网络的到远程资源服务的访问机构可被配置来使用第一命名空间获得敏感的人力资源数据。此外,特定所提供计算机网络可任选地具有第二访问机构,所述第二访问机构被配置到远程资源服务(例如,使用所提供计算机网络的不同的所分配虚拟网络地址),诸如以使用第三命名空间获得一般可用的公司数据,使得特定所提供计算机网络的计算节点可与特定所提供计算机网络的不同的本地虚拟网络地址交互以获取对不同资源群组的访问权。
作为另一说明性实例,特定所提供计算机网络的到远程资源服务的访问机构替代地可被配置来仅允许特定所提供计算机网络的计算节点具对由那些计算节点创建并使用的存储资源进行访问。如果是那样的话,计算服务提供方可诸如通过自动地生成新的命名空间(例如,在未将那个信息提供给特定所提供计算机网络的计算节点的情况下)或通过使用由客户端利用配置信息指示的新的命名空间来确定新的命名空间以与特定所提供计算机网络一起使用,并且可配置访问机构以使用新的命名空间。根据远程资源服务,计算服务提供方或者特定所提供计算机网络的计算节点还可能需要采取初始动作以在远程资源服务内创建新的命名空间。一旦新的命名空间可用,特定所提供计算机网络的计算节点可类似地使用所配置访问机构来与远程资源服务交互,从而创建是新的命名空间的一部分的新的所存储资源并且访问此类所存储资源,并且外部通信管理器模块370将视情况类似地修改传出通信以使用新的命名空间。
在一些实施方案中,除了或替代被配置来实现对应于特定远程资源服务内的特定命名空间的所配置访问机构,外部通信管理器模块370可被配置成包括与对通过访问机构发送到远程资源服务的一些或所有通信的访问控制相关的一个或多个另外的指示符,并且发送虚拟机计算节点307a可通过那个所配置访问机构发送这种通信。在通过公共网络335将这种传出通信转发到远程资源服务之前,模块370可采取各种行动以反映所使用访问机构的配置,诸如以将传出通信修改成包括访问机构所对应于的一个或多个另外的指示符,诸如通过以特定于远程资源服务的方式修改通信的报头和/或正文(例如,如果远程资源服务允许客户端指定一个或多个访问控制指示符,以便以远程资源服务所支持的方式包括一个或多个另外的指示符,不管是否替代或除了由发送虚拟机计算节点307a指定的任何指示符)。在此类情况中,模块370可以各种方式确定访问机构的另外的指示符,诸如通过本地存储信息、联系系统管理器模块310以获取信息等。此外,模块370可以各种方式确定如何和何时修改通信以使用特定的另外指示符,诸如通过远程资源服务先前将对应配置信息提供给计算服务提供方(例如,指示此类访问控制指示符的一个或多个特定消息参数的指示;用于访问资源的一个或多个特定消息参数的指示,其可任选地包括一个或多个此类访问控制指示符;允许指定一个或多个此类访问控制指示符或以其他方式使用此类访问控制指示符的消息的类型的指示;等等)。
以与先前关于将命名空间信息用于所配置访问机构讨论的实例类似的方式,远程资源服务可提供数据存储服务,并且传出通信可以是对访问特定的存储相关的资源(例如,以检索所存储数据的所存储对象或其他群组)的请求。如果是这样的话,特定存储资源先前可已经由发送虚拟机计算节点307a所属于的所提供计算机网络的计算节点中的一个创建,或可作为当前通信的一部分被新创建或访问。在一些实施方案中,根据远程资源服务,计算服务提供方还可能需要采取初始行动以指定用于在远程资源服务内使用(例如,以对它们进行限定)的一个或多个另外的指示符。发送虚拟机计算节点307a和相关联客户端可不知道另外的指示符的使用,但是虽然如此,外部通信管理器模块370也将视情况修改传出通信以使用相关联指示符。
此外,如以上所指出,在所示实施方案中,外部通信管理器模块370处置从所提供计算机网络扩展到所述扩展所对应于的远程计算机网络的传出通信,诸如通过到特定远程计算机网络的所配置VPN连接发送的传出通信。在至少一些实施方案中,计算服务提供方提供远程访问建立API,所述API允许客户端以编程方式发起对从在数据中心300远程的位置到在数据中心300处为客户端提供的计算机网络的这种VPN连接的建立,诸如以使得将适当的硬件装置、软件和/或配置信息传递到远程位置以供由客户端建立VPN连接。例如,计算系统345b中的一个可对应于出售或以其他方式提供此类硬件装置和/或软件的网上零售商,并且如果是这样的话,计算服务提供方可使用由零售商提供的单独的API来对此类硬件装置和/或软件下单,以便递送到对应于客户端的远程位置或其他指定位置(例如,如作为调用计算服务提供方的所提供API的一部分,由客户端基于由计算服务提供方先前为客户端存储的信息、基于由零售商先前为客户端存储的信息等指定)。一旦建立了这种VPN连接或其他安全连接以允许客户端远程访问所提供计算机网络,模块370就可进一步采取行动以支持安全连接,诸如通过使用安全连接来发送传出通信,所述传出通信的目标在于安全连接所对应于的远程位置处的一个或多个目的地计算系统。
因此,如上文关于图3所描述,在至少一些实施方案中,计算服务提供方通过使用底层基础网络(诸如使用计算服务提供方的各种节点通信管理器模块和计算服务提供方的一个或多个外部通信管理器模块)将虚拟计算机网络实现为叠加网络来将它们提供给客户端。在至少一些实施方案中,一个或多个系统管理器模块还可有助于配置计算节点之间的通信,诸如通过跟踪和/或管理哪些计算节点属于哪些所提供虚拟网络,并且通过(例如,诸如由特定客户或其他实体)提供关于对应于用于具体虚拟网络的虚拟网络地址的实际物理基础网络地址的信息。此外,系统管理器模块可接收目标物理计算系统上的虚拟机计算节点的指示以及虚拟机将要与其相关联的所提供虚拟网络的指示,并且然后发起针对目标物理计算系统配置虚拟机节点通信管理器模块,以便使虚拟机与虚拟网络相关联,或者节点通信管理器模块替代地可发起所述配置(例如,当虚拟机首先发起或接收通信时)。
在至少一些实施方案中,对未授权通信的检测和/或阻止可至少部分地基于一个或多个中间基础网络的拓扑,虚拟网络叠加在所述拓扑上,如先前所指出。在此类实施方案中,供这种计算节点用来通过基础网络进行通信的物理网络地址包括计算节点的虚拟网络地址的指示,并且包括与计算节点的相关联节点通信管理器模块的位置(例如,基础网络的子网络或其他部分,节点通信管理器模块为所述子网络或其他部分管理通信)对应的基础网络的局部网络地址。因此,恶意用户为了正确地构建用于是虚拟网络的一部分的计算节点的有效物理网络地址,恶意用户将需要获得对关于计算节点所属于的虚拟网络的信息的访问权,获得对关于计算节点的物理基础网络位置的拓扑的信息的访问权,以便确定相关联节点通信管理器模块的局部网络地址,并且确定如何使用那个信息来构建物理网络地址。
可以各种方式检查所构建物理网络地址的有效性,诸如通过标识嵌入所构建物理网络地址中的虚拟地址所对应于的计算节点,并且检验那个所标识计算节点的位置对应于基础网络的与局部网络地址对应的部分中的计算节点中的一个(例如,由局部网络地址所对应于的节点通信管理器模块管理的计算节点中的一个)。此外,可由诸如以下各项在各个时间检查所构建物理网络地址的有效性:接收目标在于目的地计算节点的传入通信(例如,以检验源物理网络地址是有效的)的节点通信管理器模块,据称从代表所指示的受管理计算节点的节点通信管理器模块接收消息(例如,请求所关注预期目的地计算节点的物理网络地址的消息)的管理器模块,等等。
图4是示出根据本公开的示例性实施方案的在多租户环境中运行的使用应用程序迁移服务的多个虚拟机实例的示例性系统图。更具体地说,图4是示出其中可使用本文描述的实施方案的一个实施方案的基于网络的计算服务提供方400的计算系统图。通过背景,计算服务提供方400(即,云提供方)能够将计算和存储能力作为服务传递到最终接受方(例如,租户或客户)的社区。
在示例性实施方案中,计算服务提供方400可由组织或代表组织为所述组织建立。也就是说,计算服务提供方400可提供“私有云环境”。在另一实施方案中,计算服务提供方400支持其中多个客户独立地操作的多租户环境(即,公共云环境)。就此而言,多个客户(例如,多个企业)可租用多租户环境内的资源,诸如服务器计算机。
总而言之,计算服务提供方400可提供以下模型:基础架构即服务(“IaaS”)、平台即服务(“PaaS”)和/或软件即服务(“SaaS”)。可提供其他模型。对于IaaS模型,计算服务提供方400可提供计算机作为物理机或虚拟机和其他资源。虚拟机可由管理程序作为客机运行,如下文进一步描述。PaaS模型传递计算平台,所述计算平台可包括操作系统、编程语言执行环境、数据库和web服务器。应用程序开发者可在计算服务提供方平台上开发并运行他们的软件解决方案而无采购和管理底层硬件和软件的成本。SaaS模块允许应用程序软件在计算服务提供方中安装和运行。在一些实施方案中,终端用户使用联网客户装置(诸如运行web浏览器或其他轻型客户应用程序的台式计算机、膝上型计算机、平板、智能手机等)访问计算服务提供方400。本领域的技术人员将认识到计算服务提供方400可描述为“云”环境。
具体示出的计算服务提供方400包括多个服务器计算机402A-402D。虽然仅示出了四个服务器计算机,但是可使用任何数目的服务器计算机,并且大的中心可包括数以千计的服务器计算机。服务器计算机402A-402D可提供用于执行软件实例406A-406D的计算资源。在一个实施方案中,实例406A-406D是虚拟机。如本领域中已知的,虚拟机是像物理机一样执行应用程序的机器(即,计算机)的软件实现方式的实例。在所述实例中,服务器计算机402A-402D中的每一个可被配置来执行管理程序408或被配置成能够在单个服务器上执行多个实例406的另一种类型的程序。例如,服务器402A-402D中的每一个可被配置(例如,通过管理程序408)来支持一个或多个虚拟机分区,其中每个虚拟机分区能够运行一个虚拟机实例(例如,服务器计算机402A能够被配置来支持各自运行对应虚拟机实例的三个虚拟机分区)。此外,实例406中的每一个可被配置来执行一个或多个应用程序。
在示例性实施方案中,服务器计算机402A-402D中的每一个还可包括应用程序迁移服务(AMS)(例如,440A-440D)和性能指标模块(例如,441A-441D)。应用程序迁移服务440A-440D可具有与参考图1描述的应用程序迁移服务140a类似的功能。此外,当应用程序迁移服务将应用程序(以及相关联虚拟机实例)从基于企业的网络迁移到计算服务提供方400的云网络时,性能指标模块441A-441D可提供对应主机(402A-402D)的性能指标以便确定VMI类型和主机服务器类型。性能指标模块441A-441D具有与图1中的性能指标模块139类似的功能。
计算服务提供方400还可包括应用程序迁移服务440。应用程序迁移服务440可包括合适的电路、逻辑和/或代码并且可以可操作来执行本文所述的功能(例如,类似于参考图1-3描述的应用程序迁移服务140a的功能),所述功能包括使用资源监测指标、相关性信息以及私有子网信息来将应用程序从基于企业的网络(即,私有客户端网络)迁移到计算服务提供方的云网络。应用程序迁移服务440可实现为提供方400内的独立服务、实现为专用服务器(类似于服务器402A-402D),和/或可实现为执行管理功能的服务器计算机404的一部分(或实现为单独服务器计算机402A-402D的一部分,如上文所解释)。例如,应用程序迁移服务440可实现为在服务器的操作系统上运行的软件应用程序(例如,实现为管理部件410(如图5所示)的一部分)。
应理解,尽管本文所公开的实施方案主要是在虚拟机的情境中描述的,但是其他类型的实例也可与本文所公开的概念和技术一起使用。例如,本文所公开的技术可与存储资源、数据通信资源以及其他类型的计算资源一起使用。本文所公开的实施方案也可直接在计算机系统上执行应用程序的全部或一部分,而不利用虚拟机实例。
一个或多个服务器计算机404可专留用于执行用于管理服务器计算机402、实例406、管理程序408和/或应用程序迁移服务440的操作的软件部件。例如,服务器计算机404可执行管理部件410。客户可访问管理部件410以配置客户所购买的实例406的操作的各个方面。例如,客户可购买、租用或租借实例并且对实例的配置做出改变。客户还可指定关于所购买实例如何响应于需求而缩放的设置。管理部件410还可包括策略文档(例如,图5中的564)以实现客户策略,诸如与应用程序迁移服务440有关的策略。
服务器计算机404还可包括存储器452,其可由应用程序迁移服务440用作处理存储器。自动缩放部件412可基于由客户限定的规则缩放实例406。在一个实施方案中,自动缩放部件412允许客户指定用于确定何时应实例化新实例的放大规则以及用于确定何时应终止现有实例的缩小规则。自动缩放部件412可由在不同服务器计算机402或其他计算装置上执行的数个子部件组成。自动缩放部件412可通过内部管理网络监测可用计算资源并且基于需要修改可用资源。
部署部件414可用于帮助客户部署计算资源的新实例406。部署部件可访问与实例相关联的账户信息,诸如谁是账户的所有者、信用卡信息、所有者的国家等。部署部件414可接收来自客户的配置,所述配置包括描述应如何配置新实例406的数据。例如,所述配置可以:指定将要在新实例406中安装的一个或多个应用程序,提供将要被执行用于配置新实例406的脚本和/或其他类型的代码,提供指定应如何准备应用程序高速缓存的高速缓存逻辑以及其他类型的信息。部署部件414可以利用客户提供的配置和高速缓存逻辑来配置、预先准备和启动新实例406。所述配置、高速缓存逻辑和其他信息可由客户使用管理部件410来指定或通过直接将此信息提供给部署部件414来指定。实例管理器(例如,图5中的550)可被认为是部署部件414的一部分。
客户账户信息415可包括与多租户环境的客户相关联的任何期望的信息。例如,客户账户信息可包括客户的唯一标识符、客户地址、帐单信息、许可信息、用于启动实例的自定义参数、调度信息、自动缩放参数、用于访问账户的先前IP地址等。
网络430可用于互连服务器计算机402A-402D和服务器计算机404。网络430可以是局域网(LAN)并且可连接到广域网(WAN)440,使得终端用户可访问计算服务提供方400。应理解,图4中示出的网络拓扑已简化,并且可利用更多的网络和联网装置来互连本文所公开的各种计算系统。
图5示出根据一个实施方案的包括与控制平面相关联的多个管理部件的示例性系统的其他细节,所述多个管理部件可用于迁移一个或多个虚拟机实例。更具体地说,图5更详细地示出管理部件410,所述管理部件410可在计算服务提供方400的多租户环境内实现不连续的迁移服务120。
为了访问和利用实例(诸如图4的实例406),可使用客户装置。客户装置510可以是多种计算装置、移动装置或其他装置(包括蜂窝电话、智能手机、手持式计算机、个人数字助理(PDA)、台式计算机等)中的任一种。客户装置510可通过端点512与计算服务提供方400通信,所述端点512可以是被设计来接收并处理应用程序接口(API)请求的DNS地址。具体地说,端点512可以是被配置来暴露API的web服务器。使用API请求(例如,图1中的190),客户装置510可请求实现本文所述的任何功能(例如,请求用于迁移应用程序的相关性信息155、资源监测指标160和私有子网信息150,如参考图1所描述)。可以在计算服务提供方400内部的其他服务515可同样地向端点512做出API请求。例如,客户装置510可使用API请求(例如,图1中的190)来传达与迁移应用程序相关联的客户请求(例如,客户可响应于来自计算服务提供方的推荐,确认对用于选择VMI目的的VMI类型和主机服务器类型以及用于迁移应用程序的主机的推荐;客户还可提供他们自己对用于迁移的VMI和主机的具体类型的选择)。来自客户端114的API请求(例如,190)可通过准入控制514并且到达应用程序迁移服务440上以便访问策略文档564和/或请求迁移相关的服务。管理门户566可由客户或计算服务提供方300的管理员访问和改变策略文档564。
当将应用程序从基于企业的网络迁移到计算服务提供方时,策略文档564可指定例如与选择VMI类型和服务器计算机类型相关的一个或多个策略。更具体地说,策略文档564可指定一个或多个VMI类型和一个或多个服务器架构类型(例如,基于存储器、CPU速度、磁盘空间等),并且可提供对VMI类型和服务器架构类型两者的推荐,这可基于资源监测度量与可用主机服务器和VMI的性能度量的匹配自动地选择。
可能包括在或可能未包括在计算服务提供方400中(和/或管理部件410内)的其他一般管理服务包括准入控制514,例如,一起作为准入控制web服务操作的一个或多个计算机。准入控制514可对API请求进行认证、检验和拆包以用于计算服务提供方400内的数据服务或存储。容量跟踪器516负责根据容量的预测、预配置以及实时配置和分配确定服务器需要如何被配置以便通过管理并配置实际库存来满足对不同实例类型的需要。容量跟踪器516将可用库存的池保持在容量池数据库518中。容量跟踪器516还可监测容量水平,从而知道资源是容易获得的还是有限的。
实例管理器550控制网络中的虚拟机实例的启动和终止。当接收到指令(诸如通过API请求)以启动实例时,实例管理器550从容量池518拉取资源并且在所决定主机服务器计算机上启动实例。存储管理器522和网络资源管理器524与实例管理器类似。存储管理器522与存储卷的起动和终止有关,而网络资源管理器524与路由器、交换器、子网等的起动和终止有关。分区网络540关于图6得到进一步描述,并且包括实例在其上启动的物理层。
应用程序迁移服务440可执行本文描述(例如,如参考140a和/或140b所描述)的迁移相关的功能。应用程序迁移服务440可与容量跟踪器516通信以接收关于可用于迁移和启动实例(或客户实体所请求的其他网络资源)的可用分区和/或主机服务器的信息。此外,与准入控制514的通信可用于启动所迁移实例,并且与分区网络540的通信可用于执行影响多个分区的迁移相关的功能(例如,迁移在一个或多个服务器计算机上运行的多个VMI)。
图6示出可根据本公开的一个实施方案配置的多个主机计算机、路由器和交换器的实例,所述多个主机计算机、路由器和交换器是用于运行虚拟机实例的硬件资产,其中主机计算机具有应用程序迁移相关的功能。更具体地说,图6示出分区网络640和与其相关联的物理硬件。分区网络640可包括由路由器(诸如路由器616)联接在一起的多个数据中心(诸如数据中心610a、…、610n)。
路由器616读取所接收包中的地址信息并且确定包的目的地。如果路由器判定不同的数据中心包含主机服务器计算机,那么包被转发到那个数据中心。如果包被定址到数据中心610a中的主机,那么所述包被传递到网络地址转换器(NAT)618,其将包的公共IP地址变换成私有IP地址。NAT 618还将私有地址转换成绑定在数据中心610a的外部的公共地址。另外的路由器620可联接到NAT 618以将包路由到主机服务器计算机的一个或多个机架630。每个机架630可包括联接到多个主机服务器计算机的一个交换器632。具体的主机服务器计算机在641处的放大视图中示出。
每个主机641具有底层硬件650,其可包括网络接口卡、一个或多个CPU、存储器等(未在图6中示出)。管理程序或内核层660在硬件650上方运行层。管理程序或内核层660可分类为1型或2型管理程序。1型管理程序直接在主机硬件650上运行以控制硬件并且管理客机操作系统。2型管理程序在常规的操作系统环境内运行。因此,在2型环境中,管理程序可以是在操作系统上方运行的相异层,并且操作系统与系统硬件交互。不同类型的管理程序包括Xen-基础、Hyper-V、ESXi/ESX、Linux等,但也可使用其他管理程序。
管理层670可以是管理程序的一部分或与其分离,并且通常包括访问硬件650所需的装置驱动器。分区680是由管理程序隔离的逻辑单元。每个分区680可被分配其自己的硬件层内存、CPU分配、存储等的部分。此外,每个分区可包括虚拟机和其自己的主机操作系统(例如,VMI1可在分区1上运行并且VMIn可在分区n上运行)。这样,每个分区680是被设计来独立于其他分区支持其自己的虚拟机的抽象容量部分。
此外,当虚拟机实例(例如,VMI1)被迁移时(例如,从计算系统345a的客户端私有网络340内的主机服务器390迁移到计算服务提供方的数据中心300中的主机服务器305b),新启动的VMI1将与跟计算系统345a的先前VMI1所使用相同的公共和私有IP地址相关联。这在NAT 618的放大视图643处示出。如在643处所见,即使在应用程序/VMI迁移之后在数据中心610a中启动的每个VMI(或在数据中心610a中运行VMI的每个服务器)与跟所迁移的基于企业的网络VMI的公共/私有IP地址相同的公共IP地址(IP1、…、IPn)和私有IP地址(PIP1、…、PIPn)相关联。此外,路由信息(即,用于托管VMI的特定服务器计算机的路由信息)也可保持不同(例如,路由信息“路由1”与VMI1相关联并且路由信息“路由n”与VMIn相关联)。
图7是根据本公开实施方案的将应用程序从基于企业的网络迁移到计算服务提供方的多租户网络的示例性方法的流程图。参考图1-3和图7,示例性方法700可在702处开始,此时,在基于企业的网络内接收到迁移在第一虚拟机实例上运行的应用程序的请求。例如,用户可使用接口122指定应用程序名称(例如,应用程序185的名称)并且可通过激活软件按钮122b来发起迁移。
在704处,可通过标识基于企业的网络内的至少第二虚拟机实例来确定应用程序的相关性,所述至少第二虚拟机实例与应用程序相关联。例如,应用程序迁移服务140a可使用API请求190中的一个来获取相关性信息155。相关性信息155可标识被选择来迁移的应用程序(例如,185)、所述应用程序在其上运行的VMI(例如,180a)以及应用程序185所使用或依赖于的一个或多个另外的VMI(例如,VMI180b-180c)。
在706处,可接收与由第一虚拟机实例和至少第二虚拟机实例使用的硬件资源相关联的资源监测指标。例如,应用程序迁移服务140a可使用API请求190中的一个来获取资源监测指标160,其提供关于由VMI 180a-180c对主机服务器计算资源(即,与托管VMI 180a-180c的主机服务器175a相关联的计算资源)的使用的信息。在708处,可基于资源监测指标针对至少第一虚拟机实例和第二虚拟机实例中的每一个确定多租户网络处的服务器计算机类型和虚拟机实例类型。
例如,在获取相关性信息155和资源监测指标160之后,应用程序迁移服务140a可使资源监测指标160中的一个或多个与主机服务器105a(或剩余主机服务器105a、…、105n中的任一个)的性能指标139匹配,以选择或以其他方式确定(例如,从策略文档,诸如564)计算服务环境100内的虚拟机实例类型(用于迁移VMI 180a-180c)和主机服务器计算机类型来托管来自客户端私有网络170的所迁移VMI(与所迁移应用程序)。性能指标139可包括主机服务器计算机105a(或剩余主机服务器105a、…、105n中的任一个)的CPU速度、存储器容量、存储容量、网卡特性(例如,速度)、视频卡特性(例如,分辨率和视频处理速度)、磁盘I/O速度等中的一个或多个。
在710处,可将第一虚拟机实例和至少第二虚拟机实例从基于企业的网络迁移到所确定虚拟机实例类型的至少一个虚拟机实例。例如,可将VMI 180a-180c从客户端私有网络170迁移到计算服务环境100。更具体地说,至少一种文件打包格式(例如,OVF)可用于包装VMI180a-180c,将它们迁移到计算服务环境100,然后在所选择VMI类型的并且由所选择主机服务器计算机类型的主机服务器托管的VMI上启动它们,如由主机/VMI类型选择141b所指示。所迁移VMI180a-180c可传输到由所选择主机服务器计算机中的一个或多个托管的所选择VMI(即,VMI传递141c)并在其上启动。
第一虚拟机实例(例如,180a)可从基于企业的网络(170)迁移到计算服务环境100处的所确定虚拟机实例类型的至少第一虚拟机实例(例如,130a、…、130n中的一个)。至少第二虚拟机实例(180b-180c)可从基于企业的网络(170)迁移到所确定虚拟机实例类型的至少第二虚拟机实例,至少第一虚拟机实例和至少第二虚拟机实例由多租户网络(100)内的服务器计算机(105a)托管。
基于企业的网络(170)可包括私有网络。应用程序迁移服务140a可确定第一虚拟机实例(180a)和至少第二虚拟机实例(180b-180c)是否在私有网络的子网络中。如果第一虚拟机实例(180a)和至少第二虚拟机实例(180b-180c)在私有网络的单个子网络(245)中,那么应用程序迁移服务140a可针对运行所迁移应用程序的至少一个虚拟机实例(VMI1)在多租户网络(205)内创建子网络(250)。
应用程序迁移服务140a可确定基于企业的网络中托管第一虚拟机实例(180a)和至少第二虚拟机实例(180b-180c)的至少一个主机服务器计算机(175a)的名称和IP地址。应用程序迁移服务140a可将名称和IP地址分配给多租户网络内的所述服务器计算机类型的服务器计算机(例如,105a),所述名称和IP地址与跟基于企业的网络(170)中的至少一个主机服务器计算机(例如,175a)相关联的名称和IP地址相同。
图8是根据本公开实施方案的将应用程序从基于企业的网络迁移到计算服务提供方的多租户网络的另一示例性方法的流程图。参考图1-3和图8,示例性方法800可在802处开始,此时,可在多租户网络处接收到与由基于企业的网络处的服务器计算机托管的至少一个应用程序对计算资源的使用相关联的资源监测指标。例如,应用程序迁移服务140a可使用API请求190中的一个来获取资源监测指标160,其提供关于由与应用程序185相关联的VMI 180a-180c对主机服务器计算资源(即,与托管VMI 180a-180c的主机服务器175a相关联的计算资源,所述资源由应用程序185使用)的使用的信息。
在804处,可至少部分地基于资源监测指标来选择由计算服务提供方的多租户网络内的服务器计算机托管的虚拟机实例的虚拟机实例类型。例如,在获取相关性信息155和资源监测指标160之后,应用程序迁移服务140a可使资源监测指标160中的一个或多个与主机服务器105a(或剩余主机服务器105a、…、105n中的任一个)的性能指标139匹配,以选择或以其他方式确定(例如,从策略文档,诸如564)计算服务环境100内的虚拟机实例类型(用于迁移VMI 180a-180c)和主机服务器计算机类型来托管来自客户端私有网络170的所迁移VMI(与所迁移应用程序)。性能指标139可包括用于主机服务器计算机105a(或剩余主机服务器105a、…、105n中的任一个)的CPU速度、存储器容量、存储装置容量、网卡特性(例如,速度)、视频卡特性(例如,分辨率和视频处理速度)、磁盘I/O速度等。
在806处,可将至少一个应用程序从基于企业的网络迁移到由多租户网络内的服务器计算机托管的虚拟机实例。例如,可将VMI180a-180c从客户端私有网络170迁移到计算服务环境100。更具体地说,至少一种文件打包格式(例如,OVF)可用于包装VMI 180a-180c,将它们迁移到计算服务环境100,然后在所选择VMI类型的并且由所选择主机服务器计算机类型的主机服务器托管的VMI上启动它们,如由主机/VMI类型选择141b所指示。所迁移VMI 180a-180c可传输到由所选择主机服务器计算机中的一个或多个托管的所选择VMI(即,VMI传递141c)并在其上启动。
图9是根据本公开实施方案的将应用程序从基于企业的网络迁移到计算服务提供方的多租户网络的又一示例性方法的流程图。参考图1-3和图9,示例性方法900可在902处开始,此时,响应于接收对迁移托管在基于企业的网络内的第一虚拟机实例上的应用程序的请求,可确定基于企业的网络内托管应用程序的至少第二虚拟机实例。例如,应用程序迁移服务140a可使用API请求190中的一个来获取相关性信息155。相关性信息155可标识应用程序185在其上运行的虚拟机(即,VMI 180a)以及应用程序185可使用(或依赖于)的任何其他VMI(即,VMI 180b-180c)。
在904处,可将由应用程序对基于企业的网络中的计算资源的使用映射到与多租户网络内的计算资源相关联的性能指标。在906处,可至少部分地基于映射来在多租户网络内选择虚拟机实例类型和服务器计算机类型。例如,在获取相关性信息155和资源监测指标160之后,应用程序迁移服务140a可将资源监测指标160中的一个或多个映射到主机服务器105a(或剩余主机服务器105a、…、105n中的任一个)的性能指标139,以选择计算服务环境100内的虚拟机实例类型(用于迁移VMI 180a-180c)和主机服务器计算机类型来托管来自客户端私有网络170的所迁移VMI(与所迁移应用程序)。性能指标139可包括用于主机服务器计算机105a(或剩余主机服务器105a、…、105n中的任一个)的CPU速度、存储器容量、存储装置容量、网卡特性(例如,速度)、视频卡特性(例如,分辨率和视频处理速度)、磁盘I/O速度等。
在908处,可将第一虚拟机实例从基于企业的网络迁移到所选择虚拟机实例类型的并且由多租户网络内的所选择服务器计算机类型的服务器计算机托管的第一虚拟机实例,从而将应用程序从基于企业的网络迁移到多租户网络。例如,可将VMI 180a-180c从客户端私有网络170迁移到计算服务环境100。更具体地说,至少一种文件打包格式(例如,OVF)可用于包装VMI 180a-180c,将它们迁移到计算服务环境100,然后在所选择VMI类型的并且由所选择主机服务器计算机类型的主机服务器托管的VMI上启动它们,如由主机/VMI类型选择141b所指示。所迁移VMI 180a-180c可传输到由所选择主机服务器计算机中的一个或多个托管的所选择VMI(即,VMI传递141c)并在其上启动。
根据本公开的示例性实施方案并且参考图7-9中描述的任何方法,在主机/VMI类型选择(141b)和VMI传递(141c)之前,作为初始步骤,应用程序迁移服务140a可执行VPC和子网创建和分配(141a)。
可鉴于以下条款对本公开的各个实施方案进行描述:
1.一种将应用程序从基于企业的网络迁移到计算服务提供方的多租户网络的方法,所述方法包括:
接收对迁移在所述基于企业的网络内的第一虚拟机实例上运行的应用程序的请求;
通过标识所述基于企业的网络内的至少第二虚拟机实例来确定所述应用程序的相关性,所述至少第二虚拟机实例与所述应用程序相关联;
接收与由所述第一虚拟机实例和所述至少第二虚拟机实例使用的硬件资源相关联的资源监测指标,所述硬件资源与托管所述第一虚拟机实例和所述至少第二虚拟机实例的至少一个主机服务器计算机相关联;
基于所述资源监测指标针对至少所述第一虚拟机实例和所述第二虚拟机实例中的每一个确定所述多租户网络处的服务器计算机类型和虚拟机实例类型;以及
将所述第一虚拟机实例和所述至少第二虚拟机实例从所述基于企业的网络迁移到所确定虚拟机实例类型的至少一个虚拟机实例,从而将所述应用程序从所述基于企业的网络迁移到所述多租户网络,所述至少一个虚拟机实例由所述多租户网络内的所确定服务器计算机类型的服务器计算机托管。
2.根据条款1所述的方法,其中所述迁移包括:
将所述第一虚拟机实例从所述基于企业的网络迁移到所确定虚拟机实例类型的至少第一虚拟机实例;以及
将所述至少第二虚拟机实例从所述基于企业的网络迁移到所确定虚拟机实例类型的至少第二虚拟机实例,所述至少第一虚拟机实例和所述至少第二虚拟机实例由所述多租户网络内的所述服务器计算机托管。
3.根据条款1所述的方法,其中所述基于企业的网络包括私有网络并且所述方法还包括:
确定所述第一虚拟机实例和所述至少第二虚拟机实例是在所述私有网络的单个子网络中还是分开的子网络中。
4.根据条款3所述的方法,其包括:
当所述第一虚拟机实例和所述至少第二虚拟机实例在所述私有网络的单个子网络中时,针对运行所迁移应用程序的所述至少一个虚拟机实例在所述多租户网络内创建子网络;以及
当所述第一虚拟机实例和所述至少第二虚拟机实例在所述私有网络的分开的子网络中时,在所述多租户网络中创建至少第一子网络和第二子网络,所述第一子网络用于托管所确定虚拟机实例类型的至少第一虚拟机实例,并且所述第二子网络用于托管所确定虚拟机实例类型的至少第二虚拟机实例。
5.根据条款1所述的方法,其包括:
确定所述基于企业的网络中托管所述第一虚拟机实例和所述至少第二虚拟机实例的所述至少一个主机服务器计算机的名称和IP地址。
6.根据条款5所述的方法,其包括:
将名称和IP地址分配给所述多租户网络内的所述服务器计算机类型的所述服务器计算机,所述名称和所述IP地址与跟所述基于企业的网络中的所述至少一个主机服务器计算机相关联的名称和IP地址相同。
7.一种在其上包括指令的计算机可读存储装置,所述指令用于执行将应用程序从基于企业的网络迁移到计算服务提供方的多租户网络的方法,所述方法包括:
在所述多租户网络处接收与由所述基于企业的网络处的服务器计算机托管的至少一个应用程序对计算资源的使用相关联的资源监测指标;
选择由所述计算服务提供方的所述多租户网络内的服务器计算机托管的虚拟机实例的虚拟机实例类型,所述选择至少部分地基于所述资源监测指标;以及
将所述至少一个应用程序从所述基于企业的网络迁移到由所述多租户网络内的所述服务器计算机托管的所述虚拟机实例。
8.如条款7所述的计算机可读存储装置,其中所述选择包括使所述资源监测指标与跟所述多租户网络内的所述服务器计算机相关联的性能指标匹配。
9.如条款8所述的计算机可读存储装置,其中:
所述资源监测指标包括所述至少一个应用程序对所述基于企业的网络中的CPU、存储器和磁盘I/O的实际使用;并且
所述性能指标包括所述多租户环境中的所述服务器计算机的CPU速度、存储器容量和磁盘I/O速度。
10.如条款7所述的计算机可读存储装置,其还包括:
从所述基于企业的网络内的迁移服务获得相关性信息,所述相关性信息标识与所述应用程序相关联并且在所述基于企业的网络中运行的一个或多个虚拟机实例。
11.如条款10所述的计算机可读存储装置,其中所述迁移所述至少一个应用程序还包括:
将所述一个或多个虚拟机实例从所述基于企业的网络迁移到由所述多租户网络内的所述服务器计算机托管的对应的一个或多个虚拟机实例,其中所述迁移包括将所述一个或多个虚拟机实例从与所述基于企业的网络兼容的虚拟机实例格式变换成与所述多租户网络兼容并且使用与所述多租户网络兼容的至少一个驱动器的虚拟机实例格式。
12.如条款7所述的计算机可读存储装置,其中所述选择由所述多租户网络内的所述服务器计算机托管的所述虚拟机实例的所述虚拟机实例类型自动地发生并且无需用户干预。
13.如条款7所述的计算机可读存储装置,其还包括:
提供对所述虚拟机实例类型和所述多租户网络内的所述服务器计算机的服务器计算机类型中的一个或两个的至少一个推荐;以及
响应于所述至少一个推荐,接收对所述虚拟机实例类型和所述服务器计算机的所述服务器计算机类型的选择。
14.如条款7所述的计算机可读存储装置,其还包括:
响应于对来自所述多租户网络的信息的API请求,接收所述资源监测指标。
15.如条款14所述的计算机可读存储装置,其还包括:
响应于所述API请求,接收标识与由所述基于企业的网络处的所述至少一个应用程序使用的所述计算资源相关联的至少一个私有网络的信息,其中所述计算资源由主机名称和主机IP地址标识。
16.如条款15所述的计算机可读存储装置,其还包括:
针对所述多租户网络内的所述服务器计算机创建私有网络;以及
分配所述多租户网络内的所述服务器计算机的名称和IP地址,所述名称和所述IP地址与所述基于企业的网络处的所述计算资源的所述名称和所述IP地址相同。
17.一种用于将应用程序从基于企业的网络迁移到计算服务提供方的多租户网络的系统,所述系统包括:
多个主机服务器计算机,其联接在一起以形成所述多租户网络,所述主机服务器计算机的至少一部分用于执行与客户账户相关联的多个虚拟机;以及
应用程序迁移服务,其可操作来:
响应于接收对迁移托管在所述基于企业的网络内的第一虚拟机实例上的应用程序的请求,确定所述基于企业的网络内托管所述应用程序的至少第二虚拟机实例;
将由所述应用程序对所述基于企业的网络中的计算资源的使用映射到与所述多租户网络内的计算资源相关联的性能指标;
至少部分地基于所述映射,在所述多租户网络内选择虚拟机实例类型和服务器计算机类型;以及
将所述第一虚拟机实例从所述基于企业的网络迁移到所选择虚拟机实例类型的并且由所述多租户网络内的所选择服务器计算机类型的服务器计算机托管的第一虚拟机实例,从而将所述应用程序从所述基于企业的网络迁移到所述多租户网络。
18.根据条款17所述的系统,其中所述应用程序迁移服务可操作来:
将所述至少第二虚拟机实例从所述基于企业的网络迁移到所选择虚拟机实例类型的并且由所述多租户网络内的所选择服务器计算机类型的所述服务器计算机托管的至少第二虚拟机实例。
19.根据条款17所述的系统,其中所述应用程序迁移服务可操作来:
在所述多租户网络处接收指示由所述基于企业的网络中的所述应用程序对计算资源的所述使用的资源监测指标。
20.根据条款17所述的系统,其中所述应用程序迁移服务可操作来:
响应于API请求,接收指示与所述基于企业的网络中托管所述第一虚拟机实例和所述至少第二虚拟机实例的至少一个服务器计算机相关联的私有子网络的信息;
在所述多租户网络处创建虚拟私有网络;并且
在所述虚拟私有网络内启动用于所述服务器计算机的私有子网络。
图10描绘其中可实现所描述的创新的合适计算环境1000的一般化实例。计算环境1000并不意在对使用范围或功能提出任何限制,因为创新可在不同的通用或专用计算系统中实现。例如,计算环境1000可以是多种计算装置中的任一种(例如,台式计算机、膝上型计算机、服务器计算机、平板计算机等)。
参考图10,计算环境1000包括一个或多个处理单元1010、1015和存储器1020、1025。在图10中,这种基本配置1030被包括在虚线内。处理单元1010、1015执行计算机可执行指令。处理单元可以是通用中央处理单元(CPU)、专用集成电路(ASIC)中的处理器或任何其他类型的处理器。在多处理系统中,多个处理单元执行计算机可执行指令以提高处理能力。例如,图10示出中央处理单元1010以及图形处理单元或协处理单元1015。有形存储器1020、1025可以是易失性存储器(例如,寄存器、高速缓存、RAM)、非易失性存储器(例如,ROM、EEPROM、闪存等)或这两种存储器的可由处理单元访问的一些组合。存储器1020、1025以适用于由处理单元执行的计算机可执行指令的形式存储实现本文所述的一个或多个创新的软件1080。
计算系统可具有另外的特征。例如,计算环境1000包括存储装置1040、一个或多个输入装置1050、一个或多个输出装置1060以及一个或多个通信连接1070。诸如总线、控制器或网络互连的互连机构(未示出)将计算环境1000的部件互连起来。通常,操作系统软件(未示出)为在计算环境1000中执行的其他软件提供操作环境,并且协调计算环境1000的部件的活动。
有形存储装置1040可以是可移动或不可移动的,并且包括磁盘、磁带或盒式磁带、CD-ROM、DVD或任何其他介质,它们可用于以非暂时性方式存储信息并且可在计算环境1000内被访问。存储装置1040存储实现本文所述的一个或多个创新的软件1080的指令。
输入装置1050可以是触摸输入装置(诸如键盘、鼠标、笔或跟踪球)、语音输入装置、扫描装置或向计算环境1000提供输入的另一种装置。输出装置1060可以是显示器、打印机、扬声器、CD刻录机或提供来自计算环境1000的输出的另一种装置。
通信连接1070允许通过通信介质与另一计算实体通信。通信介质在已调制数据信号中传达信息,诸如计算机可执行指令、音频或视频输入或输出或其他信息。已调制数据信号是一种信号,所述信号使得其一个或多个特性被设定或改变,其方式为使得对信号中的信息进行编码。以举例而非限制的方式,通信介质可使用电、光、RF或其他载体。
尽管为了便于呈现而以特定的顺序次序描述了所公开方法中的一些的操作,但应理解,这种描述方式包括重排,除非下文陈述的特定语言要求特定排序。例如,顺序地描述的操作在某些情况下可重排或同时执行。此外,为了简单起见,附图可不示出所公开方法可与其他方法结合使用的各种方式。
任何所公开方法可实现为存储在一个或多个计算机可读存储介质(例如,一个或多个光学介质光盘、易失性存储器部件(诸如DRAM或SRAM)或非易失性存储器部件(诸如闪存或硬盘驱动器))上并且在计算机(例如,任何可商购获得的计算机,包括智能电话或包括计算硬件的他移动装置)上执行的计算机可执行指令。术语计算机可读存储介质不包括通信连接,诸如信号和载波。用于实现所公开技术的任何计算机可执行指令以及在所公开实施方案的实现期间创建和使用的任何数据可存储在一个或多个计算机可读存储介质上。计算机可执行指令可以是例如专用软件应用程序或通过web浏览器访问或下载的软件应用程序或其他软件应用程序(诸如远程计算应用程序)的一部分。此类软件可使用一个或多个网络计算机例如在单个本地计算机(例如,任何合适的可商购获得的计算机)上或在网络环境(例如,通过互联网、广域网、局域网、客户-服务器网络(诸如云计算网络)或其他此类网络)中执行。
为了清楚起见,仅描述了基于软件的具体实施的某些选定方面。省略了本领域中众所周知的其他细节。例如,应理解,所公开技术不限于任何特定计算机语言或程序。例如,所公开技术可由以C++、Java、Perl、JavaScript、Adobe Flash或任何其他合适的编程语言写入的软件来实现。类似地,所公开技术不限于任何特定计算机或硬件类型。合适的计算机和硬件的某些细节是众所周知的并且不需要在本公开中进行详细陈述。
还应很好地理解,可至少部分地由一个或多个硬件逻辑部件替代软件来执行本文所述的任何功能。例如而非进行限制,可使用的说明性类型的硬件逻辑部件包括现场可编程门阵列(FPGA)、程序特定集成电路(ASIC)、程序特定标准产品(ASSP)、片上系统的系统(SOC)、复杂可编程逻辑装置(CPLD)等。
此外,可通过合适的通信手段上传、下载或远程访问任何基于软件的实施方案(包括,例如,用于致使计算机执行任何所公开方法的计算机可执行指令)。此类合适的通信手段包括例如互联网、万维网、内联网、软件应用程序、电缆(包括光纤电缆)、磁通信、电磁通信(包括RF、微波和红外通信)、电子通信或其他此类通信手段。
所公开的方法、设备和系统不应以任何方式理解为是限制性的。相反,本公开涉及单独地以及彼此间呈各种组合和子组合的各种所公开实施方案的所有新颖且非显而易见的特征和方面。所公开的方法、设备和系统不限于任何特定的方面或特征或其组合,所公开的实施方案也不要求呈现任何一个或多个特定的优点或解决问题。
鉴于所公开发明的原理可应用于的许多可能实施方案,应认识到,所示实施方案仅仅是本发明的优选实例并且不应被认为是对本发明的范围进行限制。相反,本发明的范围是由所附权利要求书限定。因此,我们要求落入这些权利要求范围内的所有内容都是我们的发明。