リソース・ワークロード・ルーティング
このトピックでは、ご使用の環境でリソース・ルーティングを有効にする方法を説明します。
![[z/OS]](../images/ngzos.gif)
- 代替リソースを構成する。
- アクション通知を構成する。
![[AIX Solaris HP-UX Linux Windows]](../images/dist.gif)
分散システムでは、リソース・ルーティングは、代替リソースを構成することによってのみ使用できます。
代替リソースの構成
データ・ソースおよび接続ファクトリーは、指定済みまたはデフォルトの障害しきい値の超過が発生すると、自動的にフェイルオーバーおよびフェイルバックするようになっています。フェイルオーバーが発生すると、アプリケーションは 1 次リソースの使用を代替リソースの使用に切り替えます。アプリケーションが代替リソースを 1 次リソースに再び切り替えると、フェイルバックが発生します。
代替リソースは、他の接続ファクトリーまたはデータ・ソースと同じ方法で作成します。代替リソース構成は、1 次リソース構成をミラーリングしています。例えば、代替リソースのセキュリティー構成と 1 次リソース構成は、 アプリケーションおよびデータベースが必要なデータにアクセスできるように、アプリケーションとリソースを互いにミラーリングしています。 代替リソースを作成した後は、代替リソースのバックエンド構成に必要なデータベース値を変更できます。代替リソースに互換性がない場合、フェイルオーバーが失敗する可能性があります。 リソースに互換性がない場合、表またはフィールドが存在しない、あるはずのレコードが存在しない、予期しないリソース・エラーが存在する、などのエラーが発生する場合があります。テスト・オプションとして、代替リソースを 1 次データ・ソースに対して構成する前に、アプリケーションの JNDI 名を、1 次 JNDI 名から代替 JNDI 名に変更することで、アプリケーションをテストできます。
1 次リソースが使用されているとき、代替リソースは一時停止しています。代替リソースが一時停止する前に、1 次リソースが使用されるまで代替リソースは使用可能な状態にあります。一時停止する前に代替リソースを使用することは、1 次リソースの前に代替リソースにアクセスする特別な理由がない限り、推奨されません。特別な理由の例として、アプリケーションに互換性があるかをテストする場合が挙げられます。
代替リソースは、1 次リソースとして使用することはできません。フェイルオーバーの機能を、同じくフェイルオーバーをサポートするバックエンドを持つ非リレーショナルのリソース・アダプターを使用して使用する場合、フェイルオーバーがこれらのバックエンドに対して構成されていないことを確認する必要があります。フェイルオーバーは、testConnection メソッドを実装する ManagedConnection オブジェクトが含まれた、非リレーショナルのリソース・アダプターを使用することで機能します。testConnection メソッドは、現在使用可能なリソースへの接続を再び確立する前に、代替および 1 次リソースを ping して接続が成功するか確認するために使用します。リソース・アダプターに testConnection メソッドが実装されていない、または testConnection が javax.resource.NotSupportedException エラーをスローした場合、フェイルオーバー機能は使用不可になります。
testConnection の要件に適合しないリソース・アダプターに関しては、部分的フェイルオーバーを使用できます。1 次リソースが使用可能になったら、Mbean を使用して 1 次リソースに手動でフェイルバックする必要があります。部分的フェイルオーバーは、プロパティー enablePartialResourceAdapterFailoverSupport を true に設定することで使用可能にできます。
この機能とご使用のシステム環境およびリソースとの適合性を、フェイルオーバーのサポートを使用可能にする前にテストすることが推奨されます。
最適化されたローカル・アダプターの使用について詳しくは、最適化されたローカル・アダプターの高可用性のサポートの有効化に関するトピックを参照してください。
MBean の操作
- failOverToAlternateResource
値: none、hold、または automated。デフォルトは、自動的にフェイルバックが行われない hold。
説明: 代替リソースへの手動フェイルオーバー。このアクションは、1 次リソース上で実行されます。
- failBackToPrimaryResource
値: none、hold、または automated。デフォルトは、自動的にフェイルオーバーが行われる automated。
説明: 1 次リソースへの手動フェイルバック。このアクションは、1 次リソース上で実行されます。
Mbean 属性プロパティー
- currentActivePool
値: JNDI 名を含む、戻されるストリング値
説明: 1 次または代替 JNDI 名が、現在どちらが使用されているかに応じて、戻されます。
- populateAlternateResource
値: boolean
説明: False - 代替リソースへのデータ取り込みを使用不可にします。True - 代替リソースへのデータ取り込みを使用可能にします。このアクションは、代替リソース上で実行されます。
- resourceFailOver
値: boolean
説明: False - リソースのフェイルオーバーを使用不可にします。True - リソースのフェイルオーバーを使用可能にします。 このアクションは、1 次リソース上で実行されます。
- resourceFailBack
値: boolean
説明: False - リソースのフェイルバックを使用不可にします。True - リソースのフェイルバックを使用可能にします。 このアクションは、1 次リソース上で実行されます。
![[z/OS]](../images/ngzos.gif)
代替リソースで構成されたリソースに関する、modify コマンドを使用した手動リソース・ルーティング
z/OS® プラットフォームでは、modify コマンドを使用して、Mbean の一部の機能を使用できます。 modify コマンドは、リソースのフェイルオーバー・サポートを手動で使用不可にするため、リソースのフェイルオーバー・サポートを使用可能にするため、構成済みの代替リソースにフェイルオーバーするため、また構成済みの 1 次リソースにフェイルバックするために使用します。コマンドの実行方法およびフェイルオーバーのパラメーターについて詳しくは、トピック『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
このアクション・コードは、このアクションが構成されたリソースがあるサーバーのリスナーを一時停止して再開します。サーバーのリスナーは、リソースが使用不可とみなされた場合、一時停止します。サーバーのリスナーは、リソースが使用可能とみなされた場合、再開します。プロキシー・サーバーやオンデマンド・ルーターなどの高可用性をサポートするフロントエンド・ルーターと組み合わせられると、このサーバーに関する作業はクラスター内の他のサーバーに転送されます。 このアクションの一部として、2 つの通知メッセージがコントローラー領域のハードコピーに対して発行されます。 BBOJ0130I メッセージはリソースが使用不可である場合、BBOJ0131I はリソースが再始動されて使用可能である場合に発行されます。
- アクション・コード 3
このアクション・コードは、このアクションの構成対象であるこのリソースを使用する、ローカルにインストールされたモジュールを含むすべてのアプリケーションを停止および開始します。これらのアプリケーションが使用するリソースが使用不可とみなされた場合、アプリケーションは停止されます。これらのアプリケーションが使用するリソースが使用可能とみなされた場合、アプリケーションは開始されます。
このアクションの一部として、2 つの通知メッセージがコントローラー領域のハードコピーに対して発行されます。 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: 不明なリソースの可用性。
カスタム・プロパティー
この機能のすべてのプロパティーは、特定のデータ・ソースまたは接続ファクトリーの接続プールに、新規カスタム・プロパティーとして作成する必要があります。管理コンソールで、通知を使用可能にする対象となるデータ・ソースまたは接続ファクトリーにナビゲートします。「接続プール・プロパティー」リンクをクリックします。 「プール・プロパティー (Pool Properties)」パネルで「接続プール・カスタム・プロパティー」リンクをクリックします。リソース接続プールの「カスタム・プロパティー」パネルが表示されます。「新規作成」をクリックして、以下に説明するカスタム・プロパティーを作成します。
failureNotificationActionCode
値: {1、2、3}
説明: failureNotificationActionCode プロパティーは、通知機能を使用可能にするために使用されます。このプロパティーを以下のいずれかの、指定された有効な整数値に設定しない場合、通知機能は使用不可になります。- 1 = このリソースが使用不可であることを示す BBOJ0130I メッセージがハードコピーに出力されます。リソースが使用可能になると、リソースが再び使用可能になったことを示す BBOJ0131I メッセージがハードコピーに出力されます。
- 2 = リスナー一時停止コマンドがサーバーに対して発行され、サーバーは新しく送信された作業を受け取らなくなります。また、行われたアクションを示すメッセージ BBOJ0130I も発行されます。 リソースが使用可能になると、リスナー再開コマンドが発行され、再びサーバーは送信された作業を受け取ることができるようになります。行われたアクションを示すメッセージ BBOJ0131I が発行されます。
- 3 = このリソースを使用する、ローカルにインストールされたモジュールを含むすべてのアプリケーションがこのサーバー上で停止します。 また、行われたアクションを示すメッセージ BBOJ0130I も発行されます。 リソースが使用可能になると、これらのアプリケーションは開始されます。また、行われたアクションを示すメッセージ BBOJ0131I も発行されます。
- failureThreshold
値: 0 より大きい整数を指定する必要があります。
説明: failureThreshold プロパティーは、failureNotificationActionCode または alternateResourceJNDIName プロパティーが有効な値に設定されている場合にのみ読み取られます。failureThreshold プロパティーが設定されていない場合、または無効な数値が設定されている場合、デフォルト値の 5 が使用されます。failureThreshold に指定する整数値は、通知が送信されるかフェイルオーバーが発生するために特定のリソースで発生する必要のある、一連のリソース例外の数です。
以下は、この値が機能する仕組みの例です。データ・ソース B に対して failureThreshold プロパティーが 5 に設定されている場合、データ・ソース B が接続の確立の試行中 5 つの一連のリソース例外を取得し、それらの障害と障害の間に試行が成功しないことが、通知の送信またはリソースのフェイルオーバーが行われるための条件となります。 通知の送信またはフェイルオーバーは、リソース例外が連続 5 回発生した後に試行されます。 ただしマルチスレッド環境では、障害しきい値に達すると、通知またはフェイルオーバーが発生するタイミングは、追加のリソース例外が発生した後になる場合があります。重要: リソース例外のカウンターは、リソース間で共有されていません。リソース例外が連続して発生して初めて、障害しきい値に達します。- alternateResourceJNDIName
値: 直接 JNDI 名を含むストリング値。
説明: 接続ファクトリーまたはデータ・ソースの代替リソースは 1 次リソースに類似している必要があります。代替リソースの JNDI 名を指定し、フェイルオーバー機能を使用可能にします。
拡張フェイルオーバー・プロパティー
- resourceAvailabilityTestRetryInterval
値: int 値。デフォルトは 10 です。
説明: デフォルトのテスト接続間隔は 10 秒です。10 秒ごとに、テスト接続スレッドは 1 次リソースのテストを試行します。システム・リソースによっては、この値は 1 秒から MAXINIT 秒までの範囲で変化する場合があります。
- enablePartialResourceAdapterFailoverSupport
値: boolean 値。デフォルトは false です。
説明: この値が true の場合、代替リソースへのフェイルオーバーが発生しますが、1 次リソースへのフェイルバックは手動です。このプロパティーは、使用されているリソース・アダプターが接続のフェイルオーバーの要件に適合しない場合 (リソース・アダプターに testConnection が実装されていない、またはリソース・アダプターがサポートされていない例外をスローした場合など) に設定できます。
- disableResourceFailOver
値: boolean 値。デフォルトは false です。
説明: この値が true の場合、自動フェイルオーバーは発生しません。
- disableResourceFailBack
値: boolean 値。デフォルトは false です。
説明: この値が true の場合、自動フェイルバックは発生しません。
- populateAlternateResource
値: boolean 値。デフォルトは false です。
説明: この値が true の場合、代替リソースには最大接続数に達するまで接続が追加されます。代替リソースを最大接続数に保つためのすべての試行が行われます。代替リソースに接続されているデータベースが故障した場合、失効した接続が削除され、データベースが使用可能になったときにデータ取り込みスレッドが代替リソースにデータを再び取り込みます。Mbean 操作 disablePopulateAlternateResource および enablePopulateAlternateResource を使用して、代替リソースへのデータ取り込みを動的に使用可能および使用不可にできます。重要: 代替リソースへのデータ追加が使用可能になっている場合、フェイルオーバー時にパフォーマンスが向上する場合がありますが、代替リソースへのデータ取り込みを維持するには高いコストがかかります。 コストの大部分は、1 つのデータ・ソースに通常必要な接続数の 2 倍の数を維持するために生じます。接続は大きなオブジェクトであるため、接続の維持にはサーバーの追加メモリー・リソースおよびデータベースの余分なリソースが使用されます。