高可用性组策略选择进程
每个高可用性组都具有唯一的组名,一个组名由一组“名称/值”对组成。每个策略定义都包含一种称为匹配条件的属性,一个匹配条件也是由一组“名称/值”对组成。要确定高可用性组的策略,应将组名与所有相关联的核心组策略的匹配条件进行比较。将对高可用性组指定与组名最匹配的策略:
注: 本主题引用了一个或多个应用程序服务器日志文件。作为另一种建议采用的方法,您可以在分布式系统和 IBM® i 系统上配置服务器以使用高性能可扩展日志记录 (HPEL) 记录和跟踪基础结构,而不使用 SystemOut.log、SystemErr.log、trace.log 和 activity.log 文件。您还可以将 HPEL 与本机 z/OS® 日志记录设施结合使用。如果要使用 HPEL,那么可从服务器概要文件
bin 目录使用 LogViewer 命令行工具来访问所有日志和跟踪信息。有关使用
HPEL 的更多信息,请参阅有关使用 HPEL 对应用程序进行故障诊断的信息。
为高可用性组选择策略时,高可用性管理器将执行以下操作:
- 查找适合于管理该高可用性组的一组策略。合适策略的匹配条件中的所有“名称/值”对必须包含在高可用性组的名称中,该策略才是合适的。
- 从合适策略的列表中选择具有最匹配的“名称/值”对的策略,并使用该策略来管理该高可用性组。
任何组件都可以创建一个高可用性组供该组件使用。但是,组件代码必须指定用于高可用性组名的“名称/值”对。产品管理员可以控制用来组成策略匹配条件的“名称/值”对,从而控制由哪个策略来管理特定的高可用性组。
本产品包含两个预定义的策略。下列示例说明了用于这些策略的匹配机制。
集群 TM 策略
当为高可用性配置了组件时,事务管理器组件使用“集群 TM 策略”这一策略。以下描述说明了在这些条件下为事务管理器高可用性组选择此策略的原因:
- 集群成员进程(例如,ServerA)已启动。
- 事务管理器组件代码将高可用性管理器与指定的高可用性组连接起来:
GN_PS=testCell\testNode\ServerA,IBM_hc=MyCluster,type=WAS_TRANSACTIONS
- ServerA 被定义为对其定义了下列策略的 DefaultCoreGroup 核心组的一个成员:
- 集群 TM 策略,它具有匹配条件 type=WAS_TRANSACTIONS。
- 缺省 SIBus 策略,它具有匹配条件 type=WSAF_SIB。
- 高可用性管理器将组名与两个可用策略的匹配条件进行比较。因为匹配条件并不是高可用性组名的正确子集,所以高可用性管理器排除了“缺省 SIBus 策略”。由于下列原因,高可用性管理器确定“集群 TM 策略”是最接近的匹配:
- 该策略的匹配条件包括“名称/值”对 type=WAS_TRANSACTIONS,而在高可用性组名中也指定了此类型。因此,该匹配条件是高可用性组名的正确子集。
- 该策略的匹配条件比“缺省 SIBus 策略”的匹配条件具有更多匹配项(一个),而“缺省 SIBus 策略”因没有任何匹配项已被排除。
管理员 TM 策略
此示例以先前一个示例为基础,且说明了管理员可以如何定义新策略来管理事务管理器高可用性组。在此示例中,使用了前一示例中描述的相同高可用性组名和缺省策略。而在此示例中,管理员将在 DefaultCoreGroup 配置中创建一个称为“管理员 TM 策略”的新策略。高可用性管理器要选择此新策略,该策略必须是合适的,并且比其他任何策略包含更多匹配项。
以下描述说明了在这些条件下为事务管理器高可用性组选择“管理员 TM 策略”这一策略的原因:
- 集群成员进程 ServerA 已启动。
- 事务管理器组件代码将高可用性管理器与指定的高可用性组连接起来:
GN_PS=testCell\testNode\ServerA,IBM_hc=MyCluster,type=WAS_TRANSACTIONS
- ServerA 被定义为对其定义了下列策略的 DefaultCoreGroup 核心组的一个成员:
- 集群 TM 策略,它具有匹配条件 type=WAS_TRANSACTIONS。
- 缺省 SIBus 策略,它具有匹配条件 type=WSAF_SIB。
- 管理员 TM 策略,它具有匹配条件 IBM_hc=MyCluster,type=WAS_TRANSACTIONS。
- 高可用性管理器将组名与可用策略的匹配条件进行比较。因为匹配条件并不是高可用性组名的正确子集,所以高可用性管理器排除了“缺省 SIBus 策略”。它确定“集群 TM 策略”和“管理员 TM 策略”都是合适的策略,这是因为它们的匹配条件都是高可用性组名的正确子集:
- “集群 TM 策略”包含“名称/值”对 type=WAS_TRANSACTIONS,在高可用性组名中也指定了该“名称/值”对。
- “管理员 TM 策略”包含“名称/值”对 IBM_hc=MyCluster 和 type=WAS_TRANSACTIONS,在高可用性组名中也指定了这两个“名称/值”对。
因为“管理员 TM 策略”有两个匹配对 IBM_hc=MyCluster 和 type=WAS_TRANSACTIONS,而“集群 TM 策略”只有一个匹配对 type=WAS_TRANSACTIONS,所以高可用性管理器会将“管理员 TM 策略”与事务管理器高可用性组关联起来。
模糊匹配
不要对同一核心组中的多个策略配置完全相同的匹配条件。配置完全相同的匹配条件会导致与相关联的高可用性组的模糊匹配。因为高可用性组只能与一个策略相关联,所以,如果先前描述的匹配机制不产生单个策略匹配,那么高可用性管理器会使高可用性组处于错误状态,并且不会使任何组成员处于活动状态。根据问题的性质不同,高可用性管理器可能会将下面的其中一条错误消息写入 SystemOut.log 文件:
HMGR0301W: 找不到名为 {0} 的组的策略
HMGR0302W: 多个策略与名为 {0} 的组相匹配,相匹配的策略是 {1}
可以使用管理控制台来查看与高可用性组相关联的策略以及该组中的成员的当前状态。