使用 Workload Deployer 简化虚拟应用程序自动化

一种构建云应用程序的模式方法

虚拟应用程序是客户设计的实体,它包含可在企业中间件组件上部署的行业标准构件,以及在完成部署后管理应用程序运行时行为的一套政策。在本文中,作者将介绍构建虚拟应用程序需要掌握的一些概念,其中包括使用模式将构建过程自动化;使用 IBM® Workload Deployer 3.0 版本提供实际的示例。

Brian Stelzer, 资深软件工程师, IBM

作者照片Brian Stelzer 是负责 WebSphere CloudBurst beta 项目的 IBM Early Programs 团队的一名资深软件工程师,他的工作是与使用 WebSphere CloudBurst 发布前版本的客户直接合作。在承担目前的工作之前,Brian 负责设计和实现 WebSphere Application Server 系列产品的迁移方案。Brian 拥有 9 年多软件开发经验。



Davanum Srinivas, 高级软件工程师, IBM

/developerworks/i/p-dsrinivas.jpgDavanum Srinivas 是 IBM Workload Deployer 团队的一名高级软件工程师。目前,他正带领团队进行 IBM Workload Deployer 存储方面的工作。之前,他曾担任过 IBM Workload Deployer 团队的发行架构师,并参与了 WebSphere Web Services 的开发。



Amit Acharya, 咨询软件工程师, IBM

/developerworks/i/p-aacharya.jpgAmit Acharya 是 IBM Cloud Initiatives Development 组织的一名咨询软件工程师。他领导私有云空间产品的战略质量规划和执行,并一直协助平台即服务测试计划的执行。他在企业应用程序开发和以客户为导向重点的中间件解决方案方面有强大的背景。他编写了有关面向服务的体系结构空间的 IBM 红皮书,并为 IBM 专利产品组合做出了积极的贡献。他拥有美国普渡大学颁发的电子和计算机工程硕士学位。



2011 年 10 月 10 日

虚拟应用程序是客户设计的实体,它包含行业标准构件(可在企业中间件的组件上部署),以及在完成部署后管理应用程序运行时行为的一套策略。

IBM® Workload Deployer 3.0(WebSphere® CloudBurst 的更名)的一个主要特性就是让用户重点关注企业应用程序的逻辑视图的能力,并让应用程序指出要部署哪些中间件组件,以及如何配置它们。

本文将演示如何进行虚拟应用程序模式的扩展;换句话说,本文将演示如何评估并定义企业应用程序需求,以便使用 Workload Deployer 中的 Virtual Application Builder 功能。

任务场景:虚拟应用程序模式的扩展

比如说,您组织有许多的应用程序已经部署在生产环境中,并且有更多的应用程序即将投入市场。IT 人员的典型工作流程是:先完成冗长的软硬件设置、安装和配置过程,然后找出每个应用程序的软硬件需求以及文件要求。之后再尝试设置监控和故障转移,并确定搜集和监视日志的方法。最后,您可以为每个应用程序编写自定义脚本,以便下次更轻松地完成相同操作,您还可以构建大量各不不同的硬件/软件/应用程序集和脚本等。

假设您可以标准化应用程序的需求,并且拥有足够的空间 来容纳快速增长的正在生产、开发和测中的 应用程序,您会采用 Workload Deployer 吗?这正是 Workload Deployer 引人注目的地方。假设有一款典型的应用程序,它在 J2EE 应用程序服务器中部署了一些代码,并在相关数据库中部署了一些数据,还提供了一个快速而又简便的方法来设置日志记录、监控、故障转移等。这是不是很方便?是的,这正是 WebApp 模式下的 Workload Deployer 所提供的功能。一旦您在数据中心部署了 Workload Deployer,就可以使用标准化方式快速部署应用程序、设置监控、调整以及日志记录。

基于 WebApp 模式的虚拟应用程序的典型工件包括:

  • 在应用程序服务器中部署的 J2EE Enterprise Archive (EAR) 或 J2EE Web Application Archive (WAR)。
  • 用来创建初始化数据库所用的数据库模式/表/行的脚本。
  • LDIF 文件形式(LDAP 数据交换格式)的用户和组列表 。

