CN102782648A - 用于诸如web应用之类的服务器应用的虚拟环境 - Google Patents

用于诸如web应用之类的服务器应用的虚拟环境 Download PDF

Info

Publication number
CN102782648A
CN102782648A CN2011800120046A CN201180012004A CN102782648A CN 102782648 A CN102782648 A CN 102782648A CN 2011800120046 A CN2011800120046 A CN 2011800120046A CN 201180012004 A CN201180012004 A CN 201180012004A CN 102782648 A CN102782648 A CN 102782648A
Authority
CN
China
Prior art keywords
application
web
virtual
virtualized
server
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.)
Granted
Application number
CN2011800120046A
Other languages
English (en)
Other versions
CN102782648B (zh
Inventor
N·A·雅各布森
J·希恩
E·朱亚特
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.)
Si Wei Yun
Original Assignee
Microsoft Corp
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 Corp filed Critical Microsoft Corp
Publication of CN102782648A publication Critical patent/CN102782648A/zh
Application granted granted Critical
Publication of CN102782648B publication Critical patent/CN102782648B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • 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/4555Para-virtualisation, i.e. guest operating system has to be modified
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/302Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3051Monitoring arrangements for monitoring the configuration of the computing system or of the computing system component, e.g. monitoring the presence of processing resources, peripherals, I/O links, software programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3065Monitoring arrangements determined by the means or processing involved in reporting the monitored data
    • G06F11/3086Monitoring arrangements determined by the means or processing involved in reporting the monitored data where the reporting involves the use of self describing data formats, i.e. metadata, markup languages, human readable formats
    • 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/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • 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/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/45591Monitoring or debugging support

Abstract

应用虚拟化系统使得诸如web应用之类的服务器应用能够容易地可部署,将应用及其状态与系统分开,以及允许应用被容易地移动到另一服务器。该应用虚拟化系统提供了一种隔离冲突以及允许提供冲突信息的多个应用独立地运行且避免冲突的方式。该应用虚拟化系统接收应用准备会话的通知,并监控该会话以收集该应用使用以在客户机上运行的配置信息。该应用虚拟化系统存储所收集的信息直到要被虚拟化的该应用被部署为止。当管理员稍后部署该应用时,系统取回所存储的信息并使用该信息以及来自客户机的信息来重构元数据并虚拟化该应用。

Description

