级别: 中级 Ruth Willenborg (rewillen@us.ibm.com), 高级技术人员, IBM Qingbo Wang (wangqbo@cn.ibm.com), 研究人员, IBM David Gilgen (gilgen@us.ibm.com), 高级工程师, IBM Shawn Smith (shawns@us.ibm.com), 杜克大学硕士, IBM
2007 年 6 月 18 日 服务器虚拟化的一个重要优势是通过使用虚拟映像模板库能够快速提供新的环境。本文提供一种方法和一些示例脚本,以便使用虚拟机模板内部的 IBM® WebSphere® Application Server Network Deployment。该方法利用 WebSphere Application Server V6 中提供的新功能,使创建模板安装(对于新主机而言,很容易复制和自定义)的流程更加容易。
摘自 IBM WebSphere 开发者技术期刊。
引言
虚拟化最常用的方法是整合服务器,以便提高服务器利用率,并减少操作空间和能量损耗。在利用虚拟化的道路上还有其他一些优势。一个重要优势是能够使用虚拟化映像模板库快速提供新环境。通过创建预安装和预配置的映像模板,并稍加进行自定义就可以快速激活该模板,并创建新的运行虚拟映像。此技术对设置新环境特别有用,尤其是设置开发和测试环境。
本文提供一种方法和一些示例脚本,以便使用虚拟机模板内部的 IBM® WebSphere® Application Server Network Deployment (ND)。该方法利用 WebSphere Application Server V6.x 提供的新功能,以简化创建模板安装(对于新主机而言,很容易复制和自定义)的流程。本文将讨论自定义 WebSphere Application Server ND 安装的技术,还将讨论如何包括基于 WebSphere 的应用程序。
这里讨论的技术不依赖于您选择的基础虚拟化技术和客户操作系统。实际网络和操作系统自定义因不同的平台和管理程序而异。
三个主要步骤
使用虚拟映像模板部署 WebSphere Application Server 的流程包括三个主要步骤,如图 1 所示:
- 创建基础安装映像。
- 决定公开哪个 WebSphere Application Server 自定义,以便能够在不同的环境中自定义和重新使用映像。
- 在新主机环境中部署和激活映像。
图 1. 使用虚拟映像模板部署 WebSphere Application Server 的步骤
现在我们深入讨论一下其中的每个步骤。
1. 创建虚拟映像
创建虚拟映像时,首先确定在模板映像中安装什么具体软件。由于您希望能够重新使用模板来实例化不同的环境,所以仅需要安装许多环境通用的组件。一个完整的虚拟映像通常包含操作系统、WebSphere Application Server 和其他中间件,以及一个或多个应用程序;不过,模板映像可能只包括这些组件的一个子集。
操作系统安装
您要执行的第一件事情是创建“优秀的”操作系统映像,将其用作所有映像的基础。此基础映像中还可以包括任何公司的标准软件(如监视或审核代理)。在 WebSphere Application Server V5 中,我们看到一些客户只是将虚拟映像模板与操作系统一起使用,然后通过传统流程处理所有 WebSphere Application Server 安装。虽然这是一种选择,但是我们也看到有些客户在作为虚拟映像模板的一部分复制 WebSphere Application Server 方面非常成功,WebSphere Application Server V6 概要功能可让此操作变得更容易。
初始虚拟映像模板创建是特定于目标管理程序的,所以应遵循管理程序提供的说明:
-
对于 VMware,向导对话框提供创建新虚拟机的流程。从 VMware Workstation 或 VMware ESX Server 程序,单击 File => New => Virtual Machine 开始。
-
对于 XEN,创建新虚拟映像的流程有多个解决方案。为创建虚拟映像,我们使用了 SUSE Enterprise Server V10 中包括的 YAST 工具。选择 System => Virtual Machine Management => Run an OS installation program 开始。
创建映像后,使用标准操作系统安装程序将来宾操作系统安装到映像。在此阶段还可以安装所有映像需要的任何其他常用软件(如操作系统监视代理)。
安装 WebSphere Application Server
对于 WebSphere Application Server 安装,您需要了解复制映像的不同应用程序环境,并选择适当的安装。在大多数情况下,模板安装接近于 WebSphere Application Server 的缺省安装,在部署后完成特定于应用程序和服务器的自定义。
若要将 WebSphere Application Server 添加到映像模板,请使用标准安装流程安装 WebSphere Application Server – 安装到的操作系统是映像中已安装的来宾操作系统除外。因为自定义脚本(在下一部分中讨论)可处理概要创建和配置,所以您不需要在安装过程中创建概要或配置任何参数。
您可能需要考虑创建安装工厂自定义安装程序 (CIP) 来执行模板的这一初始安装。如果需要为多个管理程序(如 VMware 和 XEN)创建模板,或者还要执行物理安装,则可以轻松地重新使用 CIP。技术文档提供关于 IBM Installation Factory 版本 6 和版本 6.1 的详细信息。
安装应用程序
为了最大限度地提高灵活性,请不要将 WebSphere 应用程序直接安装到 WebSphere Application Server 模板。如果您要创建独立节点,则首选方法是使用自定义脚本在映像安装过程中导入应用程序。如果要创建 WebSphere Application Server ND 集群,则最简单的方法是开发仅部署应用程序的脚本,然后在部署完成后创建集群。
2. 提供自定义文件
安装模板映像后,您需要决定如何快速激活适用于不同 WebSphere 环境的映像。当激活模板映像来创建新环境时,需要一组自定义步骤,其中包括新映像位置的网络更改和 WebSphere 环境的自定义。尽管所有这些步骤都可以自动化,但我们将重点关注 WebSphere Application Server 自定义通常需要的自动化步骤。
本文中的示例自定义脚本 ConfigWAS 采用一组用户提供的自定义参数,来支持实例化特定环境的模板映像。该脚本提供的功能为:
-
创建概要:处理 WebSphere 概要的创建,其中包括独立节点、部署管理器、托管节点和计算单元。
-
包括应用程序:处理 WebSphere 应用程序的导入。
-
启动 WebSphere Application Server:处理启动所选的拓扑,其中包括启动部署管理器、添加节点和启动应用服务器。
该脚本是为使用 WebSphere Application Server V6.0.2 或 V6.1 设计的,当查看该脚本时,您将看到它为两个版本都提供了大多数功能,但是命令语法不同。仅为 V6.1 提供的唯一脚本功能是配置安全选项。WebSphere Application Server V6.1 使管理安全配置成为一种概要创建选项,而启用 V6.0.2 上的类似功能需要其他代码。
创建概要
WebSphere Application Server V6 引入了对概要的支持,这使您能够使用相同的 WebSphere 二进制设置和运行多个环境。例如,如果同一台计算机上同时需要部署管理器和应用服务器,则可以在单个安装中使用两个概要来做到这一点,而无需安装 WebSphere Application Server 的两个实例。稍后可以从二进制的安装单独创建概要,这样,概要可让您初始安装没有概要的 WebSphere Application Server,然后在实例化阶段中通过创建概要对它进行配置。文章 WebSphere Application Server V6 系统管理 提供了关于概要的详细信息。
 | | 请注意,创建的环境不能直接映射到 WebSphere 概要类型。示例脚本包括创建缺省应用服务器和启动节点和服务器的其他逻辑。脚本包括这些示例,这样您可以使用同一映射模板和脚本来促进整个计算单元的创建。您可以方便地修改脚本来满足特定的用途。 |
