IBM®
跳转到主要内容
    中国 [选择]    使用条款
 
 
Select a scope:Search for:    
    首页    产品    服务与解决方案     支持与下载    个性化服务    
跳转到主要内容

developerWorks 中国  >  Linux  >

为您的 Linux 应用开发加油提速 2004: 创建 WebSphere Application Server V5 群集

POWER 版 Linux 的负载均衡和故障切换支持

developerWorks
文档选项

未显示需要 JavaScript 的文档选项


级别: 初级

Clifford Spinac (spinac@us.ibm.com), 电子商务架构师, IBM
Laurent Felici (laurentfelici@fr.ibm.com), 解决方案架构师, IBM

2004 年 4 月 01 日

本文介绍了用于负载均衡和故障切换的群集,并描述了如何使用 IBM WebSphere Application Server Version 5 for Linux 在 IBM iSeries 和 pSeries 服务器上安装设置群集。本文中的步骤和例子基于一个网络,这个网络由两台 64 位 POWER 处理器的 iSeries 或 pSeries 服务器(或者两个逻辑分区)通过网络连接起来而构成,运行的操作系统为 UnitedLinux Version 1.0 for iSeries/pSeries(PowerPC)。不过,在您的网络结构中的任意异构平台(pSeries、iSeries、xSeries 或 zSeries 机器)上同样可以使用 WebSphere Application Server Version 5 for Linux 构建群集。

在 WebSphere Application Server 中,应用程序服务器是运行应用程序 servlet、JavaServer Page 和/或 EJB 的进程。它提供了 servlet 运行期组件和 EJB 运行期容器。当一个单独的 WebSphere Application Server 不能具备足够的能力和可用性时,您可以将几个 WebSphere Application Server 组建为一个群集,以提供负载均衡和故障切换的支持。群集中的每个应用程序服务器运行相同集合的应用程序,由一个 Deployment Manager(或称为单元管理器)来管理整个群集。对用户来说,这个服务器群集表现为一个单独的应用程序服务器。

应用程序服务器群集有以下好处:

  • 可扩展性。您可以增强应用程序的能力。
  • 高可用性。如果群集中的一个应用程序服务器实例失败,应用程序处理将可以在群集中其他应用程序服务器实例上继续进行。

对术语表的回顾将有助于解释 WebSphere Application Server 体系结构拓扑:

节点(Node)
位于同一台实际计算机上的一个或多个服务器构成的逻辑组。同一台计算机上可以有多个节点,但是在本文中,我们将假定在每一台实际计算机中只有惟一一个节点。
Node Agent
管理运行在一个节点中的服务器的管理进程。节点代理位于一个单独的节点。
单元(Cell)
组合到一起可以单点管理的节点构成的逻辑组。单元中可以容纳不同机器平台的节点:pSeries、iSeries、xSeries 或 zSeries。
托管服务器(Managed server)
运行于本身的 Java 虚拟机(Java Virtual Machine,JVM)中的应用程序服务器进程,是单元的一部分。
单元管理器(Cell manager)
也叫做 Deployment Manager,它通过与单元中每台实际计算机上运行的 Node Agent 进行交互来管理分布式拓扑中的多个节点。技术上讲,它是运行了一个管理控制台实例的应用程序服务器,可以管理所有配置在同一个单元中的应用程序服务器。

要深入了解 IBM WebSphere Application Server 群集,请参阅下面 参考资料中列出的 IBM 红皮书 IBM WebSphere V5.0 Performance, Scalability, and High Availability

基本的 WebSphere Application Server 安装包括单独的应用程序服务器进程所需要的所有内容以及运行 Node Agent 所需要的代码。只是在节点加入到单元(加盟到单元中)时才会用到节点代理。WebSphere Application Server 的网络部署安装可以支持一个计算机系统网络,其中的计算机系统被配置为运行单个服务器安装的多个协作实例。