用于诸如WEB应用之类的服务器应用的虚拟环境
背景
虚拟化指的是物理硬件对虚拟机的执行然后在虚拟机上运行操作系统和应用。虚拟机可以表示硬件功能的最少共同点或者可以表示易于为其准备操作系统(OS)和应用的公知配置。许多数据中心使用虚拟化来随着资源需求增长、为了维护周期、以及平衡物理服务器负载而能够容易地将虚拟机移动到新的物理硬件。虚拟化对于许多情形是有用的,但也可能施加由于许多虚拟机争用相同资源(例如,中央处理单元(CPU)、存储器和网络接口卡(NIC))而出现的限制。
应用虚拟化在单个应用的级别上提供虚拟环境,将该应用与底层OS隔离,类似于虚拟机将OS与底层硬件隔离的方式。例如,操作系统可本机地运行一些应用,而同时提供运行其它应用的虚拟环境。这可以允许操作系统例如运行为不同操作系统所设计的应用。应用虚拟化在主机操作系统中本机运行的应用和在虚拟环境中运行的应用之间模糊了对用户的区别。例如,两类应用可以并排出现在操作系统外壳所提供的任务栏或菜单中。例如,微软应用虚拟化(Application Virtualization(App-V))将应用转换成未安装且与其他应用不冲突的集中管理的虚拟服务。在物理环境中,每一应用依赖于其操作系统(OS)来获得某一范围的服务,包括存储器分配、设备驱动程序以及更多。应用及其OS之间的不兼容性可通过服务器虚拟化或是呈现虚拟化来解决—但OS的同一实例上所安装的两个应用之间的不兼容性是由应用虚拟化来解决的。
虚拟化服务器应用通常比其他应用更难。不同于通常由用户通过运行专用可执行程序从操作系统外壳启动的客户机应用,服务器应用可包括操作系统服务、工作者进程(worker processes)、以及按需或以某种时间表运行的daemon。管理员意欲虚拟化服务器应用,以使得它们就像将文件包或分组复制到计算机系统(如xcopy可部署)一样容易部署。诸如微软因特网信息服务器(IIS)之类的服务器组件不原生地支持使用该组件运行的应用的应用虚拟化。企业意欲将像IIS应用之类的服务器应用虚拟化成更为动态的――他们可不用每次重新安装应用而将应用在机器之间带来带去。这对于企业来说是生产力的节约,因为他们能以低得多的开销来进行负载平衡或维护他们的服务器。IIS具有web应用(如web站点)的概念,这些web应用运行在应用池内。IIS在创建工作者进程来响应于对网站的请求时指定该应用池名。一个问题是应用名上可能存在冲突。例如,管理员可能想要在单个服务器上虚拟化若干IIS应用,其中每个应用(或应用池)具有标准名“默认”。今天这样做引起冲突,从而仅第一个这样的web应用将正确地运行。
概述
本文描述了应用虚拟化系统,该应用虚拟化系统使得诸如web应用之类的服务器应用能够容易地可部署,将应用及其状态与系统分开,以及允许应用被容易地移动到另一服务器。该应用虚拟化系统提供了一种隔离诸如web服务器应用池名之类的冲突以及允许提供冲突信息的多个应用独立地运行且避免冲突的方式。该应用虚拟化系统接收应用准备会话的通知,并监控该会话以收集该应用使用以在客户机上运行的配置信息。该应用虚拟化系统存储所收集的信息直到要被虚拟化的该应用被部署为止。当管理员稍后部署该应用时,系统取回(retrieve)所存储的信息并使用该信息以及来自客户机的信息来重构元数据并虚拟化该应用。该应用虚拟化系统在封装时提取请求以及存储关于web应用的元数据,如应用的应用池的名称。一旦稍后部署该web应用,该系统咨询所存储的元数据以将该web应用置于与虚拟化环境相关联的正确的应用池中。
提供本概述以便以简化形式介绍将在以下详细描述中进一步描述的一些概念。本概述并不旨在标识所要求保护主题的关键特征或必要特征,也不旨在用于限制所要求保护主题的范围。
附图简述
图1是示出在一个实施例中的应用虚拟化系统的组件的框图。
图2是示出在一个实施例中的准备服务器应用来虚拟化的应用虚拟化系统的处理的流程图。
图3是示出在一个实施例中的部署和虚拟化服务器应用的应用虚拟化系统的处理的流程图。
图4是示出在一个实施例中的操作环境以及应用虚拟化系统的实现组件的框图。
详细描述
本文描述了应用虚拟化系统,该应用虚拟化系统使得诸如web应用之类的服务器应用能够容易地可部署,将应用及其状态与系统分开,以及允许应用被容易地移动到另一服务器。该应用虚拟化系统提供了一种隔离诸如web服务器应用池名之类的冲突以及允许提供冲突信息的多个应用独立地运行且避免冲突的方式。虚拟化应用一般涉及三个步骤:元数据提取、元数据存储和重构、以及对请求的运行时管理。元数据提取是知晓应用何时被准备来虚拟化以及监控该应用以提取配置信息的过程。配置信息可包括应用将其自身束缚于操作系统或其他应用的任何方式。
该应用虚拟化系统接收应用准备会话的通知,并监视该会话以收集该应用使用以在客户机上运行的配置信息。例如,该系统可在该应用的安装之前和之后获取配置信息的快照,并将差异存储为应用元数据。该应用虚拟化系统存储所收集的信息直到要被虚拟化的该应用被部署为止。当管理员稍后部署该应用时,系统取回所存储的信息并使用该信息以及来自客户机的信息来重构元数据并虚拟化该应用。例如,对于微软TM IIS,系统可捕捉IIS分配给该应用的应用池名,并将该应用池名存储为关于该应用的元数据以在部署期间使用以及可能进行修改。一旦稍后部署该web应用,该系统咨询所存储的元数据以将该web应用置于与虚拟化环境相关联的正确的应用池中。从而,该应用虚拟化系统允许多个服务器应用并排地在同一物理计算机硬件和操作系统上虚拟化地运行。
存在许多不同类型的服务器应用,如NT服务、COM+应用、WMI提供程序、SharePoint应用、以及web(如IIS)应用。各自在虚拟化它们时具有它们自己的挑战。尤其是,web应用给出了这里所解决的某些专门挑战。
第一个挑战是web服务器控制web应用何时启动,且被创建来运行web应用的进程是本机安装的可执行程序。对于NT服务来说,容易基于其文件路径来确定该服务是否应被虚拟化。如果文件路径在虚拟包A中,则虚拟化层可在该包的虚拟环境中启动NT服务。如果路径在虚拟包B中,则虚拟化层可在那个虚拟环境中启动NT服务,以此类推。如果路径不属于任何虚拟包,则该服务不被虚拟化。对于像微软TM IIS之类的典型web服务器,可执行程序路径对于该服务器所主持的所有web站点或web应用来说都是相同的,即到诸如IIS的w3wp.exe之类的工作者进程的路径。然而,工作者进程的参数可不同,如包括应用池名。该应用虚拟化系统修改虚拟化层来使用该信息来检测要虚拟化的web应用以及修改如何虚拟化这些应用。例如,该系统确保应用池名不重叠,且维护应用池名与虚拟包之间的映射。当工作者进程被创建时,系统在该映射中查找应用池名以确定该工作者进程是否应被虚拟化。
另一挑战涉及如何虚拟化不具有与之相关联的应用池的web服务器虚拟目录(不同于web应用)。该系统通过将虚拟目录转换成web应用并将应用池与该web应用相关联来解决该挑战。
另一挑战涉及在部署web应用时如何防止配置冲突。Web配置可在IIS以及其他web服务器中的不同级别处被应用。配置可被应用于服务器、web站点、以及以层级结构源于web站点的web应用和虚拟目录。Web应用安装程序能够自由地在任何级别配置web服务器。如果该应用虚拟化系统按原样捕捉该配置并在同一级部署它,则该系统可能造成冲突并可能破坏本地安装的或其他虚拟web应用。该问题的一种解决方案是捕捉在我们所关注的web应用上做出的配置改变,并在部署期间在web应用级别应用这些配置改变,以便不影响系统上的其他web应用。这些和其他细节在本文中进一步被描述。
应用虚拟化子系统的主要责任是监控、虚拟化、注册、以及运行时虚拟化。这些中的每一个在本文中被分开地描述。
监控涉及监视安装进程以检测对计算机系统做出的改变。在某些实施例中,称为定序器的应用负责监控应用虚拟化的阶段。某些子系统可挂钩应用编程接口(API)来监控该安装,而其他子系统可比较安装前和安装后计算机系统状态的快照来检测改变。前者的示例是虚拟服务子系统挂钩CreateService()API来检测新操作系统服务何时被安装程序添加。另一方面,在先前的示例中所描述的IIS子系统可通过比较安装之前和之后的IIS配置来收集其使用的信息。例如,微软工具MSDeploy允许用户运行束缚于特定web服务器的what-if部署。相同的工具可与该应用虚拟化系统一起使用来比较快照,以及生成机器无关的元数据段,如可扩展标记语言文件化的(如sav providers.xml)。在监控结束时,系统移除在全局水平设置的任何web服务器配置,并将该配置应用于个体web应用,以帮助在部署期间防止冲突。此外,如果顶级web虚拟目录在监控期间被创建了,则系统将这些转换成与应用池相关联的web应用,这将允许该虚拟目录在部署时被虚拟化。
虚拟化涉及向准备应用来虚拟化的管理员示出关于应用做出的改变的可视指示。定序器以一系列标签显示监控期间检测到的改变。该应用虚拟化系统可调用用于虚拟化特定应用类型的子系统,而每个子系统可提供用于虚拟化的适合于该子系统的用户接口。这消除了对在虚拟化阶段期间定序器具有每个子系统的显式知识的需要。子系统的虚拟化接口负责在应用虚拟化系统的虚拟化应用为它们创建的窗口中显式它们的结果。
注册涉及准备目标计算机系统来运行虚拟应用。尽管虚拟应用未被安装在客户机上,但某些信息被发布给客户机以提供无缝的用户体验(例如使得应用显露在开始菜单中或使得web应用在web服务器元数据库(metabase)中可用)。应用虚拟化系统将监控期间由该子系统收集的信息发布到客户机上的何时的配置位置。例如,虚拟web应用向web服务器注册它们的应用配置和应用池信息。此外,注册过程的一部分涉及将应用池名与某一虚拟应用相关联。当在客户机上实例化该web应用时,客户机将截取创建新web服务器工作者进程的请求,且对于某一虚拟应用来说如果该工作者进程的应用池名匹配,则该工作者进程在合适的虚拟环境中被创建。
该子系统与注册紧密相关的另一责任是配置。注册是执行一次的;然而配置可在系统注册其组件之后发生许多次。注册的示例是创建web站点、应用和本文所述的应用池。配置项的示例是数据库连接串。如果应用的后端数据库被移动,则该值可能需要在应用被注册之后改变。可适用的子系统负责应用任何子系统特定的配置值,如要求对要被应用的子系统的专门知识的配置(例如可能需要通过调用专门API来设置)。
运行时虚拟化指的是在虚拟化应用的运行时对函数的挂钩和改变函数的行为,使得应用能够访问其资源,就好像它被本地的安装在客户机上。运行时虚拟化也指代做出关于特定系统进程(即不是虚拟应用的包的一部分的进程)是否应被虚拟化的决策。例如,基于命令行上传递的应用池名,IIS子系统确定IIS工作者进程(如w3wp.exe)是否应被虚拟化。
图1是示出在一个实施例中的应用虚拟化系统的组件的框图。系统100包括监控组件110、包创建组件120、应用包存储130、应用部署组件140、冲突管理组间150、以及应用执行环境160。这些组件中的每一个都在此处进一步详细讨论。
监控组件110监控被准备来虚拟化的应用,以检测与该应用相关联的配置数据。监控组件110可迭代地通过注册的子系统,询问每个子系统该子系统是否对处理当前应用感兴趣。组件110调用指示出对该应用进程感兴趣的一个或多个子系统,使得这些子系统能够监控该应用做出的子系统特定的配置改变。监控组件110还可提供快照服务来获得监控前和监控后应用的快照,以检测应用做出的配置改变。
包创建组件120创建用于存储与正被准备来虚拟化的应用有关的配置数据的包。包可包括各种容器文件格式,容器文件格式可包括压缩、验证、加密或其他处理,以便使得包更小或提供包的创作者的安全性或必然性。例如,包可以是ZIP、CAB或适用于在单个文件内存储许多文件和设置的其他档案文件格式。包创建组件120在新应用被准备来虚拟化时创建包,并可存储通用配置信息和应用特定的配置信息,如由自定义虚拟化子系统检测到的应用特定的配置信息。
应用包存储130在对正被准备来虚拟化的应用的监控与将虚拟化的应用到一个或多个目标计算机系统的部署之间存储应用包。应用包存储130可包括各种存储介质,如文件系统、基于网络的存储、基于云的存储服务、数据库等等。
应用部署组件140将应用包部署到目标计算机系统,使得目标计算机系统可调用虚拟化的应用。组件140可在目标系统上执行应用特定的配置,如添加文件类型关联、添加到应用包的链接、执行操作系统服务配置、以及添加web服务器配置信息。应用部署组件140可调用与应用包相关联的子系统来执行子系统特定的注册任务,来准备虚拟化的应用以在目标计算机系统上运行。
冲突管理组件150检测与虚拟化的应用相关联的配置数据,以及修改该配置数据以避免与配置成在目标计算机系统上运行的其他虚拟或非虚拟应用的冲突。例如,组件150为指定命名应用池以在其中执行的web服务器应用检测名称冲突。组件150还可从管理员接收确定用于管理冲突的行为的信息。例如,在web应用的命名冲突的情况下,管理员可取代默认行为并指定特定的名称。
应用执行环境160提供了虚拟化的应用和目标计算机系统的主机操作系统之间的间接级别。包装器可以非常瘦,从而允许应用几乎本机地运行,诸如在应用被设计成在主机操作系统上运行时。另选地或另外地,包装器可提供API,并且满足为其它操作系统或操作系统版本设计的应用所预期的其它约束条件。因此,应用执行环境160向虚拟应用提供使用主机操作系统的可用资源来为其设计应用的环境。应用执行环境160还调用合适的子系统(或多个子系统)来提供在运行时对虚拟化的应用的子系统特定的处理。
实现应用虚拟化系统的计算设备可包括中央处理单元、存储器、输入设备(如键盘和定点设备)、输出设备(如显示设备)、以及存储设备(如盘驱动器或其他非易失性存储介质)。存储器和存储设备是可以用实现或启用该系统的计算机可执行指令(如软件)来编码的计算机可读存储介质。此外,数据结构和消息结构可被存储或经由诸如通信链路上的信号等数据传输介质传送。可以使用各种通信链路,诸如因特网、局域网、广域网、点对点拨号连接、蜂窝电话网络等。
该系统的实施例可以在各种操作环境中实现,这些操作环境包括个人计算机、服务器计算机、手持式或膝上型设备、多处理器系统、基于微处理器的系统、可编程消费电子产品、数码相机、网络PC、小型计算机、大型计算机、包括任何上述系统或设备的分布式计算环境等。计算机系统可以是蜂窝电话、个人数字助理、智能电话、个人计算机、可编程消费电子设备、数码相机等。
该系统可以在由一个或多个计算机或其他设备执行的诸如程序模块等计算机可执行指令的通用上下文中描述。一般而言,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。通常,程序模块的功能可在各个实施例中按需进行组合或分布。
图2是示出在一个实施例中的准备服务器应用来虚拟化的应用虚拟化系统的处理的流程图。在框210开始,系统接收指示来开始监控要被虚拟化的服务器应用。例如,管理员在将web应用安装到测试服务器上之前可启动本文所述的定序器。系统可获取开始快照以存储服务器应用的安装之前测试服务器的状态,用于与在安装之后获取的结束快照进行比较,以检测由服务器应用在安装期间做出的配置改变。
在框220继续,系统开始服务器应用的安装。管理员可运行设置程序,而系统可检测新进程的创建并将核虚拟化系统注入到该进程中。例如,如果管理员打开监控并启动服务器应用,则系统可检测与该服务器应用相关联的工作者进程的启动,开始核虚拟化引擎,以及将核虚拟化系统注入到该工作者进程中,使得例如该系统能够监控API调用以及该进程的其他行为。在框230继续,系统在服务器应用的安装期间捕捉配置数据。例如,服务器应用可提供与web或其他应用相关联的应用名,用该名称以及其他信息来配置web服务器元数据库,等等。子系统可检测该进程修改的文件和注册表键,以及其他配置改变,例如微软活动目录(MICROSOFT ACTIVE DIRECTORY)或IIS元数据库改变。
在框240继续,系统结束对服务器应用的安装的监控。例如,管理员可向本文所述的定序器告知安装完成,或者系统可自动地检测到安装已经结束。系统可获取服务器应用以及相关联的数据的结束快照,以与早先获取的开始快照相比较。在框250继续,系统存储捕捉的配置数据供服务器应用的后续部署期间使用。例如,系统可创建XML文件或其他数据存储,以及将配置数据持久保存在该数据存储中供以后取回。
在框260继续,系统打包服务器应用供部署,包括存储的配置数据。例如,系统可创建应用的档案文件或其他压缩表示,管理员可使用诸如xcopy或其他文件复制工具来容易地部署到其他服务器。在框260之后,这些步骤结束。
图3是示出在一个实施例中的部署和虚拟化服务器应用的应用虚拟化系统的处理的流程图。在框310开始,系统接收包括用于服务器应用的配置数据的应用包,以部署到目标计算机。例如,应用包可包括文件目录或档案文件,如本文所述,它包括对在应用的监控期间检测到的配置数据的XML或其他数据存储。在框320继续,系统检测所接收到的应用包中的可能与目标计算机上运行的其他应用冲突的配置数据。例如,如果服务器应用是web应用,则系统可检测配置数据所指定的应用池名是否与目标计算机上的其他web应用冲突或可能冲突。
在框330继续,系统设置将允许服务器应用在目标计算机上运行而不与目标计算机上的其他应用冲突的应用安装参数。例如,如果系统在先前的步骤中检测到冲突名,则系统可用修改的名称来设置安装参数以避免冲突。在某些实施例中,系统将一全局唯一标识符(GUID)附加到应用池名,以避免与具有相同名称的其他应用池冲突。系统还可从管理员或其他源接收指定替代安装参数以用于配置应用的取代信息。
在框340继续,系统配置目标计算机系统来用设置的应用安装参数运行服务器应用。例如,系统可将配置数据写到配置数据库、一个或多个文件、web服务器元数据库等,以配置应用。对应用进行配置将应用准备好来在目标计算机上运行。例如,对于web应用,配置可包括向web服务器应用管理器(如IIS管理器)提供web应用的虚拟目录、端口、文件位置。
在框350继续,系统接收指示出启动经配置的服务器应用的请求的应用执行指示。例如,该指示可来自通过网络(如要访问由服务器主持的网页)或其他源接收的请求。在某些实施例中,系统将组件注入到服务器应用管理组件,以截取启动服务器应用的调用。例如,web服务器通常包括启动工作者进程以处理服务器上主持的每个网站的管理应用。系统可截取调用工作者进程的调用,使得系统所管理的虚拟环境能够替代管理应用的本机行为。
在框360替代,系统加载与接收到的应用执行指示相关联的应用包,并在虚拟环境中执行该应用。系统可加载与应用虚拟化系统相关联的模块或其他可执行代码,以允许调用重定向、API挂钩、以及其他虚拟化动作,来向应用提供模仿该应用被设计用于的环境的虚拟环境。系统还可调用一个或多个虚拟化子系统来处理应用可能做出的各种类型的请求,如文件访问请求、注册表访问请求、web服务器特定的请求等等。在应用执行时,被虚拟化子系统放在适当位置的任何挂钩或其他间接过程允许系统处理要求重定向或其他处理的任何应用请求,以允许虚拟化提供的隔离。在框360之后,这些步骤结束。
图4是示出在一个实施例中的操作环境以及应用虚拟化系统的实现组件的框图。在某些实施例中,应用虚拟化系统使用操作系统驱动器430以及若干用户模式组件来虚拟化应用。虚拟化驱动器430(如sftplay.sys)在操作系统的内核级管理虚拟环境。该驱动器的进程管理器组件维护对虚拟环境映射的进程ID。在进程被创建时,进程管理器组件自动地将子进程添加到父进程的虚拟环境。进程管理器组件还向用户模式虚拟化库420通知虚拟进程创建和终止以及何时没有进程在虚拟环境中运行。
驱动器430的一个角色是执行注册表和文件系统虚拟化。当使用虚拟化库420首次创建虚拟环境时,注册表和文件映射信息被上传到驱动器430。驱动器430使用该信息来改变注册表和文件系统API的行为,以便对于虚拟应用440来说似乎就好像该应用被本地安装在目标计算机系统上。
用户模式虚拟化库420(如osguard.lib)包含API来管理虚拟环境和进程,且是用户模式和虚拟化驱动器430之间的接口。虚拟化库420还具有内建于其中的虚拟子系统,包括虚拟文件系统和虚拟注册表,这些虚拟子系统跨各种应用子系统被使用。虚拟化库420被用于打包虚拟应用,以及在运行时也被使用。定序器410是管理员使用的通过监控安装进程来来打包虚拟应用的应用,而监听器(未示出)是在运行时管理虚拟应用的操作系统服务。
虚拟化运行时模块(如sftldr.dll)是在创建子进程时由虚拟化库420或其自己注入到每个虚拟进程中的库。Detours库被用于挂钩虚拟应用440进程内的函数。某些调用被重定向到虚拟化驱动器430用于注册表和文件系统虚拟化;而其他调用做出对虚拟化库420的RPC调用以执行它们各自的子系统虚拟化。
在其初始化期间,虚拟化库420动态地加载注册表中列出的每个子系统模块,并存储到它们的工厂接口(factory interface)的指针。当定序器410或监听器使用虚拟环境管理器来创建虚拟环境时,工厂被用于创建每个子系统的实例。子系统实例被存储在虚拟环境对象内,并可由定序器或监听器取回。
许多子系统需要访问虚拟文件系统和注册表来执行它们的虚拟化。例如,虚拟COM和虚拟服务子系统都需要访问虚拟注册表键来分别创建虚拟COM对象以及开始虚拟服务。因此,在某些实施例中,虚拟注册表和文件系统子系统不是一般化的,而是核心组件。子系统可通过经它们的监控和运行时接口传递给它们的虚拟环境对象来获得对这些核心子系统的访问。
监控接口在清单450文件中存储它检测到的子系统改变。该清单450被传递到包括可视化接口和注册接口的其他接口,可视化接口显示该信息并允许该信息被编辑,而注册接口使用该信息来注册组件。
在某些实施例中,应用虚拟化系统允许管理员为虚拟化的web应用取代应用池名。例如,管理员可能想要配置两个web应用以在同一池中运行。在某些情况中,web应用可被设计成使用特定的名称,管理员可能修改sav providers.xml或用于存储应用元数据的其他位置来使用该应用池名,使得web应用将继续正确地运行。
在某些实施例中,应用虚拟化系统在单个虚拟环境中运行多个服务器应用。尽管本文所述的每应用分开的虚拟环境可能在许多情况下是所希望的,但是该系统也可在单个环境中虚拟化多个应用。例如,管理员可能想要节省目标计算机系统的资源,或相关应用可能想要以不被多个虚拟环境的隔离所允许的方式彼此通信。
通过上述,将理解本文描述的应用虚拟化系统的特定实施例只是为了说明的目的,但是,在不偏离本发明的精神和范围的情况下,可以进行各种修改。因此,本发明只受所附权利要求限制。

