使用 WebSphere DataPower Option for Application Optimization 演示跨多个 DataPower 设备的自平衡和后端服务器的智能负载分配

在本教程中,您将了解 WebSphere® DataPower Option for Application Optimization:自平衡和智能负载分配。本教程将展示如何使用自平衡功能在多个 DataPower 设备上分配负载,同时避免外部负载平衡器的复杂性。文中还将演示后端 WebSphere Application Server 实例的智能工作负载分配。

Sudhir Mohith, 顾问软件工程师, IBM

Sudhir Mohith 的照片Sudhir Mohith 是来自 WW WebSphere Business Partner – Technical Professionals 组织的一位顾问软件工程师。他在 IT 行业拥有超过 15 年的丰富经验,独自创作了大量出版物,出席过多个技术大会。他于 2000 年以 DCE/DFS 和 Encina 的技术支持工程师和开发人员的身份从 Transarc 加入 IBM。过去 5 年,Sudhir 专攻 WebSphere DataPower 设备和云计算。他拥有澳大利亚国立大学计算机科学的理学学士 (Hons) 学位,以及曼彻斯特大学理工学院计算机视觉 (Computer Vision) 专业的硕士学位。



2012 年 11 月 08 日

开始之前

IBM WebSphere DataPower Option for Application Optimization (AO) 旨在为最严苛的情形提供动态负载平衡功能。通过跨 WebSphere DataPower 设备均匀分配负载,然后基于应用程序可用性智能地将流量路由到所选的后端服务器,AO 可改善正常运行时间、用户响应时间和应用服务器利用率。

AO 的重要好处包括:

  • 跨多个设备分配负载,无需外部负载平衡器。
  • 基于来自应用服务器的元数据,在后端服务器上实现智能负载平衡。
  • 集成 IBM z/OS® Communications Server Sysplex Distributor,后者可在 DataPower 设备之间平衡工作负载。
  • 通过对应用程序版本管理的支持,支持无中断的后端应用程序升级。可使用群组或自动更新来推广应用程序的新版本。

AO 是 WebSphere DataPower Edge Appliance XE82 上标配的一项许可的软件功能,在最初订购时即可获得,也可作为 WebSphere DataPower Integration Appliance XI52、WebSphere DataPower Service Gateway XG45 设备、WebSphere DataPower Integration Blade XI50B 和 WebSphere DataPower Integration Appliance for zEnterprise XI50z 上的一个现场可升级选项提供。当选择可升级选项时,一旦订购完成,您就会收到一封授权功能下载信和一个用于下载 AO 升级固件更新的受控访问密钥。

目标

在本教程中,您将学习如何设置和演示 WebSphere DataPower 的 Application Optimization (AO) 授权选项的自平衡 (SB) 和智能负载分配 (ILD) 功能。

本教程的 第 1 部分 提供了有关如何配置和测试服务,以便从 WebSphere DataPower 的前端 SB 功能(取代网络负载平衡器)获益的分步说明。

本教程的 第 2 部分 重点介绍了 AO 选项的 ILD 组件。介绍了如何配置负载平衡器对象,在一个 WebSphere Application Server(以下简称 Application Server)成员集群中动态分配负载。

先决条件

从管理员角度熟悉 IBM WebSphere DataPower 产品家族会对您有所帮助。在设备上配置和部署服务的一些经验也会对您有所帮助。另外,IBM WebSphere Application Server 的知识(包括网络部署 (ND) 术语和集群)以及部署和监视 Web 应用程序的能力对全面理解 AO 功能至关重要。

系统需求

您将需要从具有 3.8.1 或更高固件级别的 XI52、XG45、XI50B/z 或 XE82 家族(XG45 上为 4.0.2 或更高,XE82 上为 1.0.0 或更高)访问两个 WebSphere DataPower 设备的特权用户访问权限。每个设备都需要使用 AO 选项进行授权。此外,您需要具有访问带有一个 Deployment Manager 和一个连锁节点的 WebSphere Application Server Network Deployment (ND) 单元(Version 6.1 或更高版本)的系统管理访问权限。也可以使用 WebSphere Application Server Virtual Enterprise 代替它。