IBM WebSphere Application Server Network Deployment Package 包括一张 Application Server/IBM HTTP Server CD 和一张 Deployment Manager CD。在安装 Deployment Manager 之前,您首先要在每个节点上安装 Application Server,如下一节将详细介绍的。

开始之前


本文以用于 iSeries 和 pSeries 系统上的 SuSE Linux Enterprise Server (SLES) V8 为基础。

为了在 iSeries 和 pSeries 上创建一个基于 Linux 的 WebSphere Application Server 群集,您首先需要在群集中每台计算机上安装 WebSphere Application Server V5。您可以遵循“ Installing WebSphere Application Server V5.0 for Linux on iSeries and pSeries”中的步骤来安装 WebSphere Application Server。





回页首


建立负载均衡群集


负载均衡是任务在群集的应用程序服务器之间的分布。按照本节的步骤来建立一个支持工作负荷管理和故障切换的 WebSphere Application Server 群集。

图 1 说明了在两个节点上 Application Server 的安装和在其中一个节点上 Deployment Manager 的安装,我们将在本例中用到这些。在实际的部署情形中,您可能会和安装节点一样将 Deployment Manager 安装在同一个网络中单独的一台机器上。


图 1. 群集设置
群集设置

安装 Application Server 并配置网络


要再现图 1 中的例子,您需要在两台计算机上安装 Application Server。另外,您还需要在其中一台计算机上安装 Deployment Manager 。在我们的例子中,我们使用的是两个通过网络连接起来的基于 64 位 POWER 处理器的 iSeries 和 pSeries 服务器(或两个逻辑分区),运行的操作系统为 UnitedLinux Version 1.0 for iSeries/pSeries(PowerPC)。

两台机器,即 TP1 和 TP2,必须有固定的 IP 地址,同时必须属于一个有 DNS 服务器的网络。如果您没有用于试验和开发环境的 DNS 服务器,可以用 /etc/hosts 文件来配置网络。

清单 1 中给出了在 /etc/hosts 文件中对 TP1 和 TP2 的配置。注意,由于您的网络配置的不同,IP 地址会有变化。在这里您可以看到分配给 TP1 和 TP2 的完全主机名和短主机名的 IP 地址。

清单 1. 在 /etc/hosts 文件中对 TP1 和 TP2 的配置
TP1:~ # cat /etc/hosts#
# hosts         This file describes a number of hostname-to-address
#               mappings for the TCP/IP subsystem.  It is mostly 
#               used at boot time, when no name servers are running. 
#               On small systems, this file can be used instead of a 
#               "named" name server.
# Syntax:
#
# IP-Address   Full-Qualified-Hostname    Short-Hostname
#                        
127.0.0.1       localhost
# special IPv6 addresses
::1             localhost ipv6-localhost ipv6-loopback
fe00::0         ipv6-localnet
ff00:0          ipv6-mcastprefix
ff00:1          ipv6-allnodes
ff00:2          ipv6-allrouters
ff00:3          ipv6-allhosts
10.10.10.75     TP1.austin.ibm.com         TP1
10.10.10.76     TP2.austin.ibm.com         TP2
TP1: #
                

您必须现在在每台计算机上安装 WebSphere Application Server。通过 LaunchPad 安装程序,按照标准的步骤来安装 完全的应用程序服务器。您将被询问输入本次安装的节点名和主机名:

  • 在第一台机器上输入 TP1 作为节点名,输入 TP1 作为主机名。
  • 在第二台机器上输入 TP2 作为节点名,输入 TP2 作为主机名。

(确保 TP1 和 TP2 是您的 DNS 服务器中的合法条目,或者位于您的 /etc/hosts 文件中)。

图 2 给出了一个运行 Application Server 安装时设置节点名和主机名的例子。


图 2. 安装的节点和主机名
安装的节点和主机名

在两台机器上运行 WebSphere Application Server Installation Verification Test 来测试并启动 Application Server。并启动计算机 TP1 上的 IBM HTTP 服务器。





