使用基础设施管理代理供应的工作负荷部署转让专利

申请号 : CN201380065053.5

文献号 : CN105144093B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : K·Y·斯里尼瓦杉

申请人 : 微软技术许可有限责任公司

摘要 :

一种用于结合具有多个主机计算机系统的联网的计算基础设施来管理工作负荷的计算机实现的方法,所述方法包括:获得指示所述联网的计算基础设施的环境类型的第一数据;获得指示所述工作负荷的操作系统类型的第二数据;用处理器将所述工作负荷的映像部署在所述多个主机计算机系统中的目标主机计算机系统上的虚拟机中;将所述联网的计算基础设施的管理代理合并到所述虚拟机中来供应所述虚拟机以用于在所述联网的计算基础设施内操作,所述管理代理是根据所述第一数据来配置的;以及根据所述第二数据修改所述虚拟机的启动指令,使得所述管理代理在所述虚拟机的操作期间被调用。

权利要求 :

1.一种用于结合包括多个主机计算机系统的联网的计算基础设施来管理工作负荷的计算机实现的方法,所述方法包括:获得指示所述联网的计算基础设施的环境类型的第一数据;

获得指示所述工作负荷的操作系统类型的第二数据;

用处理器将所述工作负荷的映像部署在所述多个主机计算机系统中的目标主机计算机系统上的虚拟机中;

将所述联网的计算基础设施的管理代理合并到所述虚拟机中来供应所述虚拟机以用于在所述联网的计算基础设施内操作,所述管理代理是根据所述第一数据来配置的;以及根据所述第二数据修改所述虚拟机的启动指令,使得所述管理代理在所述虚拟机的操作期间被调用。

2.如权利要求1所述的计算机实现的方法,其特征在于,合并所述管理代理包括将键值对(KVP)数据传送到所述虚拟机,所述KVP数据包括指定所述管理代理的代码。

3.如权利要求2所述的计算机实现的方法,其特征在于,传送所述KVP数据包括结合部署所述工作负荷经由提供给所述目标主机计算机系统的部署包的配置文档来发送所述KVP数据,经修改的配置文档呈现所述KVP数据。

4.如权利要求1所述的计算机实现的方法,其特征在于,合并所述管理代理包括将数据存储动态地附连到所述虚拟机,所述数据存储中存储了所述管理代理的代码。

5.如权利要求1所述的计算机实现的方法,其特征在于,合并所述管理代理是与部署所述工作负荷的映像并发地实现的。

6.如权利要求1所述的计算机实现的方法,其特征在于,所述启动指令包括所述工作负荷的操作系统的初始化脚本。

7.如权利要求1所述的计算机实现的方法,其特征在于,还包括将所述映像的虚拟盘格式变换成兼容所述目标主机计算机系统的盘格式。

8.如权利要求7所述的计算机实现的方法,其特征在于,获得所述第一数据包括标识所述虚拟盘格式的元数据中的操作系统特性。

9.如权利要求1所述的计算机实现的方法,其特征在于,所述管理代理包括配置成支持所述虚拟机与所述联网的计算基础设施的管理结构控制器之间的通信的代码。

10.一种用于结合包括多个主机计算机系统的联网的计算基础设施来管理工作负荷的系统,所述系统包括:其中存储部署指令和供应指令的存储器;以及

耦合到所述存储器的处理器,所述处理器被配置成执行所述部署指令以将所述工作负荷的映像部署在所述多个主机计算机系统中的目标主机计算机系统上的虚拟机中;

其中所述处理器还被配置成执行所述供应指令以:

将所述联网的计算基础设施的管理代理合并到所述虚拟机中以供应所述虚拟机以用于在所述联网的计算基础设施内的操作,所述管理代理是根据所述联网的计算基础设施的环境类型来配置的;以及根据所述工作负荷的操作系统类型来修改所述虚拟机的启动指令,使得所述管理代理在所述虚拟机的操作期间被调用。

11.如权利要求10所述的系统,其特征在于,所述处理器还被配置成执行所述供应指令以将键值对(KVP)数据传送给所述虚拟机,所述KVP数据包括指定所述管理代理的代码。

12.如权利要求11所述的系统,其特征在于,所述处理器还被配置成执行所述供应指令以结合部署所述工作负荷经由提供给所述目标主机计算机系统的部署包的配置文档发送所述KVP数据,经修改的配置文档呈现所述KVP数据。

13.如权利要求10所述的系统,其特征在于,所述处理器还被配置成执行所述供应指令以将另一数据存储动态地附连到所述虚拟机,所述另一数据存储存储所述管理代理的代码。

14.如权利要求10所述的系统,其特征在于,所述启动指令包括所述工作负荷的操作系统的初始化脚本。

15.如权利要求10所述的系统,其特征在于,盘变换指令被存储在所述存储器中,并且其中所述处理器还被配置成执行所述盘变换指令以将黄金映像的虚拟盘格式变换成兼容所述目标主机计算机系统的盘格式。

说明书 :

使用基础设施管理代理供应的工作负荷部署

[0001] 背景
[0002] 软件系统通常被用于创建并运行虚拟计算机系统或虚拟机。虚拟机被配置成在物理主机计算机系统上运行。单个物理主机计算机通常被配置成支持多个虚拟机。每一虚拟机通常具有相应操作系统以支持软件应用在该虚拟机上的执行。
[0003] 这样的物理主机计算机的阵列通常被安排在数据中心中以提供远程计算服务。数据中心通常被用来向要由大量虚拟机实现的工作负荷提供云计算服务。这样的服务通常由多个数据中心来支持,这些数据中心进而由结构管理器或控制器来共同管理。
[0004] 数据中心中部署的虚拟机通常被同构地配置以简化云计算环境的结构或其他管理。同构配置可涉及用于所有虚拟机的公共操作系统。同构地配置的数据中心可能不能处理可能出现的某些工作负荷。