|
对于本文而言,使用 WebSphere Application Server ND V6 中的虚拟映像模板比以前版本更容易动态地创建概要。示例自定义脚本支持使用一种虚拟映像模板创建不同类型的 WebSphere 环境,并提供以下选项:
- 部署管理器
- 应用服务器的托管模式
- 独立节点
- 计算单元(部署管理器和托管节点及应用服务器)
脚本使用 WebSphere createProfiles 命令可创建所需的概要。例如,WebSphere Application Server V6.1 的命令为:
$CREATEPROFILE_CMD = "${WAS_HOME}/bin/manageprofiles.sh -create "; #ver 6.1
$CREATEPROFILE_CMD .= "-enableAdminSecurity true ";
$CREATEPROFILE_CMD .= "-adminUserName $SECURE_ADMINID ";
$CREATEPROFILE_CMD .= "-adminPassword $SECURE_PASSWD ";
$RESULT = `$CREATEPROFILE_CMD -templatePath $TEMPLATE_PATH/dmgr`; |
包括应用程序
通过自定义脚本包括的应用程序仅用于独立节点。脚本利用 WebSphere Application Server V6 的新功能导出/导入概要(.CAR 文件)。此技术支持使用单个模板映像来实例化不同的应用程序,方法是只需使用不同的 .CAR 文件的名称修改脚本的导入参数。
如果您需要将同一应用程序滚动到许多不同的客户环境,请直接使用虚拟模板将 .CAR 文件打包为单独的文件,并在自定义过程中自定义 ConfigWAS 脚本来导入它。软件供应商使用此技术可以创建应用程序的 .CAR 文件,并在 WebSphere Application Server 模板映像中包括它,然后将其提供给客户。
要创建与 WebSphere Application Server 模板映像一起使用的 .CAR 文件,请从独立节点发出 ExportProfile 命令,如下所示:
$EXPORT_PROFILE_CMD = 'wsadmin.sh -conntype NONE -c "\$AdminTask exportWasprofile
{ -archive '. $EXPORT_PROFILE_FILE .' } "';
|
在 ConfigWAS 脚本中,创建新的概要后,请执行 ImportProfile 后续命令,以便从 .CAR 文件导入应用程序。WebSphere Application Server 为新的主机环境自动调整导入的概要。ImportProfile 命令的执行方式如下:
$IMPORT_PROFILE_CMD = 'wsadmin.sh -conntype NONE -c "\$AdminTask
importWasprofile { -archive '. $IMPORT_PROFILE_FILE .' } "';
$i_result =
'${WAS_HOME}/profiles/${appsrv_profile_name}/bin/${IMPORT_PROFILE_CMD}'; |
局限性:必须使用独立节点导出和导入 .CAR 文件。不要尝试从现有集群导出应用程序,因为这样将不能正常工作。另外,当前的 ExportProfile 命令不能处理消息,因此,如果应用程序使用消息,则还必须包括自定义脚本逻辑才能配置服务集成总线 (SIB)。
启动 WebSphere Application Server
若要创建运行的 WebSphere Application Server 环境,您需要执行其他命令。脚本包括启动不同拓扑的示例代码。
对于包括 WebSphere 部署管理器的开发,示例脚本设计遵循 WebSphere Application Server 所需的启动顺序,并且先使用 WebSphere startManager 脚本启动部署管理器:
$USER_PASSWD = "-username $SECURE_ADMINID -password $SECURE_PASSWD ";
$RESULT = '${WAS_HOME}/profiles/${dmgr_profile_name}/bin/startManager.sh $USER_PASSWD'; |
启动部署管理器后,如果模板映像正在创建托管节点,则包括下面显示的 WebSphere Application Server addNode 和 startServer 命令,才能将托管节点添加到部署管理器并启动服务器:
$RESULT = '${WAS_HOME}/profiles/${appsrv_profile_name}/bin/addNode.sh ${DMGR_FULLNAME}
$USER_PASSWD';
$RESULT = '${WAS_HOME}/profiles/${appsrv_profile_name}/bin/startServer.sh $USER_PASSWD'; |
对于独立节点,脚本会发出启动服务器命令。
部署和激活虚拟映像
构建了模板映像,并定制和包括了自定义脚本后,就可以激活虚拟映像,以支持不同的 WebSphere Application Server 环境。这需要您:
- 克隆新主机平台的模板映像
- 自定义网络和操作系统
- 运行自定义脚本。
(后续文章将介绍如何自动化这些步骤。)
克隆虚拟映像
要激活 WebSphere Application Server 模板映像,您需要复制映像文件和虚拟机概要:
-
对于 XEN 虚拟映像,这包括复制以下两个文件:虚拟机的映像文件和 XEN 配置文件(包含关于内核、名称、vcpus、内存和 vif 的 XEN 虚拟机信息)。缺省 vm 配置文件的目录为 /etc/xen/vm/,vm 映像文件的目录为 /etc/xen/images/。
-
对于 VMware ESX Server V3,您应复制映像文件和对应的配置文件。例如,对于名为“WebSphere”的虚拟机,您需要将 WebSphere-flat.vmdk、WebSphere.nvram、WebSphere.vmdk、WebSphere.vmsd、WebSphere.vmx 和 WebSphere.vmxf 文件从 /vmfs/volumes/ 目录复制到新环境。
自定义操作系统和网络
将虚拟映像复制到管理程序后,您可以指定新环境中操作系统所需的 CPU 和内存的缺省资源位置的任何更改。
-
如果正在使用 XEN,则资源信息位于配置文件中。
-
对于 VMware ESX Server V3 虚拟映像,配置信息位于 .vmx 文件中。
调出虚拟映像的下一个步骤是自定义其网络标识,这通常是重新分配虚拟映像时较为棘手的区域之一。此步骤的具体内容依赖于管理程序和操作系统以及公司的网络策略。在某些环境中,您能够对网络进行设置,这样可以在不更改 IP 地址、主机名和域的情况下移动映像。此技术非常有用,尤其是在复制生产环境、设置独立的网络以应用更改和测试、然后将映像移回到生产。如果合适,我们当然建议考虑使用此技术,因为它可以独立于映像内部的软件而工作。
不过,如果在此步骤中,环境需要您更改虚拟映像的主机名和 IP 地址,则需要指定虚拟机配置文件中操作系统的相应网络接口和网络相关的行,才能正确启动虚拟机。
在编辑虚拟映像内部的网络信息之前,应修改虚拟映像外部的网络配置文件:
-
对于 VMware ESX server V3,您需要编辑或删除 .vmx 文件中的 uuid 行,才能删除原始物理计算机的标识。
-
如果您正在使用 XEN,请确保在配置文件中为网络适配器分配了正确的 MAC 地址。通过修改映像
vif=[ 'mac=00:16:3e:84:8b:01' ] 的配置文件,并选择最后 6 位十六进制数字来更改 MAC 地址。每个虚拟机都必须具有唯一的 MAC 地址,如果不能向每个克隆提供唯一的 MAC 地址,则会导致网络问题。
接下来,需要配置克隆虚拟机内部的主机名和网络设置。例如,请按照以下步骤配置 SUSE Enterprise Server V10 客户操作系统:
- 使用新的主机名、域和 IP 信息修改 [/etc/hosts] 文件。
- 将 [/etc/HOSTNAME] 设置为仅包含简短主机名。
- 更改路由文件 [/etc/sysconfig/network/routes] 中的缺省网关。
- 通过编辑 [/etc/sysconfig/network/ifcfg-eth*] 修复网络配置。这可以称为
ifcfg-eth0 或 ifcfg-eth-id-00:16:3e:84:8b:01:
- 使用 BOOTPROTO='static' 选择静态 IP 配置。
- 根据需要,修改其他网络设置;例如
IPADDR='192.168.0.1'。
- 添加行
DHCLIENT_SET_HOSTNAME='myNewHostname'。
自定义 WebSphere Application Server
使用 ConfigWAS 自定义脚本实例化新环境中的虚拟映像模板。脚本旨在从控制台或通过 XML 参数文件接受输入。如果 XML 输入参数文件不存在,则脚本将提示从控制台进行输入。
正确配置网络后,请使用 perl ConfigWAS 命令调用虚拟映像内部的 ConfigWAS 脚本。按照控制台中的提示创建您需要的配置选项。如果需要帮助,通过键入 [h] 或 [help] 可获得对于任何问题的解答。
要自动化此过程,请根据提供的示例创建 myfile.xml 文件。在调用自定义脚本时,您可以添加命令行选项 perl ConfigWAS -xml myfile.xml。这会使示例脚本在没有任何提示的情况下运行。
XML 文件包含安装值。下面显示了可能的 XML 参数名称值对。在括号中按 value="(option1|option2|option3)" 的形式列出了具有特定选项的参数。在实际的 XML 生成时,应删除括号。对于特定的配置,仅需要某些参数。(注意,EnableSecurity 选项仅在 WebSphere Application Server V6.1 中工作。)
<xml solution-name="WAS">
<software-resource name="WAS_V_6">
<parameter name="ConfigureType"
value="(DeploymentManager|ManagedNode|StandaloneNode|Cell)"/>
<parameter name="DMHostName" value="dmgrhost"/>
<parameter name="DMDomainName" value="ibm.com"/>
<parameter name="EnableSecurity" value="(y|n)"/>
<parameter name="SecureAdminId" value="wsadmin"/>
<parameter name="SecureAdminPassword" value="password"/>
<parameter name="ImportProfile"
value="/path/to/ApplicationsProfiles.car"/>
</software-resource>
</xml> |
示例参数文件是为不同的配置类型提供的。下面是 XML 文件的一个示例,用于实例化带有预先复制到模板映像的应用程序概要的独立节点:
<xml solution-name="WAS">
<software-resource name="WAS_V_6">
<parameter name="ConfigureType" value="StandaloneNode"/>
<parameter name="EnableSecurity" value="n"/>
<parameter name="ImportProfile" value="/root/plantsByWebSphere.car"/>
</software-resource>
</xml> |
在此示例中,将导入包含概要和 PlantsByWebSphere 应用程序的 *.CAR 文件。值应该是位于虚拟机上的 *.CAR 文件的路径。如果 *.CAR 文件存在于远程计算机上,那么在执行 ConfigWAS 脚本之前,应将其复制到在虚拟机上指定的路径。
要使用同一映像模板在两个虚拟机之间创建 WebSphere Application Server ND 环境,请复制模板两次:一次用于部署管理器,一次用于托管节点。下面是 XML 文件的一个示例,用于激活部署管理器虚拟机和托管节点虚拟机。在创建托管节点时,配置文件必须包含部署管理器的主机名和域,如 DMHostName 和 DMDomainName。使用此技术,部署管理器可以成为独立于托管节点部署的虚拟机。因此,在执行托管节点上的 ConfigWAS 之前,必须启动它。类似地,如果您仅部署托管节点,则确保先启动部署管理器。
<xml solution-name="WAS">
<software-resource name="WAS_V_6">
<parameter name="ConfigureType" value="DeploymentManager"/>
<parameter name="EnableSecurity" value="n"/>
</software-resource>
</xml> |
<xml solution-name="WAS">
<software-resource name="WAS_V_6">
<parameter name="ConfigureType" value="ManagedNode"/>
<parameter name="DMHostName" value="dmgrhost"/>
<parameter name="DMDomainName" value="ibm.com"/>
</software-resource>
</xml> |
当选择在同一台虚拟机上创建部署管理器和托管节点的 ConfigWAS“Cell”选项时,脚本会在执行添加节点和启动服务器命令之前启动部署管理器。
更新注意事项
为了简化维护,VMware Virtual Appliance 最佳实践建议虚拟工具开发人员将只读虚拟工具文件与用户更改的文件(如配置和应用程序文件)分开。由于 WebSphere 概要将包括主机名特定数据的用户文件(应用程序和配置数据)隔离到独立于 WebSphere 安装二进制文件的独立概要目录中,所以此隔离很容易实现。
要实现此最佳实践,请将模板映像安装到两个磁盘上,以便将实例化过程中创建的概要定向到第二个逻辑磁盘。这使您能够将修复应用到模板映像中的操作系统或 WebSphere 二进制文件,并部署这些更新,而不影响在自定义过程中或部署后进行的任何更改。
局限性:WebSphere Application Server 维护包有时需要对现有概要进行更改,在这种情况下,需要其他步骤。
若要在两个逻辑磁盘之间创建 WebSphere Application Server 虚拟映像模板,请在安装 WebSphere Application Server 和应用程序之前进行以下更改:
-
初始创建的第二个空虚拟磁盘应具有足够的磁盘空间,以便存放应用程序和 WebSphere 概要。此步骤是管理程序特定的,所以应按照管理程序说明来配置逻辑磁盘。下面是 XEN 虚拟机(带有两个逻辑磁盘,分别为“websphere.disk”和“profiles.disk”)配置文件的一个示例:
图 2. 带有两个逻辑磁盘的 XEN 虚拟机的 VM 概要配置
-
创建空逻辑磁盘并配置虚拟机概要之后,需要更新虚拟机内部的文件系统配置。将 WebSphere 概要的安装目录 /opt/IBM/WebSphere/AppServer/profiles 映射到第二个逻辑磁盘。同样,具体语法取决于操作系统和管理程序。下面是将 SUSE Enterprise Server V10 用作客户操作系统的 XEN 虚拟机配置文件 (/etc/fstab) 的一个示例:
图 3. 带有两个逻辑磁盘的 XEN 虚拟机的文件系统配置
结束语
服务器虚拟化通过为快速实例化创建模板映像,提供了快速供给新环境的能力。WebSphere Application Server V6 概要功能使创建和实例化虚拟模板变得极为容易。使用脚本可以自动执行 WebSphere Application Server 自定义,以快速提供新的 WebSphere 环境。
下载 | 描述 | 名字 | 大小 | 下载方法 |
|---|
| Code sample | ConfigWAS.zip | 10 KB | HTTP |
|---|
参考资料 学习
获得产品和技术
作者简介  | 
|  |
Ruth Willenborg 是 IBM 的 WebSphere Technology Institute 中虚拟化方面的高级技术人员。在进行这项工作之前,Ruth 曾是 WebSphere Performance 团队的经理,负责 WebSphere Application Server 性能分析、性能基准检验和性能工具开发。Ruth 在 IBM 具有 20 多年的软件开发经验。她是 Performance Analysis for Java Web Sites(Addison-Wesley,2002 年)一书的合著者。 |
 | |  |
Qingbo Wang 是 IBM 中国研究院分布式基础设施团队的研究人员。他的技术兴趣一直在分布式系统和网络方面,他现在的工作是使用可视化技术进行自动系统管理。 |
 | |  |
David Gilgen 是 WebSphere Development 的高级工程师,从事未来技术方面的工作,在 IBM 的软件开发方面有 25 年的工作经验。Dave 还正在深入研究将虚拟化集成到 WebSphere 内部开发环境的方法。 |
 | |  |
Shawn Smith 是杜克大学的二年级硕士生,正在攻读计算机工程硕士。Shawn 目前是 IBM WebSphere Technology Institute 的一名合作者,并且一直积极从事 XEN 和 Vmware 的虚拟化工作。 |
对本文的评价
|