资源工作负载路由
通过本主题可了解如何在环境中启用资源路由。
![[z/OS]](../images/ngzos.gif)
- 配置备用资源。
- 配置操作通知。
![[AIX Solaris HP-UX Linux Windows]](../images/dist.gif)
在分布式系统上,您只能通过配置备用资源来启用资源路由。
配置备用资源
达到所指定的故障阈值或者缺省故障阈值时,数据源和连接工厂可以自动进行故障转移和故障恢复。进行故障转移时,应用程序会从使用主要资源切换为使用备用资源。当应用程序从使用备用资源切换回使用主要资源时,就会进行故障恢复。
备用资源的创建方式与其他连接工厂或数据源的创建方式相同。备用资源配置应镜像主要资源配置。例如,备用资源安全性配置和主要资源配置(对于应用程序和资源)应互相镜像,以便应用程序和数据库可以访问必需的数据。创建备用资源之后,您可以更改备用资源后端配置所需要的数据库值。如果备用资源不兼容,那么故障转移可能将失败。如果资源不兼容,那么可能会发生下列错误:表或字段不存在、期望的记录不存在以及存在意外的资源错误。作为一个测试选项,在将备用资源配置为主要数据源之前,可以通过将应用程序中的 JNDI 名称从主要 JNDI 名称更改为备用 JNDI 名称来测试该应用程序。
使用主要资源时,备用资源会暂停。在备用资源暂停之前,备用资源可在使用主要资源之前可用。除非在使用主要资源之前由于特殊原因需要访问备用资源,否则建议您不要使用未暂停的备用资源。测试应用程序是否兼容就是这种特殊原因的一个示例。
备用资源无法用作主要资源。将故障转移功能部件与具有也支持故障转移的后端的非关系资源适配器配合使用时,您必须验证未对这些后端配置故障转移。故障转移适用于具有实现 testConnection 方法的 ManagedConnection 对象的非关系资源适配器。在与当前可用的资源重新建立连接之前,使用 testConnection 方法对备用资源和主要资源执行 ping 操作以了解是否成功。如果资源适配器未实现 testConnection 方法,或者 testConnection 抛出了 javax.resource.NotSupportedException 错误,那么表明已禁用故障转移功能部件。
对于不满足 testConnection 的需求的资源适配器,可以使用部分故障转移。当主要资源可用时,您必须使用 Mbean 手动故障恢复到主要资源。可以通过将 enablePartialResourceAdapterFailoverSupport 属性设置为 true 来启用部分故障转移。
在启用故障转移支持之前,鼓励您使用系统环境和资源来测试此功能部件是否合适。
有关使用优化本地适配器的更多信息,请参阅有关企业优化本地适配器高可用性支持的主题。
Mbean 操作
- failOverToAlternateResource
值:none、hold 或 automated;缺省值为 hold,不会自动进行故障恢复。
描述:手动故障转移到备用资源。对主要资源发出此操作。
- failBackToPrimaryResource
值:none、hold 或 automated;缺省值为 automated,将自动进行故障转移。
描述:手动故障恢复到主要资源。对主要资源发出此操作。
Mbean 属性特性
- currentActivePool
值:所返回的包含 JNDI 名称的字符串值。
描述:会返回主要 JNDI 名称或者备用 JNDI 名称,视当前所使用的 JNDI 名称而定。
- populateAlternateResource
值:布尔值
描述:False - 禁用填充备用资源。True - 启用填充备用资源。对备用资源发出此操作。
- resourceFailOver
值:布尔值
描述:False - 禁用对资源进行故障转移。True - 启用对资源进行故障转移。对主要资源发出此操作。
- resourceFailBack
值:布尔值
描述:False - 禁用对资源进行故障恢复。True - 启用对资源进行故障恢复。对主要资源发出此操作。
![[z/OS]](../images/ngzos.gif)
使用 modify 命令对配置了备用资源的资源手动进行资源路由
在 z/OS® 平台上,您可以通过使用 modify 命令来使用某些 MBean 功能。modify 命令用来手动禁用资源故障转移支持、启用资源故障转移支持、故障转移到所配置的备用资源以及故障恢复到所配置的主要资源。请参阅 Modify 命令主题以了解有关如何发出此命令的更多详细信息以及了解故障转移参数。
![[z/OS]](../images/ngzos.gif)
配置操作通知
如果为特定资源配置了操作通知,并且请求该资源在超过所指定的阈值或缺省阈值时就会失败,那么 WebSphere® Application Server for z/OS 运行时将接收通知以执行该特定操作。操作是可配置的值。在本主题稍后的“定制属性”一节中的 failureNotificationActionCode 属性内容中定义了操作码。
- 操作码 1
此操作码会向控制器中的硬拷贝日志记录流发出 BBOJ0130I 和 BBOJ0131I 消息。当资源不可用时,将发出 BBOJ0130I 消息;当资源重新启动之后变得可用时,将发出 BBOJ0131I 消息。WebSphere Application Server 不会执行任何进一步的自动操作。
操作码 1 旨在向 WebSphere 管理员提供通知,以便可以在应用程序服务器外部配置手动迁移操作或自动迁移操作。BBOJ0130I 包含以下信息:- 用于标识已失败的资源的 JNDI 名称。
- 在其中使用了已失败的资源的服务器的名称。
- 已执行的操作。例如:NONE 和 PAUSING LISTENERS
BBOJ0131I 包含以下信息:- 用于标识已重新启动的资源的 JNDI 名称。
- 在其中资源已重新启动的服务器的名称。
- 已执行的操作。例如:NONE 和 RESUMING LISTENERS
- 执行该操作的原因:1: 正常的服务方区域可用性通知。2: 资源可用性未知。
- 操作码 2
此操作码将暂停然后恢复为其配置此操作的资源所在服务器上的侦听器。当认为该资源不可用时,就会暂停服务器侦听器。当认为该资源可用时,就会恢复服务器侦听器。当与支持高可用性的前端路由器(例如,代理服务器或者随需应变路由器)组合使用时,此服务器上的工作将传递到集群中的其他服务器。在执行此操作的过程中,会向控制器区域中的硬拷贝发出两条参考消息。当资源不可用时,将发出 BBOJ0130I 消息;当资源重新启动之后变得可用时,将发出 BBOJ0131I 消息。
- 操作码 3
对于使用为其配置此操作的此资源的本地安装模块,此操作码将停止然后启动所有应用程序。当认为应用程序使用的资源不可用时,这些应用程序就已停止。当认为应用程序使用的资源可用时,这些应用程序就已启动。
在执行此操作的过程中,会向控制器区域中的硬拷贝发出两条参考消息。当资源不可用时,将发出 BBOJ0130I 消息;当资源重新启动之后变得可用时,将发出 BBOJ0131I 消息。注意: 为其定义了资源引用的应用程序只有在遇到了资源故障的服务器上才会停止。因此,如果应用程序安装在集群中,那么该应用程序在该集群中的其他服务器上仍然保持已启动状态。消息 BBOJ0130I 和 BBOJ0131I 中包含以下信息:
BBOJ0130I:- 用于标识已失败的资源的 JNDI 名称。
- 在其中使用了已失败的资源的服务器的名称。
- 已执行的操作;例如:NONE, "PAUSING LISTENERS", "STOPPING APPLICATIONS THAT USE THIS RESOURCE"
- 用于标识已重新启动的资源的 JNDI 名称。
- 在其中资源已重新启动的服务器的名称。
- 已执行的操作;例如:NONE, "RESUMING LISTENERS", "STARTING APPLICATIONS THAT USE THIS RESOURCE"
- 执行该操作的原因:1: 正常的服务方区域可用性通知。2: 资源可用性未知。
定制属性
此功能部件的所有属性必须作为特定数据源或连接工厂的连接池的新定制属性来创建。在管理控制台中,浏览到要为其启用通知的数据源或连接工厂。单击连接池属性链接。在连接池属性面板上,单击连接池定制属性链接。将显示资源连接池的定制属性面板。单击新建以按如下所述创建定制属性:
failureNotificationActionCode
值:{1,2,3}
描述:failureNotificationActionCode 属性用来启用通知功能。如果未将此属性设置为所指定的下列其中一个有效整数值,那么已禁用通知功能:- 1 = 会将 BBOJ0130I 消息输出到硬拷贝,以指出此资源不可用。当此资源变得可用时,会将 BBOJ0131I 消息输出到硬拷贝,以指出此资源再次可用。
- 2 = 向服务器发出了“暂停侦听器”命令,从而阻止服务器接收新的入局工作。也会发出 BBOJ0130I 消息以描述所执行的操作。当此资源可用时,会发出“恢复侦听器”命令以允许服务器再次接收入局工作。会发出 BBOJ0131I 消息以描述所执行的操作。
- 3 = 具有使用此资源的本地安装模块的所有应用程序在此服务器上都已停止。也会发出 BBOJ0130I 消息以描述所执行的操作。当此资源变得可用时,这些应用程序已启动。也会发出 BBOJ0131I 消息以描述所执行的操作。
- failureThreshold
值:必须是一个大于 0 的整数。
描述:如果 failureNotificationActionCode 或 alternateResourceJNDIName 属性设置为有效值,那么 failureThreshold 属性是只读属性。如果未设置 failureThreshold 属性或者此属性设置为一个无效数字,那么将使用缺省值 5。为 failureThreshold 所指定的整数值是特定资源必须连续产生的资源异常数,达到此数目之后才会发送通知或者进行故障转移。
下面是一个说明此值的工作方式的示例:如果数据源 B 的 failureThreshold 属性设置为 5,那么数据源 B 在尝试建立连接时必须连续产生 5 个资源异常(在发生这些故障期间,不能存在成功建立连接的情况),然后才会发送通知或者资源进行故障转移。连续产生 5 个资源异常之后,将尝试发送通知或者进行故障转移。但是,在多线程环境中,达到故障阈值之后,如果发生另外的资源异常,可能就会对通知或故障转移计时。注意: 资源之间不共享资源异常计数器。必须连续发生资源异常才能达到故障阈值。- alternateResourceJNDIName
值:包含直接 JNDI 名称的字符串值。
描述:备用连接工厂或者数据源资源应与主要资源一样。提供备用资源的 JNDI 名称以启用故障转移功能。
高级故障转移属性
- resourceAvailabilityTestRetryInterval
值:整数值,缺省值为 10。
描述:缺省情况下,测试连接时间间隔为 10 秒。每隔 10 秒钟,测试连接线程就会尝试测试主要资源。根据系统资源不同,可以将此值设置为 1 秒到 MAXINIT 秒。
- enablePartialResourceAdapterFailoverSupport
值:布尔值,缺省值为 false。
描述:如果此值为 true,那么会故障转移到备用资源,但是需要手动执行故障恢复到主要资源。如果所使用的资源适配器不满足连接故障转移的需求(例如,它未实现 testConnection,或者它抛出了“不受支持”异常),那么可以设置此属性。
- disableResourceFailOver
值:布尔值,缺省值为 false。
描述:如果此值为 true,那么不会自动进行故障转移。
- disableResourceFailBack
值:布尔值,缺省值为 false。
描述:如果此值为 true,那么不会自动进行故障恢复。
- populateAlternateResource
值:布尔值,缺省值为 false。
描述:如果此值为 true,那么会为备用资源填充连接,以达到最大连接数。进行每次尝试以使备用资源保持最大连接数。如果数据库对于备用资源停止,那么会移除旧的连接,当数据库可用时,填充线程将重新填充该备用资源。可以使用 MBean 操作 disablePopulateAlternateResource 和 enablePopulateAlternateResource 来动态启用和禁用填充备用资源。注意: 在启用了填充备用资源的情况下,在故障转移期间,您可能会发现性能有所提高,但是,保持填充备用资源所需要的成本也较高。大部分成本用于保持连接数是一个数据源通常需要的连接数的两倍。因为连接是大对象,所以保持连接会在服务器上使用更多内存资源,并且在数据库上会使用额外的资源。