在 WebSphere Process Server 中使用 Oracle Real Application Cluster (RAC)

来源:互联网 发布:java引用js变量 编辑:程序博客网 时间:2024/04/30 03:19

引言

IBM WebSphere Process Server 要求运行多个数据库,Oracle 是许多流行数据库之一,该数据库有时在 WebSphere Process Server 安装中使用。尽管对 Oracle Real Application Cluster (RAC) 的共享一切的基本体系结构有较大的争论,但使用 RAC 可以为 Oracle 数据库获得高可用性、可靠性、工作负载管理和可伸缩性。

尽管有些人可能有这样的错误认识,认为 Oracle RAC 不能用于可在 WebSphere Process Server 中使用的数据库,甚至不能用于可在最新版本 6.0.2 中使用的数据库,但事实情况是,目前在 WebSphere Process Server 版本中使用 Oracle RAC 相当简单,只需稍微更改一些相应的数据源配置即可。本文向您介绍一种简单的方法,通过执行一些必要的配置更改,便可成功对 WebSphere Process Server 数据库使用 Oracle RAC。


WebSphere Process Server 数据库

根据您的安装情况,WebSphere Process Server 可能需要使用以下四个数据库(在本文中的相应地方,术语数据库 有时是指数据库模式):

  • 公共存储库数据库:它是整个计算单元范围内的一种数据库,缺省名称是 WPRCSDB。通常情况下,首先会创建一个空数据库,然后 WebSphere Process Server 向导将创建所有必要的表。对于 WebSphere Process Server 的网络部署配置,可以在创建部署管理器概要时创建数据库中的表。从 WebSphere Process Server V6.0.2.x 开始,可以推迟表的创建,原因是部署管理器概要的创建过程不需要有此数据库。

  • 业务流程数据库:是一种特定于部署目标的数据库,缺省名称是 BPEDB,其中包含与业务流程编排相关的表。数据库中的表通常是通过执行提供的 DDL 脚本创建的。

  • 公共事件基础设施数据库:如果公共事件基础设施(Common Event Infrastructure,CEI)在 WebSphere Process Server 安装中使用,那么这里还需要一个特定于部署目标的数据库。CEI 数据库是通过执行生成的 DDL 脚本创建的,其缺省名称是“event”。

  • 消息传递引擎数据库:在典型的 WebSphere Process Server 安装中,可有四个消息传递引擎,每个消息传递引擎都需要有一个自己的数据库。按照最佳实践,消息传递引擎的数据库是通过执行生成的 DDL 脚本创建的。


Oracle RAC 和数据源

在使用 WebSphere 产品创建 Oracle JDBC 数据源时将指定一个 Oracle URL 和驱动程序类型,其中包含 Oracle 数据库服务器主机名、端口号和 Oracle 数据库名。典型的 Oracle URL 可能类似于以下所示:

jdbc:oracle:thin:@<hostname>:<port number>:<DBName>

配置 Oracle RAC 不是一项简单的任务。Oracle 数据库管理员 (DBA) 在创建和配置 RAC 时需要考虑与故障转移、负载平衡以及其他事项相关的诸多因素。不过,对于 WebSphere Application Server 运行时,Oracle RAC 本质上就是使用合适的 JDBC 驱动程序访问的另一数据库。

可以通过多种方法在 WebSphere 产品中配置 RAC 环境。其中一种方法是让 JDBC 驱动程序平衡数据库连接请求(因此,也称为工作负载平衡)。另一可靠的备选方法是让 WebSphere Workload Management (WLM) 组件执行连接平衡;这可以通过将每个 WebSphere 集群成员配置为指向一个(而且仅指向一个)Oracle 数据库服务器来完成。本文使用的是前一个策略。在此方法中,Oracle JDBC 驱动程序将识别基础的 RAC 并与之交互,并从适当的数据库服务器获得连接,因此可以按 DBA 的配置维持故障转移和负载平衡特征。

不过,要让 JDBC 驱动程序与 RAC 一起工作,在定义 WebSphere JBDC 数据源时需要指定较为复杂的 Oracle URL。下面是 RAC 的一个示例 URL,其中包含两个 Oracle 数据库服务器,目的是在它们之前平衡连接负载:

jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=   (ADDRESS=(PROTOCOL=TCP)(HOST= myoraclehost1.ibm.com)(PORT=1521))   (ADDRESS=(PROTOCOL=TCP)(HOST= myoraclehost2.ibm.com)(PORT=1521))   (FAILOVER=on)(LOAD_BALANCE=on)    (CONNECT_DATA=(SERVER=DEDICATED)   (SERVICE_NAME=dbservice)))

而且,在 WebSphere 产品中使用 Oracle RAC 这一方法中,在定义相关的 Oracle JDBC 数据源时,您只需将 RAC-ified URL 指定为 Oracle URL。


WebSphere Process Server 中的 Oracle

这些数据源由内部 WebSphere Process Server 应用程序使用,并且它们的名称和范围可以根据不同的版本而改变。