Workload Deployer 可让您在私有云空间中快速设计虚拟应用程序、上传 这些工件、指定与日志记录、监控、缩放等方面有关的政策,并允许部署虚拟应用程序。


创建虚拟应用程序的快捷方式

您可以使用 IBM Workload Deployer 3.0 中的 Virtual Application Builder 创建虚拟应用程序。

例如,创建一个新的虚拟应用程序,拖放企业应用程序组件和数据库组件,并将它们链接在一起。上传 JEE-based Enterprise Archive (EAR) 或 Web Archive (WAR),它们包含描述代码所需的表结构的代码工件和数据库模式。IBM Workload Deployer 承认这种可以使用经过优化的方式通过 WebApp 模式进行部署的应用程序,因它们称之为 “虚拟应用程序”。

现有虚拟系统概念和旧的 WebSphere Cloudburst 之间的主要区别是, 您不用判断也不用确切地知道最终要在管理程序上启动多少台虚拟机来构建运行系统。可以将这个任务委托给 Workload Deployer,它会查看组件、组件之间的链接以及相关策略,以指出最佳虚拟机数量,以及虚拟机器上运行的具体是什么。

在使用虚拟系统时,需要挑选所需的中间件组件以及每个组件的数量。而在使用虚拟应用程序时,则不需要担心这些;设计应用程序时,只需指定管理应用程序可扩展性方面的策略即可。


使用 IWD 的虚拟应用程序模式扩展

构建虚拟应用程序模式指的是什么呢?非常简单,它指的是使用 IBM Workload Deployer 评估并定义企业应用程序的需求。这个过程中最困难的部分是了解企业应用程序的需求,但是,在了解相关需求之后,使用 Workload Deployer 定义这些需求就与使用 Virtual Application Builder 工具执行一些拖放操作一样简单。

在这一节中,我们将探讨 Virtual Application Builder 工具并查看以下内容:

  • 构建虚拟应用程序模式。
  • 配置组件。
  • 配置组件之间的链接。

Virtual Application Builder 工具的背景知识

Virtual Application Builder 工具是一个集成式图形工具,它允许您以图形方式构建虚拟应用程序。这个工具包含三个主要部分,它们作为一个密不可分的整体一起协作工作,以图形化的方式构建虚拟应用程序:

  • 资产(或选项板):包含所有可用来构建虚拟应用程序的可用组件。这些组件按逻辑分组(例如,数据库组件组包含所有的数据库组件)。
  • Canvas:这是以图形方式构建虚拟应用程序的地方。
  • 属性表:每个组件都有一个属性表;该属性表中包含您可以配置的一些特殊组件、链接或策略的属性。

图 1 显示了 Virtual Application Builder 工具的用户界面。

图 1. Virtual Application Builder 工具的界面
Virtual Application Builder 工具的界面

现在让我们来看一下如何构建虚拟应用程序模式。

构建一个虚拟应用程序模式

既然您对 Virtual Application Builder 工具已经有了一个基本了解,现在是时候 开始构建虚拟应用程序模式了。但是,首先需要了解的是,虚拟 应用程序是通用框架,它充许您构建不同类型的工作负载模式。本文中的虚拟应用程序模式示例具有以下需求:

  • 依赖于应用服务器来托管企业应用程序。
  • 依赖于数据库来持久保存数据。
  • 依赖于用户注册表来进行身份验证。

这个过程的第一步是导航到位于 Pattern > Virtual Applications 下面的 Virtual Application Pattern 面板。这个视图列出了您有权查看的所有虚拟应用程序模式。单击绿色加号图标将弹出虚拟应用程序创建面板。该面板允许您从头开始或从现有模板开始创建虚拟应用程序。选择 Blank application 并单击 Start Building 进入 Virtual Application Builder 工具,如图 2 所示。

图 2. 虚拟应用程序的创建面板
虚拟应用程序的创建面板

