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

developerWorks 中国  >  Information Management | WebSphere  >

IBM Records Manager V8.4 在 WebSphere ND V6.1 Cluster 上的部署与实施示例

developerWorks
文档选项

未显示需要 JavaScript 的文档选项


级别: 初级

柏松, 软件工程师, 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 体系结构详图
 图 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 可靠性分析图
 图 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 部署
 图 3. Records Manager 在 WAS ND Cluster 部署

搭建集群环境使用了四台测试服务器:


表 1. 测试服务器列表
服务器地址 服务器名称 角色 软件配置
192.168.0.2rmsvtp02IRMDBAIX5.2,DB2 v9.5 ESE
192.168.0.3rmsvtp01IRMServer1 一个受管节点 AIX5.2,WAS Base 6.1
192.168.0.4rmsvtp10IRMServer2 一个受管节点 AIX5.2,WAS Base 6.1
192.168.0.5perfsvr02 一个 DM 节点和一个 Web Server(IRMWebSvr1)Windows2003,WAS ND 6.1

部署 Records Manager 集群不同于一般的 java 应用部署,需要一些特殊的设置。以下是 Records Manager 集群拓扑结构的安装步骤,主要分为四大步骤:

  1. 安装一个单机版 Records Manager 并创建 IRMDB,针对 Cluster 对安装文件做一些相应的配置;
  2. 搭建一个 WAS ND 集群和 Web Server( 在这里我们使用了 IBM Http Server 6.0) ;
  3. 针对 Records Manager 在 DM 上做一些相应的配置,例如创建数据源,服务集成总线,设置 JMS ;
  4. 手工部署 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 安装界面
 图 4:Record Manager 安装界面

安装成功后,使用 Records Manager 安装目录下的 Engine Configuration Tool 配置一个数据源,在本例中我们使用:irmdb (此数据源名称必须和将来在 DM 中配置的名称相同),重启 server1 ;

然后从控制台中导出 IBM Records Manager 并下载到本地。


图 5. export IRM 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)
 图 6. 创建 IRM 集群 ( 步骤 1)

图 7. 创建 IRM 集群 ( 步骤 2)
 图 7. 创建 IRM 集群 ( 步骤 2)

单击下一步。


图 8. 创建 IRM 集群 ( 步骤 3)
 图 8. 创建 IRM 集群 ( 步骤 3)

添加另外一个成员 IRMServer2。 点击下一步,最后单击完成。

至此,一个 WAS ND 集群创建完成,我们可以在控制台中查看到该 IRMCLUSTER 集群信息。


图 9. 创建 IRM 集群 ( 步骤 4)
 图 9. 创建 IRM 集群 ( 步骤 4)

然后我们添加一个 Web Server 。

点击,服务器 ->Web 服务器。

添加一个 Web Server 1

添加一个 Web Server 2

添加一个 Web Server 3

输入 IHS 和 plug-in 的安装目录,单击下一步,最后单击完成。可以在控制台中查看到该 irmwebsvr 信息。
查看到该 irmwebsvr 信息

至此我们完成了一个 WAS ND 集群和 IHS 的搭建。

下面我们将 DM 上进行一些设置:

针对 Records Manager 在 DM 上做一些相应的配置,创建数据源,服务集成总线,设置 JMS.

为每个群集中的应用服务器配置 memory-to-memory replication 。


图 10. 设置 memory-to-memory 属性
 图 10. 设置 memory-to-memory 属性

在 DM 中为 Records Manager 创建数据源(数据源名称必须同在第一步中使用 Engine Configuration Tool 创建的数据源名称相同), 在这里我们使用 irmdb 。

首先创建“ JAAS - J2C 认证数据”,点击 “安全管理、应用程序和基础结构 > JAAS - J2C 认证数据” -> 新建。


图 11. 为 irmdb 数据源配置 J2C
 图 11. 为 irmdb 数据源配置 J2C

