级别: 初级 柏松, 软件工程师, IBM
2009 年 10 月 09 日 本介绍了如何利用 WAS ND 集群技术来提高 Records Manager 的高可用性和高可靠性,并且通过 Web Server 来实现性能的负载均衡。
IBM Records Manager V8.4 简介
IBM DB2 Records Manager(IRM)是一种为商业应用软件提供生命周期管理的电子记录(e-Record)技术。 DB2 Records Manager 符合美国国防部的电子记录管理 5015.2 标准。 DB2 Records Manager 构架采取了一种比较灵活的方式,因为它是通过一个引擎,而非一个应用程序来执行生命周期管理的。 DB2 Records Manager 是为与商业应用软件进行集成而设计的。 IRM 具有一个独特的引擎设计,且最适用于嵌入式解决方案。 IRM 被视为轻量级的解决方案,因为该引擎的主要作用只是为了提供生命周期管理的保存。组织可以使用单个 DB2 Records Manager 系统来支持多个业务流水线的应用程序。因为 DB2 Records Manager 是作为一种引擎技术而提供的,所以合作伙伴将维护对于该集成的完整控制。合作伙伴可以决定需要将多少内容包含在他们自己的应用程序中,以及以何种方式进行。 IBM DB2 Records Manager 重新设计的体系结构提供了跨平台支持和可伸缩性。该引擎支持 JAVA TM Internet Inter-ORB Protocol(IIOP)、远程方法调用(Remote Method Invocation,RMI)、简单对象访问协议(Simple Object Access Protocol,SOAP)和 Web 服务。 IRM 使用标准化的 Java2 Enterprise Edition 设计模式。
IBM Records Manager V8.4 体系结构
首先我们需要初步了解一下 Records Manager 整体构架。以下是一个 Records Manager 在 WAS BASE 版上的部署结构,用户首先通过 http 协议连接到 IRM Client 应用程序,然后 IRM Engine 处理用户的逻辑请求,最后通过 JDBC 存取数据。
图 1. Records Manager 体系结构详图
IBM Records Manager 包含如下组件:
- 引擎(IRM Engine Application) 提供了生命周期管理的所有业务逻辑(Business Logic);
- 基于 Web 的管理客户端(IRM Client Application): 一个管理用户接口,用来设计,构建和维护主机应用的文档归档计划(File Plan);
- IRM Database, 用于存储 record 的相关属性信息。
IBM Records Manager V8.4 在 WAS ND cluster 的部署
在很多真实的客户环境中,WAS ND 集群被广泛的应用,但是 Records Manager V8.4 并不支持在 WAS ND Cluster 环境上的安装,而手工配置涉及很多相关的技术:WAS ND 的部署,针对 Records Manager 在 WAS 中一些特殊的设置等等,使得用户放弃了高可靠性和高稳定性。在这里我们通过一个实例来学习如何在 WAS ND Cluster 中手工部署 Records Manager 。通过这个实例的学习,我们就能够借助 WAS ND Cluster 来提高 Records Manager 在实际生产环境中的高稳定性和高可靠性了。
在开始之前我们先来分析一下通过 WAS ND Cluster 能够解决 Records Manager 在实际应用的那些问题。图 2 中标记红虚线的地方是 Records Manager 应用在单 WAS 系统上的薄弱环节,也就是说如果其中任何一个出现问题,那么整个的系统都将不能够继续使用。下面通过把 Records Manager 部署到 WAS ND Cluster 上,来实现 Records Manager 的高可用性和高稳定性,从而避免单点失败对整个系统造成的影响。同时还能够达到负载均衡,并且通过 WAS ND 集群实现了 Records Manager 系统对性能的可扩展性。
图 2. Records Manager 可靠性分析图
如图 3,我们将把 IRM Engine 和 IRM Client 应用手工部署到 WAS ND Cluster 中 ( 本例中集群包括了两个 WAS 节点, 分别是 IRMServer1 和 IRMServer2),然后利用前置的一个 Web Server (本例中是 IRMWebSvr1)来实现负载均衡。当然读者可以把 Web Server 层也做成集群(Web Server Cluster),从而更加完善整个系统的可靠性。但这方面的技术不是本文的重点。
图 3. Records Manager 在 WAS ND Cluster 部署
搭建集群环境使用了四台测试服务器: 表 1. 测试服务器列表
| 服务器地址 | 服务器名称 | 角色 | 软件配置 | | 192.168.0.2 | rmsvtp02 | IRMDB | AIX5.2,DB2 v9.5 ESE | | 192.168.0.3 | rmsvtp01 | IRMServer1 一个受管节点 | AIX5.2,WAS Base 6.1 | | 192.168.0.4 | rmsvtp10 | IRMServer2 一个受管节点 | AIX5.2,WAS Base 6.1 | | 192.168.0.5 | perfsvr02 | 一个 DM 节点和一个 Web Server(IRMWebSvr1) | Windows2003,WAS ND 6.1 |
部署 Records Manager 集群不同于一般的 java 应用部署,需要一些特殊的设置。以下是 Records Manager 集群拓扑结构的安装步骤,主要分为四大步骤:
- 安装一个单机版 Records Manager 并创建 IRMDB,针对 Cluster 对安装文件做一些相应的配置;
- 搭建一个 WAS ND 集群和 Web Server( 在这里我们使用了 IBM Http Server 6.0) ;
- 针对 Records Manager 在 DM 上做一些相应的配置,例如创建数据源,服务集成总线,设置 JMS ;
- 手工部署 IBM Records Manager 和 IRMClientEAR,并配置 IHS Web 服务器。
下面我们来分别描述详细的操作步骤:
安装一个单机版 Records Manager 并创建 IRMDB,针对 Cluster 对安装文件做一些相应的配置
在服务器 rmsvtp02 中使用 Records Manager 安装程序创建一个 database(IRMDB), 具体步骤请参考 Records Manager 安装文档。
在 rmsvtp01 中的 WAS server1 上安装以下 Records Manager 组件,如图 4:
图 4:Record Manager 安装界面
安装成功后,使用 Records Manager 安装目录下的 Engine Configuration Tool 配置一个数据源,在本例中我们使用:irmdb (此数据源名称必须和将来在 DM 中配置的名称相同),重启 server1 ;
然后从控制台中导出 IBM Records Manager 并下载到本地。
图 5. export IRM Records Manager
步骤:进入应用程序 - 〉企业应用程序;
选择 ”IBM Records Manager ”,点击“导出”。
使用解压软件打开文件。
IBM Records Manager.ear \IRMJAVA.jar\com\ibm\gre\engine\util\IRMEngine.properties |
把属性 JMSFAILOVER_RETRY=0 更改为 JMSFAILOVER_RETRY=1 。
从 Records Manager 安装目录中找到 IRMClientEAR.ear 包,找到并编辑以下文件。
IRMClient.war\WEB-INF\web.xml |
在该文件中加入以下内容:
<env-entry>
<description>irm_jndiloginmanager</description>
<env-entry-name>irm_jndiloginmanager</env-entry-name>
<env-entry-values>
cell/clusters/IRMCLUSTER/recordmanager/ejb/facade/LoginManagerEJB
</env-entry-values>
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>
|
此处 IRMCLUSTER 是以后将要用得的 cluster 名称。
这样为将来手工部署的两个安装包准备完毕。
搭建一个 WAS ND 集群和 Web Server( 在这里我们使用了 IBM Http Server 6.0)
在该例中,我们将在 perfsvr02 服务器上安装一个 DM 和一个 IBM Http Server 6.0 Web 服务器,并同时安装 Plug-in for IHS. 在 rmsvtp01 和 rmsvtp10 上分别安装一个 WAS Base 应用服务器。
安装完后,我们在 DM 中创建一个集群。
图 6. 创建 IRM 集群 ( 步骤 1)
图 7. 创建 IRM 集群 ( 步骤 2)
单击下一步。
图 8. 创建 IRM 集群 ( 步骤 3)
添加另外一个成员 IRMServer2。 点击下一步,最后单击完成。
至此,一个 WAS ND 集群创建完成,我们可以在控制台中查看到该 IRMCLUSTER 集群信息。
图 9. 创建 IRM 集群 ( 步骤 4)
然后我们添加一个 Web Server 。
点击,服务器 ->Web 服务器。
输入 IHS 和 plug-in 的安装目录,单击下一步,最后单击完成。可以在控制台中查看到该 irmwebsvr 信息。

