内容


使用 WebSphere Appliance Management Toolkit 管理多个 DataPower Appliances,第 1 部分

WebSphere Appliance Management Toolkit 简介

系列内容:

此内容是该系列 # 部分中的第 # 部分: 使用 WebSphere Appliance Management Toolkit 管理多个 DataPower Appliances,第 1 部分

敬请期待该系列的后续内容。

此内容是该系列的一部分:使用 WebSphere Appliance Management Toolkit 管理多个 DataPower Appliances,第 1 部分

敬请期待该系列的后续内容。

简介

本文是该系列的第一篇,本系列介绍了 IBM® WebSphere® Appliance Management Toolkit 以及您如何使用它来与各种异构 DataPower® 设备进行通信、以及管理各种异构 DataPower® 设备。这个 Toolkit 是一个基于 Java® 的组件,提供多设备管理支持。

您可以编写一个软件来使用 WebSphere Appliance Management Toolkit 管理设备集合 ManagedSets。这个软件必须实例化并完成配置步骤,才可使用设备管理功能。每个 ManagedSet 由各种异构 DataPower 设备构成,这些设备有不同硬件类型、固件级别和许可证。这个 Toolkit 使您可以轻松地跨各种异构设备同步进行配置更改、支持配置声明周期部署、集中固件管理以及执行灾难恢复。它也帮助您停顿和取消停顿(quiesce and unquiesce)DataPower 设备和域来进行维护,也支持在一个未受管理的设备(不属于某个 ManagedSet)上进行操作。

本文向您介绍如何建立 WebSphere Appliance Management Toolkit 以及运行一个使用其功能的样例应用程序。在文章结尾处,您可以 下载 样例应用程序、必需的 JAR 文件,以及大量供 WebSphere Appliance Management Toolkit 使用的 Java 文档。

为什么要使用 WebSphere Appliance Management Toolkit?

本小节讨论 Toolkit 的功能,其中一些功能在固件早期级别中是不支持的 — 例如,灾难恢复功能需要的固件级别是 3.8.1.0 或者更高级别。如果您尝试使用一个设备固件级别不支持的功能,将会抛出异常,指出设备没有遇到最低固件级别。

跨设备集合同步配置更改

当您有一个升级的或者新域的配置要部署时,您可以使用 Toolkit 发起一个任务来将该域的配置资源部署到 ManagedSet 中的所有设备中。您也可以将域的部署策略 配置到 ManagedSet 中的所有设备上。该配置每次可以部署到一个设备上,或可以同时部署到 ManagedSet 中的所有设备上。您可以在 ManagedSet 上设置域同步模式来控制应用程序的配置变更。任何配置更新都可以设置为自动部署或者由管理员手工完成。

在一个 ManagedSet 中支持各种异构设备

该 Toolkit 通过其管理各种异构设备(含有各种用硬件类型、固件级别以及许可特性)的功能简化了设备管理。可以将正确固件和域配置部署到各种设备:

含有各种设备的 ManagedSet
含有各种设备的 ManagedSet

支持有部署策略的配置文件周期部署

这个 Toolkit 易于提升各种环境之间的配置,比如开发、测试和生产。您可以配置各种部署策略来支持特定环境配置修改,只需一次,然后在以后的配置中重用这个特定环境策略。在开发和测试团队中用于 XML 防火墙的不同端口就是部署策略属性的示例,不同的环境属性有所不同。这些部署策略在域部署后不驻留在 DataPower 设备中,只应用于部署时。

提升配置
提升配置

执行灾难恢复

Toolkit 支持配置、文件、加密资料和用户证书的完整备份,这稍后可以恢复到同一个设备上或者另一个兼容设备上。该功能需要固件级别为 3.8.1.0 或者更高级别。

全部备份和恢复
全部备份和恢复

使用存储库实现来保存配置数据

WebSphere Appliance Management Toolkit 是作为一个可插入接口设计的,便于不同运行时环境可使用不同持久性技术。它提供该接口的一个默认实现 — 一个本地文件系统 — 但您可以创建您自定义的存储库实现,以满足您的需要。该接口使您可以保存所有和管理设备相关的数据,包括:

  • Manager meta-configuration 数据,用于:
    • ManagedSets
    • Firmware levels
    • Devices
  • 域配置版本
  • 部署策略版本
  • 固件级别

