创建和定制虚拟应用程序模式

使用 IBM Workload Plug-in Development Kit 添加组件和功能

平台即服务虚拟应用程序模式的实现方式是,结合使用以应用程序为中心的部署模型、虚拟应用程序(包括各个组件和策略)、它们使用的基础架构和中间件和工作负载特定的内容,包括定义用来描述和部署虚拟应用程序模式的组件、链接和策略的扩展和 “插件”,比如可同时在 IBM® SmartCloud Enterprise 云和 IBM PureSystems™ 上使用的那些扩展和 “插件”。本文将阐述如何开始使用 IBM Workload Plug-in Development Kit,踏上创建和定制虚拟应用程序模式的征程。其姐妹篇 使用 IBM Workload Plug-in Development Kit 展示了一些工具包基本操作。

Ted Kirby, 高级软件工程师, IBM

作者照片Ted Kirby 是 IBM 在北卡罗莱纳州的三角研究工业园的 IBM Extreme Transaction Processing 的 WebSphere 技术专家。他是 Apache Geronimo 负责人兼 WebSphere Application Server Community Edition 开发人员。他之前负责加强并维护 eCommerce 网站和开发分布式操作系统,包括 Deep Blue 机器使用的系统。



Lin Sun, 顾问软件工程师, IBM

Lin Sun 是北卡罗来纳州三角研究园的一名顾问软件工程师,在 Software Group WebSphere Application Server Community Edition Development 小组工作。她拥有教堂山北卡大学的信息科学硕士学位。



2012 年 5 月 07 日

IBM PureApplication™ System 支持以应用程序为中心的部署模式及虚拟应用程序。部署人员可从应用程序工件(组件及其链接)和所需的服务(策略)质量来描述虚拟应用程序。托管虚拟应用程序所需的平台(基础架构和中间件)是在部署时确定的。

这一平台即服务功能是通过将 IBM PureApplication™ System 和特定于工作负载的内容相结合而实现的。IBM PureApplication™ System 提供一个通用的框架和扩展机制,用于设计、部署和管理虚拟应用程序。特定于工作负载的内容将作为扩展(插件)添加进来。这些插件定义用于描述虚拟应用程序模式的组件、链接和策略,以及在部署中实现模式所需的中间件和自动化。

开发人员创建插件,部署人员使用插件来描述和部署模式。本文描述如何使用 IBM Workload Plug-in Development Kit 创建插件。

何为插件?

插件是交付和安装扩展(extensions)到 PureApplication System 以支持客户工作负载和应用程序的主要机制。例如,一个插件是虚拟应用程序工作负载内容的基本单元。它通常实现特定功能,比如提供组件来在 WebSphere Application Server 中部署 WAR/EAR/EBA 应用程序的 WebSphere® Application Server (WAS) 插件,或者提供链接来连接 WAR/EAR/EBA 与数据库的 WAS/DB 插件。

插件提供虚拟应用程序的主要部件,以及使应用程序可部署到云中的底层实现。


Virtual Application Builder

PureApplication System 提供一个 Virtual Application Builder (VAB) 来构建虚拟应用程序:

  • 通过组件构建虚拟应用程序。
  • 可以将策略应用到组件。
  • 可以通过链接连接组件。
  • 组件、链接和策略可拥有其属性,比如用户 ID、密码、数据库名称或 WAR 这样的存档文件,用户在虚拟应用程序构建过程中赋值的这些属性。

在 PureApplication System 中,完成并保存的虚拟应用程序会被保存为一个应用程序模型 JSONObject。接着就可以部署该应用程序模型。

在构建虚拟应用程序时,第一步是打开 Virtual Application Builder 并选择 pattern type(模式类型)。模式类型是插件组。模式类型确定您在 Virtual Application Builder 中的选项和用户体验。用户使用模式类型中的插件所选择公开的一套组件、链接和策略来构建其虚拟应用程序。

