使用 WebSphere 中间件构建高可用性数据库环境,第 3 部分
2009-11-03 00:00:00 来源:WEB开发网
清单 2jdbc:oracle:thin:@(DESCRIPTION=
(FAILOVER=on)
(LOAD_BALANCE=off)
(ADDRESS=(PROTOCOL=TCP)(HOST=rac-node1)(PORT=1521))
(ADDRESS=(PROTOCOL=TCP)(HOST=rac-node2)(PORT=1521))
(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=<yourOraservice1toBeUsedForCluster1>))) (2)
and
jdbc:oracle:thin:@(DESCRIPTION=
(FAILOVER=on)
(LOAD_BALANCE=off)
(ADDRESS=(PROTOCOL=TCP)(HOST=rac-node2)(PORT=1521))
(ADDRESS=(PROTOCOL=TCP)(HOST=rac-node1)(PORT=1521))
(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=<yourOraservice2toBeUsedForCluster2>))) (3)
对于胖驱动程序而言,URL 会非常类似:jdbc:oracle:oci 代替上述 URL 中的 jdbc:oracle:thin。
当使用 Oracle 服务时,必须对 Oracle 服务定义本身指定负载平衡和故障转移,而不是在 URL 上指定。在使用 Oracle 服务时在 URL 中指定负载平衡或故障转移不会影响 RAC 节点的负载平衡或故障转移。但它会影响 Oracle 侦听器的负载平衡和故障转移。
在图 4 中,整个负载平衡都是在 WebSphere Application Server 级别通过路由器进行的。相关的 WebSphere 路由器维护事务关联,并且属于某项事务的所有请求都将被路由到同一 WebSphere 集群成员。由于 Oracle JDBC 驱动程序不提供任何负载平衡,所有这些入站请求都将打开并使用来自同一 RAC 节点的连接。这可防止任何 2PC 分布式事务跨多个 RAC 节点分布,因而可避免出现事务恢复问题。
由于一般的路由器配置会尝试跨所有的 WebSphere Application Server 集群成员统一分配请求,所以,如果未将每个 RAC 节点都配置为某个集群成员的主节点,则该数据库负载还会跨所有的 RAC 节点分发。如果适用,通过调整相关 WebSphere 路由器的静态权重(HTTP 和统一集群框架路由器的集群成员权重),WebSphere 系统管理员将能够在 RAC 节点之间的数据库负载分发中大致实现所期望的偏斜量。
在关闭负载平衡的情况下,有几点需要注意:
RAC 主节点和辅助节点将在数据源 URL 中按位置指定。
可能会有多个辅助 RAC 节点。但是,只有一个 RAC 节点,即 URL 中 RAC 节点列表中第一个起作用的节点(如 (2))将用来获取物理连接。该节点可称为主要辅助节点。
跨所有 RAC 节点实现统一数据库负载平衡的简单方法是满足以下两个条件:
需要对适用的路由器进行相应配置,使所有 WebSphere 集群成员都可接收到相同比例的通信。
应将每个 RAC 节点配置为可作为主节点,并可作为相同数量的 WebSphere 集群成员的主要辅助节点。在图 4 中,两个 RAC 节点都被配置为一个 WebSphere 集群成员的主节点和主要辅助节点(rac-node1 是 cluster-member1 的主节点,是 cluster-member2 的主要辅助节点;rac-node2 是 cluster-member2 的主节点,是 cluster-member1 的主要辅助节点)。
在 RAC 节点数量是 WebSphere 集群成员数的约数的情况下,上述条件很容易满足。
结束语
通过使用本文中介绍的“让 WebSphere Application Server 执行负载平衡”策略,可以使 WebSphere 集群环境更好地应对与事务恢复相关的问题。本文中演示的 URL 还可用于 WebSphere Process Server 环境,以便在出现 RAC 节点故障时自动而顺利地恢复 2PC 分布式事务。
主要-辅助 RAC 节点配置同样适用于独立的 WebSphere Application Server。但是,对于独立服务器,尽管 RAC 能够在连接级别提供故障转移,但却不能进行负载平衡。
更多精彩
赞助商链接