停顿域和设备

您可以停顿一个 DataPower Appliance 或者其上特定域,停顿指停止所有数据通信,使现有通信在没有错误的情况下完成、阻止新连接到达设备。您可能想要在维护期间停顿一个设备。这个 Toolkit 将在配置变更或固件升级被应用之前停顿一个域。该特性需要附件级别为 3.8.1.0 或者更高。

集中固件管理

ManagedSet 中的这一设备可能有不同 Device Types、Model Types,或者可以被授权用于不同特性,以及在更新时需要不同固件镜像。该 Toolkit 在一个数据存储库中存储这些固件的所有版本镜像。这可以让您从保存的固件镜像中为一个设备确定最佳匹配,并发起一个任务来将固件更新到一个设备或 ManagedSet 中的所有设备上。对于 ManagedSet 中的每个设备,您可以设置适当的固件版本。这一特性使您可以简化多个设备固件升级。

图 1
集中固件管理
集中固件管理

Toolkit 概述

以下是 WebSphere Appliance Management Toolkit 的主要组件:

图 2
WAMT Overview
WAMT Overview

clientAPI

clientAPI 是任务级 API,用于管理 DataPower 设备集。它主要面向 WebSphere Appliance Management Toolkit 用户,比如一个用户界面客户端。它不提供用户界面,而要求客户自己提供用户界面。客户必须实例化管理程序并完成所需配置。

dataAPI

dataAPI 是一个可插入的数据存储库机制,用来保存数据,比如设备和 ManagedSets 定义、固件的大型二进制对象 、以及域配置和部署策略的版本。您可以使用一个不同的持久化技术(比如 DB2)提供您自己的 dataAPI 存储库实现。

WebSphere Appliance Management Toolkit 提供一个本地文件系统实现,这是默认实现。

Appliance Management Protocol

Appliance Management Protocol (AMP)是一个基于 SOAP 的协议,用于管理 DataPower 设备以及同 DataPower 设备通信。

对象模型

您在运行样例之前,应该先了解 WebSphere Appliance Management Toolkit Object Model,如下列 图 3 所示。

Manager 对象必须在任何其他对象创建之前创建。Manager 是一个单实例对象,需要它来创建所有其他对象。这个单实例对象是根用户管理对象,启动和停止所有其他管理任务。该对象应该在管理会话持续期间存在,这本质上意味着 “总是” 存在。使用 clientAPI 时,您必须以 Manager 对象的创建开始。

当您创建了 Manager 对象之后,您就可以创建 Device 对象,在其中显示 DataPower 设备和执行 clientAPI 管理任务。您在 DataPower 设备上执行任何操作之前,必须先创建 Device 对象。接下来,您可以添加 Device 对象作为 ManagedSet 对象的成员,且以集合形式对它们进行集中管理。即使一个 Device(上面创建的)是 Manager 所熟悉的,在它被添加到一个 ManagedSet 之前是不能管理设备的。一个 Device 可以而且只能属于一个 ManagedSet。Manager 使用 AMP 与 DataPower 设备通信来从 Device 获取数据,然后填入该类的实例中。

如果您想对固件进行更新,您必须将固件添加到 Manager,这将创建 Firmware 对象。当您创建了 Manager 之后,您就可以添加您想要部署的固件镜像了。每一个都是通过一个 DeviceType(例如,XI50)、ModelType(例如,9003),严密特性列表(例如,“Tibco-EMS”,“MQ”,“TAM”)和非严密特性列表(例如,“JAXP-API”,“HSM”)惟一定义的。Firmware 对象为一个或多个级别的固件充当一个容器。每个固件级别用一个 FirmwareVersion 对象来表示。

一个 Domain 对象对应 DataPower 上的一个域配置。一个域是 DataPower 设备上的一个配置分区,是 Toolkit 最常使用的粒度配置对象。一个 DataPower 设备可以包含多个域。配置成功之后,一个域配置被从设备读回来创建一个 DomainVersion 对像。域对象是 DomainVersion 对象的一个容器,一个域可以有多个 DomainVersions。