提供组件或链接的插件完全决定其语义和操作。当虚拟应用程序被部署时,它负责在其整个生命周期内将其具体化。例如,一个插件必须提供适当的生命周期脚本来通过虚拟应用程序的各个生命周期事件管理虚拟应用程序。

组件、链接和策略是一个插件可能贡献的最用户可见的功能,不过还有其他功能。另外,还提供了 IBM Workload Plug-in Development Kit 以便让您能够构建您自己的插件。您可以将这些插件导入 PureApplication System,以使用它们来添加新功能。

在 PureApplication System 中,用户可以通过虚拟应用程序控制台上可用的操作与运行中的虚拟应用程序进行交互。插件参与这些操作及其实现。


何为模式类型?

模式类型是特定于解决方案和拓扑结构资源的容器,这些资源是不同类型的虚拟应用程序所必需的。它们是组件的集合,比如 Web 应用程序 (IBM PureApplication™ System Pattern for Web Applications) 或数据库 (IBM PureApplication™ System Pattern for DB2 Workgroup Edition)。

一个 PureApplication System 云管理员可以导入模式类型和各个插件。插件可以公开可由 PureApplication System 云管理员设置的全局配置选项。


设计以应用程序为中心的插件

插件应当设计用于以应用程序为中心的用途。这表示,组件、链接和策略应当代表应用程序工件和服务质量,而非明确的基础架构或中间件工件。例如,应用程序工件可能是 WAR 文件和数据库实例。链接是关联 WAR 文件和数据库实例所必需的。

可能的扩展包括对 Web 应用程序的弹性扩展的支持。弹性 (Scaling) 是一种服务质量,会被建模为 WAR 文件组件上的一个策略对象。(添加扩展策略可能导致在部署中出现额外流程,比如代理、会话复制缓存等,但是插件会根据部署人员的意图处理相关细节。)

设计应当考虑应用程序管理。例如,部署人员可能想替换正在部署中的 WAR 文件。

插件开发人员可以选择创建一个新模式类型来隔离用户体验。一种替代方案是添加插件到现有模式类型,比如允许部署人员访问新的和现有插件的 Web Application 模式类型。

模式类型和插件的关联是由插件控制。一个模式类型代表一个指定的集合;每个插件可以指定其与一个或多个模式类型的关联。这个成员驱动的方法能够让第三方扩展任何模式类型。

插件可以在各个阶段扩展 PureApplication System,包括设计时(组件、链接和策略)、部署时(二进制文件和自动化脚本)、转换逻辑时和管理时。

插件在一个 patterntypes 对象中声明其与模式类型的关联。一个插件可以与一个主要模式类型和一个或多个次要模式类型相关联。一个主要关联意味着许可的关联;也可以指定次要关联来显示简单的共享。如果指定了一个主要关联,那么在启用主要模式类型之前插件为不可用。

packages 对象为插件交付的特定部件提供抽象。部件(Part)是在需要时安装到虚拟机上的文件组,部件可能特定于目标机器(比如操作系统和架构)。转换器(用于将应用程序模型中的组件、链接或策略转换为可供框架用于部署的拓扑文档片段)的优势在于,它可直接将程序包添加到虚拟机模板;PureApplication System 稍后会根据目标机器将程序包解析为部件。因此转换器逻辑不需要处理机器细节。


PDK 可以做什么?

PDK 是旨在帮助 PureApplication System 插件开发人员构建其自己的 PureApplication System 插件和模式类型的工具。PDK 包含一个插件和模式类型构建环境、样例和一个用于创建新插件项目的工具。如需了解更多信息,请参阅 插件开发指南

插件和模式类型是使用 Apache Ant 构建和打包的。PDK 为此提供 Ant XML 构建文件。可以从命令行或 Eclipse 内运行这些构建文件(在其他开发环境也可行,但是该工具包仅支持命令行和 Eclipse)。

使用 PDK 的要求是:

  • Java™ SE6,32 位。
  • Apache Ant,1.7+。
  • Eclipse V3.6.2,32 位。推荐 Java Enterprise Edition (JEE) 版本。