回页首


安装 Deployment Manager


既然已经完成了在两台计算机上的 Application Server 的安装,您现在可以在 TP1 上安装 Deployment Manager 了,如下:

  1. 启动 Deployment Manager CD 上的安装程序(LaunchPad):

    # cd /media/cdrom
    # ./LaunchPad.sh

  2. 单击 OK,为 LaunchPad 选择 English 语言。
    图 3. LaunchPad 语言
    LaunchPad 语言
  3. 在 WebSphere Application Server Network Deployment LaunchPad 窗口中,单击 Install the product一次。

    注意:请保持耐心, 不要多次单击“Install the product”。应用程序可能需要一段时间才能完成一些初始化并响应到下一个屏幕。


    图 4. LaunchPad 窗口
    LaunchPad 窗口
  4. 当出现 Installation Wizard 语言的选择后,选择 English并单击 OK
    图 5. Installation Wizard 语言
    Installation Wizard 语言
  5. 在 Installation Wizard Welcome 窗口中,单击 Next

  6. 在 Software License Agreement 窗口中,阅读 Software License Agreement 然后选择 I accept the terms in the license agreement,并单击 Next

  7. 由于您正在安装 Deployment Manager 的机器上已经安装了 Application Server,所以选择 Reconfigure the product to coexist with other versions of itself。安装程序将建议为 Deployment Manager 设置新端口和地址。记录下新的 Admin Console Port 和 Soap Connector Address 以备后用。单击 Next
    图 6. Installation Wizard -- 重新配置产品
    Installation Wizard -- 重新配置产品
  8. 在功能选择窗口中,所需要的只有 Deployment Manager。所以,取消对 Web Services 和 Embedded Messaging Client 的选择,并单击 Next
    图 7. Installation Wizard -- 选择功能
    Installation Wizard -- 选择功能
  9. 在下一个窗口中,接受默认的安装目录(/opt/WebSphere/DeploymentManager)并单击 Next
    图 8. Installation Wizard -- 安装目录
    Installation Wizard -- 安装目录
  10. 在下一个窗口中,接受默认值(在我们的例子中,Node Name 为 TP1Manager,Host Name 为 TP1,Cell Name 为 TP1Network)。然后单击 Next
    图 9. Installation Wizard -- 节点、主机和单元名
    Installation Wizard -- 节点、主机和单元名
  11. 下一个窗口会显示您的安装选择。确认这些选择并单击 Next
    图 10. Installation Wizard -- 安装选择
    Installation Wizard -- 安装选择
  12. 下一个窗口让您在线注册。您既可以现在注册也可以将来再注册。单击 Next然后再单击 Finish以完成 Deployment Manager 的安装。

  13. 当安装向导完成后,First Steps 窗口就会自动打开。

    在 First Steps 中,单击 Verify Installation。这个选项将运行 Installation Verification Test 工具来确认 Deployment Manager 服务器已经正确安装并可以正常启动。第一次运行确认安装测试可能需要几分钟。

    消息显示出来后,向下卷动确认消息区域。确认消息将显示 dmgr 服务器已经可用于电子商务。您将看到最后的“IVT Verification Succeeded”以及“Installation Verification is complete”消息。


    图 11. First Steps
    First Steps
  14. 单击 Exit以关闭 First Steps。

  15. 单击 Exit以关闭 WebSphere Application Server Network Deployment LaunchPad。




回页首


创建 Deployment Manager 单元


安装完成后,您的配置将是:

计算机 1:

  • 安装了基本的 WebSphere Application Server
  • 安装了 WebSphere Application Server Deployment Manager
  • 安装了 IBM HTTP Server

计算机 2:

  • 安装了基本的 WebSphere Application Server

Deployment Manager 单元的创建