此处用户标识为创建 IRM database 是的用户名。

在创建数据源之前,需要在 DM 中分别给各个节点指定变量:DB2UNIVERSAL_JDBC_DRIVER_PATH.


图 12. 为 IRMServer1 设置 JDBC 驱动路径
 图 12. 为 IRMServer1 设置 JDBC 驱动路径

图 13. 为 IRMServer1 设置 JDBC 驱动路径
 图 13. 为 IRMServer1 设置 JDBC 驱动路径

选择作用域为:IRMCLUSTER,按照下面的步骤创建数据源 irmdb 和 irmdbLLT 。


图 14. 创建 irmdb 数据源 ( 步骤 1)
 图 14. 创建 irmdb 数据源 ( 步骤 1)

图 15. 创建 irmdb 数据源 ( 步骤 2)
 图 15. 创建 irmdb 数据源 ( 步骤 2)

图 16. 创建 irmdb 数据源 ( 步骤 3)
 图 16. 创建 irmdb 数据源 ( 步骤 3)

图 17. 创建 irmdb 数据源 ( 步骤 4)
 图 17. 创建 irmdb 数据源 ( 步骤 4)

接下来在 DM 中创建 Records Manager 批处理操作所需要的 IRMBus 和 JMS 。

在创建 IRMBus 的时候,我们需要为消息选择存储器的类型以获取消息状态的持久性,在这里我们选择数据库作为消息存储器,所以我们首先在 irmdb 的同一台服务器上来创建一个 IRMBUSDB 数据库,这个数据库需要使用与 irmdb 同样的 schema 名称和用户,然后在 DM 中建立一个数据源 irmbus. 步骤如下:

进入 安全管理、应用程序和基础结构 > JAAS - J2C 认证数据,新建。


图 18. 为 IRMBus 创建数据源(步骤 1)
 图 18. 为 IRMBus 创建数据源(步骤 1)

进入 资源 -> 数据源,在作用域:IRMCLUSTER 下新建。


图 19. 为 IRMBus 创建数据源(步骤 2)
 图 19. 为 IRMBus 创建数据源(步骤 2)

图 20. 为 IRMBus 创建数据源(步骤 3)
 图 20. 为 IRMBus 创建数据源(步骤 3)

图 21. 为 IRMBus 创建数据源(步骤 4)
 图 21. 为 IRMBus 创建数据源(步骤 4)

最后单击下一步,完成。

接下来创建 IRMBus,单击下一步,最后按默认选项完成。然后为该 IRMBus 添加总线成员。进入,总线 > IRMBus > 总线成员,选择“添加”。


图 22. 创建 IRMBus(步骤 1)
 图 22. 创建 IRMBus(步骤 1)

图 23. 创建 IRMBus(步骤 2)
 图 23. 创建 IRMBus(步骤 2)

图 24. 创建 IRMBus(步骤 3)
 图 24. 创建 IRMBus(步骤 3)

单击下一步,最后完成。

然后需要为该 IRMBus 服务总线添加以下目标。

其中包括 4 个队列类型(IRMCancelQueue, IRMNotificationQueue, IRMResultQueue, IRMTaskQueue)和 1 一个主题空间类型(IRMCacheTopic)。


图 25.IRMBus 的队列和主题空间成员
 图 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 上创建队列
 图 26: 在 JMS 上创建队列

CreateQueueTopicJMS1.jpg

JMS 提供程序 > Default messaging provider > 主题 ( 作用域:IRMCLUSTER)

IRMCacheTopic 主题:

  • 名称 = IRMCacheTopic
  • JNDI 名称 = recordmanager/jms/CacheTopic
  • 主题名 = IRMCacheTopic
  • 总线名 = IRMBus
  • 主题空间 = IRMCacheTopic

其他属性保持默认。创建完后如下:


图 27. 在 JMS 上创建主题
 图 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 应用
 图 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 的系统测试和性能测试工作。




对本文的评价








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