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

developerWorks 中国  >  WebSphere  >

在分布式环境中使用流程策划

developerWorks
文档选项

未显示需要 JavaScript 的文档选项


级别: 初级

Ruth Schilling (Ruth.Schilling@de.ibm.com),
Ekkehard Voesch (evoesch@de.ibm.com),

2003 年 12 月 01 日

本篇描述如何在分布式环境中使用 IBM WebSphere Application Server 企业流程策划。它对不同的 Network Deployment(ND)方案进行了概述,并描述了可以在分布式环境中使用流程策划前,需要完成的特定安装和配置步骤。本篇还包括如何在分布式环境中管理商业流程。

1. 介绍

本篇描述如何在分布式环境中使用 IBM WebSphere Application Server 企业流程策划。它对不同的 Network Deployment(ND)方案进行了概述,并描述了可以在分布式环境中使用流程策划前,需要完成的特定安装和配置步骤。本篇还包括如何在分布式环境中管理商业流程。

有关安装和定制不同的 Network Deployment 设置的常规信息包含在 WebSphere Application Server InfoCenter中。

2. 流程策划的 Network Deployment 方案

您可能想要在分布式环境中使用流程策划,如果:

  • 管理几个流程策划实例的管理开销变得太高。在分布式环境中,您可以使用网络管理器作为单个管理点来管理几个流程策划实例。
  • 单个机器无法处理必需的工作负载。在分布式环境中,您可以将应用程序服务器收集起来作为一个 WebSphere 群集共享工作负载。如果您使用 WebSphere MQSeries 群集或中央 Queue Manager,则还可以完成内部进程的工作负载平衡。

以下部分对不同的分布式环境和流程策划对这些分布式环境的要求进行了概述。这些方案以单元中的第一个节点开始并逐渐变得复杂。

2.1. 单元中的第一个节点

对于 ND 管理的 WebSphere 单元中的第一个节点,流程策划要求必须可以从 Deployment Manager 节点访问数据库。在您可以配置商业流程容器以前,必须建立对远程数据库的访问。


该图显示单元中第一个节点的设置

图 1. WebSphere 单元中的第一个节点

2.2. 独立的应用程序服务器和远程数据库

流程策划使用的数据库可以在相对于应用程序服务器为本地或远程的任何机器上。远程系统可以是 WebSphere 单元之外的机器。应用程序服务器和网络管理器节点需要访问数据库系统。

Deployment Manager 要求每个数据库系统的数据库名在 WebSphere 单元中是唯一的。必须在网络管理器和相应的应用程序服务器上使用相同的数据库名。


该图显示独立的应用程序服务器和远程数据库的设置

图 2. 独立应用程序服务器和远程数据库

2.3. 多个应用程序服务器

附加节点包含多个应用程序服务器。每个应用程序服务器需要其自己的数据库。


该图显示多个应用程序服务器的设置

图 3. 多个应用程序服务器

2.4. 内部流程负载平衡

要为流程策划启用内部流程负载平衡,您必须在 WebSphere MQSeries 群集中收集 Queue Manager 或在 WebSphere MQSeries 服务器上设置 中央 Queue Manager

同一个 WebSphere 群集中的所有应用程序服务器使用相同的数据库。此数据库通常驻留在专用数据库系统中。您还可以对数据库系统使用其中一个 WebSphere 群集节点。然而,不建议这样做,因为如果系统失败,则所有属于 WebSphere 群集的应用程序服务器都受到影响。

图 4 和图 5 显示内部流程负载平衡的 ND 设置。


该图显示具有 WebSphere MQSeries 群集的 WebSphere 群集的设置

图 4. 具有 WebSphere MQSeries 群集的 WebSphere 群集


该图显示 WebSphere 群集和中央 Queue Manager 的设置

图 5. WebSphere 群集和中央 Queue Manager

2.5. 可用性和故障转移支持

分布式环境中的单个故障点是数据库系统和中央 Queue Manager 系统。当 WebSphere 群集建立时,应用程序服务器提供的服务就变得高度可用。对于队列,您可以建立 WebSphere MQSeries 群集或 Queue Manager 必须驻留在受高可用性的解决方案保护的系统上,例如,AIX 上的 HACMP。保护数据库的唯一方法是使用高可用性系统。


