在 WebSphere Operational Decision Management V7.5 中创建一个 Decision Server Events 运行时,第 2 部分: 配置一个高可用和可扩展的环境

这个由两部分组成的系列介绍了如何在 WebSphere Operational Decision Management V7.5 中创建 Decision Server Events 环境。第 1 部分 引导您完成构建一个独立环境的步骤。第 2 部分将引导您完成构建一个高可用和可扩展的环境的步骤。 本文来自于 IBM Business Process Management Journal 中文版

Shenfu (Mike) Fan, 认证 IT 架构师和 IT 专家, IBM

Shenfu (Mike) Fan 是 IBM Software Services for WebSphere 团队的一名高级顾问,拥有超过 8 年的从业经验。他致力于企业应用程序集成解决方案的架构设计、开发和实现,主要借助各种 WebSphere 产品,包括 WebSphere Service Registry and Repository、WebSphere Message Broker、WebSphere MQ 和 WebSphere ESB 等。


developerWorks 投稿作者

Tim Galvin, 软件开发人员, IBM

Tim Galvin 是一名软件开发人员,效力于位于 MA 的 Littleton Software Lab 中的 IBM WebSphere Business Events 开发团队。此前,他担任过高级顾问,领导客户进行 WebSphere Business Events 解决方案的架构、设计和实现。



2013 年 11 月 18 日

简介

WebSphere Operational Decision Management (以下简称 ODM)使企业能够利用智能的自动化决策响应实时数据。它包含两个相辅相成的组件:Decision Server Rules 和 Decision Server Events。根据业务数据类型和业务需求,Decision Server Events 可用于提供决策管理服务。因为 Decision Server Events 是新版本的 WebSphere Business Events,WebSphere Business Events V7 用户可能希望 将他们的解决方案迁移到 ODM ,以便利用新的工具和特性。

您可以配置独立或高度可用和可扩展的 Decision Server Events 环境。创建高可用和可扩展的事件环境的一个方法是,使用应用程序服务器集群,为驻留在集群上的应用程序提供工作负载管理和故障转移。在本文中,我们将创建一个集群的 Decision Server Events 事件环境。关于构建立一个独立环境的步骤,请参阅 第 1 部分

为了从本文获益,读者应该对 WebSphere ODM 和 WebSphere Application Server 产品有基本的了解。有关这些产品的更多信息,请参阅 参考资料


创建一个 Decision Server Events 运行时

请访问 WebSphere Operational Decision Management 信息中心,了解高可用和可扩展的 Decision Server Events 运行时(以下简称事件运行时)的 银拓扑金拓扑 。在这两种拓扑结构中,默认的消息(应用程序服务器 SIBus)都被用作 JMS 提供者。在图 1 所示的拓扑中,WebSphere MQ 被用作 JMS 提供者,而 DB2® 被用作事件运行时存储库。MQ 和 DB2 服务器被托管在不同的机器上。事件运行时环境构建于跨两台主机的一个应用程序服务器集群上,这两台主机提供了任务关键型服务,以确保提供最短的停机时间和最大的可扩展性。集群是一组透明地运行事件运行时(一个 Java™ EE应用程序)的应用程序服务器,就好像它是一个实体。多实例队列管理器 以及客户通道定义表 (CCDT) 可用于消息的故障转移,如果活动的服务器出现故障,那么它会自动切换到备用 MQ 服务器。 DB2 高可用性灾难恢复 (HADR) 可用于数据源故障转移。DB2 HADR 是一个数据复制特性,为部分和完整的站点故障提供高可用性解决方案。创建多实例队列管理器和配置 DB2 HADR 已超出了本文的范围。

图 1. 使用 MQ 和 DB2 的事件运行时拓扑
使用 MQ 和 DB2 的事件运行时拓扑