Claims (15)

1.一种用于准备web服务器应用来虚拟化的计算机实现的方法,所述方法包括:
接收开始监控要被虚拟化的web服务器应用的指示,其中所述应用是使用具有指定特定web应用的参数的web服务器的本机、非虚拟化的进程调用的;
开始所述web应用的安装;
在所述web应用的安装期间捕捉配置数据,包括调用所述web应用的参数;
结束对所述web应用的安装的监控;
存储所捕捉的配置数据供在所述web应用的后续部署期间使用;以及
打包所述web应用供部署,包括所存储的配置数据,
其中,前述步骤由至少一个处理器来执行。
2.如权利要求1所述的方法,其特征在于,接收开始监控的指示包括检测管理员启动应用监控工具。
3.如权利要求1所述的方法,其特征在于,监控包括获取开始快照以存储所述web应用的安装之前测试服务器的状态,以用于与在安装之后获取的结束快照进行比较,以检测由所述web应用在安装期间做出的配置改变。
4.如权利要求1所述的方法,其特征在于,开始安装包括检测新进程的创建以及将核虚拟化系统注入到该进程中。
5.如权利要求1所述的方法,其特征在于,捕捉配置数据包括检测与web应用相关联的应用池名。
6.如权利要求1所述的方法,其特征在于,捕捉配置数据包括检测由所述web应用在安装期间修改的一个或多个文件、注册表值、或应用特定的配置设置。
7.如权利要求1所述的方法,其特征在于,结束监控包括获取所述web应用和相关联的数据的结束快照,以与安装之前获取的开始快照进行比较。
8.如权利要求1所述的方法,其特征在于,存储所捕捉的配置数据包括创建XML文件以及将所述配置数据持久保存到所述XML文件供以后取回。
9.如权利要求1所述的方法,其特征在于,打包所述web应用包括创建档案文件,所述档案文件包含与所述web应用相关联的一个或多个文件和配置数据。
10.一种用于虚拟化服务器应用的计算机系统,所述系统包括:
处理器和存储器,所述处理器和存储器被配置成执行软件指令;
监控组件,所述监控组件被配置成监控正被准备来虚拟化的应用,以检测与该应用相关联的配置数据;
包创建组件,所述包创建组件被配置成创建用于存储与正被准备来虚拟化的应用有关的配置数据的包;
应用包存储,所述应用包存储被配置成在对正被准备来虚拟化的应用的监控与将虚拟化的应用到一个或多个目标计算机系统的部署之间存储应用包;
应用部署组件,所述应用部署组件被配置成将应用包部署到目标计算机系统,使得所述目标计算机系统可调用虚拟化的应用;
冲突管理组件,所述冲突管理组件被配置成检测与虚拟化的应用相关联的配置数据,以及修改所述配置数据以避免与配置成在目标计算机系统上运行的其他虚拟或非虚拟应用的冲突;以及
应用执行环境,所述应用执行环境被配置成提供了虚拟化的应用和目标计算机系统的主机操作系统之间的间接水平。
11.如权利要求10所述的系统,其特征在于,所述监控组件被进一步配置成挂钩应用编程接口(API)来检测在改变被请求时由应用做出的配置改变。
12.如权利要求10所述的系统,其特征在于,所述应用部署组件被进一步配置成在目标系统上执行应用特定的配置,这包括向web应用管理组件注册该应用。
13.如权利要求10所述的系统,其特征在于,所述冲突管理组件被进一步配置成为指定命名应用池以在其中执行的web服务器应用检测名称冲突,以及修改名称以不与其他应用冲突。
14.如权利要求10所述的系统,其特征在于,所述冲突管理组件被进一步配置成从管理员接收信息,该信息取代所述组件的默认行为以及指定特定的应用池名以为web应用避免命名冲突。
15.如权利要求10所述的系统,其特征在于,所述应用执行环境在目标计算机系统上的工作者进程中检测应用的启动。
CN201180012004.6A 2010-03-04 2011-03-02 用于诸如web应用之类的服务器应用的虚拟环境 Active CN102782648B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/717,146 US8468542B2 (en) 2010-03-04 2010-03-04 Virtual environment for server applications, such as web applications
US12/717,146 2010-03-04
PCT/US2011/026928 WO2011109562A2 (en) 2010-03-04 2011-03-02 Virtual environment for server applications, such as web applications