两个 WebSphere 节点必须添加到 Deployment Manager 的单元。我们将使用 addNode 命令来完成这一任务,这个命令可以在每个节点(TP1 和 TP2)上的 WebSphere Application Server 安装的 bin 目录下找到。一定不能在两个节点上同时执行这个命令。

首先在计算机 TP1 上执行 addNode ,等待命令结束,然后再在计算机 TP2 上执行。这个命令需要运行着 Deployment Manager 进程的计算机名称作为参数。此外,由于您配置为 Deployment Manager 与 Application Server 共存于同一计算机上,所以必须为 Deployment Manager 的 SOAP Connector Address 指定另一个参数。在本例中,主机名是 TP1,SOAP Connector Address 是 8889。清单 2 举例说明了 addNode 命令的使用。

清单 2. addNode 命令
TP1:~ # /opt/WebSphere/AppServer/addNode.sh TP1 8889
                

addNode 命令将使用指定的 SOAP Connector Address 来连接指定主机上的 Deployment Manager。命令结束后,您会得到一条节点已经成功加入的消息,如图 12 所示。


图 12. addNode
addNode

现在在 TP2 上执行相同的 addNode 命令,以将 TP2 加入到单元中。

现在,我们在 TP1 上运行着一个 Deployment Manager 和一个 Node Agent,在 TP2 上运行着一个 Node Agent。查看下面的日志以确认安装已经到达这一步:

  • /opt/WebSphere/AppServer/logs/nodeagent/SystemOut.log (在 TP1 和 TP2 上)
  • /opt/WebSphere/DeploymentManager/logs/dmgr/SystemOut.log (在 TP1 上)

“Server xxx open for e-business”的消息说明进程已经启动(在这里 xxx 或者是 dmgr,或者是 Node Agent)。

群集的创建


如前所述, 群集是运行着相同应用程序的一组应用程序服务器。在群集内部,每一个应用程序服务器通常被称为是一个 克隆(clone)。在图 13 中有三个克隆:TP2 上两个,TP1 上一个。在 WebSphere Application Server Version 5 中,会分配给克隆给定的权重以达到负载均衡。 权重(weight)是群集中所有克隆的相对值。


图 13. 群集的配置
群集的配置

在我们的例子中,我们希望将克隆 3 的权重设置为与克隆 1 的权重加上克隆 2 的权重之和相同。例如您可以将克隆 1 的权重值设置为 2,克隆 2 的权重值设置为 2,克隆 3 的权重值设置为 4。使用其他的值,比如 3,3 和 6,结果相同。避免使用大的数字作为克隆的相对权重。

使用 WebSphere Administrative Console 来创建应用程序服务器群集。在后台启动一个 Web 浏览器(比如 Mozilla 或 Netscape):

# mozilla &

输入 URL http://tp1:9091/admin以打开 Deployment Manager Administrative Console。由于 Deployment Manager 与 Application Server 配置在同一主机上,所以您指定的端口是 9091 而不是 9090。输入用户 ID admin(或者您所选择的任何管理员 ID),并单击 OK:


图 14. Administrative Console 登录
Administrative Console 登录

Administrative Console 显示出来。在 Administrative Console 中,单击 +展开 Servers,然后选择 Clusters (Servers > Clusters)。在 Server Cluster 中,单击 New来创建一个新群集。


图 15. Administrative Console
Administrative Console

现在我们将进行下面的步骤:

  • 创建一个群集
  • 创建克隆 1
  • 创建克隆 2
  • 创建克隆 3
  • 安装一个企业应用程序

在步骤 1 中,输入 cluster1作为群集的名称。不要选中“prefer local”。选中 Create Replication Domain for this cluster。单击 Next 到步骤 2。


图 16. 输入基本的群集信息
输入基本的群集信息

在步骤 2 中,在节点 TP2上创建一个名为 clone1的克隆。设置权重为 2,选择 Generate Unique Http PortsCreate Replication Entry in this Server。使用默认的应用程序服务器模板并单击 Apply


