使用 IBM Tivoli Provisioning Manager 部署组合虚拟设备

部署实际的分布式软件解决方案可能非常复杂,而且充满挑战。通常,每台计算机中的软件堆栈包含多个软件层,部署分布在计算机集群上,让软件安装和配置非常费时,而且可能会包含错误。通过将 IBM® Tivoli® Provisioning Manager 与虚拟设备结合使用,可以极大地简化此部署流程。本文将通过 IBM WebSphere® Application Server 示例说明如何创建并捕获组合虚拟设备、自定义、打包和在十分钟内部署解决方案。 本文来自于 IBM WebSphere Developer Technical Journal

Jian Yin (jianyin@us.ibm.com), 研究人员, IBM

Jian Yin 是 IBM Watson Research Center 的一位研究人员。他的研究兴趣包括可伸缩性、可用性、容错、安全性、系统管理和数据挖掘。他已经在系统领域发布了超过 20 篇会议和杂志论文。



Ruth Willenborg, 高级技术人员, IBM

Ruth Willenborg 是 IBM WebSphere Technology Institute 的一名高级技术人员,从事虚拟化方面的工作。在进行这项工作之前,Ruth 曾是 WebSphere Performance 团队的经理,负责 WebSphere Application Server 性能分析、性能基准检验和性能工具开发。Ruth 在 IBM 具有 20 多年的软件开发经验。她是 Performance Analysis for Java Web Sites(Addison-Wesley,2002 年)一书的合著者之一。


developerWorks 投稿作者

Diana Arroyo (darroyo@us.ibm.com), 软件工程师, IBM

Diana Arroyo 是 IBM T.J. Watson Research Center 的一位软件工程师。她目前在进行将虚拟化建模和放置工具与 DMTF-Open Virtual Machine Format (OVF) 标准集成的工作。



Hidayatullah Shaikh (hshaikh@us.ibm.com), 高级技术人员, IBM Corporation

Hidayatullah H. Shaikh 是 IBM T.J. Watson Research Center 的一位高级技术人员兼经理。他当前在 IBM Services Research 中从事各种系统管理服务产品的相关工作,与 IBM Global Technology Services 进行紧密协作。他感兴趣和擅长的领域包括业务流程建模和集成、面向服务的体系结构、网格计算、电子商务、企业 Java、数据库管理系统、高可用性集群、远程基础设施管理和虚拟化。您可以通过 hshaikh@us.ibm.com 与 Hidayatullah 联系。



2008 年 6 月 12 日

引言

实际的软件解决方案涉及到的复杂性有时候可能令人生畏。每个服务器都需要由多层软件组成的软件堆栈(操作系统、中间件和应用程序)。解决方案经常分布在多台计算机上,以获得可伸缩性和可用性。对于所部署的每个解决方案,软件堆栈使用传统部署技术以独立的方式直接在每个服务器上安装和配置。

正如在前面的 developerWorks 文章中讨论的,通过使用预先安装整个解决方案的虚拟映像,可以利用虚拟映像极大地简化部署流程。此外,IBM Tivoli Provisioning Manager 提供了存储虚拟映像模板库、使用元数据表示虚拟映像的配置数据和表示映像间的关系的能力。通过将前面文章中描述的虚拟映像技术和 Tivoli Provisioning Manager 中提供的功能相结合,十分钟左右就能完成示例 IBM WebSphere Application Server 集群和 IBM DB2® Universal Database 的部署。

本文将虚拟映像技术与 Tivoli Provisioning Manager 中提供的功能结合,以实现跨多台计算机的软件解决方案的完全自动化部署。Tivoli Provisioning Manager 图形用户界面(Graphical User Interface,GUI)用于选择要部署的解决方案。Tivoli Open Process Automation Library (OPAL) 中的 IBM Automation Package for Virtual Software Appliance 内提供的示例 Tivoli Provisioning Manager 工作流可用于促进映像的部署和自定义。


详细示例