为简单起见,我们将在一台 Windows® 机器上构建一个事件运行时环境,如图 2 所示。ODM、MQ 和 DB2 都安装在该机器上。一个集群 DseCluster1 包含两个托管节点(利用 Decision Server Events 增加自定义配置文件)DseNode1 和 DseNode2,它们被联合在部署管理器 DseDmgr1 的一个单元 DseCell1 中。表 1 列出了先决条件的软件和安装信息。

图 2. 事件运行时环境的逻辑视图
事件运行时环境的逻辑视图
表 1. 软件安装信息
系统参数
WebSphere ODMVersion
Host
Install_Dir
WAS_Dir
UserID
7.5
localhost
C:\IBM\WODM75
C:\IBM\WODM75\WAS
admin
WebSphere MQVersion
Host
Install_Dir
UserID
7.0.1
localhost
C:\IBM\MQV70
admin
DB2Version
Host
Install_Dir
Server_Port
UserID
9.7
localhost
C:\IBM\SQLLIB
50000
admin

在创建事件运行时之前,您需要创建一个数据库和一个队列管理器,如下所示:

  1. 输入以下 DB2 Command Line Processor (CLP) 命令,创建一个名称为 DSEDB1 的数据库:
    db2 create database DSEDB1 using codeset UTF-8 territory us PAGESIZE 32768
  2. 使用下面的命令,创建一个队列管理器 DSEQM1,以及一个侦听器和 pub/sub JMS 对象:
    crtmqm DSEQM1
    strmqm DSEQM1
    echo DEFINE LISTENER('DSEQM1_TCP') TRPTYPE(TCP) PORT(2414) CONTROL(QMGR)
    | runmqsc DSEQM1
    runmqsc DSEQM1 < C:\IBM\MQV70\java\bin\MQJMS_PSQ.mqsc

成功创建数据库和队列管理器后,请按照下面描述的步骤创建事件运行时。

  1. 创建并增加一个部署管理器配置文件
  2. 创建并增加一个自定义配置文件
  3. 将自定义配置文件联合到部署管理器的单元中
  4. 创建一个集群,并将应用程序服务器添加为集群成员
  5. 启动部署管理器、节点代理和集群
  6. 安装事件运行时应用程序
  7. 创建一个 JVM 自定义属性
  8. 启用初始 Bean 服务
  9. 创建 DSE 表
  10. 创建 MQ 队列
  11. 配置 Business Space

创建并增加一个部署管理器配置文件

运行以下命令,创建一个名为 DseDmgr1 的部署管理器配置文件。

C:\IBM\WODM75\WAS\AppServer\bin>manageprofiles.bat -create 
-templatePath "C:\IBM\WODM75\WAS\AppServer\profileTemplates\management" 
-profileName "DseDmgr1" 
-profilePath "C:\IBM\WODM75\WAS\AppServer\profiles\DseDmgr1" 
-hostName "localhost" 
-cellName "DseCell1" 
-enableAdminSecurity "true"
-adminUserName "admin"
-adminPassword "p@ssw0rd"

您也可以使用 Profile Management Tool 创建部署管理器配置文件。请参阅 WebSphere Application Server Information Center,了解有关如何 使用部署管理器创建管理配置文件 的信息。

运行以下命令,使用 Decision Server Events 增加部署管理器配置文件。

C:\IBM\WODM75\WAS\AppServer\bin>manageprofiles.bat -augment 
-profileName "DseDmgr1" 
-templatePath "C:\IBM\WODM75\WAS\AppServer\profileTemplates\wbe\management" 
-wbeDbType "DB2_Universal" 
-wbeDbHostName "localhost" 
-wbeDbServerPort "50000" 
-wbeDbJDBCClasspath "C:\IBM\SQLLIB\java\db2jcc.jar" 
-wbeDbName "DSEDB1" 
-wbeDbUserId "admin" 
-wbeDbPassword "p@ssw0rd" 
-wbeHome "C:\IBM\WODM75\WODM"
-wbeMsgingType "MQ_JMS_Messaging"
-wbeMqMsgingQmgrName "DSEQM1"
-wbeMqMsgingQmgrHostName "localhost"
-wbeMqMsgingQmgrPort "2414"
-wbeMqMsgingTransType "CLIENT"