至此我们完成了一个 WAS ND 集群和 IHS 的搭建。
下面我们将 DM 上进行一些设置:
针对 Records Manager 在 DM 上做一些相应的配置,创建数据源,服务集成总线,设置 JMS.
为每个群集中的应用服务器配置 memory-to-memory replication 。
图 10. 设置 memory-to-memory 属性
在 DM 中为 Records Manager 创建数据源(数据源名称必须同在第一步中使用 Engine Configuration Tool 创建的数据源名称相同), 在这里我们使用 irmdb 。
首先创建“ JAAS - J2C 认证数据”,点击 “安全管理、应用程序和基础结构 > JAAS - J2C 认证数据” -> 新建。
图 11. 为 irmdb 数据源配置 J2C
此处用户标识为创建 IRM database 是的用户名。
在创建数据源之前,需要在 DM 中分别给各个节点指定变量:DB2UNIVERSAL_JDBC_DRIVER_PATH.
图 12. 为 IRMServer1 设置 JDBC 驱动路径
图 13. 为 IRMServer1 设置 JDBC 驱动路径
选择作用域为:IRMCLUSTER,按照下面的步骤创建数据源 irmdb 和 irmdbLLT 。
图 14. 创建 irmdb 数据源 ( 步骤 1)
图 15. 创建 irmdb 数据源 ( 步骤 2)
图 16. 创建 irmdb 数据源 ( 步骤 3)
图 17. 创建 irmdb 数据源 ( 步骤 4)
接下来在 DM 中创建 Records Manager 批处理操作所需要的 IRMBus 和 JMS 。
在创建 IRMBus 的时候,我们需要为消息选择存储器的类型以获取消息状态的持久性,在这里我们选择数据库作为消息存储器,所以我们首先在 irmdb 的同一台服务器上来创建一个 IRMBUSDB 数据库,这个数据库需要使用与 irmdb 同样的 schema 名称和用户,然后在 DM 中建立一个数据源 irmbus. 步骤如下:
进入 安全管理、应用程序和基础结构 > JAAS - J2C 认证数据,新建。
图 18. 为 IRMBus 创建数据源(步骤 1)
进入 资源 -> 数据源,在作用域:IRMCLUSTER 下新建。
图 19. 为 IRMBus 创建数据源(步骤 2)
图 20. 为 IRMBus 创建数据源(步骤 3)
图 21. 为 IRMBus 创建数据源(步骤 4)
最后单击下一步,完成。
接下来创建 IRMBus,单击下一步,最后按默认选项完成。然后为该 IRMBus 添加总线成员。进入,总线 > IRMBus > 总线成员,选择“添加”。
图 22. 创建 IRMBus(步骤 1)
图 23. 创建 IRMBus(步骤 2)
图 24. 创建 IRMBus(步骤 3)
单击下一步,最后完成。
然后需要为该 IRMBus 服务总线添加以下目标。
其中包括 4 个队列类型(IRMCancelQueue, IRMNotificationQueue, IRMResultQueue, IRMTaskQueue)和 1 一个主题空间类型(IRMCacheTopic)。
图 25.IRMBus 的队列和主题空间成员
下面需要对 JMS 进行一些针对 Records Manager 的配置。
在资源 ->JMS-> JMS 提供程序 ( 作用域:IRMCLUSTER) ;
建立 IRMQueueConnectionFactory 和 IRMTopicConnectionFactory 连接工厂。
具体属性设置如下:
JMS 提供程序 > Default messaging provider > 队列连接工厂
- 名称 = IRMQueueConnectionFactory
- JNDI 名称 = recordmanager/jms/factory
- 总线名 = IRMBus
- 其他保持默认属性
JMS 提供程序 > Default messaging provider > 主题连接工厂
- 名称 = IRMTopicConnectionFactory
- JNDI 名称 = recordmanager/jms/topicfactory
- 总线名 = IRMBus
- 其他保持默认属性
创建完连接工厂后需要在作用域 IRMCLUSTER 上创建相应的队列和主题。
具体属性配置如下:
JMS 提供程序 > Default messaging provider > 队列 ( 作用域:IRMCLUSTER)
IRMCancelQueue 队列:
- 名称 = IRMCancelQueue
- JNDI 名称 = recordmanager/jms/CancelQueue
- 总线名 = IRMBus
- 队列名 = IRMCancelQueue
- 交付方式 = 持久
- 生存时间 = 0
IRMNotificationQueue 队列:
- 名称 = IRMNotificationQueue
- JNDI 名称 = recordmanager/jms/NotificationQueue
- 总线名 = IRMBus
- 队列名 = IRMNotificationQueue
- 交付方式 = 非持久
- 生存时间 = 600000
IRMResultQueue 队列:
- 名称 = IRMResultQueue
- JNDI 名称 = recordmanager/jms/ResultQueue
- 总线名 = IRMBus
- 队列名 = IRMResultQueue
- 交付方式 = 持久
- 生存时间 = 0
IRMTaskQueue 队列:
- Name = IRMTaskQueue
- JNDI Name = recordmanager/jms/TaskQueue
- 总线名 = IRMBus
- 队列名 = IRMTaskQueue
- 交付方式 = 持久
- 生存时间 = 0
其他属性保持默认。创建完后如下:
图 26: 在 JMS 上创建队列
CreateQueueTopicJMS1.jpg
JMS 提供程序 > Default messaging provider > 主题 ( 作用域:IRMCLUSTER)
IRMCacheTopic 主题:
- 名称 = IRMCacheTopic
- JNDI 名称 = recordmanager/jms/CacheTopic
- 主题名 = IRMCacheTopic
- 总线名 = IRMBus
- 主题空间 = IRMCacheTopic
其他属性保持默认。创建完后如下:
图 27. 在 JMS 上创建主题
同时还需要设置相应的激活规范。
进入,资源 - 〉 JMS-> 激活规范 (作用域:IRMCLUSTER)
- 名称 = IRMTaskActivation
- JNDI 名称 = recordmanager/jms/IRMTaskActivation
- 目标类型 = 队列
- 目标 JNDI 名称 = recordmanager/jms/TaskQueue
- 总线名 = IRMBus
- 消息选择器 = JMSType='TASK'
- 名称 = IRMTaskLoggerActivation
- JNDI 名称 = recordmanager/jms/IRMTaskLoggerActivation
- 目标类型 = 队列
- 目标 JNDI 名称 = recordmanager/jms/TaskQueue
- 总线名 = IRMBus
- 消息选择器 = JMSType='LOG'
- 名称 = IRMCacheActivation
- JNDI 名称 = recordmanager/jms/IRMCacheActivation
- 目标类型 = 主题
- 目标 JNDI 名称 = recordmanager/jms/CacheTopic
- 总线名 = IRMBus
- 名称 = IRMHostNotificationActivation
- JNDI 名称 = recordmanager/jms/IRMHostNotificationActivation
- 目标类型 = 队列
- 目标 JNDI 名称 = recordmanager/jms/NotificationQueue
- 总线名 = IRMBus
手工部署 IBM Records Manager 和 IRMClientEAR,并配置 IHS Web 服务器
自此所有的配置都准备完成,然后需要使用在步骤一种准备的 IBM Records Manager.ear 和 IRMClient.war 包,手工部署 IBM Records Manager 和 IRMClientEAR 这两个应用程序。部署过程中保持所有选项默认。完成后需要在 DM 中设置一下属性。
指定应用程序中所包含的模块的安装目标为 IRMCLUSTER 。
图 28. 部署 Records Manager 应用
设置 IRMCLUSTER 中的各个应用服务器中 JVM 参数设置为:-Ddefault.client.encoding=UTF-8 ;
为了使用 HTTP Server 作为前端,起到负载均衡的作用,我们需要在 IHS Web 服务器和 Plug-in 上做一些配置:
进入,环境 - 〉更新全局 Web 服务器插件配置 点击确定,查看并下载当前 Web 服务器插件配置文件 plugin-cfg.xml ;
进入,服务器 - 〉 Web 服务器下,选择 irmwebsvr, 单击生成插件,然后再传播插件。
在重新启动 IRMCLUSTER,IHS Web 服务器前需要进入 系统管理 - 〉将更改保存到主存储库。
最后就可以通过 http://perfsvr02/IRMClient 来使用 Records Manager WAS ND 集群了。
结束语
虽然手工在 WAS ND 集群上部署 Records Manager 的步骤比较复杂,但是通过本文的清晰详细描述,就可以轻松实现一个高可靠性和高可用性的 Records Manager 集群,并且能够实现性能上的负载均衡,提高了 Records Manager 可扩展性。
参考资料 学习
获得产品和技术
- 使用可直接从 developerWorks 下载的 IBM 试用软件 构建您的下一个 Linux 开发项目。
讨论
关于作者  | |  | 柏松,IBM 中国软件开发中心 Enterprise Content Manager 部门 IBM Records Manager SVT 组的软件工程师。目前,专注于 IBM Records Manager 的系统测试和性能测试工作。 |
对本文的评价
|