此示例中的步骤的组织与通常分布在组织内的角色对应。使用 Tivoli Provisioning Manager 部署组合虚拟设备涉及四个主要步骤。前两个步骤需要应用程序知识。后面两个步骤涉及到 Tivoli Provisioning Manager,对任何组合虚拟设备都是通用的。这些步骤如下(图 1):

  1. 创建组合虚拟设备映像。
    虚拟映像的创建与是否使用 Tivoli Provisioning Manager 进行部署无关。此步骤需要了解通用部署模式、确定配置和相互依赖关系信息和实际创建映像。

  2. 定义元数据。
    组合虚拟设备的 Tivoli Provisioning Manager 元数据在此步骤中创建。

  3. 准备 Tivoli Provisioning Manager 部署环境。
    在此步骤中,要将映像和元数据放入 Tivoli Provisioning Manager,并设置主机环境。

  4. 部署并启动组合虚拟设备映像。
    此步骤使用 Tivoli Provisioning Manager 执行部署。Tivoli Provisioning Manager GUI 使用元数据显示可用组合虚拟设备列表,询问自定义信息,然后工作流会将映像部署到目标环境。

图 1. 使用 Tivoli Provisioning Manager 实现组合虚拟设备部署的自动化
图 1. 使用 Tivoli Provisioning Manager 实现组合虚拟设备部署的自动化

在下面部分中将详细描述这些步骤。

1. 创建组合虚拟设备映像

尽管使用虚拟映像并不会消除安装和配置软件的复杂性,但可以消除复杂性上游,从而减少所执行的完全安装和配置的次数,并尽可能减少接触完全安装和配置流程的人员数量。

在此步骤中,将由熟练的个人安装和配置组合虚拟映像。此步骤只进行一次,从而允许映像的下游使用者在不用安装或配置软件的情况下使用映像。由于构建可重用虚拟映像模板需要一定的投资,因此第一个任务是确定通用部署模式。

  1. 确定通用使用模式

    几乎可以为任何物理部署创建虚拟映像,但最为有价值的是代表了重复多次的部署的虚拟映像(用于不同的组织或不同的应用程序)。此外,初始安装和配置越复杂,虚拟映像所具有的价值越大。

    例如,如果拥有很多 IBM WebSphere Application Server 或 IBM WebSphere Portal 应用程序部署(特别是集群部署),则创建虚拟映像可以极大地加速此流程。图 2 显示了一个通用 WebSphere Application Server 集群拓扑,该拓扑的业务逻辑层包括部署管理器和应用服务器托管节点,而且具有使用 DB2 的数据持久层。此拓扑可以分布在多台计算机上,以获得可伸缩性和可用性。

    一旦确定了要实现的配置模式,下一步就要创建虚拟映像。

    图 2. 示例 WebSphere Application Server to DB2 部署
    图 2. 示例 WebSphere Application Server to DB2 部署
  2. 创建模板映像

    在创建组合虚拟设备时,需要将解决方案的配置和相互依赖关系捕获到一组虚拟机映像中。可以通过直接安装到虚拟映像中,或使用 physical to virtual (P2V) 工具创建映像。此示例中的黄金映像是手动安装和配置的,可确保全面了解映像内容。

    完成了映像的初始安装和配置后,下一步是分析映像,并将其转换为可重用映像模板,以便用于部署多个应用程序环境。此步骤是流程中最困难的部分,需要对每个部署所需的独特配置价值进行全面评估。其目标是尽可能多地完成预先安装和预先配置工作,而同时要尽可能减少映像的数量。

  3. 添加激活逻辑

    对于所有映像,最可能更改的内容包括网络信息(IP 地址、主机名等)、用户信息(用户 ID 和密码)和远程连接性(如数据库和目录连接)。Automating deployment and activation of virtual images 一文中提供了用于更新 Linux 的 IP 地址和用户信息的示例脚本,并提供了用于插入特定于软件的配置更改的框架。

    除了基本网络、用户和远程连接性数据外,还将需要决定在映像中应用的预先配置量以及在部署时要进行的工作。例如,Using virtual images to deploy WebSphere Application Server 一文提供了仅仅创建一个 WebSphere Application Server 虚拟映像的技术。部署管理器、独立节点或托管节点的映像自定义在首次激活映像时根据部署时参数完成。如图 2 中所示,此技术支持使用一个 WebSphere 模板映像进行部署管理器和多个应用程序节点的部署工作。

  4. 标识底层基础设施需求

    除了预先安装和预先配置虚拟映像外,部署虚拟环境还提供了规定主机平台特定需求的机会。例如,除了虚拟映像模板外,还应该随其提供自有的需求规范,如每个映像实现最优性能所需的虚拟内存和虚拟 CPU。

    此信息有望成为 Open Virtual Format (OVF) 规范的一部分。由于尚没有标准可用,因此接下来的部分将说明如何在 Tivoli Provisioning Manager DataCenter Model (DCM) 内表示虚拟服务器模板中的需求。