需要注意的是,MQ 传输类型可以是 BINDINGS 或 CLIENT。如果要以绑定模式连接到队列管理器,JMS 应用程序必须在运行队列管理器的同一系统上运行,并使用 Java Native Interface (JNI) 直接连接到队列管理器。如果要以客户端模式连接到队列管理器,JMS 应用程序可以在运行队列管理器的同一系统上运行,也可以在不同的系统上运行。在这两种情况下,JMS 应用程序都通过 TCP/IP 连接到队列管理器。如果多实例队列管理器用于故障转移,其类型必须是 CLIENT,以便在一个通道上设置 CCDT。

您也可以使用 Profile Management Tool 增加部署管理器配置文件。请参阅 WebSphere Operational Decision Management 信息中心,了解有关 使用 Decison Server Events 增加部署管理配置文件 的信息。

成功创建并增加部署管理器配置文件后,启动应用程序服务器并打开管理控制台。您应该看到:

  • 一个部署管理器 dmgr ,在 System administration => Deployment manager 下面。
  • 一个数据源 Event Runtime Datasource ,在 Resources => JDBC => Data sources下面。该数据源与数据库 DSEDB1 有关联。
  • 一组 JMS 对象,如主题连接工厂 WbeTopicConnectionFactory ,位于 Resources => JMS => Topic connection factories下面;队列 eventQueue,位于 Resources => JMS => Queues 下面;主题 actionTopic ,位于 Resources => JMS => Topics下面;以及一个激活规范 wbe_events ,位于 Resources => JMS => Activation specifications下面。
  • 一组 Decision Server Events 自定义属性,在 Resources => Resource Environment => Resource environment entries => WbeSrv01 => Custom properties 下面。

创建并增加自定义配置文件

运行以下命令,创建一个名称为 DSE1 的自定义配置文件。

C:\IBM\WODM75\WAS\AppServer\bin>manageprofiles.bat -create 
-templatePath "C:\IBM\WODM75\WAS\AppServer\profileTemplates\managed" 
-profileName "DSE1" 
-profilePath "C:\IBM\WODM75\WAS\AppServer\profiles\DSE1"
-nodeName "DseNode1"
-hostName "localhost"
-enableAdminSecurity "true"
-adminUserName "admin"
-adminPassword "p@ssw0rd"

运行以下命令,使用 Decision Server Events 增加自定义配置文件。

C:\IBM\WODM75\WAS\AppServer\bin>manageprofiles.bat -augment 
-profileName "DSE1" 
-templatePath "C:\IBM\WODM75\WAS\AppServer\profileTemplates\wbe\managed"

重复这两个命令,创建并增加另一个自定义配置文件 DSE2。


将自定义配置文件联合到部署管理器的单元中

如果部署管理器尚未启动,请启动它,并运行以下命令,将 DSE1 和 DSE2 自定义配置文件联合到部署管理器的单元中。

C:\IBM\WODM75\WAS\AppServer\bin>addNode.bat localhost 8879 -profileName "DSE1" 
    -username admin 
    -password p@ssw0rd  
C:\IBM\WODM75\WAS\AppServer\bin>addNode.bat localhost 8879 -profileName "DSE2" 
    -username admin
    -password p@ssw0rd

其中:
8879 是部署管理器的 SOAP_CONNECTOR_ADDRESS 端口号,而 localhost 是运行部署管理器的主机名称。


创建一个集群,并将应用程序服务器添加为集群成员

运行以下命令,在 DseCell1 单元中创建一个名为 DseCluster1 的集群,然后在集群中添加集群成员 DseSrv1 和 DseSrv2。

C:\IBM\WODM75\WAS\AppServer\profiles\DseDmgr1\bin>wsadmin -lang jython 
    -username admin
    -password p@ssw0rd 