一个 DeploymentPolicy 对象表示部署期间应用到一个 Domain 的部署策略。这个部署策略在部署时应用。在 Domain 对象创建的时候,此对象作为 Domain 的一个成员创建。DeploymentPolicy 对象是 DeploymentPolicyVersion 对象的一个容器。DeploymentPolicyVersion 是为每个成功的 Domain 部署创建的,即使 DeploymentPolicy 是空的且从未设置的。

图 3.对象模型
对象模型
对象模型

Toolkit 需求和配置

以下是配置 Toolkit 和运行样例程序的步骤:

1. Java 版本

  • 您必须使用 Java 1.5 或更高版本。
  • 如果您已经安装了 Java,要确定您所安装的 Java 版本,输入命令:java -version。
  • 您也可以从下载部分的链接进行下载。

2. JVM 设置

由于固件文件较大,建议 JVM 堆大小设置最小为 768 MB。否则,您可能会遇到内存不足问题,特别是在处理固件镜像时。下面的示例中,利用 Java 将堆大小初始值设置为 768 MB,最大值为 1024 MB。(这些值是样例值 — 不同应用程序适合的值可能不同) Example: java -Xms768m -Xmx1024m YourClass

3. Java 类路径

使用 Toolkit 的 Java 类在其类路径中需要以下 JAR 文件:

  • WAMT-1.5.0.0.jar
  • stax-api-1.0.1.jar
  • xbean.jar

4. 属性文件(可选)

如果配置默认值不可取,您也可以选择使用一个属性文件来控制 Manger 的行为。例如,您可能想修改默认域停顿设置。要覆盖 Toolkit 将要使用的默认值,在 WAMT_CONFIGURATION_HOME Java 系统属性指定的目录下放置一个 WAMT.properties 文件。例如:java -DWAMT_CONFIGURATION_HOME="C:\DataPowerConfig" YourClass 将利用 Toolkit 指出 Windows 系统 C:\DataPowerConfig\WAMT.properties 路径下的配置文件。

文件中的属性组成一个 “键=值” 对列表,每行一个键/值对。键由提供 Toolkit 的 Java 文档确定。寻找属性名以 KEY_ 开头的常量。以 DEFAULT_ 开头的常量指定每个属性的默认值。有效值随属性变化。以下是一个属性文件的样例项。

属性文件
HeartbeatThreadPoolSize=5
HeartbeatInterval=30000
DomainQuiesceTimeout=60

5. 日志记录(可选)

您可以选择提供一个 logging.properties 文件到运行时,通过指定一个 java.util.logging.config.file JVM 参数。更多信息见 Overview 中的 Java 文档的 Debugging 部分:-Djava.util.logging.config.file=myLogging.properties。一个样例日志记录属性文件在本文中提供。

6. 存储库(可选)

Toolkit 需要一个运行时存储库来保存配置信息。默认存储库是一个本地文件系统实现。另一个实现遵守 dataAPI 接口,可通过在上述 WAMT.properties 文件中指定实现类名来使用,或者作为一种选择在 Manager 实例化时使用。 如果您实现一个库,您可以通过在您的管理应用程序中添加以下代码来识别您将使用实现的 Manager:

Map options = new HashMap();
options.put(Manager.OPTION_REPOSITORY_IMPL, "com.yourco.com.RepositoryImpl");
Manager manager = Manager.getInstance(options);

本文提供的样例应用程序使用默认本地文件系统实现。样例应用程序将在多个文件(其位置可以通过 WAMT_REPOS_HOME 环境变量来指定)中存储配置数据。在您本地文件系统上指定一个存储配置数据的位置。例如,set WAMT_REPOS_HOME="C:\DPRepository" 将利用 Manager 将数据文件写入您 Windows 系统的 C:\DPRepository 目录下。Manager 在 DP.Repository.xml 文件中存储关于持久化对象的信息。文件将包含显示各种对象的信息,比如 ManagedSets、Devices、FirmWares 和 Domains。它也包含显示部署到 DataPower 设备的不同 FirmWare 和 Domain 版本的元素。它也在 BIN 文件中保存固件的大型二进制对象以及域和部署策略的版本。所有这些文件都存储在 WAMT_REPOS_HOME 环境变量指定的位置。