您还将需要下载两个开源工具,以便从一个客户端工作站调用一些测试,这两个工具是:

  • cURL,一个使用 URL 语法通过广泛的 Internet 协议发送和接收文件的命令行工具。
  • ApacheBench (ab) 工具,它与标准 Apache 源代码发行版捆绑在一起。

持续时间

计划至少花费四 (4) 小时完成本教程。如果您不熟悉某些任务或其他需求,比如网络配置参数或还未推出的产品二进制文件,那么可能需要更多的时间。


第 1 部分. 配置设备的自平衡功能

为了使 DataPower 设备能够参与到前端自平衡中,它们需要获得授权。要验证 AO 授权,可对每个设备完成一次以下步骤:

  1. 以特权用户身份登录 WebSphere DataPower WebGUI,导航到 Status > System > Device Features。您也可通过在搜索框中键入 device features 来打开此菜单。
  2. 验证 Option for Application Optimization support 是否已可用并启用,如图 1 所示。
    图 1. Device features
    Device features

    对于每个设备,您需要挑选一个网络接口来设置自平衡。常见的做法是在每个设备挑选同一个接口名称,比如 eth11

  3. 从第一个设备开始,浏览到 Network > Interface > Ethernet Interface,选择一个您希望启用自平衡的活动网络接口。
  4. 切换到 Standby Control 选项卡并单击 Add
    1. 指定您网络内目前未使用的惟一 Group Number 和一个大于 20 的值,防止与网络路由器和交换机冲突。此信息一般可从网络管理员获得,需要在两台设备上维持一致。
    2. 将您提供的 Virtual IP Address (VIP) 用作一个抽象的虚拟 IP,以便将流量传送到备用组中的所有设备。请注意,VIP 必须与设备的真实 IP 地址位于同一个子网上,并且必须为两台设备维持相同的 IP。
    3. Priority 字段决定了哪个设备将使用集群的控制器或分配器角色。具有最高优先级的设备成为主要设备,在主要设备发生故障时,会选择具有更低评级的设备。因此,对于您选为主要设备的设备,应该保留该字段的默认值 100;对于其他设备,应将该字段设置为 90
    4. Enable/Disable Self-Balancing 标志设置为 on 并单击 Apply,如图 2 所示。
      图 2. 备用设备控制
      备用设备控制
    5. 为第二个设备重复第 3 步和第 4 步。

    如果在默认的设备域中将 Log Level 设置为 “debug”,您会看到表明自平衡功能已生效的消息。图 3 中的示例显示,辅助设备每两秒在主要设备上执行一次健康检查,以验证它是否仍在正常运行。

    图 3. 自平衡调试日志
    自平衡调试日志

部署一个服务来演示自平衡

要在 DataPower 设备上演示自平衡操作,可在每个设备上配置一个 XML Firewall 服务,以监听之前定义的虚拟 IP 地址上和您指定的端口上传入的请求。主要分配器或控制器负责以类似于 IP sprayer 的方式在设备上对请求进行负载平衡。