wsadmin>cell1 = AdminConfig.getid('/Cell:DseCell1/')
wsadmin>AdminConfig.create('ServerCluster', cell1, '[[name DseCluster1]]')
wsadmin>AdminConfig.save()   
wsadmin>cluster1 = AdminConfig.getid('/ServerCluster:DseCluster1/')    
wsadmin>node1 = AdminConfig.getid('/Node:DseNode1/')
wsadmin>node2 = AdminConfig.getid('/Node:DseNode2/')
wsadmin>AdminConfig.createClusterMember(cluster1, node1, [['memberName', 'DseSrv1']]) 
wsadmin>AdminConfig.createClusterMember(cluster1, node2, [['memberName', 'DseSrv2']]) 
wsadmin>AdminConfig.save()
wsadmin>exit

启动部署管理器、节点代理和集群

完成前面的步骤后,部署管理器和节点代理应该已启动并运行。如果没有启动,则运行下面的命令来启动部署管理器和 DSE1 及 DSE2 的节点代理。

C:\IBM\WODM75\WAS\AppServer\profiles\DseDmgr1\bin>startManager
C:\IBM\WODM75\WAS\AppServer\profiles\DseDmgr1\bin>startNode -profileName DSE1
C:\IBM\WODM75\WAS\AppServer\profiles\DseDmgr1\bin>startNode -profileName DSE2

运行以下命令,启动集群:

C:\IBM\WODM75\WAS\AppServer\profiles\DseDmgr1\bin>wsadmin -lang jython 
    -username admin 
    -password p@ssw0rd