7. DataPower 设备信息

完成了 Setup 小节中的操作之后,从您计划使用样例应用程序管理的 WebSphere DataPower 设备收集以下信息:

  • Symbolic Name — 设备的符号名(人们可读)— 调用程序随意指定的一个名称,比如 xi50e
  • Host name — 网络主机或者设备的 IP 地址 — 该值作为一个地址可以连接到一个设备,比如 xi50Device.nivt.raleigh.ibm.com
  • HLM port — 用于 HLM 的设备网络端口(AMP),比如 5550
  • User ID — 管理用户 ID — 设备的管理用户 ID。
  • Password — 针对管理用户 ID — 设备的管理密码

确保您设备的网络连接。

使用 Toolkit

现在您可以使用样例应用程序,从一个空存储库开始,按照下列顺序完成以下操作:

  1. 创建 Manager。这是一个单实例根用户管理对象,开始和终止所有其他管理对象/守护进程。它必须首先创建。
    //Get the instance of the manager.
    Manager manager = Manager.getInstance(null);
  2. 创建 Devices。没有 Device 对象,您就不能部署固件和创建 Domain 域对象。通过该任务创建的设备未被管理 — 只有您将其添加到一个 ManagedSet 中,它才可以被管理。在样例应用程序中修改高亮显示的代码行来提供符号名、IP 地址、用户 id 密码、以及连接您将使用的设备的端口。注意代码片段中 ProgressContainer 的使用:
    // The Manager uses a ProgressContainer to inform the caller of the
    // progress on a long-running method such as createDevice()
    ProgressContainer progressContainer = null;
    
    // Create device object
    System.out.println("Create Device: device1");
    progressContainer = null;
    progressContainer = Device.createDevice
        ("dp10", "dpdevice1.ibm.com", "admin", "password", 5550);
    progressContainer.blockAndTrace(Level.FINER);
    if (progressContainer.hasError()) {
        System.out.println("An error occurred creating device object");
        return;
    }
    // Use the progressContainer to fetch the result from the createDevice task.
    // If a task is supposed to return a result to the caller, use this method
    // to fetch the result
    Device device1 = (Device) progressContainer.getResult();
    // NOTE: At this point you can perform any operations available on the device
    // like backup/restore, delete a domain, and update firmware.
  3. 创建一个新 ManagedSet。将 Devices 添加到 ManagedSet,然后集中管理。只有一个管理员实例可以管理一个设备;只有一个管理员可以分配一个设备到 ManagedSet。管理员根据通知订阅设备。
    // Create ManagedSet object and add device1
    System.out.println("Create Managed Set: set1");
    ManagedSet set1 = new ManagedSet("set1");
    progressContainer = set1.addDevice(device1);
    // blockAndTrace()is a convenience method for waiting for the task to complete
    // and printing the progress of each step to the logs
    progressContainer.blockAndTrace(Level.FINER);
  4. 添加要在 Devices 上管理的 Domains。Device 必须是调用该方法的一个 ManagedSet 成员,否则将抛出一个异常。在域被部署之前没有 DomainVersion 创建。
    // Create a managed domain on this Device.
    System.out.println("Create domain on device1");
    Domain domain1 = device1.createManagedDomain("myDomain");
  5. 为管理的 Domain 设置配置资源:
    // Reference a domain configuration source via file, and
    // the policy configuration source via http
    URLSource domainSource =
       new URLSource("file:///C:/DataPowerData/domain-export.zip");
    
    // Set the domain and then deploy.  The deployment policy is optional and not
    // set in this sample
    //
    domain1.setSourceConfiguration(domainSource);
  6. 向 Manager 添加固件版本。固件镜像将作为一个 BIN 文件保存在配置的存储库目录下:
    // Add firmware versions to the manager.
    System.out.println("Load firmware");
    File firmwareFile = new File("C:/DataPowerData/xi-firmware-3.8.1.1.scrypt2");
    Blob blob = new Blob(firmwareFile);
    progressContainer = manager.addFirmware(blob, "New XI firmware");
    progressContainer.blockAndTrace(Level.FINER);
    if (progressContainer.hasError()) {
        System.out.println("An error occurred loading firmware");
        return;
    }
  7. 设置固件级别并将其部署到 ManagedSet 上的所有设备中。样例代码中的 ManagedSet 只创建一个设备,但是您可以创建和添加更多的设备到 ManagedSet 中。集合中的所有设备有一个匹配的固件级别,否则,在 HashTable 中返回一个设备操作失败:
    // Set the firmware level for all devices in the ManagedSet.
    System.out.println("Set firmware level and deploy it");
    Hashtable failedDevices = set1.setSourceFirmwareLevel("3.8.1.1");
    if (!failedDevices.isEmpty()) {
            Set set = failedDevices.keySet();
            Iterator itr = set.iterator();
            while (itr.hasNext()) {
              Device dev = itr.next();
              Exception e = failedDevices.get(dev);
              System.out.println(e.getLocalizedMessage() );
            }
            System.out.println("A device failed.");
            return;
    }
    MacroProgressContainer mpc = set1.deploySourceFirmwareVersion();
    mpc.blockAndTrace(Level.FINER);
    if (mpc.hasError()) {
        //Note that if a device in the set had a problem with the
        //setSourceFirmwareLevel, it will probably fail here too
        System.out.println("An error occurred deploying firmware");
        return;
    }