企业应用程序样例有三个中间件需求:应用服务器、数据库和用户注册表。要满足这些需求,则需要从选项板中拖出这些组件,并将它们放到画布上,如图 3 所示:

图 3. 通过拖放进行构建
通过拖放进行构建
  • 通过位于 Application Components 分段下面的 Enterprise Application (WebSphere Application Server) 组件来满足应用服务器的需求。
  • 通过位于 Database Components 分段下面的Database (DB2®>) 组件来满足数据库需求。
  • 通过位于 User Registry Components 分段下面的 User Registry (Tivoli Directory Server) 组件来满足用户注册表需求。

一旦将所有的相关组件都放置到画布上,就可以进行下一步,即建立组件之间的链接。链接的作用很多,其中最重要的作用是:

  • 打开虚拟机器的端口,允许通信量流入和流出 VM。除非专门使用一个链接打开端口,否则所有端口都是锁定的。
  • 定义额外的属性。

在这里,应用程序需要与数据库和用户注册表通信,但用户注册表不需要与数据库通信,反之亦然。要想建立一个链接,请单击源组件边缘上的蓝色球,按住鼠标并将链接拖动到目标组件。图 4 显示了为此场景定义的两个链接。

图 4. 在组件之间建立链接
在组件之间建立链接

此时,您已经建立了虚拟应用程序的结构。在部署之前,下一步是配置每个组件和链接的属性。每个组件和链接都有一组供您配置的独特属性(可选属性和必要属性都有)。

没有严格的配置顺序规则,但强烈建议您先配置企业应用程序组件。在配置链接属性之后,您就会明白为什么要这样做。

配置组件

  1. 通过上传企业您的应用程序来配置 Enterprise Application 组件(参见图 5)。
    图 5. 配置企业应用程序组件的属性
    配置企业应用程序组件的属性
  2. 通过指定数据库的名称和大小来配置数据库组件。如果应用程序想要预先填充数据库,则需要上传模式文件。值得一提的一个重要信息是:数据库与它所属的虚拟应用程序具有相同的生命周期:如果虚拟应用程序终止,那么数据库以及它所有的状态信息也会终止。
  3. 通过上传 LDIF 文件并指定用户和组过滤器来配置 User Registry 组件。

配置链接

每个链接都代表一个通信路径或组件之间的一个关联。正如组件那样,每个链接的属性都是唯一的。

  1. 配置 Enterprise Application 组件与 Database 组件之间的数据库链接。单击该链接会弹出其属性信息。除了打开一个通信信道之外,该链接还允许您映射企业应用程序的数据源 JNDI 名称。图 6 中展示了一个示例。
    图 6. 配置 Enterprise Application 组件到 Database 组件的链接
    配置 Enterprise Application 组件到 Database 组件的链接

    在部署时,指定的 JNDI 名称会链接到某个 WebSphere Application Server,从而创建对 Database 组件的支持。

  2. 在 Enterprise Application 与 User Registry 组件之间配置一个链接。该链接允许将企业应用程序中定义的角色映射到 User Registry 组件中定义的具体用户和组。图 7 显示了该映射。
    图 7. 配置 Enterprise Application 组件到 User Registry 组件的链接
    配置 Enterprise Application 组件到 User Registry 组件的链接

    如果您还没有注意到,请注意,Database 组件的属性 Resource reference of Data Source 和 User Registry 组件的属性 Role Name 都有预先配置的选项,这些选项是企业应用程序派生的。当您向虚拟应用程序中添加链接时,Workload Deployer 会检查企业应用程序的部署描述符,以获得相关信息。在使用 JNDI 引用的情况下,它会检查了 web.xml;出于安全考虑,它会检查 application.xml。图 8 中可以看见这样的一个示例。

    图 8. application.xml 和 web.xml 检查点
    application.xml and web.xml 检查点
  3. 保存虚拟应用程序(参见图 9):
    图 9. 保存虚拟应用程序
    保存虚拟应用程序

一切就是这么简单!接下来,将部署和监控您的虚拟应用程序。