该图显示可用性和故障转移支持的设置

图 6. 可用性和故障转移支持

3. 为流程策划安装分布式环境

安装流程策划的大多数步骤包含在 WebSphere Application Server InfoCenter中。此处给出进一步信息,仅适用于那些与独立应用程序服务器安装不同的步骤。

要安装分布式环境:

  1. 安装选择的 数据库系统WebSphere MQSeries
  2. 在所涉及的系统上建立修改。缺省情况下,用 root 用户启动 WebSphere。启用 root 用户使用数据库系统。
  3. 在所有的应用程序服务器上安装 WebSphere Application Server Enterprise。如果您要使用嵌入式消息传递,确保您选择完全安装。

    在要使用内部流程工作负载管理(WLM)或故障转移能力的 WebSphere 群集节点上需要 WebSphere MQSeries。在这些节点上,确保 安装嵌入式消息传递功能部件。

    注:Cloudscape 不支持远程数据库访问,因此您无法将其作为数据库系统用于分布式环境中的流程策划。这表示您还不可以使用在 WebSphere Application Server Enterprise 的安装期间提供的流程策划样本配置。

  4. 在网络管理器上安装 WebSphere Application Server Network Deployment。
  5. 在网络管理器上安装 WebSphere Application Server Enterprise。

3.1. 安装数据库系统

您可以对不同的流程策划商业流程容器使用不同的数据库系统。您的数据库可以在 DB2OracleSybase上运行。此处描述了安装这些数据库系统的步骤。

3.1.1. 安装 DB2

要安装 DB2:

  1. 在定位数据库的机器上安装 DB2 Enterprise Edition 7.2 FP7。
  2. 在所有的应用程序服务器和网络管理器机器上安装 DB2 运行时客户机。这是最低要求。但您可以在这些机器上安装 DB2 Enterprise Edition 而不是 DB2 运行时客户机。
  3. 如果您在数据库机器上远程管理 DB2 实例,则创建一个管理 DB2 实例 db2as
  4. 在数据库机器上创建一个 DB2 实例。缺省为 db2inst1。本文通篇使用此 DB2 实例。
  5. 在 SMP 机器上,更新一些可以使用的处理程序:
    /usr/lpp/db2_07_01/adm/db2licm -l
              
                    

3.1.2. 安装 Oracle

要安装 Oracle:

  1. 在定位数据库的机器上安装 Oracle 服务器。
  2. 在所有的应用程序服务器和网络管理器机器上安装 Oracle 客户机。
  3. 为 root 用户设置环境变量 ORACLE_BASEORACLE_HOME

3.1.3. 安装 Sybase

要安装 Sybase:

  1. 在定位数据库的机器上安装 Sybase 服务器。
  2. 在所有的应用程序服务器和网络管理器机器上安装 Sybase 客户机。
  3. 要获取 XA 支持,对 Sybase 启用 DTM 选项:
    选项“启用 DTM”必须设置为“1”
    选项“启用 xact 协调”必须设置为“1”
    将角色“dtm_tm_role”添加到用户“sa”
              
                    

3.2. 安装 WebSphere MQSeries

如果您要按本文中的描述使用 WebSphere 群集,则在所有的应用程序服务器上安装 WebSphere MQSeries 5.3 CSD 1。在 SMP 机器上,确保所有 CPU 都可以使用:

setmqcap #CPUs
        

如果您使用嵌入式消息传递,则不需要安装 WebSphere MQSeries。

4. 在分布式环境中配置组件

要在分布式环境中配置组件:

  1. 设置数据库系统
  2. 设置 WebSphere MQSeries
  3. 设置 WebSphere Application Server Network Deployment
  4. 添加节点和服务器。要获取有关如何添加节点和服务器的信息,请参阅 WebSphere Application Server InfoCenter
  5. 创建一个 WebSphere 群集。要获取有关如何创建 WebSphere 群集的信息,请参阅 WebSphere Application Server InfoCenter
  6. 配置 流程策划

4.1. 设置数据库系统

您的数据库可以在 DB2OracleSybase上运行。此处描述了设置这些数据库系统的步骤。