2. 定义元数据

一旦创建了虚拟映像,必须执行一系列特定于 Tivoli Provisioning Manager 的步骤。此工作的第一部分是创建元数据,这需要具有组合虚拟设备的相关知识。必须执行此步骤,以便利用 Tivoli Provisioning Manager 的 DCM 和工作流引擎来部署虚拟设备。接下来让我们进一步了解一下所需的元数据。(可下载此示例的完整示例元数据。)

  1. 表示组合虚拟设备

    总体组合虚拟设备描述为分布式应用程序。分布式应用程序可以包含多个模块;在本例中,其中包含多个虚拟映像。如清单 1 中所示,分布式应用程序在 Tivoli Provisioning Manager 中表示为软件应用程序模块。包含在分布式应用程序中的每个虚拟机都使用应用程序模块条目元素指定。工作流也在此指定(也显示在清单 1 中)。

    清单 1. 软件应用程序模块 DCM 示例
    <software-application-module name="WAS Server and DB Composite Appliance" 
    locale="en_US" 
    	version="1.0" vendor="IBM" description="This is a WAS Server and DB Composite 
    	Appliance" is-draft="false" module-type="APP">
    		<!-- property definitions need to be added here. -->
    <application-module-entry software-module="DB Server Appliance" position="1"/>
    <application-module-entry software-module="WAS Server Cell Appliance" position="2"/>
    		<!-- software-resource-template definition need to be added here. -->
        <use-workflow workflow-id="Mohegan_Appliance_Deploy" />
    
    </software-application-module>
  2. 表示各个映像

    每个组合虚拟设备可以包含多个虚拟映像。例如,前面图 2 中所示的“WAS 服务器和 DB 组合设备”(WAS Server and DB Composite Appliance) 包括 WebSphere Application Server 虚拟映像和 DB2 虚拟映像。每个虚拟映像都使用软件堆栈对象指定。清单 2 显示了“DB2 Server Appliance”映像条目。软件堆栈对象包含信息的多个属性元素,如虚拟机模板在文件存储库中的存储位置等。

    清单 2. 软件堆栈 DCM 示例
    <software-stack name="DB Server Appliance" locale="en_US" description="This is 
    the DB part of the WAS-DB Appliance " stack-type="Declared">
    	    	<!-- property definitions need to be added here. -->
        		<!-- software-resource-template definition need to be added here. 
        		-->
        		<!-- software-stack-entry definitions need to be added here. -->
        		<!-- installable-package definition need to be added here. -->
    </software-stack>
  3. 表示软件

    每个虚拟映像内的特定软件使用软件模块名称元数据加以表示。如清单 3 中所示,此条目包括底层基础设施需求和一组要配置的参数。

    清单 3. 软件模块 DCM 示例
    <software-module name="SUSE_V_10" description="SUSE Enterprise Linux" 
    version="Version 10 Update 1" vendor="Novell" is-draft="false">
    		<!-- property definitions need to be added here. -->
    		<!-- software-resource-template definition need to be added here. -->
    </software-module>
  4. 表示资源需求和参数

    每个虚拟机的资源需求通过虚拟服务器模板指定。如清单 4 中所示,虚拟服务器模板可以包括多个资源需求元素,如 CPU 配额、内存和硬盘空间。

    清单 4. 虚拟服务器模板 DCM 示例
    <virtual-server-template name="VMware_WAS-Cell_VM">
       <resource-requirement resource-type="cpu" how-many="1" size="1.0" 
       is-shared="false">
         <property component="KANAHA" name="sched.cpu.max" value="1" />
         <property component="KANAHA" name="sched.cpu.shares" value="normal" />
       </resource-requirement>
       <!—additional resource-requirements definitions can be added here. -->
    </virtual-server-template>

    每个软件模块可以具有一个软件资源模板,其中可能包括多个模板参数元素,用于指定用户需要为配置指定的参数。例如,如清单 5 中所示,“WAS 6.1 Cell”模板具有管理员用户 ID 和密码的配置参数。此元数据允许 Tivoli Provisioning Manager 在 GUI 中收集这些参数。此工作流设计用于收集值并将其传递给映像,以供在激活期间使用。一个参数可以使用 template-param-operand 引用其他参数的值,从而支持表述软件模块间的相互依赖关系。

    清单 5. 模板参数 DCM 示例
    <software-resource-template name="WAS 6.1 Cell Template" software-resource-type=
        "INSTALLATION" multiplicity-type="Unspecified" software-configuration-type=
        "Regular" is-selected="true" is-default="true">
    	<template-param name="secure_adminid" value="wsadmin" parameter-type="String" 
    		multiplicity-type="One" is-hidden="false" is-changeable="true" 
    		is-encrypted="false">
               		<template-param-value value="wsadmin" is-default="true" />
    	</template-param>
     	<template-param name="secure_passwd" value="*****" parameter-type="String" 
    		multiplicity-type="One" is-hidden="false" is-changeable="true" 
    		is-encrypted="false">
    			<template-param-value value="pw4was" is-default="true" />
    	</template-param>
    	<!—additional template-param definitions can be added here. -->
    </software-resource-template>