部署应用程序

这也是开始比较有趣的地方!在使用 Virtual Application Builder 为应用程序建模之后,就可以开始部署应用程序 vAppArticle,这非常简单!要部署虚拟应用程序,请执行以下操作:

  1. 单击 Patterns > Virtual Application,然后单击 vAppArticle。相关示例如图 10 所示。
    图 10. 定位虚拟应用程序
    定位虚拟应用程序
  2. 在面板的右侧,单击 Deploy the virtual application into the cloud 启用如图 11 所示的部署。
    图 11. 虚拟应用程序的部署
    虚拟应用程序的部署单击查看大图
  3. 单击 Deploy the virtual application into the cloud 之后,您就有了一个用来选择云组 (cloud group) 的选项,如图 12 所示。
    图 12. 虚拟应用程序的部署目标
    虚拟应用程序的部署目标

    在 Workload Deployer 中,虚拟应用程序 支持将云组作为部署目标。它们不支持将环境配置文件作为部署目标。

    图 12 中的对话框还提供了一个 Advanced 选项,以配置对已部署好的 VM 的安全 SSH 访问。您可以上传自己的公钥,或者让 Workload Deployer 为您生成一个公/私钥。已部署好的 VM 不允许进行用户/密码访问;而是要求进行用户/私钥访问。如果没有配置安全 SSH 访问,则无法直接访问 VM。部署好了应用程序之后,在虚拟应用程序控制台中,您有一个用来添加和更改钥匙的选项。单击 OK

  4. Workload Deployer 启动了一个虚拟应用程序部署。稍后,您可以根据自己的网络来配置虚拟应用程序,然后部署虚拟应用程序并准备使用它。

    Workload Deployer 将应用程序部署转化为基础设施的具体操作。它启动了必要的 VM 部署,并配置了中间件和应用程序。

  5. 要检查部署状态,请单击 Instances > Virtual Application,然后单击应用程序 vAppArticle,如图 13 所示。
    图 13. 虚拟应用程序实例
    虚拟应用程序实例

    虚拟应用程序部署隐藏了特定于基础设施和中间件的详细信息。例如,它不需要您指定 VM 的数量或 WebSphere Application Server 的版本。这有助于应用程序开发人员集中精力开发应用程序,将基础设施和中间件的详细信息留给 IBM Workload Deployer 去处理。

    图 14 显示了虚拟应用程序的部署状态。

    图 14. 虚拟应用程序的部署状态
    虚拟应用程序的部署状态单击查看大图

    在部署虚拟应用程序期间,VM 状态从启动状态变为运行状态。在完全完成 VM 的实例化之后,位于 VM 中的特定于 Workload Deployer 的代理开始行动,将 VM 配置为它在该应用程序部署中将要扮演的角色。

    VM 的角色表明了特定 VM 将要包含的中间件的特性。例如,VM 的角色可以为 WebSphere Application Server、DB2 或 TDS。当 IBM Workload Deployer 代理将 VM 配置为特定角色时,这个特定 VM 的角色状态会发生更改,并在完全配置好角色时最终变为绿色。当成功配置好所有角色并且状态处于绿色时,就可以访问虚拟应用程序了。

  6. 一旦完成虚拟应用程序的部署,便可通过单击图 15 所示的 WAS VM 的 ENDPOINT 超链接直接访问它。
    图 15. 访问企业应用程序
    访问企业应用程序单击查看大图

    数据库和用户注册表 VM 的端点 URL 指示了用来访问中间件的特定信息。例如,数据库的端点 URL 提供了使用 DB2 客户端访问数据库的连接信息。


监视应用程序

在完成虚拟应用程序的部署之后,IBM Workload Deployer 允许您从虚拟应用程序控制台监视和管理虚拟应用程序的部署。它还提供了在已部署好的虚拟机上执行特定操作的能力,以及从单一集中的指示板中查看特定于操作系统、特定于中间件和特定于 Workload Deployer 代理的日志。