运行样例

完成了 Configuration 部分中的所有步骤之后,您就可以编译并运行样例应用程序了。按照 Sample.java 文件中的操作指南修改、编译和运行应用程序。样例的设计从一个空存储库开始,并在完成后删除所有对象。当您运行样例应用程序时,您可以看到如下消息:

INFO: Repository path C:\Documents and Settings\Administrator\DPRepository\
Aug 22, 2010 5:49:22 PM com.ibm.datapower.wamt.dataAPI.local.filesystem.RepositoryImpl 
 load
WARNING: WAMT0040W: An exception occurred when the DataPower appliance manager invoked
the getInstance method for the DataPower appliance manager. An existing repository was 
not located. Manager was started with a new, empty repository.
Create Device: device1
Create Managed Set: set1
Create domain on device1
OPTIONAL: PC Total steps=1
  OK deploy:
Load firmware
Set firmware level and deploy it
c:\DPClientAPI_Sample>

提示与技巧

Manager 订阅

当一个 Device 对象添加到 ManagedSet 中之后,管理员实例订阅该设备。一个 DataPower 设备每次只可以接受一个管理员订阅,将要添加到另一个 Device 订阅的任何请求将被拒绝。管理程序实例关闭时,它取消 DataPower 设备订阅。如果管理员实例异常关闭,比如停电,那么实例将不能取消 DataPower 设备订阅。这种异常关闭阻止设备被另一个管理员实例管理。要使另一个管理员实例可以管理设备,原来管理员必须释放订阅。

存储库接口

您可以检查在 WAMT.repository.xml 中保存的条目,WAMT.repository.xml 在配置的 WAMT_REPOS_HOME 目录下或者默认目录下,这是在您的操作系统上指定的用户主页。因为样例代码删除了 WAMT.repository.xml 中的这些条目,您必须将从 Sample.java 文件中删除对象的那部分代码注释掉。

再次运行样例之前,您可以手工删除在配置的存储库路径下创建的所有文件。样例应用程序必须以一个空存储库开始。这类手工删除只建议在开发的早期和使用该样例测试时使用。

结束语

您已经了解了 WebSphere Appliance Management Toolkit Architecture、对象模型和 clientAPI。安装和运行了样例 clientAPI 应用程序之后,您就可以阅读提供的 Java 文档并加强样例了。


下载资源


相关主题

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=WebSphere
ArticleID=629654
ArticleTitle=使用 WebSphere Appliance Management Toolkit 管理多个 DataPower Appliances,第 1 部分: WebSphere Appliance Management Toolkit 简介
publish-date=02282011