4.1.1. 设置 DB2

要设置 DB2:

  1. 为数据库创建一个专用的文件系统。
  2. 启动 DB2 实例:
    db2start
              
                    

  3. 编目远程实例。请参阅 DB2 文档获取可以与此命令一起使用的参数。用数据库服务器的 IP 地址或主机名替换 <IP-address>。
    db2 catalog tcpip node reminst1 <IP-address> server 50010 remote_instance 
    db2inst1
              
                    

    注:如果您在 AIX 4.3.3 或更高版本上使用本地 DB2 实例并尝试从单个流程进行超过 10 次并发 DB2 连接,则 DB2 发出 SQL1224N 并且 WebSphere Administration Server 失败,附带 StaleConnectionException。要获取有关如何避免此问题的信息,请参阅 DB2 的提示和技巧
  4. 测试到远程实例的通信:
    db2 attach to reminst1 user db2inst1 using <password>
              
                    

    要复位连接,使用 detach 命令:
    db2 detach
              
                    

  5. 将 createDatabaseDb2.ddl 从应用程序服务器复制到数据库节点。
  6. 编辑 createDatabaseDb2.ddl 并更改数据库名。您还可以更改数据库路径。建议您为每个数据库创建一个 createDatabaseDb2.ddl。
  7. 创建数据库:
    db2 -tf createDatabaseDb2.ddl
    db2 connect to <DatabaseName>
    db2 bind /home/db2inst1/sqllib/bnd/@db2cli.lst blocking all grant public
    db2 connect reset
              
                    

    对每个数据库重复此步骤。
  8. 在 Deployment Manager 节点和相关的应用程序服务器节点上,编目相应的数据库:
    db2 catalog database <DatabaseName> as <DatabaseAlias> at node reminst1
              
                    

  9. 验证数据库编目条目是正确的并且您可以连接到数据库:
    db2 connect to <DatabaseAlias> user db2inst1
    db2 connect reset
              
                    

4.1.2. 设置 Oracle

要设置 Oracle:

  1. 为数据库创建一个专用的文件系统。
  2. 在所有机器上为数据库建立一个网络服务名。
    • 对于 Oracle 8.1.7:
      su - oracle
      export DISPLAY=<hostname>:0.0
      netasst
      选择
                        本地
      选择
                        服务命名
      单击
                        编辑 -> 创建
      网络服务名         <DatabaseName>
      协议               TCP
      主机名             <hostname>
      端口               <port>
      Oracle 8i 服务名   <DatabaseName>
                              
                      

    • 对于 Oracle 9i:
      su - oracle
      export DISPLAY=<hostname>:0.0
      netca
      选择
                        本地网络服务名配置
      选择
                        添加
      选择 
                        Oracle8i 或更高版本的数据库或服务
      服务名            <DatabaseName>
      协议              TCP
      主机名            <hostname>
      端口              <port>
      网络服务名        <DatabaseName>
                              
                      

  3. 使用 Oracle 工具创建启用 JServer 选项的空数据库。要获取有关如何这样操作的信息,请参阅 Oracle 文档。
  4. 在数据库机器上启动 Oracle 侦听器。
  5. 为每个数据库创建数据库模式:
    sqlplus <OracleUser>/<OraclePassword>@<DatabaseName> \
      @createTablespaceOracle<8|9>.ddl <TableSpaceDirectory>
    sqlplus <OracleUser>/<OraclePassword>@<DatabaseName> \
      @createSchemaOracle<8|9>.ddl
              
                    

4.1.3. 设置 Sybase

要设置 Sybase:

  1. 为数据库创建一个专用的文件系统。
  2. 在所有机器上为数据库建立一个网络服务名:
    su - sybase
    export DISPLAY=<hostname>:0.0
    dsedit
    选择
                  添加新的服务器条目
    服务器名          <ServerName>
    选择
                  添加新的网络传输
    传输类型          tli tcp
    主机名            <hostname>
    端口号            <port>
              
                    
                

  3. 编辑 createDatabaseSybase120.ddl 文件并更改数据库名。建议您为每个数据库创建一个专用的 createDatabaseSybase120.ddl。
  4. 创建数据库:
    su - <SybaseUser>
    isql -U <UserId> -P <Password> -S <ServerName> \
      -i createDatabaseSybase120.ddl
              
                    

    对每个数据库重复此步骤。