图 17. 创建新的群集的服务器
创建新的群集的服务器

重复步骤 2,在节点 TP2上创建一个名为 clone2的克隆。设置权重为 2,选择 Generate Unique Http PortsCreate Replication Entry in this Server。使用默认的应用程序服务器模板并单击 Apply

再次重复步骤 2,在节点 TP2上创建一个名为 clone3的克隆。设置权重为 4,选择 Generate Unique Http PortsCreate Replication Entry in this Server。使用默认的应用程序服务器模板并单击 Next

检查总结以确认群集中已经存在三个有正确属性的克隆。然后单击 Finish保存修改。

在群集的创建过程中,您已经为这个群集创建了一个复制域(Replication Domain),可以用它来在克隆之间复制 http 会话以支持故障切换。为此,您需要配置应用程序服务器 clone1 和 clone2 去使用这一服务。在 Administrative Console 中,选择 Application Servers > clone1 > Web Container > Session Management > Distributed Environment Settings。然后选择 Memory to Memory Replication单选按钮。重复此过程设置 clone2。

现在您已经创建了一个群集定义。下一个步骤是安装一个企业应用程序。在这个练习中,使用的是位于 WebSphere Application Server 安装的 /installableApps 目录下的 DefaultApplication.ear。用 Deployment Manager Administrative Console 来安装这个应用程序。将一个企业应用程序安装到群集与安装到独立的应用程序服务器的过程相同,只有一点例外:在“将模块映射到应用程序服务器”步骤中,您必须为所有模块选择 cluster1。参见下面图 18 中的例子。(介绍企业应用程序详细的安装步骤不在本文范围之内。)


图 18. 将模块映射到应用程序服务器
将模块映射到应用程序服务器

在群集的设置过程中,三个克隆创建时各自使用惟一的 HTTP 端口。这就意味着在每个应用程序中运行的内部服务器的 HTTP 监听器有特定的值。管理进程创建新端口所用的算法,为每个定义的新服务器使用默认值(HTTP 传输使用 9080)并递增到下一个没有被占用的值。

在这个例子中,当您安装完 WebSphere Application Server 后,创建了一个名为 server1 的独立服务器。当这个节点添加到 Deployment Manager 时,server1 也会迁移为托管服务器。Server 1 使用 9080 端口进行 HTTP 传输。在 TP2 上,创建的 clone1 使用 9081 端口,clone2 使用 9082 端口。当安装 DefaultApplication.ear 时,Web 模块要使用 default_host 虚拟主机。默认情况下,default_host 只接受 9080 端口上的请求,所以您需要配置这个虚拟主机,让它也可以接受 9081 端口和 9082 端口上的请求。

在 Administrative Console 中通过 Environment > Virtual Hosts > default_host > Host Aliases来为默认主机添加附加端口的支持。单击 New以添加一个新的别名。用 *作为主机名(* 代表任意主机名),用 9081作为端口值。重复这一过程来设置 9082端口,如图 19 所示。


图 19. default_host 的附加端口
default_host 的附加端口

确保 Synchronize changes with Nodes已经被选中,保存配置。

既然您已经在群集中安装了一个应用程序,现在该测试它了。在我们的运行期中有三种类型的进程:Deployment Manager、Node Agent 和 Application Server。它们每个都是独立的系统级 Java 进程。

您可以使用 Deployment Manager 的 Administrative Console 来启动或停止群集。在此之前,每个节点都必须已经在运行 Node Agent。您可以使用表 1 中的命令来控制安装中的 Deployment Manager 和 Node Agent。

表 1. 控制 Deployment Manager 和 Node Agent 的命令
动作 命令
启动 Node Agent /opt/WebSphere/AppServer/bin/startNode.sh
停止 Node Agent /opt/WebSphere/AppServer/bin/stopNode.sh
启动 Deployment Manager /opt/WebSphere/DeploymentManager/bin/startManager.sh
停止 Deployment Manager /opt/WebSphere/DeploymentManager/bin/stopManager.sh