Eclipse 不是必要的,但是如果您使用它,请使用上面列出的版本。如果您使用 Eclipse,可以使用其附带的 Ant,无需单独安装 Ant。Ant 位于您的 Eclipse 安装目录,即 eclipse/plugins/org.apache.ant_1.*。


安装 PDK

第一步是下载 PDK 到您的工作站。您可以从登录后欢迎界面中的 PureApplication System 或从 PDK wiki 下载 PDK。PDK 呈现为一个 ZIP 文件,下载并提取该文件之后,在提取了 ZIP 文件的目录中打开命令提示符,并运行 Ant。

PDK 是一个许可产品。在运行 Ant 时,会显示一个许可界面。您必须接受许可条款才能继续解包 PDK 的内容。随后您会看到 PDK 的内容。

patterntype.hello 样例简介

hello 样例模式类型支持部署一个简单的 hello 虚拟应用程序。模式类型可以提供组件、链接和策略,可以在 Virtual Application Builder 中使用它们来构建虚拟应用程序。

hello 模式类型有两个组件和一个链接:

  • HCenter:该组件部署一台虚拟机,其中包含一个名为 HelloCenter 的简单消息中心中间件。HelloCenter 打开端口 4000,监听客户端请求,生成并返回问候消息。
  • Hello:该组件部署一台虚拟机,其中包含一个 HelloCenter 的客户端组件。客户端以消息发送者身份发送请求给 HelloCenter,尝试获取返回的问候消息,并将消息显示在控制台上。
  • HClink:该链接会连接 Hello 和 HCenter 组件。它为 Hello 客户端提供 HCenter 服务器的 IP 地址,允许客户端发送请求到服务器。该链接还有一个属性,指定问候消息的收件人名称。

在 hello 示例中,每个组件和链接都由其自己同名的插件提供。一般而言,一个插件可以提供任意数量的组件、链接和策略。

使用 PDK 构建插件和模式类型

要通过 PDK 构建插件或模式类型,从命令行中输入:

cd iwd-pdk-workspace/plugin.depends
ant                                 /*This command will build all the plug-ins in 
                                      the workspace.*/
cd ../patterntype.hello
ant -f build.patterntype.xml        /*This command will build the hello pattern type, 
                                      the sample included in the PDK described following.
                                      The export directory contains the built pattern 
                                      type ready for installation into 
                                      IBM PureApplication™ System .*/

请注意,可以从 Eclipse(或您的 IDE)中运行这些 Ant 构建脚本,方法就是右键单击 build.xml 文件并选择 Run As > Ant build

构建 hello 模式类型之后,您可以将其导入到 PureApplication System 中,通过其组件构建一个虚拟应用程序,然后部署该虚拟应用程序。


PDK 内容和细节

本文的其余部分将详细讨论 PDK 的内容,包括样例应用程序。

plugin.depends 项目/目录

plugin.depends 项目/目录包含用于开发的 PureApplication System 插件库、插件和模式类型的构建工具、以及一个 Ant 构建库,其中内容包括:

  • lib 文件夹,包含插件开发所需的所有 Java 存档文件 (JAR)。
  • lib-build 文件夹,包含插件构建脚本所需的所有库。
  • build/build.plugins.xml 文件,是单一插件构建的基本内部构建脚本文件。每个插件的构建脚本文件会首先导入这一构建脚本文件,然后按需添加更多操作。
  • build/build.patterntypes.xml,是一个通用模式类型构建脚本。每个模式类型的构建脚本文件会首先导入这一构建脚本文件,然后按需添加更多操作。
  • create.plugin.project.xml 文件,是一个 Ant 脚本,用于在工作区为插件创建项目。