4.2. 设置 WebSphere MQSeries

建议您为每个节点上的 Queue Manager 创建一个专用的文件系统。您可以将 WebSphere MQSeries 设置为:

4.2.1. 设置与 WebSphere 群集并行的 WebSphere MQSeries 群集

您必须在 WebSphere 群集中的每台机器上安装 WebSphere MQSeries,并为此群集中的每个应用程序服务器创建两个 Queue Manager。其中一个 Queue Manager 拥有流程队列。此 Queue Manager 由流程引擎使用,获取消息(接受自)。另一个 Queue Manager 没有队列。此 Queue Manager 由流程引擎使用,以放置消息(发送到)。WebSphere MQSeries 群集中的每个 Queue Manager 必须有唯一的名称。

WebSphere 群集中应用程序服务器使用的所有 Queue Manager 都必须在同一个 WebSphere MQSeries 群集中。这些 Queue Manager 中至少有一个必须主管 WebSphere MQSeries 群集库。要避免单个故障点,建议您定义另一个 Queue Manager 来主管第二个库。您可以选择任何 Queue Manager 作为第二个库。此 Queue Manager 应该在另一个节点上。

WebSphere MQSeries 群集中的通信是通过通道完成的。每个队列必须有一个为其指定的唯一的端口。建议您在整个 WebSphere MQSeries 群集中使用唯一的端口。图 7 显示具有三个应用程序服务器、六个 Queue Manager 和一个库的 WebSphere MQSeries 群集所需的通道。


该图显示具有一个库的 WebSphere MQSeries 群集

图 7. 具有一个库的 WebSphere MQSeries 群集

 

如果您定义第二个库,则这增加可用发送程序通道的个数。图 8 显示具有第二个库的 WebSphere MQSeries 群集。


该图显示具有两个库的 WebSphere MQSeries 群集

图 8. 具有两个库的 WebSphere MQSeries 群集

 

要设置 WebSphere MQSeries:

  1. 更改一个 Queue Manager 以容纳一个库:
    ALTER QMGR REPOS('<ClusterName>') REPOSNL(' ')
         
                

  2. 允许远程管理 Queue Manager。此步骤是可选的,但对于复杂配置,远程管理可能有用:
    DEFINE CHANNEL('SYSTEM.ADMIN.SVRCONN') TYPE(CHLTYPE)
                

  3. 为每个 Queue Manager 定义一个群集接收程序:
         DEFINE CHANNEL('TO.<QueueManager>.TCP') +     CHLTYPE(CLUSRCVR) +
         CLUSTER('<ClusterName>') +
         CLUSNL(' ') +
         CONNAME('<TCP/IP-addr>(<TCP-Port>)') +
         DESCR('Cluster receiver channel at <QueueManager> TCPIP') +
         MAXMSGL(4194304) +
         TRPTYPE(TCP) +
         MCAUSER('<Principal>') +
         REPLACE
         
                

  4. 定义一个从每个 Queue Manager 到每个库 Queue Manager 的发送方通道。不要定义一个从库 Queue Manager 到其自身的发送方通道。
         DEFINE CHANNEL('TO.<TargetQueueManager>.TCP') +
         CHLTYPE(CLUSSDR) +
         CONNAME('<TargetTCP/IP-addr>(<TargetTCP-Port>)') +
         CLUSTER('<ClusterName>') +
         CLUSNL(' ') +
         DESCR('Cluster sender channel to <TargetQueueManager> TCPIP') +
         MAXMSGL(4194304) +
         TRPTYPE(TCP) +
         MCAUSER('<TargetPrincipal>') +
         REPLACE +
         NPMSPEED (NORMAL)
         
                

  5. 对每个 Queue Manager 启动侦听器。您可以手工启动侦听器:
    runmqlsr -t tcp -p <port> -m <QueueManager>
                

当所有已定义的群集通道处于运行状态时,群集是可选的。要检查通道的状态,使用 MQ 命令:

display chstatus(*)     
        