从先前执行 addNode 命令时起,Node Agent 应该还在运行。在 Administrative Console 中通过 System Administration > Node Agent来检查 TP1 和 TP2 的 Node Agent 是否在运行。然后查看节点 TP1 和 TP2 的状态。如果其中一台计算机上的 Node Agent 不可用,那么在那台计算机的命令行中启动它。当所有 Node Agent 都启动后,您可以通过 Administrative Console 启动群集,如图 20 所示。根据您的硬件配置的不同,启动过程可能需要几分钟。


图 20. 启动群集
启动群集

在测试工作负荷管理之前,有必要先分别检验一下各个克隆是否在工作。打开一个浏览器,访问下面的 URL:

  • http://tp2:9081/hello - 查看 clone1 是否在工作。
  • http://tp2:9082/hello - 查看 clone2。
  • http://tp1:9081/hello - 查看 clone3。

图 21. 确认服务器在运行
确认服务器在运行

如果三个 URL 返回图 21 中的结果,那么群集中所有服务器都在工作,而且使用的端口正确无误。关闭您的浏览器。

测试工作负荷管理


HTTP 服务器插件提供了对 Web 应用程序工作负荷的管理。在往 TP1 上安装 WebSphere Application Server 的同时也安装了 IBM HTTP 服务器。默认情况下,插件使用 /opt/WebSphere/AppServer/config/cells 目录下的 plugin-cfg.xml 配置文件。通过 Administrative Console 中的 Environment > Update Web Server Plugin来生成插件的配置。

Administrative Console 生成的文件将放在 /opt/WebSphere/DeploymentManager/config/cells 目录中。所以,您需要将生成的文件手工拷贝到 HTTP 服务器插件可以找到的目录,比如 /opt/WebSphere/AppServer/config/cells 目录。

DefaultApplication.ear 中的 snoop servlet 适合用于测试工作负荷。它显示用来执行请求的进程名。打开一个浏览器并输入这个 URL:http://tp1/snoop(IBM HTTP 服务器安装在 TP1 上)。


图 22. 测试工作负荷
测试工作负荷

多刷新几次您的浏览器,查看是哪个克隆执行请求。您应该会得到 1233、1233 等序列,这反映出了配置克隆时指定的相对权重。

注意:如果您总是看到同一个克隆的 id,那么关闭浏览器再重新打开。这样可以删除被 WebSphere Application Server 用于会话亲缘性(session affinity)的 cookie。



参考资料



作者简介

Clifford Spinac

Clifford Spinac 是 IBM Developer Relations Technical Consulting(位于美国得克萨斯州奥斯汀市,也称为“dragonslayers”)的一位高级电子商务架构设计师。在 IBM 的 25 年多的职业生涯中,他担当了各种软件开发、设计和规划职位,并且拥有 70 多项专利申请。在过去的四年中,他与软件开发人员和 Web 集成人员一起从事有关 IBM WebSphere Application Server、WebSphere Commerce Suite 和 IBM Linux 中间件的技术咨询工作。


Laurent Felici

Laurent Felici 在 IBM Developer Relations Technical Consulting(位于美国得克萨斯州奥斯汀市,也称为“dragonslayers”)工作,为 IBM 商务伙伴提供教育、实现和咨询。他自 1995 年起开始编制 Java 程序,2000 年起开始为 IBM 工作。




对本文的评价

太差! (1)
需提高 (2)
一般;尚可 (3)
好文章 (4)
真棒!(5)

建议?




回页首


IBM 公司保留在 developerWorks 网站上发表的内容的著作权。未经IBM公司或原始作者的书面明确许可,请勿转载。如果您希望转载,请通过 提交转载请求表单 联系我们的编辑团队。
    关于 IBM 隐私条约 联系 IBM 使用条款