要访问虚拟应用程序控制台,请单击 Instances > Virtual Applications 并单击 vAppArticle。在右侧面板,请单击如图 16 所示的 More details and advanced options。虚拟应用程序控制台会在新的浏览器窗口中打开。

图 16. 访问虚拟应用程序控制台
访问虚拟应用程序控制台

单击查看大图

虚拟应用程序控制台有四个选项卡:

  • Virtual Machine Monitoring:此视图以图形形式显示实时的虚拟机统计数据。例如,如果部署的应用程序消耗了大量的 CPU 周期,那么该视图会显示特定 VM 的高 CPU 使用率。
  • Middleware Monitoring:此视图以图形形式显示特定于中间件的实时监控统计数据。例如,在应用程序的使用高峰时段,您可以跟踪应用程序的请求计数。
  • Operation:此视图提供了对目标 VM 执行特定于中间件的操作的能力。例如,您可能想使用新版本更新已安装的应用程序,但又不想终止整个部署。Operation 选项卡允许用户更新应用程序并执行其他必要的操作。
  • Logging:此视图提供了一个集中式用户界面,此界面包含每个 VM 的特定于操作系统、特定于中间件和特定于 Workload Deployer 代理的日志的集合。将所有日志准备好并放在手边,这对同时调试不同 VM 上的不同子系统故障非常有帮助。

包含 Operation 和 Logging 选项卡的示例屏幕如图 17-18 所示。

图 17. 虚拟应用程序显示板上的 Operation 项卡
虚拟应用程序显示板上的 Operation 项卡
图 18. 虚拟应用程序显示板上的 Logging 选项卡
虚拟应用程序显示板上的 Logging 选项卡

单击查看大图


好处:配置自己的数据库模式

虽然不是对于每个配置都这样,但通常情况下,数据库是应用程序中的单独的实体,遵循自己的生命周期,由完全不同的团队使用一些独特的技巧来管理。Workload Deployer 意识到这个需求,它允许将数据库作为一个独立的实体来创建和管理。您的虚拟应用程序可以连接到这个现有数据库,而不用创建自己的数据库。

在这一节中,将要配置 Workload Deployer 的数据库模式(称为 vAppDB),并扩展虚拟应用程序,以使用 Existing Database 组件,从而利用我们创建的数据库。本文的重点是检查 Web 应用程序模式,而不是数据库模式,但数据库模式是 Workload Deployer 的一个重要支持功能;实际上,本文演示了如何启用 “数据库即服务” 模式。

配置并部署 vAppDB 数据库模式

  1. 导航到 Patterns > Database Patterns 并单击绿色加号图标。这将显示出 Database Pattern 面板。在该面板中,您可以定义数据库名称、数据库大小并上传任何支持模式文件,如图 19 所示。
    图 19. Database Pattern 创建面板
    Database Pattern 创建面板
  2. 在定义所有数据库属性之后,请单击 Save,然后通过突出显示并单击 Deploy 图标来部署数据库。这个过程需要的时间取决于您的网络。要监控数据库的部署状态,请导航到 Instances > Databases 并突出显示数据库以弹出相关信息。完成部署后,请注意主机、端口、用户和密码信息,如图 20 所示。
    图 20. 数据库实例信息(主机和端口)
    数据库实例信息(主机和端口)

    当您使用 Existing Database 组件扩展虚拟应用程序时,请使用此信息。

使用 Existing Database 组件进行扩展

通常有必要在组织的内部和外连接到现有的中间件或旧的企业系统。Workload Deployer 也对此做出了应答。它提供了访问并持续利用私有云空间之外的系统的灵活性。Workload Deployer 中有一些组件,它们允许您连接到现有的数据库、用户注册表、CICS、IMS,等等。