在每个设备上,完成以下步骤:

  1. 以特权用户身份登录到默认域中,导航到 Administration > Configuration > Application Domain,创建一个名为 “AO” 的应用程序域,您将在其中配置该服务。
  2. 切换到 AO domain 并浏览到 Control Panel > XML Firewall,然后单击 Add Wizard
  3. 选择 Pass Thru (testing only) 并单击 Next
  4. 对于 Firewall Name,请输入 SB_XMLFW
  5. 选择 loopback-proxy 作为 Firewall Type
  6. Device Address 字段中键入您之前定义的虚拟 IP 地址,使用 Device Port 字段中的一个未分配的端口。在每个设备上使用相同的 VIP 和端口值。

    提示:您可查阅 Status > IP-Network > TCP Port Status 来查找设备上未使用的端口。

  7. 提交 您执行的更改并单击 Done
  8. 单击 SB_XMLFW XML Firewall 服务并将 Request Type 更改为 XML,单击 Apply (参见图 4)。

    请注意,您也可在主要设备上创建 XML Firewall 服务,并将配置导出到第二个设备。

    图 4. 自平衡 XML Firewall
    自平衡 XML Firewall
  9. 在 AO 域中将 Log Level 设置为 “debug”,以查看日志中的传入消息。单击 Save Config 保存配置。

    切换到您之前下载和安装软件工具的客户端工作站。

  10. 使用 10 个并发 POST 请求运行以下 ApacheBench 命令 “ab”,将字符串 172.20.0.59:4000 替换为您为 XML Firewall 定义的 VIP 和端口(参见图 5)。引用的 xycohr.html 文件可从本教程的 下载 部分中获得。
    ab –n 10 –c 10 –p xycohr.html http://172.20.0.59:4000/
    图 5. ApacheBench 工具
    ApacheBench 工具
  11. 检查每个设备上的 XML Firewall 服务的系统日志。您可以看到 5 个事务在每个设备上的平均分配。您可能希望按 “多个步骤” 过滤日志,以仅显示相关的信息,如图 6 所示。
    图 6. XML Firewall 日志
    XML Firewall 日志
  12. 返回到主要设备的默认域,浏览到 Network > Interface > Ethernet Interface,以禁用备用控制组中的以太网接口,模拟该设备的一次故障。如果仍在默认域上打开了调试日志,那么请注意,辅助设备会检测到主要设备已关闭,自动将自身提升为分配器或控制器,如图 7 所示。
    图 7. 自平衡故障转移调试日志
    自平衡故障转移调试日志
  13. 从客户端工作站重新运行 ApacheBench 命令。请注意,所有 10 个事务都被辅助设备收到,如图 8 所示。
    图 8. XML Firewall 故障转移日志
    XML Firewall 故障转移日志
  14. 在备用控制组中重新启用主要设备的以太网接口,从默认域调试日志中验证它是否重新担任了分配器或控制器的角色。另外,如果感兴趣的话,还可以重新运行 ApacheBench 命令来验证 5 个事务在每个设备上的平均分布。

第 2 部分. 配置智能负载分配

要演示 AO 选项的智能负载分配 (ILD) 功能,您需要一个 WebSphere Application Server ND 单元,它在集群中部署了 DefaultApplication 并有两个活动成员。

如果将 WebSphere 单元配置为拥有一个 Deployment Manager 和一个连锁节点,DefaultApplication 应已部署到独立服务器 server1 上。确保 Deployment Manager 和 Node Agent 是从它们各自的配置文件 bin 目录启动的。

要将该应用程序提升为一个新集群成员,请完成以下步骤:

  1. 登录到 Application Server 管理控制台。
  2. 展开 Servers > Clusters > WebSphere application server clusters 并单击 New
  3. 指定 WASCluster 作为 Cluster name 并单击 Next
  4. 对于 Member name,请输入 server1 并选择选项 Create the member using an existing application server as templateserver1 项。
  5. 创建另一个成员,并将它命名为 server2,将它添加到集群中。然后单击 Next
  6. 单击 FinishSave 您的配置。
  7. 启动 WASCluster
  8. 验证您能否通过每个集群成员访问 DefaultApplication 的 “侦探” servlet。您可能需要首先查询每个集群成员的 WC_defaulthost 端口,将该端口替换为如下所示的端口值。类似地,您需要将 IP 地址替换为您的 Node Agent 的 IP 地址。
    http://172.20.1.51:9080/snoop
    http://172.20.1.51:9081/snoop

    现在您已定义了 Application Server 集群并向其中部署了 DefaultApplication,您需要将 WebSphere OnDemand Configuration (ODCInfo) 应用程序安装到 WebSphere 单元的 Deployment Manager 中。ODCInfo 应用程序通过从该单元检索工作负载管理信息来提供智能负载分配。ODCInfo 包是 ResourceKit 的一部分,您可从与 WebSphere DataPower 固件更新相同的 IBM Fix Central 位置下载获得。

    下载并解压 ODCInfo 应用程序后,按照 WebSphere DataPower 信息中心 中的分步说明来安装和启动它。搜索 “Enabling the retrieval of workload management information” 以获得正确的源代码。

    提示:选择所提供的 WAR 文件的最新版本,即使它与您系统上安装的 Application Server 版本未准确匹配。

    如果尚未这样做,那么请在 Application Server 管理控制台中,跟随 Environment > Virtual hosts > default_host > Host Aliases 线索在端口 9060 for all (*) 主机名的虚拟主机别名表中创建一个条目,如图 9 所示。

    图 9. 虚拟主机别名
    虚拟主机别名
  9. 验证您是否可通过 ODCInfo 应用程序检索 Application Server 集群信息,将 172.20.1.51 替换为您的 Deployment Manager 系统的 IP 地址,并将 WASCluster 替换为您定义的集群的名称。
    http://172.20.1.51:9060/ODCInfo/ODCInfo?c=WASCluster

    如果一切正常,那么您会看到类似图 10 的情形。

    图 10. ODCInfo 单元状态
    ODCInfo 单元状态

    否则,您可能必须在安装 ODCInfo 应用程序后重新启动 WebSphere 单元。