一旦创建了元数据文件,就要按照接下来部分中所述将元数据导入 Tivoli Provisioning Manager 并设置工作流。

3. 准备 Tivoli Provisioning Manager 部署环境

创建了组合虚拟设置映像和元数据之后,必须准备 Tivoli Provisioning Manager 环境。这包括将映像复制到存储库中、导入元数据、下载工作流和完成主机平台的任何其他设置工作。

  1. 将虚拟映像模板复制到文件存储库中

    必须将虚拟映像模板放置在 Tivoli Provisioning Manager 文件存储库中才能进行虚拟解决方案部署。这些文件存储库设置用于存储和检索大型文件。元数据使用 Image.Repository 变量指向正确的文件存储库,使用 Image.Location 变量建立映像在存储库中的具体位置。例如,清单 6 显示了其中一个虚拟映像模板的元数据描述部分的内容。如其中所示,映像保存在相对于文件存储库根目录的 images/was61/WAS/was 中。

    清单 6. 映像存储库 DCM 示例
    <property component="KANAHA" name="Image.Repository" 
    	value="MoheganRepositoryGpfs" />
    <property component="KANAHA" name="Image.Location" 
    	value="images/was61/WAS/was"/>
  2. 将元数据导入 Tivoli Provisioning Manager

    除了复制映像模板外,还需要将映像的元数据导入 DCM。不过,这仅仅涉及到运行程序:

    $TIO_HOME/tools/xmlimport.sh

    使用文件的 URN 作为参数(文件的 URN 的开始部分为: file://)。

  3. 从 OPAL 设置工作流

    一旦将描述虚拟设备的元数据导入 Tivoli Provisioning Manager 的 DCM 并将虚拟映像模板复制到正确的文件存储库中,部署虚拟设备就变成了调用工作流的简单任务。OPAL 上提供了一组用于部署虚拟设备的工作流。按照包中所述下载和安装这些工作流。

    这些工作流对组合虚拟设备的部署进行协调,分叉出一个进程来复制每个虚拟映像模板并对其进行自定义(基于元数据中编码的用户输入和依赖关系信息)。编写了工作流示例来部署按照本文中所描述的方式表示且应该不需要更改的虚拟机。不过,此工作流只是示例,在您特定的目标环境中使用前应该进行测试。

  4. 设置主机平台

    需要使用正确的管理程序和可用资源将映像部署到主机平台。如果您的 Tivoli Provisioning Manager 环境尚未针对所选主机平台进行设置,则将需要添加这些平台:

    1. 从 Tivoli Provisioning Manager 面板中选择 Add a Host Platform Server,然后输入主机平台的名称(例如,hostplatform1.ibm.com)。
    2. 添加网络接口和 SAP 凭据。
    3. 添加管理程序软件和相关资源(例如,VMWare ESX Server、CPU、硬盘、内存等等)。

    (有关添加主机平台的详细信息,请参见 Tivoli Provisioning Manager 文档。)

    此外,工作流使用 SSH 在主机平台上存储虚拟映像。对于每个主机平台,您将需要确定已设置了 SSH (Open Secure Shell),因此主机平台的用户(例如 root@hostplatform1)可以采用 ssh 登录到 Tivoli Provisioning Manager 服务器计算机的根和 tioadmin(例如,root@tpmserver1 和 tioadmin@tpmserver1)。另外,请确保 Tivoli Provisioning Manager 服务器计算机可以采用 ssh 登录到主机平台的用户。

4. 部署并启动组合虚拟设备映像

一旦在 Tivoli Provisioning Manager 中创建了虚拟映像模板,部署组合虚拟设备就变得很简单了。由于组合虚拟设备表示为分布式应用程序,因此您要与 Tivoli Provisioning Manager Distributed Applications 面板交互,以选择组合虚拟设备(图 3)。

图 3. 组合虚拟设备选择
图 3. 组合虚拟设备选择
  1. 复查和自定义

    选择了组合虚拟设备后,将显示一个面板,其中列出了每个虚拟映像模板(图 4)。对于 WebSphere Application Server 和 DB2 组合设备,将显示部署管理器、WebSphere Application Server 和 DB2 映像。内部实现实际上将部署管理器和应用服务器映射到相同的映像模板文件。

    图 4. WebSphere Application Server 和 DB2 组合设备
    图 4. WebSphere Application Server 和 DB2 组合设备

    接下来将基于元数据构建 Distributed Application Deployment 的自定义面板。如图 5 中所示,将显示所有自定义参数,如主机名、域名、节点名等。如果未指定选项,则将使用元数据中提供的缺省值。

    图 5. Distributed Application Deployment 自定义屏幕
    图 5. Distributed Application Deployment 自定义屏幕

    输入了自定义参数后,部署要么计划稍后运行,要么立即启动。不需要任何其他最终用户交互。

  2. 等待 Tivoli Provisioning Manager 协调进行分布式部署

    Tivoli Provisioning Manager 工作流将以透明的方式部署虚拟设备。工作流以并行方式将每个虚拟机映像复制到对应目标计算机中。工作流的流程包括:

    • 检查和推断每个虚拟机在管理程序可用的资源总量中所需的资源量(如 CPU 配额、内存和磁盘空间)。
    • 将各个虚拟映像模板复制到对应的管理程序。
    • 生成虚拟映像的虚拟机配置文件。
    • 向管理程序注册虚拟机。
    • 向 Tivoli Provisioning Manager 注册每个软件设备中包含的软件应用程序。

    工作流还会收集自定义参数,并在激活文件中将其提供给虚拟映像。对虚拟映像进行了自定义之后,将提供“启动按钮”,用于允许所协调的启动工作流启动解决方案。

  3. 使用所部署的环境

    一旦部署完成,Tivoli Provisioning Manager 的 DCM 会将所部署的虚拟设备的信息作为分布式部署加以捕获。会捕获所有信息,包括软件的部署位置以及配置参数。因此,Tivoli Provisioning Manager 中实现的用于软件管理的实用工具和机制都可以用于管理已部署的虚拟设备,就像管理 Tivoli Provisioning Manager 中的其他软件一样。


省时的简化部署

我们曾在自己的实验室中运行过 WebSphere Application Server 和 DB2 组合设备的示例部署。我们部署了一个 WebSphere Application Server Network Deployment 集群,其中包括一个部署管理器、九个应用服务器节点、一个 DB2 节点和 Trade6 应用程序。部署总耗时不超过十分钟,这是相对于传统的严格顺序安装方法的一大改进,在传统方法中可能需要数小时才能完成拓扑中每台计算机的安装。

在我们使用 Tivoli Provisioning Manager 的虚拟设备部署中,配置工作仅仅涉及选择主机平台并为每个映像安装指定参数(少于 10 个)。另外,我们通过捕获元数据中的参数集中的相互依赖关系,而且仅仅要求输入一次这些参数,进一步减少了参数的数量。Tivoli Provisioning Manager 工作流将参数传递给多个映像。工作流支持预先捕获的映像的并行复制和配置,相对于在每台计算机上逐层安装和配置软件层来构造物理计算机而言,此方法极大地减少了部署时间。


结束语

本文描述了用于部署和管理实际软件解决方案的极为简化的方法。在此方法中,虚拟机映像将捕获分布式软件解决方案中的相互依赖关系,并提供描述如何配置虚拟机映像的对应元数据。可由一组 Tivoli Provisioning Manager 工作流基于元数据自动部署解决方案,从而极大地减少了部署复杂软件解决方案所需的人工时间。

参考资料

学习

获得产品和技术

条评论

developerWorks: 登录

标有星(*)号的字段是必填字段。


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。

所有提交的信息确保安全。

选择您的昵称



当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

标有星(*)号的字段是必填字段。

(昵称长度在 3 至 31 个字符之间)

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


所有提交的信息确保安全。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=WebSphere
ArticleID=313569
ArticleTitle=使用 IBM Tivoli Provisioning Manager 部署组合虚拟设备
publish-date=06122008