这种情况凸显了通过使用 Existing Database 组件来扩展虚拟应用程序的能力。选中 Existing Database 组件的唯一原因是它展示了数据库模式功能。值得再次重申的是,还有更多的数据库模式功能也比较突出,但至少目前您已经知道上述功能的存在,如感兴趣的话,可以进一步研究这个特殊的功能。

  1. 打开 Virtual Application Builder 工具中的虚拟应用程序。删除数据库组件(该操作还会删除相关的链接),然后添加现有的数据库 (DB2) 组件并重新建立如图 21 所示的链接。
    图 21. 删除和恢复的数据库组件
    删除和恢复的数据库组件
  2. 配置 Existing Database 组件。使用在创建和部署 vAppDB 的步骤中记下的主机、端口、用户名和密码信息,用它们来配置这个组件。
  3. 由于新创建的链接中不存在这样的信息,所以需要重新配置链接的属性表。相关示例如图 22 所示。
    图 22. Existing Database 的属性表
    Existing Database 的属性表

除了保存更新,您已经完成了将一个数据库设置为单独的实体来管理的操作。您已经扩展了虚拟应用程序,从而可以使用 Database 组件之上的 Existing Database 组件。


共享服务(缓存和代理)

共享服务是由一个或多个虚拟应用程序实例共享的服务。当前,有两种共享服务:

  • 缓存即服务。
  • 代理即服务。

配置和启动共享服务是管理级别的活动。只需完成一次,所有的虚拟应用程序实例便都能使用它。作为用户,您不必为启用和管理特定部署中的缓存和代理服务而担心。

共享这些服务的两个重要好处:

  • 更好地利用资源;无需对每个虚拟应用程序进行单独的代理和缓存。
  • 故障转移支持:共享服务部署多个 VM,因此,如果有一个 VM 发生故障,其他的 VM 可以继续工作,而失败的 VM 将被重新创建或重新启动。

启用共享服务(管理员)

  1. 要启动共享服务,请以管理级用户的身份登录。然后单击 Cloud > Shared Services,如图 23 所示。
    图 23. 共享服务的启用
    共享服务的启用单击查看大图
  2. 您看到两个共享服务:CachingService 和 PROXYY。这些服务是预先配置的。单击部署图标可以查看各项服务。
  3. 每个服务的部署都需要两条信息:VM 的数量和目标云组。单击 Deploy,稍后即可使用您的共享服务。图 24 的示例展示了运行时的缓存服务的外观。
    图 24. 共享缓存服务的部署
    共享缓存服务的部署单击查看大图

启用 Web 应用程序模式共享服务(用户)

通常,缓存和代理服务设计用于虚拟应用程序中。此处展示的是通过 Web 应用程序模式使用共享服务的使用情况。

Web 应用程序模式使用缓存服务来存储 HTTP 会话信息。它利用了内存持久性而不是持久保存数据库,在给出缓存服务提供的故障转移支持的情况下,这不是什么问题。通过先添加 Scaling 策略,然后检查 Enable session caching 复选框来启用 Web 应用程序模式,从而使用缓存服务。

Web Application 模式使用代理服务将需求传递给虚拟应用程序。通过向 Enterprise Application 组件中添加 Scaling 和 Routing 策略来启用 Web 应用程序模式,从而使用代理服务。

这些就是所有的基本功能。图 25 显示了启用这些服务的示例。

图 25. Web 应用程序模式共享服务的启用
Web 应用程序模式共享服务的启用

下一步也是最后一步是使用这些新的设置部署虚拟应用程序。您会发现唯一真正的不同是您现在要使用虚拟主机名访问应用程序。在后台还会执行很多操作:要通过虚拟主机名访问您的应用程序,首先要通过代理服务传递主机名。此外,会用缓存服务持久保存您的 HTTP 会话信息,而不是将它们本地保存到您的 VM 上。

完成这个场景时值得一提的最后一点(这超出了本文范围)是:您必须配置您的 IP 负载平衡器,将虚拟机的传入请求传递给代理服务 VM 的 IP 地址。


结束语

创建、部署和管理虚拟应用程序和数据库是云计算中的一项关键任务,Workload Deployer 是一个开箱即用的解决方案,可以使您轻松完成任务。

参考资料

学习

获得产品和技术

  • 查看 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=764504
ArticleTitle=使用 Workload Deployer 简化虚拟应用程序自动化
publish-date=10102011