wsadmin>cluster1 = AdminControl.completeObjectName('cell=DseCell1,
    type=Cluster,
    name=DseCluster1,*')
wsadmin>AdminControl.invoke(cluster1, 'start')
wsadmin>exit

如果您想停止集群、节点代理和部署管理器,请运行以下命令。

C:\IBM\WODM75\WAS\AppServer\profiles\DseDmgr1\bin>wsadmin -lang jython
    -username admin 
    -password p@ssw0rd
wsadmin>cluster1 = AdminControl.completeObjectName('cell=DseCell1,
    type=Cluster,
    name=DseCluster1,*')
wsadmin>AdminControl.invoke(cluster1, 'stop')
wsadmin>exit

C:\IBM\WODM75\WAS\AppServer\profiles\DseDmgr1\bin>stopNode -profileName DSE1 
    -username admin 
    -password p@ssw0rd

C:\IBM\WODM75\WAS\AppServer\profiles\DseDmgr1\bin>stopNode -profileName DSE2 
    -username admin 
    -password p@ssw0rd

C:\IBM\WODM75\WAS\AppServer\profiles\DseDmgr1\bin>stopManager -username admin 
    -password p@ssw0rd

安装事件运行时应用程序

事件运行时应用程序 wberuntimeear.ear 位于 C:\IBM\WODM75\WODM\director\lib 目录中。确保部署管理器、节点代理和集群都已启动。运行以下命令来安装应用程序。

C:\IBM\WODM75\WAS\AppServer\profiles\DseDmgr1\bin>wsadmin -lang jython 
    -username admin
    -password p@ssw0rd
wsadmin>AdminApp.install('C:/IBM/WODM75/WODM/director/lib/wberuntimeear.ear',
                 '[-cluster DseCluster1]')
wsadmin>AdminConfig.save()
wsadmin>sync1 = AdminControl.completeObjectName('type=NodeSync,node=DseNode1,*')
wsadmin>sync2 = AdminControl.completeObjectName('type=NodeSync,node=DseNode2,*')
wsadmin>AdminControl.invoke(sync1, 'sync')
wsadmin>AdminControl.invoke(sync2, 'sync')
wsadmin>exit

创建一个 JVM 自定义属性

事件运行时要求将名为 wbe.home 的 JVM 自定义属性配置为某个值,该值是 Decision Server Events 安装中的 director 目录的位置(在本例中是 C:\IBM\WODM75\WODM\director)。

要创建集群中每个应用程序服务器的 JVM 自定义属性,请运行以下命令:

C:\IBM\WODM75\WAS\AppServer\profiles\DseDmgr1\bin>wsadmin -lang jython
    -username admin
    -password p@ssw0rd
wsadmin>server1 = AdminConfig.getid('/Cell:DseCell1/Node:DseNode1/Server:DseSrv1')
wsadmin>server2 = AdminConfig.getid('/Cell:DseCell1/Node:DseNode2/Server:DseSrv2')
wsadmin>jvm1 = AdminConfig.list('JavaVirtualMachine', server1)
wsadmin>jvm2 = AdminConfig.list('JavaVirtualMachine', server2)
wsadmin>attr = []
wsadmin>attr.append([['name','wbe.home'],['value','C:\\IBM\\WODM75\\WODM\\director']])
wsadmin>AdminConfig.modify(jvm1,[['systemProperties',attr]])
wsadmin>AdminConfig.modify(jvm2,[['systemProperties',attr]])
wsadmin>AdminConfig.save()
wsadmin>exit

您应该在管理控制台中看到 wbe.home 属性,如图 3 所示。

图 3. 新的自定义属性
管理控制台中的新的自定义属性

您可能需要配置堆大小和 JVM 垃圾收集值,以优化内存的使用。例如,将 Initial Heap Size 和 Maximum Heap Size 都设置为 1024,并将 Generic JVM Arguments 设置为 -Xgcpolicy:gencon -Xmn1024M


启用初始 Bean 服务

您也需要为集群中的每个应用程序服务器启用初始 Bean 服务。运行以下命令来启用初始 Bean 服务。

C:\IBM\WODM75\WAS\AppServer\profiles\DseDmgr1\bin>wsadmin -lang jython
wsadmin>server1 = AdminConfig.getid('/Cell:DseCell1/Node:DseNode01/Server:DseSrv1')
wsadmin>server2 = AdminConfig.getid('/Cell:DseCell1/Node:DseNode02/Server:DseSrv2')
wsadmin>sbs1 = AdminConfig.list('StartupBeansService', server1)
wsadmin>sbs2 = AdminConfig.list('StartupBeansService', server2)
wsadmin>AdminConfig.modify(sbs1, [['enable', 'true']])
wsadmin>AdminConfig.modify(sbs2, [['enable', 'true']])
wsadmin>AdminConfig.save()
wsadmin>exit

您应该在管理控制台中看到 Enable service at server startup 已被选中,如图 4 所示。

图 4. 启用初始 Bean 服务
Fig4.jpg

创建事件运行时表

Decision Server Events 提供用于在 C:\IBM\WODM75\WODM\config\db 目录中创建事件运行时表的脚本。运行以下 DB2 CLP 命令,创建事件运行时表。

cd C:\IBM\WODM75\WODM\config\db
db2 connect to DSEDB1
db2 -tcf db2.sql

您应该看到在 DSEDB1 数据库中创建了一组事件运行时的表,如图 5 所示。

图 5. 事件运行时表
事件运行时表

创建 MQ 队列

Decision Server Events 提供用于在 C:\IBM\WODM75\WODM\config\was 目录中创建 MQ 队列的脚本 create_MQ_JMS_MQ_queues.mqsc。运行以下 MQ 脚本命令,创建队列。

cd C:\IBM\WODM75\WODM\config\was
runmqsc DSEQM1 < create_MQ_JMS_MQ_queues.mqsc

在 DSEQM1 队列管理器中创建了三个队列(eventQueue、durableEventQueue 和 historyModuleQueue),如图 6 所示。

图 6. 消息目的地的队列
消息目的地的队列

配置 Business Space

Business Space 是基于浏览器的图形用户界面,使业务用户能够与 ODM 及其他 WebSphere 产品所提供的内容进行交互。它托管设计创作工具、Decision 小部件,让策略管理者和规则作者可以编写事件规则。您可以在集群环境中创建一个 Business Space。请参阅 Operational Decision Management 信息中心,了解如何 配置 Business Space 以实现高可用性和可扩展性


验证事件运行时系统

几秒钟后,集群 DseCluster1、应用程序服务器 DseSrv1 和 DseSrv2,以及应用程序 wberuntimeear 都应该在运行。

或者,在管理控制台上启动集群,选择 Servers => Clusters => WebSphere application server clusters,然后选中 DSECluster1,并单击 Start

完成以下步骤,以验证事件运行时。

  1. 确保 DB2 服务器和 MQ 队列管理器已启动。
  2. 启动部署管理器、节点代理和集群。打开管理控制台,并确保它们已全部成功启动。
  3. 从 ODM Information Center 下载 MeterReadings 事件项目。在 MeterReadings 项目中,对当前和以前的仪表读数值进行了比较。如果最新的仪表读数小于前一个读数,就会触发一个操作。
  4. 在 Event Designer 上打开 Event 透视。创建一个事件运行时连接,如图 7 所示。针对 DseSrv1 使用端口号 9080。请注意,您还可以创建一个 DseSrv2 的事件运行时连接(端口号 9081)。两者都连接到相同的事件运行时存储库。
    图 7. 创建一个新的事件运行时连接
    创建一个新的事件运行时连接
  5. 选中 Deploy from project file,将事件项目部署到事件运行时,如图 8 所示。
    图 8. 部署一个项目
    部署一个项目
  6. 打开 MQ Explorer。展开队列管理器 DSEQM1,右键单击 Topic 并选中 Test subscription,如图 9 所示。
    图 9. 打开测试订阅
    打开测试订阅
  7. Topic 字段中输入 actionTopic 并单击 Subscribe ,以订阅主题,如图 10 所示。
    图 10. 订阅 actionTopic
    订阅 actionTopic
  8. 使用 MQ Explorer,将一个事件测试消息放入 eventQueue 队列,如图 11 所示。
    图 11. 将一个事件测试消息放入队列
    将一个事件测试消息放入队列

    测试消息如下所示:

    <?xml version="1.1" encoding="UTF-8"?>
    <connector
        name="WBE" version="6.2" xmlns="http://wbe.ibm.com/6.2/Event/New-meter-reading">
               <connector-bundle name="New meter reading" type="Event">
               	<SmartMeter-data>
               		<Customer-ID type="String">12345</Customer-ID>
    		        <meter-reading type="Real">1000</meter-reading>
               		<meter-reading-date type="DateTime">2012-05-25T20:03:10Z<
    				/meter-reading-date>
    		</SmartMeter-data>
               </connector-bundle>
               <system>VMXP03</system>
               <timestamp>2012-05-25T16:03:10.569-04:00</timestamp>
               <loginfo>This is an event from Decision
        Server</loginfo>
    </connector>

    在测试消息中将仪表计数从 1000 修改为 800,并将它再次放入队列。

  9. 检查是否发布了一个操作,如图 12 所示。
    图 12. 由事件运行时发布的操作消息
    由事件运行时发布的操作消息

结束语

本文描述了创建一个高可用和可扩展的事件运行时环境的步骤。虽然我们在一台 Windows 机器上构建此环境,但所提供的命令和脚本同样可用于跨多台机器(如 图 1 所示)构建拓扑,以及在其他平台(如 AIX)上构建拓扑。为了构建一个真实的事件运行时生产环境,您需要执行额外的配置,比如用户角色和用户身份验证。

参考资料

学习

获得产品和技术

讨论

条评论

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=953504
ArticleTitle=在 WebSphere Operational Decision Management V7.5 中创建一个 Decision Server Events 运行时,第 2 部分: 配置一个高可用和可扩展的环境
publish-date=11182013