发明内容

[0005] 方法、系统、以及计算机程序产品涉及管理联网的计算基础设施中的工作负荷。工作负荷的这样的管理可包括合并基础设施管理代理以供应所述工作负荷来用于在联网的计算基础设施内的操作。所述合并可以支持工作负荷在联网的计算基础设施内或不同基础设施之间的移动性。
[0006] 根据本公开的一个方面,联网的计算基础设施的管理代理被合并到虚拟机内以供应工作负荷的所部署的映像来用于在联网的计算基础设施内的操作。虚拟机的启动指令被修改,使得管理代理在虚拟机的操作期间被调用。
[0007] 提供本发明内容以便以简化形式介绍将在以下详细描述中进一步描述的一些概念的选集。本发明内容并不旨在标识所要求保护主题的关键特征或必要特征,也不旨在用于限制所要求保护主题的范围。
[0008] 附图简述
[0009] 为更完全地理解本公开,应当参考以下详细描述和附图,在附图中,相同的参考标号标识附图中相同的元素。
[0010] 图1是根据一个实施例的配置成用于管理并部署工作负荷的示例性系统的框图。
[0011] 图2是图1的系统的部署管理器的框图。
[0012] 图3是根据一个实施例的用于管理并部署工作负荷的示例性计算机实现的方法的流程图。
[0013] 图4是根据用于一个或多个所公开的方法和系统的实现的一个实施例的计算环境的框图。
[0014] 尽管所公开的系统和方法易于具有各种形式的实施例,但在附图中示出了(并将在下文描述)本发明的各具体实施例,其中要理解,本公开旨在是说明性的,而不将本发明限于本文所描述和示出的各具体实施例。
[0015] 详细描述
[0016] 描述了用于经由合并到工作负荷的虚拟机内的管理代理来进行工作负荷的部署和其他管理的方法、系统、以及计算机程序产品。本文所描述的管理代理的合并可以允许管理代理作为工作负荷的一部分,而不限制工作负荷的移动性。例如,这样的合并可以避免将管理代理烘焙成工作负荷的黄金或其他映像。通过避免对工作负荷映像的这样的修改,工作负荷可更容易地在联网的计算基础设施内移动或在各联网的计算基础设施之间移动。作为替换或补充,所公开的实施例可在不涉及工作负荷移动性的其他工作负荷管理场景中是有用的。例如,所公开的实施例可被用来将管理代理的新版本和经更新的版本合并到工作负荷中。结果,云平台可经历涉及管理代理的更新的变化,而不迫使工作负荷被移除、重新安装、或以其他方式从平台取下。
[0017] 管理代理可被配置成供应工作负荷以用于部署在相应联网的计算基础设施内。管理代理可以代表特定类型的联网的计算基础设施。例如,在实现MICROSOFT WINDOWS AZURETM云平台的基础设施内部署的工作负荷包含MICROSOFT WINDOWS AZURETM管理代理。管理代理通常涉及建立虚拟机与云或其他联网的计算基础设施之间的通信。管理代理可按一种或多种方式被定制或专用于特定类型的云或基础设施。除了支持虚拟机与基础设施之间的通信之外,管理代理可以使工作负荷在基础设施内能被管理。打包为工作负荷映像的一部分的特定管理代理因而可能妨碍或阻止在不同类型的目标站点、云或基础设施之间的迁移。
[0018] 使用所公开的实施例的供应技术,工作负荷可以移动而不管基础设施所建立的环境(例如,包括一个或多个数据中心的云环境)是同构还是异构的。工作负荷可以在不同的基础设施之间移动,而不管不同的基础设施是否具有公共平台。
[0019] 所公开的实施例的工作负荷部署和管理可以结合工作负荷在云环境、基础设施、或其数据中心之内或之间的迁移来实现。所公开的实施例可以在实用计算解决方案中实现,其中例如公共云的容量被用作私有云的受管理的扩展。工作负荷可最初部署在私有云的企业数据中心中。在公共云的容量和/或成本到达所需水平时,工作负荷的迁移可随后发生。在这种情况下,所公开的实施例可以自动化或以其他方式促进工作负荷始自私有云的迁移(以及到私有云的迁移)。到/自私有云的这样的迁移可以基于例如私有云中的或涉及私有云的策略驱动的引擎或决策。例如,如果私有云中存在瞬时容量问题,则工作负荷的子集可被标识以迁移到公共云。随后,在负载条件合适时,工作负荷可被返回到私有云。所公开的实施例可以增强工作负荷在这些以及其他场景中的移动性。工作负荷部署不需要由管理代理限制到同构云环境,例如实现公共虚拟化平台的那些环境。
[0020] 所公开的实施例的管理代理被注入或以其他方式合并到虚拟机内以支持工作负荷针对目标站点、云、或其他环境的供应,而不会妨碍或以其他方式使后续迁移复杂化。所公开的实施例可以按附加的方式来促进后续迁移。如下所述,工作负荷可被打包在适于变换到兼容各目标环境的格式的虚拟或其他盘格式中。
[0021] 所公开的实施例的管理代理被注入或以其他方式合并到虚拟机内以供应虚拟机来用于在联网的计算基础设施内的操作。这样的供应是在没有将管理代理烘焙成工作负荷的映像的情况下达成的。如本文所描述的,在虚拟机的操作期间,管理代理仍然可经由虚拟机的启动指令的修改来被合并和调用。启动指令可以是例如在虚拟机的启动期间执行的初始化脚本。管理代理因而可被安装在虚拟机或客机的上下文内。
[0022] 指示管理代理的数据可以按多种方式被传送或发送到虚拟机。在一些实施例中,键值对(KVP)数据被传送给虚拟机以合并管理代理。其他传输机制可被使用,包括被配置成用于与运行的虚拟机进行通信的那些。例如,管理代理数据可经由动态地附连的存储和/或经由私有主机/客机网络传输来注入。在一些情况下,包含管理代理的诸如ISO映像(例如,.iso格式的映像文件)等映像可作为动态盘被附连到运行的虚拟机。虚拟机内的代码(例如,驱动程序)可以装载该盘并将控制转移到可在ISO映像内执行的代理。其他通信或传输机制可被使用。例如,代替使用盘作为用于将代理注入虚拟机的机制,联网的通信可被用于将代理代码注入虚拟机。
[0023] 管理代理可在部署时或在部署期间(例如,在部署工作负荷的时间点)被合并到虚拟机中。经由管理代理的工作负荷的供应可以是“即时的”或与部署并发的。这样的即时供应可以注入适用于环境或其中部署工作负荷的基础设施的其他方面的供应状态或供应信息。在一些情况下,管理代理被合并到运行的虚拟机中。作为替换或补充,工作负荷可作为工作负荷部署的一部分或在工作负荷部署期间被供应。例如,在一些实施例中,指示管理代理的数据经由供应配置文档或部署包的其他项来被提供。这样的即时供应允许工作负荷的黄金映像保持未修改。工作负荷的后续部署不必涉及手动移除或修改管理代理代码或数据。尽管如上所述,这样的供应的定时可以变化。例如,一些供应动作可以在部署之前实现。在一个示例中,盘映像格式变换在部署之前发生。其他供应(包括例如合并管理代理)可随后在工作负荷被部署的同时发生,或以其他方式作为在目标站点处的部署的一部分来发生。
[0024] 所公开的实施例的“即时”供应可被扩展到供应的各方面。管理代理的合并可以结合其他供应来实现。在一些情况下,附加供应信息被传递给具有管理代理的虚拟机。
[0025] 尽管本文参考各市售联网的计算基础设施或环境、云平台、系统管理程序或其他主机软件产品以及其他虚拟化软件产品,但所公开的实施例不限于任何特定类型的基础设施、环境、平台、主机、或其他虚拟化产品。所公开的实施例可改为支持工作负荷在不同基础设施、环境、平台、主机、以及其他虚拟化实体之间的移动性。
[0026] 图1描绘其中部署工作负荷102的系统100。在这一示例中,系统100包括部署引擎104和云环境106。部署引擎104被配置成支持工作负荷102在云环境106之上或之中的部署。
在一些实施例中,云环境106可被配置成MICROSOFT WINDOWS AZURETM基础设施。云环境106可以对应于或包括其中可部署工作负荷102的任何类型的环境或联网的计算基础设施。系统100可包括更多、更少或另选的子系统或组件。例如,部署引擎104的一个或多个方面可以与云环境106集成在一起或被实现为云环境106的一部分。
[0027] 工作负荷102可以是由外部系统、环境、联网的计算基础设施、或其他计算系统所提供的传入的工作负荷。例如,工作负荷102可能先前已被部署在由工作负荷102的企业所有者运行的私有云上。将工作负荷102部署在云环境106内的决定可以由与企业相关联的外部计算系统来作出。在接收到指示云环境106内的过剩或可用处理能力的数据时,企业可决定部署工作负荷102。作为替换或补充,部署引擎104可被配置成实现处理能力的分析和/或作出关于工作负荷102的部署和/或其他决定。
[0028] 云环境106可以是公共或其他云环境。在这一示例中,云环境106的联网的计算基础设施包括多个数据中心108,每一数据中心包括配置成主机计算机110的计算系统或设备的集合。主机计算机110可被配置成服务器计算机。每一数据中心108可包括或提供相应的服务器场,该服务器场提供云计算服务。数据中心108的数量和配置可以变化。例如,数据中心108中的一些可以在一个或多个方面是同构的(例如,具有统一配置的主机计算机110、共同的虚拟化软件,等等),而其他数据中心在一个或多个方面可以是异构的。
[0029] 数据中心108之一被更详细地示出。在这一示例中,数据中心108包括五个主机计算机110。主机计算机110的数量可以变化。主机计算机110可以向云环境106的用户提供各种不同的云计算服务。每一主机计算机110运行多个虚拟机112以提供这样的云计算服务。每一主机计算机110的虚拟机112可以运行不同的操作系统。
[0030] 每一主机计算机110可包括系统管理程序114或虚拟化管理器以管理主机计算机110和虚拟机112的硬件资源之间的关系。系统管理程序114可以结合数据分区、物理节点定义、以及虚拟机112的其他方面来管理主机计算机110的物理硬件。系统管理程序114的配置可以变化。系统管理程序114可以是 HYPER-V系统管理程序、CITRIX XEN系统管理程序、或任何其他市售系统管理程序。
[0031] 主机计算机110的配置可以变化。主机计算机110可具有不同的硬件配置,以及不同的软件和/或固件配置。例如,主机计算机110可被配置有不同操作系统。
[0032] 云环境106的联网的计算基础设施包括监视并管理云环境106内部署的物理和/或虚拟计算机的一个或多个管理结构系统或控制器116。管理结构控制器116可管理多个不同的功能,包括例如为计算机打补丁、使计算机就绪(stand up)(包括将应用安装在计算机上以及实例化这些应用(诸如, 服务器App-V应用虚拟化包、或数据库的 数据库应用组件描述))、和/或监视计算机的健康。在这一示例中,管理结构控制器116可以管理数据中心108、主机计算机110和/或虚拟机112的操作。在一些实施例(例如,只具有单个数据中心的那些实施例)中,云环境106包括在数据中心级处的管理控制器而非管理结构控制器。所公开的方法和系统可结合各种类型的管理控制器来使用。
[0033] 与在数据中心和主机级处管理云环境有关的进一步细节在以下专利公开中阐明:美国专利公开No.2011/0035754(“Workload management for heterogeneous hosts in a computing system environment(计算系统环境中的异构主机的工作负荷管理)”);美国专利公开No.2011/0041126(“Managing workloads in a virtual computing environment(管理虚拟计算环境中的工作负荷)”);美国专利公开No.2011/0126197(“System and method for controlling cloud and virtualized data centers in an intelligent workload management system(用于控制智能工作负荷管理系统中的云和虚拟化数据中心的系统和方法)”);以及美国专利公开No.2012/0204187(“Hybrid cloud workload management(混合云工作负荷管理)”)。
[0034] 管理结构控制器116通过与每一物理计算机(例如,主机计算机110)或每一虚拟机112上的对应的管理代理118交互来提供管理功能。在这一示例中,每一虚拟机112包括相应的管理代理118。管理代理118可以担当管理结构控制器116的代理。管理代理118根据云或联网的计算基础设施的其他环境的类型来配置。例如,在其中云环境106是WINDOWS  AZURETM环境的实施例中,管理代理118可被配置成
WINDOWS AZURETM代理。每一管理代理118可被配置成建立和/或支持管理
结构控制器116与虚拟机112之间的通信。例如,管理代理118可以收集帮助信息,提供位置信息,解决警报或故障,和/或作为这样的警报或故障的结果来促进映像在其他位置(例如,在不同的物理机上)的重新部署。管理代理118可以按这些和/或其他方式来支持管理联网的计算基础设施内的工作负荷102。
[0035] 在图1的实施例中,管理代理118经由部署引擎104被合并到虚拟机112中。在这一示例中,部署引擎104包括用于结合联网的计算基础设施来管理工作负荷102的部署管理器120。部署管理器120可包括用于部署工作负荷102并供应在其中部署工作负荷102的虚拟机
112的软件指令。部署和供应指令可被安排在相应模块中或集成到任何所需程度。部署管理器120或部署引擎104可包括其上存储有部署和供应指令以供由例如部署引擎104的处理器执行的存储器或其他计算机可读存储介质(参见,例如图4的实施例)。
[0036] 部署管理器120可以执行部署指令来结合创建虚拟机112之一以部署工作负荷102的映像数据122。部署管理器120可以选择主机计算机110之一作为部署的目标。虚拟机112可经由各虚拟化技术或技艺来创建或由这些虚拟化技术或技艺支持。
[0037] 在图1的实施例中,映像数据122在部署包124中被递送到目标主机计算机110。映像数据122可以是或包括被配置成兼容目标主机计算机110和/或虚拟机112的操作系统的盘格式的工作负荷102的盘映像。映像数据122随后可被复制或以其他方式用来创建或以其他方式针对虚拟机112部署工作负荷102的映像126(例如,盘映像)。
[0038] 指示联网的计算基础设施的管理代理118的代码或数据可被合并到虚拟机112中作为供应过程的一部分。部署管理器120可以执行供应指令以合并管理代理1118来供应虚拟机112以用于云环境106的联网的计算基础设施内的操作。作为供应元素,管理代理118因而可以不是工作负荷102的持久组件。在一些情况下,管理代理118被安装或注入作为部署规程中的最后步骤。在图1的实施例中,指示管理代理118的数据可经由部署包124的供应配置文档128来递送。供应配置文档128可以是可扩展标记语言(XML)或其他加标签的数据包。一旦在主机计算机110处接收到供应配置文档128和映像数据122,系统管理程序114和/或其他软件或系统组件可以使用该供应数据和映像数据来设立和/或启动虚拟机112。
[0039] 供应配置文档128可包括虚拟机112的供应参数的集合。供应参数的性质可以变化。例如,供应配置文档128中的参数可以指定各种硬件要求(例如,处理器能力、存储器能力)、系统规范,等等。指定管理代理118的代码或数据可以被阐明为供应配置文档128中指定的一个或多个参数。供应配置文档128可包括其中指定管理代理数据的一个或多个字段。或者,管理代理数据或代码可经由预先存在的配置文档格式的一个或多个扩展来指定。例如,多个键值对(KVP)或其他属性值对数据表示可以扩展配置文档数据结构以提供其中指定管理代理118的代码可被阐明的框架。KVP数据可以呈现一个或多个键/值元组。给定键及其值可包括或呈现几百字节的数据。文件传输协议可基于KVP功能来构造。
[0040] 供应配置文档128可以按其他方式与映像122一起递送。例如,供应配置文档128不必与映像122打包在一起。部署引擎104可以发送一个或多个附加部署包或数据传输到主机计算机110。
[0041] 指示管理代理118的数据可经由其他技术被递送到虚拟机112。配置文档不必被用来将管理代理数据合并到虚拟机112中。在图1的实施例中,作为替换或补充,指示管理代理118的数据可以经由与部署包124分开的数据传输被发送到虚拟机112。结合其中部署包124已被发送的场景或实施例和/或其中虚拟机112已经运行的场景或实施例,分开的传输可能是有用的。在这一示例中,部署引擎104经由启动数据传输130发送KVP数据。启动数据传输
130可在KVP中或以其他格式包括管理代理数据。KVP机制可以独立于或不管虚拟机112的运行状态来使用。
[0042] 供应指令可以引导部署管理器120采取附加步骤来供应具有管理代理118的虚拟机112。部署管理器120可以执行供应指令以修改虚拟机112的启动指令,使得管理代理118在虚拟机112的操作期间被调用。启动指令可根据工作负荷102和/或映像122的操作系统类型被修改,以确保管理代理118的调用。在这一示例中,始自部署管理器120的启动数据传输130涉及配置或修改虚拟机112的初始化或其他启动模块132。例如,启动数据传输130可包括要被合并到启动模块132中的启动脚本或其他数据或指令。该脚本、数据或指令可以是上述KVP数据的补充或替换。
[0043] 在一些实施例中,启动数据传输130包括配置成被插入到启动模块132的初始化脚本(例如,初始脚本)中的一个或多个初始化指令。初始化脚本和/或启动模块132可以关联于或专用于虚拟机112的操作系统。例如,虚拟机112的操作系统可具有在启动或重新引导期间实现的引导脚本。
[0044] 启动数据传输130可被配置成将初始化脚本插入虚拟机112内的各种已知位置。例如,在Linux场景中,脚本可被放置在/etc/init.d目录下。该目录下的脚本在系统的引导期间被直接调用。其他引导脚本可被修改在适用于启动或重新引导操作系统的位置,以确保管理代理118在启动或重新引导时被调用。一旦被启动数据或指令修改,执行启动模块132被用来调用虚拟机112内的管理代理118。管理代理118随后可在初始化脚本的实现(或重新实现)时被调用。
[0045] 初始化脚本被插入的位置不必调用操作系统的启动或重新引导脚本。例如,管理代理118可经由涉及启动或初始化操作系统的特征或与操作系统相关联的特征的脚本来调用。
[0046] 管理代理数据可在启动数据传输130中按KVP框架来阐明。其他框架、格式、或数据结构可被使用。启动数据传输130因而可以提供将管理代理数据合并到虚拟机112中的机制,即使虚拟机112已经运行。
[0047] 其他传输机制或技术可被用来向运行的虚拟机供应管理代理数据。例如,部署引擎104可以将盘或其他数据存储动态地附连到虚拟机112。管理代理数据可通过临时装载或以其他方式访问动态地附连的数据存储以获得其中存储的管理代理数据来被合并到虚拟机12中。在其他实施例中,私有主-客网络可被用来将管理代理数据合并到虚拟机中到达虚拟机(或客机)中的指定位置。用于与运行的客机或虚拟机通信的其他技术(例如,以将管理代理数据的脚本注入指定位置)可被使用。
[0048] 上述供应管理代理数据可以在工作负荷102的部署期间被实现。管理代理118因而可被即时合并或在部署时合并。尽管管理代理118的合并可以与部署并发,但合并不必修改虚拟机112的映像126。通过上述供应,管理代理118可与映像126分开地驻留在虚拟机112内,但仍然在操作期间被调用。
[0049] 映像126与管理代理118在虚拟机112内的分开可以允许工作负荷102在云环境106内重新部署或移动,或者移至新云环境,而无需手动修改映像126。更新管理代理118以遵从云环境106的新版本或云环境106内的其他变化也可在无需这样的手动修改的情况下达成。更新可以在无需卸下工作负荷102的情况下发生。例如,新管理代理118可以经由诸如启动数据传输130等传输来提供。在更新期间,映像126可以保持不变。
[0050] 上述管理代理供应不必由部署引擎104的部署管理器120或其他组件或实体来实现。例如,云环境106的联网的计算基础设施内的另一组件可以引导这样的供应。
[0051] 可以使用用于在客机的上下文内安装管理代理的另外或另选技术。例如,可以使用KVP框架。在一些实施例中,代理调用可以通过将代理(和/或对它的引用)置于虚拟机(或客机)内的适当位置(例如,在/etc/init.d目录下)并通过使代理作为引导序列的一部分来执行来达成。
[0052] 部署引擎104还可包括其中存储工作负荷102的映像数据的数据存储134。映像数据可以对应于工作负荷102的黄金映像。与其中部署工作负荷102的虚拟机112分开地存储黄金映像也可促进工作负荷移动性。部署管理器120可以在映像122和/或部署包124的准备期间存储工作负荷映像的副本。映像数据的黄金或其他副本可被存储在系统100或云环境106内的其他位置。例如,黄金映像可被存储在虚拟机112在其上运行的主机计算机110的存储器上。尽管如上所述,系统100不必存储工作负荷102的黄金映像。
[0053] 部署引擎104和/或部署管理器120可被进一步配置成变换打包或包含工作负荷102的虚拟盘格式。在一个实施例中,部署引擎104包括存储在其存储器中的供由其处理器执行以将工作负荷102的盘格式变换成兼容目标主机计算机系统110的盘格式的盘变换指令。工作负荷102可以按各种不同的格式中的任何一种格式到达,包括例如,虚拟盘格式,诸如VHD( 虚拟化环境)、VMDK(VmWare虚拟化环境)、以及原始和QCOW盘格式。
[0054] 在一些实施例中,工作负荷102可根据具有促进或支持变换的元数据的虚拟盘格式来配置。例如,开放虚拟化格式(OVF)是添加用于硬件供应、虚拟盘编码等的附加元数据的打包标准。元数据可被用来实现变换。可以使用虚拟机的其他打包标准。部署引擎104可以使用元数据以外的数据来将工作负荷映像从虚拟盘格式变换成兼容目标主机计算机系统110的盘格式。
[0055] 经由传入的工作负荷102提供的元数据或其他数据可被用来确定工作负荷部署的一个或多个特性。根据这些特性,工作负荷的类型可由部署管理器120标识以指导上述供应。部署管理器120所实现的供应指令可被配置成实现元数据的分析以确定如何最佳地将管理代理118合并到虚拟机112内和/或给予管理代理118生命。例如,如果元数据指示工作负荷102被配置成用于在微软 操作系统中操作,则部署管理器120可以使用该指示来确定启动模块132内的插入用于调用管理代理118的启动或初始化指令的适当位置。操作系统标识也可被用来确定要被插入的启动或初始化脚本的内容。不同操作系统(例如,Linux)的指示可以指导部署管理器120相应地配置并插入启动或初始化脚本。
[0056] 图2更详细地描绘部署管理器120。部署管理器120包括涉及实现本文描述的功能的多个模块。每一模块可包括存储在计算机可读介质上且由部署管理器120(或部署引擎104(图1))的处理器执行的相应指令。在该示例中,部署管理器120包括分析模块150、供应模块152、代理代码生成模块154、以及盘格式变换模块154。各模块(和/或其指令)可被集成到任何所需程度。
[0057] 分析模块150可被实现以确定工作负荷操作系统和云环境以支持管理代理供应和其他过程。例如,供应模块152可以基于标识中的一者或两者来确定一个或多个供应参数。一些供应参数(诸如启动或初始化指令)可以基于操作系统类型。代理代码生成模块154可以根据所标识的云环境来配置管理代理的代码或数据以确保管理代理兼容管理结构控制器116(图1)。盘格式变换模块156可以使用操作系统标识来将盘映像变换成适当的盘格式。
[0058] 部署管理器120的分析模块150可以分析传入的工作负荷102的一个或多个其他方面以标识、接收、确定、或以其他方式获得指示工作负荷映像的操作系统的类型的数据。在一些情况下,分析模块150涉及分析其中提供工作负荷映像的包的元数据。分析可以涉及工作负荷映像的另选或附加方面。
[0059] 作为替换或补充,分析模块150可被配置成用于其他分析。例如,分析模块150可以分析系统100(图1)的一个或多个组件以标识、接收、确定、或以其他方式获得指示其中将部署工作负荷的云环境的类型的数据。在一些情况下,分析模块150可以标识系统管理程序114的类型和/或目标主机计算机110(图1)的虚拟化环境的其他方面。作为替换或补充,分析模块150可以经由与管理结构控制器116(图1)的通信来标识云环境的类型。
[0060] 在这一实施例中,代理代码生成模块154随后可以使用分析模块150获得的与云环境有关的数据来生成管理代理代码或数据。供应模块152可包括涉及上述管理代理数据的合并的指令。供应模块152还可包括涉及上述根据分析模块150获得的操作系统类型来修改启动指令以使得管理代理被调用的指令。
[0061] 图3描绘用于结合联网的计算基础设施(诸如上述联网的计算基础设施)来管理工作负荷的示例性方法。该方法是计算机实现的。例如,图1所示的部署管理器120可被配置成实行该方法的各动作中的一者或多者。每一动作的实现可通过由部署管理器120的处理器和/或另一处理器或处理系统执行的相应计算机可读指令来指导。
[0062] 在一些情况下,该方法以涉及接收要被部署的传入的工作负荷的任何数量的动作来开始。传入的工作负荷可以用各种方式来接收或获得。指示工作负荷映像的数据可以与或不与关于部署的附加数据和/或指令一起接收。或者,该方法的工作负荷管理动作涉及当前部署的工作负荷。
[0063] 在图3的实施例中,该方法以动作200开始,其中获取或以其他方式获得指示工作负荷的操作系统类型的数据。在一些实施例中,在动作202,操作系统的类型可通过盘格式分析来标识。该分析可涉及在其中打包工作负荷映像的盘映像容器的元数据中定位操作系统或其他特性。操作系统类型可经由对工作负荷映像的其他类型的分析来标识。指示操作系统类型的信息可以用其他方式(例如,不涉及分析工作负荷映像)来获得。例如,传入的工作负荷可以与标识或指定操作系统类型的数据一起接收。
[0064] 在动作204,获取或以其他方式获得指示联网的计算基础设施的环境(例如,云环境)的类型的数据。环境类型数据可以经由与联网的计算基础设施的管理结构控制器或其他组件的通信来获得。指示云环境类型的信息可以用其他方式(例如,不涉及与该基础设施通信)来获得。例如,在涉及管理代理更新的场景中,指示工作负荷的现有部署的特性的数据可被访问以确定环境类型。
[0065] 在动作206,工作负荷映像的盘格式可被变换。初始和最终盘格式可以变化。在一些情况下,初始和/或最终盘格式可以是虚拟盘格式,如上所述。盘格式变换可以基于指示工作负荷类型(例如,操作系统)的数据来实现。例如,盘映像可被变换成兼容或以其他方式适用于虚拟机的操作系统的格式。变换可以基于附加信息,诸如云环境类型和/或目标主机计算机系统的特性。
[0066] 在动作208,使用兼容虚拟机的映像的盘格式,工作负荷映像(例如,盘映像)可被部署在目标主机计算机上的虚拟机或客机中。如上所述,工作负荷映像可以在没有在其中烘焙管理代理或以其他方式集成管理代理的情况下部署。如上所述,部署可包括传送作为工作负荷映像的补充的包括一个或多个组件的部署包,如配置文档。在一些情况下,配置文档可以与工作负荷映像分开传送。分开传输可以允许配置文档扩展成包括管理代理数据,如上所述。或者,动作208可以与管理代理数据被生成(或以其他方式可用)并插入配置文档并发地实现或在这之后实现。
[0067] 在该实施例中,在动作210,在映像部署之后,生成基础设施管理代理。基础设施管理代理是基于云环境类型数据生成的。在一些情况下,生成基础设施管理数据包括在动作212准备指示管理代理数据的KVP数据。管理代理数据或代码的其他表示可被准备并使用。
[0068] 实现基础设施管理代理生成和其他工作负荷部署动作的次序可以变化。例如,动作210可以在动作204获取环境类型数据之后的其他时间来实现。基础设施管理代理数据因而可在工作负荷部署(动作208)之前生成。在这种情况下,工作负荷映像和管理代理数据可被并发地发送给虚拟机。
[0069] 动作210的性质可以变化。在一些情况下,基础设施管理代理数据或代码可能已经被生成或以其他方式可用。例如,管理代理数据或代码中的一些或全部可能已结合工作负荷的先前部署被生成。动作210因而可改为涉及修改基础设施管理代理的现有数据或代码。
[0070] 在这一实施例中,在决策框214作出虚拟机当前是否正在运行的确定。虚拟机可能由于先前部署而已经在运行。例如,该方法可涉及更新工作负荷的在先部署的管理代理。或者,虚拟机可能作为其中工作负荷映像被发送到虚拟机的动作208的在先实现的结果而正在运行。管理代理被合并到虚拟机中的方式可以基于与虚拟机是否正在运行有关的状态确定。或者,管理代理被合并到虚拟机中而无需状态确定。
[0071] 如果虚拟机正在运行,则控制传递到动作216,其中管理代理被传送给虚拟机以供应该虚拟机来用于在联网的计算基础设施内的操作。传输的特性可以变化。在图3的实施例中,在动作218,传输包括将数据存储(例如,盘,诸如DVD数据集)动态地附连存储到主机计算机。可以使用其他传输机制。例如,可以建立与主机计算机的网络连接。数据存储或其他传输中的管理代理数据可按KVP框架或其他数据结构来安排。
[0072] 如果虚拟机没有在运行,则在动作220,KVP或其他管理代理数据可经由配置文档被发送给虚拟机。动作220可包括修改配置文档以插入和/或呈现KVP或其他数据结构。配置文档可以经由提供给目标主机计算机系统的部署包来发送,如上所述。在一些实施例中,动作220因而可以与动作208并发地实现。
[0073] 在图3的实施例中,在动作222,在管理代理被合并到虚拟机中之后,修改虚拟机的启动指令。修改是根据工作负荷类型数据来作出的,如上所述,使得管理代理在虚拟机的操作期间被调用。启动指令可包括或对应于工作负荷的操作系统的初始化脚本。动作222可以在该方法中的其他时间实现,例如在工作负荷类型数据可用或以其他方式被获得之后。
[0074] 除以上标识的那些变型之外,该方法的各动作的次序可以变化。例如,管理代理数据或代码可以在工作负荷部署和/或盘格式变换之前生成。管理代理数据合并可以与映像部署并发地实现。在其他情况下,合并可以在部署之后实现。
[0075] 参考图4,示例性计算环境300可被用来实现上述方法和/或系统的一个或多个方面或元素。图4的计算环境300可以由系统100(图1)的一个或多个元素来使用或被合并到这些元素中。例如,计算环境300可被用来实现部署引擎104、部署管理器120、目标主机计算机110、和/或管理结构控制器116。计算环境300可被用作或包括为上述元素或系统组件中的任一个的客户端、网络服务器、应用服务器、或者数据库管理系统或其他数据存储管理器。
计算环境300可被用来实现参考图3描述的动作中的一者或多者。
[0076] 计算环境300包括具有计算机310形式的通用计算设备。计算机310的组件可包括,但不限于,处理单元320、系统存储器330、以及将包括系统存储器在内的各种系统组件耦合到处理单元320的系统总线321。系统总线321可以是若干类型的总线结构中的任一种,包括使用各种总线体系结构中的任一种的存储器总线或存储器控制器、外围总线、以及局部总线。作为示例而非限制,这样的体系结构包括工业标准体系结构(ISA)总线、微通道体系结构(MCA)总线、增强型ISA(EISA)总线、视频电子技术标准协会(VESA)局部总线和外围部件互连(PCI)总线(也称为夹层(Mezzanine)总线)。计算机310的单元、组件和其他硬件可以与所显示的示例不同。
[0077] 计算机310通常包括各种被配置来存储指令和其他数据的计算机可读存储介质。这样的计算机可读存储介质可以是可由计算机310访问的任何可用介质并且包括易失性和非易失性介质、可移动和不可移动介质两者。这样的计算机可读存储介质可包括与通信介质区分开的计算机存储介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括,但不限于,RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光盘存储、磁带盒、磁带、磁盘存储或其他磁性存储设备、或能用于存储所需信息且可以由计算机310访问的任何其他介质。
[0078] 系统存储器330包括易失性和/或非易失性存储器形式的计算机存储介质,如只读存储器(ROM)331和随机存取存储器(RAM)332。包含诸如在启动期间帮助在计算机310内的元件之间传输信息的基本例程的基本输入/输出系统333(BIOS)通常存储在ROM 331中。RAM 332通常包含处理单元320可立即访问和/或当前正在操作的数据和/或程序模块。作为示例而非限制,图4示出了操作系统334、应用程序335、其它程序模块336和程序数据337。例如,应用程序335中的一者或多者可涉及实现分析模块150(图2)、供应模块152(图2)、代理代码生成模块154(图2)、盘格式变换模块156、和/或上述其他指令集中的一者或多者。作为替换或补充,模块或指令集中的一者或多者可以经由其他程序模块336中的一者或多者来实现。
在这一或另一示例中,上述存储器或数据存储设备中的任何一个或多个指令集可被存储为程序数据337。
[0079] 操作系统334、应用程序335、其他程序模块336以及程序数据337中的任何一个或多个可被存储在片上系统(SOC)上或经由SOC来实现。上述模块中的任一个可经由一个或多个SOC设备来实现。上述模块被集成到SOC或其他设备的程度可以变化。
[0080] 计算机310也可以包括其他可移动/不可移动、易失性/非易失性计算机存储介质。仅作为示例,图4示出了从不可移动、非易失性磁介质中读取或向其写入的硬盘驱动器341,从可移动、非易失性磁盘352中读取或向其写入的磁盘驱动器351,以及从诸如CD ROM或其他光学介质等可移动、非易失性光盘356中读取或向其写入的光盘驱动器355。可以在示例性操作环境中使用的其他可移动/不可移动、易失性/非易失性计算机存储介质包括,但不限于,盒式磁带、闪存卡、数字多功能盘、数字录像带、固态RAM、固态ROM等等。硬盘驱动器
341通常通过诸如接口340之类的不可移动存储器接口连接到系统总线321,并且磁盘驱动器351和光盘驱动器355通常通过诸如接口350之类的可移动存储器接口连接到系统总线
321。
[0081] 上文讨论并在图4中示出的驱动器及其相关联的计算机存储介质为计算机310提供了对计算机可读指令、数据结构、程序模块和其他数据的存储。例如,示出硬盘驱动器341储存操作系统344、应用程序345、其它程序模块346和程序数据347。这些组件可以与操作系统334、应用程序335、其他程序模块336,以及程序数据337相同,也可以不同。在此操作系统344、应用程序345、其它程序模块346以及程序数据347被给予了不同的编号,以说明至少它们是不同的副本。用户可以通过输入设备,例如键盘362和定点设备361——通常是指鼠标、跟踪球或触摸垫——向计算机310输入命令和信息。其他输入设备(未显示)可包括话筒(例如,用于语音控制)、触摸屏(例如,用于基于触摸的手势和其他移动)、测距传感器或其他相机(例如,用于手势和其他移动)、操纵杆、游戏垫、卫星碟和扫描仪。这些以及其它输入设备通常通过耦合到系统总线的用户输入接口360连接到处理单元320,但也可通过诸如并行端口、游戏端口或通用串行总线(USB)之类的其它接口和总线结构来连接。监视器391或其他类型的显示设备也经由诸如视频接口390之类的接口连接至系统总线321。除了监视器以外,计算机还可包括诸如扬声器397和打印机396之类的其它外围输出设备,它们可通过输出外围接口395来连接。
[0082] 计算机310可使用到一个或多个远程计算机(诸如,远程计算机380)的逻辑连接而在联网环境中操作。远程计算机380可以是个人计算机、服务器、路由器、网络PC、对等设备或其他常见网络节点,且通常包括上文相对于计算机310描述的许多或所有元件,但在图3中只示出存储器存储设备381。逻辑连接包括局域网(LAN)371和广域网(WAN)373,但也可以包括其他网络。此类联网环境在办公室、企业范围的计算机网络、内联网和因特网中是常见的。
[0083] 当在LAN联网环境中使用时,计算机310通过网络接口或适配器370连接到LAN 371。当在WAN联网环境中使用时,计算机310通常包括调制解调器372或用于通过诸如因特网等WAN 373建立通信的其它手段。调制解调器372可以是内置的或外置的,可经由用户输入接口360或其它适当的机制连接到系统总线321。在联网环境中,相关于计算机310所示的程序模块或其部分可被存储在远程存储器存储设备中。图4示出了远程应用程序385驻留在存储器设备381上。所示的网络连接是示例性的,并且可以使用在计算机之间建立通信链路的其它手段。
[0084] 图4的计算环境300只是合适的计算环境的一个示例,并且不旨在对此处的技术的使用范围或功能提出任何限制。也不应该将计算环境300解释为对示例性操作环境300中示出的任一组件或其组合有任何依赖性或要求。
[0085] 此处所描述的技术可用各种其他通用或专用计算系统环境或配置来操作。适合与此处的技术一起使用的公知的计算系统、环境和/或配置的示例包括,但不限于,个人计算机、服务器计算机(包括服务器-客户端体系架构)、手持式或膝上型设备、移动电话或设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费电子产品、网络PC、小型机、大型计算机、包含上述系统或设备中的任一个的分布式计算机环境等。
[0086] 本文的技术可在诸如程序模块等由计算机执行的计算机可执行指令的通用上下文中描述。一般而言,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等。本文的技术也可以在任务由通过通信网络链接的远程处理设备执行的分布式计算环境中实现。在分布式计算环境中,程序模块可以位于包括存储器存储设备的本地和远程计算机存储介质中。
[0087] 尽管已经参考具体示例描述了本发明,其中这些示例旨在仅仅是说明性的而非本发明的限制,但本领域普通技术人员将明白,可以对所公开的实施例作出改变、添加和/或删除而不背离本发明的精神和范围。
[0088] 上述描述只是出于清楚理解的目的给出的,并且不应从中理解出不必要的限制,因为本发明的范围内的修改对本领域普通技术人员而言是显而易见的。