对 WebSphere Process Server 的所有四个数据库使用 Oracle 数据库相当简单(请参阅参考资料)。WebSphere Process Server 基础结构通过数据源访问这些数据库。在 WebSphere Process Server 的四类基本数据源中,消息传递引擎数据源应手动创建,而其他三种类型一般是直接通过向导或脚本创建的:

  • 公共存储库数据源:在网络部署环境中,此数据库中的表可以在创建部署管理器概要的过程中创建。对于原来已经存在的数据库,您需要在部署管理器概要创建向导中指定这些属性(图 1 和 2):



    图 1. 配置 WebSphere Process Server 数据库
    图 1. 配置 WebSphere Process Server 数据库



    图 2. Oracle 数据库属性
    图 2. Oracle 数据库属性

    通过这些指定的值,部署管理器概要创建向导将使用 jndi 名称 jdbc/WPSDB 创建计算单元范围的 WebSphere Process Server 数据源(图 3)。



    图 3. 创建的数据源
    图 3. 创建的数据源

  • 业务流程执行数据源:在业务流程容器安装向导的第 1 步中,将这些参数指定为自定义属性 (Custom Properties)(图 4):



    图 4. 配置业务流程容器
    图 4. 配置业务流程容器

    databaseName=<DBName>serverName=<Fully qualified Oracle server name or IP address>portNumber=<Oracle port number>dataSourceName=URL=jdbc:oracle:thin:@<hostname>:<port number>:<DBName>

    在 WebSphere Process Server 集群中安装业务流程容器的过程中,该向导将使用 jdbc/BPEDB_<集群名称> 作为 JNDI 名称创建 BPEDataSourceOracle_<集群名称> 数据源。在 6.0.1.x 版本中,将在所有计算单元范围内创建此数据源;在 6.0.2.0 版本中,将在集群范围内定义数据源。

  • CEI 数据源:可以通过两个步骤创建 CEI 数据源。首先,必须在 OracleResponseFile.txt 文件中指定 Oracle 数据库名称、JDBC 驱动程序位置、驱动程序类型、数据库服务器主机名和 Oracle 端口号属性。该文件然后用作创建所需脚本的元脚本参数,并使用该脚本创建和配置数据源。

    在执行 J2EE 构件创建脚本之后,将会配置两个 Oracle 数据源:event (jdbc/cei) 和 event_catalog (jdbc/eventcatalog)(图 5)。



    图 5. 创建 JDBC 数据源
    图 5. 创建 JDBC 数据源

    两个 CEI 数据源的范围可以通过在 OracleResponseFile.txt 文件中指定 SCOPE 属性进行控制。

WebSphere Process Server 中的 RAC

上面的三个数据源适用于单个(传统 Oracle)数据库服务器,而前面所显示的示例规范举出的是一个更为典型的 RAC 环境,该环境包含多个数据库服务器。若要在现有 WebSphere Process Server 安装中使用 RAC,请对 Oracle DBA 应用以下简单的策略:

  1. 配置一个非 RAC Oracle 数据源,即使 Oracle 环境已经是 RAC 环境。在配置 Oracle URL 时,对于所有相关的 WebSphere Process Server 向导和脚本,使用 Oracle 服务器之一作为 URL 中的主机名。(在生成模式和表时可能必须提供单一的 Oracle 服务器。)

  2. 将 WebSphere Process Server 向导和脚本创建的所有数据源的 Oracle URL 更改为特定于该环境的实际 RAC URL。例如,假设您使用 Deployment Manager Profile 创建向导和以下值创建一个数据源:

    • 数据库驱动程序: Oracle Thin
    • 名为 WPRCSDB 的预创建 Oracle 数据库模式
    • 数据库服务器名称: myoraclehost1.ibm.com
    • 端口: 1521

    在创建部署管理器概要后,将创建一个访问 WPRCSDB 的数据源。数据源的属性看上去类似于图 6,其中您可以看到 Oracle URL 为:

    jdbc:oracle:thin:@myoraclehost1.ibm.com:1521:WPRCSDB



    图 6. 创建的数据源
    图 6. 创建的数据源

    要使此 WebSphere Process Server 数据源适用于 RAC,您需要做的就是将向导创建的这一特定于单一服务器的传统 Oracle 数据源属性 URL 替换为 RAC URL,如图 7 所示。(RAC URL 应由 Oracle DBA 提供,并且应与如上所示的示例 URL 类似。)



    图 7. 使用 RAC URL 替换单一服务器 URL
    图 7. 使用 RAC URL 替换单一服务器 URL

    还应对使用 WebSphere Process Server 向导和脚本创建的所有其他数据源执行相同的 URL 替换操作。

  3. 重新启动部署管理器和任何运行的 WebSphere Process Server 实例。

在管理控制台中验证修改的数据源与测试连接工具的连接性。尽管本文中的 URL 针对的是 Oracle 瘦驱动程序,但 Oracle OCI 驱动程序还可以用于 Oracle URL。这一 URL 替换策略也适用于 Oracle OCI 驱动程序。

还有需要注意一点:在手动创建消息传递引擎数据源时,您可以为 Oracle 数据源属性直接指定 RAC URL,并可以完全避免“传统 Oracle 到 Oracle RAC URL”的替换步骤。


结束语

尽管 Oracle RAC 在较新的 WebSphere Process Server V6.0.2.x 和更高版本中是正式支持的产品,但您可以使用本文中描述的 URL 替换策略为 Oracle RAC 环境配置任何 WebSphere Process Server 安装。