您可以使用 plugin.depends 的 create.plugin.project.xml 创建插件项目。该文件创建一个模板或基于 Java 的插件项目。有两个必需的参数:project-name 和 plugin-name。使用这两个参数创建一个模板项目。第三个参数 java.classname 为可选参数。如果给定了一个有效的类名,一个 Java 插件项目会被创建。类名可以是一个简单的名称,比如 MyPlugin,或一个程序包限定名称,比如 com.acme.iwd.plugin.MyPlugin。注意不要在结尾输入 .java,因为该扩展名是假定的。

  • create.plugin.project.xml Ant 脚本使用 plugin-project-template 来创建插件项目。

样例模式类型和插件

有四个插件形式的项目包含在 PDK ZIP 包中。这些插件展示如何设计应用程序模型、配置、虚拟机模板和插件的 Python 脚本。

HCenter 插件的插件项目
plugin.com.ibm.sample.hellocenter

该插件提供 HelloCenter 组件来表示具有 HelloCenter 服务器功能的已部署虚拟机。在该插件中,您可以了解如何为 HelloCenter 这样的中间件编写生命周期脚本,比如安装、配置、启动和停止。您可以使用以下 Python 脚本:

  • install.py:从存储库下载工件并安装中间件。如果您想从存储服务器下载并扩展 TGZ 安装文件,请使用 downloadx 函数。
  • configure.py:下载由插件上传的工件、配置中间件并打开防火墙来接受客户请求。导出其 IP 地址。
  • start.py:启动 HelloCenter 服务器并将角色状态更改为 Running。
  • stop.py:停止 HelloCenter 服务器。

您还可以访问 maestro 模块,并使用记录程序记录您的消息。有关 maestro 模块和 maestro.trace_call 等高级日志的详细信息,请参见插件 PDK。

Hello 插件的插件项目
plugin.com.ibm.sample.hello

该插件提供组件来表示访问 HelloCenter 的已部署机器,因此它必须与 HClink 插件协同工作。该插件包含以下脚本:

  • configure.py:记录发送人的信息。
  • start.py:将角色状态更改为 Running。

HClink 插件的插件项目
plugin.com.ibm.sample.hclink

该插件链接 Hello 和 HelloCenter,并且连同 Hello 插件一起安装在相同的虚拟机上。该插件包含以下脚本:

  • changed.py:该脚本仅在 Hello 和 HelloCenter 插件角色处于 Running 状态时运行。该脚本会查看所依赖的角色 HelloCenter 是否存在,并从 HelloCenter 读取传递的参数,该参数导出在 HelloCenter configure.py 脚本中。change.py 脚本使用 HelloCenter IP 地址访问 HelloCenter 并打印返回的消息。该脚本还展示如何本地化您的消息。

通过 Hello、HelloCenter 和 HClink 插件,了解如何:

  • 在两个插件之间传递参数。
  • 让两个或多个插件协同工作。

插件中包含一个样例应用程序模型和配置、虚拟机模板和虚拟机模板配置。

您可以基于这些样例应用程序模型、配置、虚拟机模板和虚拟机配置设计您的工件,而非从头开始创建它们。欲了解更多信息,请参见 PDK。

patterntype.hello 的模式类型项目
patterntype.hello

在 patterntype.hello 的模式类型项目中:

  • patterntype.json 文件提供一个有关如何配置模式类型的样例。
  • build.patterntype.xml 文件用于将模式类型构建到一个程序包中。注意:在运行该脚本之前,您必须运行 plugin.depends 项目中的 build.xml,以在工作区构建所有插件。
  • licenses 文件夹包含所有支持语言的所有许可文件。
  • locales 文件夹存储 message.json 文件的所有支持语言的翻译后文件。

结束语

我们希望本文清晰地向您展示了如何使用 IBM Workload Plug-in Development Kit。不过等等... 还不止这些。姐妹篇 使用 IBM Workload Plug-in Development Kit 描述了让您亲身体验 PDK 的四个基本任务。

参考资料

学习

获得产品和技术

  • 查看在 IBM SmartCloud Enterprise 上可用的 产品镜像

讨论

条评论

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=Cloud computing, WebSphere, Information Management
ArticleID=813253
ArticleTitle=创建和定制虚拟应用程序模式
publish-date=05072012