Publications (2)

Publication Number Publication Date
CN102782648A true CN102782648A (zh) 2012-11-14
CN102782648B CN102782648B (zh) 2015-11-25

Family

ID=44532392

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201180012004.6A Active CN102782648B (zh) 2010-03-04 2011-03-02 用于诸如web应用之类的服务器应用的虚拟环境

Country Status (5)

Country Link
US (2) US8468542B2 (zh)
EP (1) EP2542966B1 (zh)
JP (1) JP5726212B2 (zh)
CN (1) CN102782648B (zh)
WO (1) WO2011109562A2 (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017028695A1 (zh) * 2015-08-17 2017-02-23 阿里巴巴集团控股有限公司 一种用于发布网页应用的方法与设备
CN109063469A (zh) * 2013-03-14 2018-12-21 英特尔公司 基于信任级别和其他属性对web内容进行的差异化的容器化与执行
CN110392880A (zh) * 2017-01-11 2019-10-29 Mz知识产权控股有限责任公司 用于管理虚拟环境的动态设计数据的系统和方法
CN113419746A (zh) * 2021-05-21 2021-09-21 济南浪潮数据技术有限公司 一种Cinder-CSI插件安装方法、系统、存储介质及设备

Families Citing this family (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060167838A1 (en) * 2005-01-21 2006-07-27 Z-Force Communications, Inc. File-based hybrid file storage scheme supporting multiple file switches
US9195500B1 (en) 2010-02-09 2015-11-24 F5 Networks, Inc. Methods for seamless storage importing and devices thereof
US8364794B2 (en) * 2010-03-11 2013-01-29 International Business Machines Corporation Admission control framework method and system
US8434135B2 (en) 2010-06-11 2013-04-30 Microsoft Corporation Creating and launching a web application with credentials
US9164671B2 (en) 2010-06-11 2015-10-20 Microsoft Technology Licensing, Llc Web application navigation domains
US8595551B2 (en) * 2010-06-11 2013-11-26 Microsoft Corporation Web application transitioning and transient web applications
US8671384B2 (en) 2010-06-11 2014-03-11 Microsoft Corporation Web application pinning including task bar pinning
US8863001B2 (en) 2010-06-11 2014-10-14 Microsoft Corporation Web application home button
US8429546B2 (en) 2010-06-11 2013-04-23 Microsoft Corporation Creating task sessions
US8793650B2 (en) 2010-06-11 2014-07-29 Microsoft Corporation Dynamic web application notifications including task bar overlays
US9286298B1 (en) 2010-10-14 2016-03-15 F5 Networks, Inc. Methods for enhancing management of backup data sets and devices thereof
US9354852B2 (en) * 2010-12-23 2016-05-31 Microsoft Technology Licensing, Llc Satisfying application dependencies
WO2012093472A1 (ja) * 2011-01-05 2012-07-12 株式会社日立製作所 サービスの予約管理方法、仮想計算機システム及び記憶媒体
US10423509B2 (en) * 2011-08-05 2019-09-24 Entit Software Llc System and method for managing environment configuration using snapshots
US8978015B2 (en) * 2011-08-15 2015-03-10 Red Hat, Inc. Self validating applications
US20130091197A1 (en) 2011-10-11 2013-04-11 Microsoft Corporation Mobile device as a local server
US8935375B2 (en) * 2011-12-12 2015-01-13 Microsoft Corporation Increasing availability of stateful applications
US9020912B1 (en) 2012-02-20 2015-04-28 F5 Networks, Inc. Methods for accessing data in a compressed file system and devices thereof
US9092247B2 (en) * 2012-03-29 2015-07-28 Microsoft Technology Licensing, Llc Persistent and resilient worker processes
CN103716347B (zh) * 2012-09-29 2017-06-23 国际商业机器公司 建立虚拟机的方法、装置和云服务器
US9519501B1 (en) 2012-09-30 2016-12-13 F5 Networks, Inc. Hardware assisted flow acceleration and L2 SMAC management in a heterogeneous distributed multi-tenant virtualized clustered system
US10375155B1 (en) 2013-02-19 2019-08-06 F5 Networks, Inc. System and method for achieving hardware acceleration for asymmetric flow connections
US9554418B1 (en) 2013-02-28 2017-01-24 F5 Networks, Inc. Device for topology hiding of a visited network
US10657755B2 (en) 2013-03-15 2020-05-19 James Carey Investigation generation in an observation and surveillance system
CA3091605A1 (en) 2013-03-15 2014-09-15 James Carey Investigation generation in an observation and surveillance system
US11032520B2 (en) * 2013-03-15 2021-06-08 James Carey Self-healing video surveillance system
ES2903269T3 (es) 2013-03-15 2022-03-31 James Carey Sistema de videovigilancia autorreparable
US9811364B2 (en) * 2013-06-13 2017-11-07 Microsoft Technology Licensing, Llc Thread operation across virtualization contexts
US9811447B2 (en) 2013-06-20 2017-11-07 Entit Software Llc Generating a fingerprint representing a response of an application to a simulation of a fault of an external service
US10078314B2 (en) * 2014-01-29 2018-09-18 Siemens Aktiengesellschaft Method for providing functions within an industrial automation system, and industrial automation system
CN104156662B (zh) * 2014-08-28 2017-10-27 北京奇虎科技有限公司 进程监控的方法、装置和智能终端
JP2016071562A (ja) 2014-09-29 2016-05-09 富士通株式会社 判定プログラム、方法及び装置
CN104461893B (zh) * 2014-12-16 2017-12-01 用友软件股份有限公司 数据处理方法与数据处理装置
US10834065B1 (en) 2015-03-31 2020-11-10 F5 Networks, Inc. Methods for SSL protected NTLM re-authentication and devices thereof
US11709799B2 (en) * 2015-08-29 2023-07-25 Vmware, Inc. Content or file based application virtualization using a cache
US10404698B1 (en) 2016-01-15 2019-09-03 F5 Networks, Inc. Methods for adaptive organization of web application access points in webtops and devices thereof
US11417202B2 (en) 2016-03-01 2022-08-16 James Carey Theft prediction and tracking system
WO2017151631A1 (en) 2016-03-01 2017-09-08 James Carey Theft prediction and tracking system
GB2558366B (en) * 2016-10-24 2022-08-10 Fisher Rosemount Systems Inc Systems and methods for merging modular control systems into a process plant
JP7398189B2 (ja) 2017-09-13 2023-12-14 フィッシャー-ローズマウント システムズ,インコーポレイテッド 方法、コンピューティングデバイスおよびシステム
US10884895B2 (en) * 2019-01-30 2021-01-05 International Business Machines Corporation Capture of software element state changes during software application runtime and application modification based on state changes
JP7235147B2 (ja) * 2020-10-15 2023-03-08 株式会社リコー 情報処理装置、プログラム、Webアプリケーション管理方法及び情報処理システム
JP7028300B2 (ja) * 2020-10-15 2022-03-02 株式会社リコー 情報処理装置、Webアプリケーション管理方法及び情報処理システム
US20230205932A1 (en) * 2021-12-28 2023-06-29 Rakuten Mobile, Inc. Method, apparatus, and computer readable medium

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090254899A1 (en) * 2008-04-07 2009-10-08 Installfree, Inc. Method for virtualizing software applications
US20100037206A1 (en) * 2008-08-07 2010-02-11 Code Systems Corporation Method and system for configuration of virtualized software applications

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6256031B1 (en) 1998-06-26 2001-07-03 Microsoft Corporation Integration of physical and virtual namespace
US7257705B2 (en) * 2002-11-18 2007-08-14 Sparta Systems, Inc. Method for preserving changes made during a migration of a system's configuration to a second configuration
US7210125B2 (en) 2003-07-17 2007-04-24 International Business Machines Corporation Method and system for application installation and management using an application-based naming system including aliases
US7383535B1 (en) 2003-08-25 2008-06-03 Unisys Corporation System and method for implementing code hooks in a web-based environment
US20050289538A1 (en) 2004-06-23 2005-12-29 International Business Machines Corporation Deploying an application software on a virtual deployment target
TWI242376B (en) * 2004-06-24 2005-10-21 Via Tech Inc Method and related system for detecting advertising by integrating results based on different detecting rules
US7958506B2 (en) * 2006-06-22 2011-06-07 Intel Corporation Time sliced interrupt processing on virtualized platform
US8151264B2 (en) * 2007-06-29 2012-04-03 Intel Corporation Injecting virtualization events in a layered virtualization architecture
US8862590B2 (en) * 2007-06-29 2014-10-14 Microsoft Corporation Flexible namespace prioritization
KR100927442B1 (ko) 2007-08-16 2009-11-19 주식회사 마크애니 가상 응용프로그램 생성 시스템, 가상 응용프로그램 설치방법, 네이티브 api 호출 처리 방법 및 가상응용프로그램 수행 방법
US8635611B2 (en) 2007-11-16 2014-01-21 Microsoft Corporation Creating virtual applications
US8099541B2 (en) * 2008-01-22 2012-01-17 Globalfoundries Inc. Minivisor entry point in virtual machine monitor address space
US20090199175A1 (en) 2008-01-31 2009-08-06 Microsoft Corporation Dynamic Allocation of Virtual Application Server
US20090199178A1 (en) 2008-02-01 2009-08-06 Microsoft Corporation Virtual Application Management
US9086901B2 (en) 2008-03-07 2015-07-21 Sap Se Migration of applications from physical machines to virtual machines
US8434093B2 (en) * 2008-08-07 2013-04-30 Code Systems Corporation Method and system for virtualization of software applications
US8357039B2 (en) * 2009-01-29 2013-01-22 Wms Gaming, Inc. Configuring and controlling wagering game compatibility
US20110238796A1 (en) * 2010-03-29 2011-09-29 Faulk Jr Robert L Electronic device and method

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090254899A1 (en) * 2008-04-07 2009-10-08 Installfree, Inc. Method for virtualizing software applications
US20100037206A1 (en) * 2008-08-07 2010-02-11 Code Systems Corporation Method and system for configuration of virtualized software applications

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109063469A (zh) * 2013-03-14 2018-12-21 英特尔公司 基于信任级别和其他属性对web内容进行的差异化的容器化与执行
US11811772B2 (en) 2013-03-14 2023-11-07 Intel Corporation Differentiated containerization and execution of web content based on trust level and other attributes
WO2017028695A1 (zh) * 2015-08-17 2017-02-23 阿里巴巴集团控股有限公司 一种用于发布网页应用的方法与设备
CN110392880A (zh) * 2017-01-11 2019-10-29 Mz知识产权控股有限责任公司 用于管理虚拟环境的动态设计数据的系统和方法
CN113419746A (zh) * 2021-05-21 2021-09-21 济南浪潮数据技术有限公司 一种Cinder-CSI插件安装方法、系统、存储介质及设备
CN113419746B (zh) * 2021-05-21 2022-11-08 济南浪潮数据技术有限公司 一种Cinder-CSI插件安装方法、系统、存储介质及设备

Also Published As

Publication number Publication date
US20130275978A1 (en) 2013-10-17
CN102782648B (zh) 2015-11-25
EP2542966A2 (en) 2013-01-09
JP5726212B2 (ja) 2015-05-27
EP2542966A4 (en) 2018-03-21
US8468542B2 (en) 2013-06-18
WO2011109562A3 (en) 2012-01-05
JP2013521578A (ja) 2013-06-10
EP2542966B1 (en) 2022-06-29
US20110219385A1 (en) 2011-09-08
US8839265B2 (en) 2014-09-16
WO2011109562A2 (en) 2011-09-09

Similar Documents

Publication Publication Date Title
CN102782648B (zh) 用于诸如web应用之类的服务器应用的虚拟环境
CN102741814B (zh) 可扩展应用虚拟化子系统
US11836516B2 (en) Reducing execution times in an on-demand network code execution system using saved machine states
CN102754073B (zh) 用于虚拟化的扩展点声明性注册的方法和系统
US9684502B2 (en) Apparatus, systems, and methods for distributed application orchestration and deployment
US9513938B2 (en) Virtual appliance integration with cloud management software
US8671392B2 (en) Integrating software applications
US20110154226A1 (en) Chip model of an extensible plug-in architecture for enterprise mashups
CN111527474B (zh) 软件功能的动态交付
US20070156913A1 (en) Method for enabling extension points through plug-ins
CN105094922A (zh) 应用程序免安装运行控制方法及其装置
CN102207859A (zh) 解决方案部署方法、设备和系统
US20170163518A1 (en) Model-based artifact management
US10838745B2 (en) Loading dependency library files from a shared library repository in an application runtime environment
US20090282097A1 (en) Method and System for Ensuring Consistency Over Time of Data Gathered By Distinct Software Applications
JP5346405B2 (ja) ネットワークシステム
Zachariadis et al. Satin: a component model for mobile self organisation
CN116028163A (zh) 一种容器组的动态链接库调度方法、装置及存储介质
EP3786797A1 (en) Cloud resource marketplace
Frampton et al. Apache mesos
EP4148570A1 (en) Content processing management system and method
Kumar et al. Concepts and Architecture

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150729

C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20150729

Address after: Washington State

Applicant after: Micro soft technique license Co., Ltd

Address before: Washington State

Applicant before: Microsoft Corp.

C14 Grant of patent or utility model
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20190925

Address after: California, USA

Patentee after: Si Wei Yun

Address before: Washington State

Patentee before: Micro soft technique license Co., Ltd