下载一个服务来演示智能负载分配

出于本教程的用途,仅使用了一个 DataPower 设备来演示 Option for AO 的 ILD 功能。但是,在实际场景中,您会希望使用多个设备来预防单一故障点。

  1. 以特权用户身份再次登录 WebSphere DataPower WebGUI。在 AO 域内,导航到 Objects > Network Settings > Load Balancer Group。单击 Add
  2. 对于 Name,请输入 WASLoadBalancer
  3. 将单选按钮 Retrieve Workload Management Information 切换为 “on”。
  4. 单击 WebSphere Cell 字段旁边的加号 (+) 按钮,创建一个新的单元定义对象。
  5. Configure WebSphere Cell 窗口中,输入以下信息,将 172.20.1.51 替换为您的 Deployment Manager 主机的 IP 地址,将 9060 替换为它监听的端口:
    1. NameWASCell
    2. Deployment Manager Host172.20.1.51
    3. Deployment Manager Port number9060
  6. 对于 Workload Management Group Name,请输入 WASCluster
  7. 返回到主要窗口,单击 Apply,然后 Save Config

    您的新负载平衡器组对象配置看起来类似图 11 中所示的配置。

    图 11. 负载平衡器组
    负载平衡器组

    备注:在上面的示例中,我们使用一个简单的 Round Robin 算法对请求进行负载平衡。在实际应用中,会使用 Weighted Round Robin 或 Weighted Least Connection 算法,因为后端服务器可能在硬件资源上有所不同。这对虚拟企业环境甚至更为重要,在这种环境中,权重会根据需要发生动态更改。

  8. 浏览到 Status > IP Network > Load Balancer Status,并验证 DataPower 设备能否成功查询 ODCInfo 应用程序以返回集群成员信息(参见图 12)。
    图 12. 负载平衡器状态
    负载平衡器状态

    请注意,ODCInfo 应用程序返回了简短的主机名(对于 WebSphere Virtual Enterprise,则返回完全限定的域名 FQDN)Windows-XP-Prof。为了使 WebSphere DataPower 设备能够解析该主机名,需要在 DNS 中列出它或在设备上静态定义它。

  9. 切换到默认域并展开 Network > Interface > DNS Settings。单击 Static Hosts 选项卡,并为 Windows-XP-Prof 添加一个主机或 IP 映射条目。
  10. 单击 Save Config 保存配置。

    您可从 Troubleshooting Panel 使用 TCP Connection Test,以验证 DNS 静态主机是否已正确解析,如图 13 所示。

    图 13. TCP 连接测试
    TCP 连接测试
  11. 切换到 AO 域并浏览到 Control Panel > XML Firewall,单击 Add Wizard
  12. 选择 Pass Thru (testing only) 并单击 Next
  13. 对于 Firewall Name,请输入 ILD_XMLFW
  14. 选择默认的 static-backend 作为 Firewall Type
  15. 输入 WASLoadBalancer 作为 Server Address,在 Server Port 字段中输入 9080。单击 Next
  16. 对于前端处理程序,为 Device Address 保留默认的 0.0.0.0 值,在 Device Port 字段中输入一个未分配的端口。单击 Next
  17. Commit 您执行的更改并单击 Done
  18. 单击 Advanced 选项卡之前的 ILD_XMLFW XML Firewall 服务。
  19. Disallow GET (and HEAD) 字段设置为 “off”,将 Process Messages Whose Body is Empty 设置为 “on”。
  20. 返回到 General 选项卡。
  21. 单击 XML Manager 字段旁边的加号 (+) 按钮。
  22. 对于 Name,请输入 WAS_ILD_XMLMgr
  23. Load Balancer Groups 下拉列表中选择 WASLoadBalancer,并单击 Add
  24. 单击 Apply 返回到 XML Firewall 主页,再次单击 Apply 来应用所有更改。然后单击 Save Config 保存配置(参见图 14)。
    图 14. 智能负载分配 XML Firewall
    智能负载分配 XML Firewall

    您现在已准备好向 ILD_XMLFW XML Firewall 服务发送一些请求,让它智能地处理后端系统上应用服务器成员集群上的负载分配。

    切换到您之前下载和安装软件工具的客户端工作站。

  25. 从一个命令窗口,多次运行 “cURL” 实用程序,将 172.20.0.60 替换为您的主要 DataPower 设备的 IP 地址,将 4010 替换为您为 ILD_XMLFW 服务定义的前端处理程序端口(参见图 15):
    curl http://172.20.0.60:4010/snoop
    图 15. cURL 工具
    cURL 工具

    每次您调用 cURL 实用程序时,您会看到端口在 9080 和 9081 之间替换(或者在 Application Server 集群成员监听的端口上切换)。这表明负载分布在两个集群成员上。

    现在,如果向集群添加一个新服务器,ODCInfo 应用程序会拉取有关单元中的应用服务器的更新数据。然后 DataPower 设备上的 WebSphere 单元配置会从 ODCInfo 获取该信息,在负载平衡器组中更新数据。后者随后会使用此数据适应不断变化的流量条件和应用服务器功能,以最佳的方式在单元中的应用服务器上分配流量。

  26. 切换到 Application Server 管理控制台,向 WASCluster 添加一个新成员并启动它,如图 16 所示。
    图 16. 添加新集群成员
    添加新集群成员
  27. 返回到 DataPower WebGUI 上,浏览到 Status > IP Network > Load Balancer Status,验证集群承运信息是否已更新以包含新成员,如图 17 所示。
    图 17. 新负载平衡器状态
    新负载平衡器状态

    现在,当在主要 DataPower 设备上对 ILD_XMLFW XML Firewall 服务调用 cURL 实用程序时,您会看到负载均匀地分布在 3 个集群成员上,例如,端口 908090819082 之间的负载,如图 18 所示。

    图 18. 新 cURL 工具
    新的 cURL 工具

作为练习,您可以更改不同 Application Server 集群成员的权重。例如,您可为 server1 分配权重 2,为 server2 和 server3 分配权重 1,使 server1 获得两倍于 server2 或 server3 的请求。然后可更改 WASLoadBalancer 负载平衡器组的算法,以便使用 “Weighted Round Robin” 或 “Weighted Least Connections” ,从而体验和确认您已获得预期的结果。


结束语

本教程介绍了 Option for Application Optimization 的两个核心组件:自平衡和智能负载分配。您学习了如何使用自平衡功能在多个 DataPower 设备上分配负载,而没有外部负载平衡器的额外的麻烦和复杂性。与此同时,我们还使用了智能负载分配功能,基于来自应用服务器的反馈,智能地、动态地在后端服务器上对流量执行负载平衡。


下载

描述名字大小
代码样例download.zip1KB

参考资料

学习

获得产品和技术

讨论

条评论

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=845018
ArticleTitle=使用 WebSphere DataPower Option for Application Optimization 演示跨多个 DataPower 设备的自平衡和后端服务器的智能负载分配
publish-date=11082012