4.2.2. 设置中央 Queue Manager

这要求一个具有中央 Queue Manager 的专用 WebSphere MQSeries 服务器。此 Queue Manager 负责“放置”和“获取”消息。

要设置 Queue Manager:

  1. 将 UNIX 上的脚本 $WAS_HOME/ProcessChoreographer/createQueues.sh(Windows 平台上的 createQueues.bat)从 WebSpherep Application Server Enterprise 节点复制到 WebSphere MQSeries 服务器。
  2. 运行具有 Queue Manager 名称的 createQueues 脚本。
  3. 添加侦听器:
    • 在 UNIX 上,将新 Queue Manager 的专用端口添加到文件 /etc/services:
      <Service:Name> <port>/tcp
        <Service:Name>    Queue Manager 服务的名称
        <port>            Queue Manager 的端口
           
                    
                              

      将新 Queue Manager 的专用端口添加到文件 /etc/inetd.conf
      <Service:Name> stream tcp nowait mqm /usr/mqm/bin/amqcrsta amqrsta -m < 
                    QueueManager>
        <Service:Name>    Queue Manager 服务的名称(与 /etc/ 服务中的相同)
        <Service:Name>    Queue Manager 的名称
                    
                              

    • 在 Windows 平台上,使用 WebSphere MQSeries 资源管理器添加侦听器。

4.3. 设置 WebSphere Application Server Network Deployment

Network Deployment 机器必须对流程策划使用的应用程序服务器上的数据库具有访问权。因为 Network Deployment 节点和应用程序服务器节点通常分布在不同的机器上,所以必须从 Network Deployment 机器远程访问数据库。访问数据库的方式取决于您使用的数据库系统。

  • 对于 DB2,数据库必须被编目并通过别名访问。
  • 对于 Oracle,使用 TNS(TCP 网络服务名)访问数据库。
  • 对于 Sybase,主管数据库的节点是访问数据库的关键。

对于所有数据库系统,单元中数据库必须有唯一的名称,以便可以对其进行访问。此名称还必须与 Network Deployment 和相应的应用程序服务器上的名称相同。

注:您必须将所有数据库驱动程序的全限定路径名(例如,DB2 的 db2java.zip),添加到 network deployer 流程的类路径。

请参阅 WebSphere Application Server InfoCenter,获取其它设置信息。

4.4. 配置流程策划

在您可以在 WebSphere Application Server 上使用商业流程应用程序前,您必须配置商业流程容器。该配置在应用程序服务器上创建访问数据库和队列所需的条目。

4.4.1. 配置商业流程容器

您必须为每个独立的应用程序服务器,以及您要运行流程应用程序的单元中的每个群集配置商业流程容器。每个商业流程容器独立于单元中的其余商业流程容器。因此,每个商业流程容器需要其自己的数据库。这表示对于每个独立的应用程序服务器和每个群集必须有一个流程策划数据库。

您可以用以下方法配置商业流程容器:

  • 使用安装向导。这是配置商业流程容器的推荐方法。该向导指导您完成大多数配置步骤。然而,它不包含物理资源的创建。尽管群集中所有配置好的对象必须是等同的,但您仍必须分别在群集中配置所有的应用程序服务器。例如,群集的数据源的 JNDI 名必须与所有群集成员上的 JNDI 名相同。
  • 使用流程策划目录中提供的脚本创建由商业流程容器使用的资源,例如,JDBC 提供程序、数据源、侦听器端口和消息目的地。缺省值在 WebSphere Application Server InfoCenter中记载。
  • 配置包含商业流程容器的独立的应用程序服务器,如 WebSphere Application Server InfoCenter中所述。将此应用程序服务器添加到单元。您现在可以使用此应用程序服务器进行克隆。

商业流程容器的命名约定取决于容器是安装在群集还是节点上。对于群集,使用 BPEContainer_<clusterName>;而对于节点,则使用 BPEContainer_<nodeName><serverName>。这些是在管理控制台中显示的名称。

如果您需要从应用程序服务器或群集卸载商业流程容器,确保没有在应用程序服务器或群集上安装任何商业流程应用程序。如果仍安装了商业流程应用程序,则卸载将失败。

5. 验证安装

要验证在分布式环境中正确安装了流程策划:

  1. 安装旅行预定样本。使用管理控制台安装以下文件。文件必须按以下显示的顺序进行安装:
    1. SamplesGallery.ear
    2. TravelBooking.ear
    3. TravelBookingSamp.ear
  2. 运行旅行预定样本。

    要运行该样本,使用 URL http://<hostname<:<port</TravelBooking/启动 Web 浏览器并遵循此页面上的说明。

6. 管理商业流程应用程序

商业流程应用程序包含商业流程。此处描述了在分布式环境中管理商业流程应用程序的其它注意事项。

6.1. 安装商业流程应用程序

当您安装商业流程应用程序时,将配置数据添加到 WebSphere 配置库,并将流程元数据添加到流程策划数据库。

商业流程应用程序由至少一个 FAR 文件和至少一个 WAR 文件或 EJB jar 组成。您用与安装其它 J2EE 应用程序相同的方法安装这些应用程序;使用管理脚本或管理控制台上的应用程序安装窗口。然而,由于 FAR 文件不是 J2EE 模块,它们不出现在应用程序安装窗口上。

当前,所有属于商业流程应用程序的 FAR 文件都分布到您安装属于应用程序的任何 EJB jar 或 WAR 文件的应用程序服务器和 WebSphere 群集。建议您在相同的服务器和 WebSphere 群集上安装所有的模块。因此,您必须在所有这些应用程序服务器和 WebSphere 群集上配置商业流程容器。

如果您要从应用程序的 FAR 文件分隔 WAR 文件,则将它们放在不同的 EAR 文件中并单独安装此文件。您无法从 FAR 文件分隔 EJB jar。

安装流程应用程序时,所有的独立服务器和每个您要安装应用程序模块的 WebSphere 群集的至少一个应用程序服务器必须处于运行状态。相应的数据库服务器同样必须处于运行状态。

如果在安装时只有部分所需的服务器可用,则在处于运行状态的服务器和 WebSphere 群集上安装应用程序。稍后,您可以将应用程序映射到更多的服务器和 WebSphere 群集。请参阅 编辑商业流程应用程序,获取有关如何进行此操作的信息。

6.2. 卸载商业流程应用程序

当您卸载商业流程应用程序时,从所有安装了商业流程应用程序的服务器和 WebSphere 群集上除去它。如果您仅要从所选的服务器或 WebSphere 群集除去商业流程应用程序,使用 应用程序编辑

要在分布式环境中卸载商业流程应用程序:

  1. 确保所有的独立服务器,至少每个群集一个应用程序服务器,和相应的数据库服务器都处于运行状态。
  2. 停止属于应用程序的所有流程模板。这停止安装了应用程序的所有应用程序服务器和 WebSphere 群集上的流程模板。
  3. 除去流程模板的全部实例。
  4. 卸载商业流程应用程序。

6.3. 编辑商业流程应用程序

当您编辑商业流程应用程序时,将应用程序模块的映射更改为单元中的应用程序服务器和 WebSphere 群集。您可以使用管理控制台或管理脚本更改此映射。

管理控制台中仅出现 EJB 模块和 Web 模块。如果您更改 EJB 或 Web 模块的映射,则相应更改流程模块(FAR 文件)的映射。

在商业流程应用程序的编辑期间,应用以下限制:

  • 如果您除去到应用程序服务器或 WebSphere 群集的模块映射,则必须停止该应用程序的流程模板并且必须从属于相应的应用程序服务器或 WebSphere 群集的数据库除去所有模板的实例。
  • 您要更改(除去或添加)的所有应用程序服务器和每个 WebSphere 群集的至少一个成员必须处于运行状态。相关的数据库服务器同样必须处于运行状态。



参考资料

有关流程策划的信息可以在 WebSphere Application Server InfoCenter中找到。



作者简介

在 WAS Enterprise 流程策划开发组中工作的 Ruth SchillingEkkehard Voesch

他们的邮件地址是:
  IBM Deutschland Entwicklung GmbH
  Postfach 1380
  71003 Boblingen
  Germany


Ekkehard Voesch has authored this article




对本文的评价










回页首


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