Oracle® Fusion Middleware Oracle WebLogic Serverストア・アンド・フォワードの構成と管理 11g リリース1(10.3.5) B61638-03 |
|
![]() 前 |
![]() 次 |
以下の節では、WebLogicストア・アンド・フォワード(SAF)サービスの様々な概念と機能を紹介し、それらとWebLogic Serverとの連携の仕組みについて説明します。
この章では、読者がWebLogic Serverのその他の管理概念に精通していることを前提としています。
以下の節では、SAFサービスのコンポーネントおよび参加コンポーネントについて説明します。
SAFサービスを使用すると、複数のWebLogic Serverインスタンスに分散されているアプリケーション間でメッセージを確実に配信できます。たとえば、SAFサービスを利用すると、ローカルのWebLogic Serverインスタンス上で動作するアプリケーション、またはローカルのWebLogic Serverインスタンスに接続するアプリケーションは、リモート・サーバー上のエンドポイントにメッセージを確実に配信できます。ネットワークの問題やシステム障害が原因で、メッセージの送信時に宛先が使用不能になっている場合、メッセージはローカルのサーバー・インスタンスに保存されて、リモートのエンドポイントが使用可能になった時点で転送されます。
WebLogic JMSでは、SAFサービスを利用して、ローカルのJMSメッセージ・プロデューサが、リモートのJMSキューまたはトピックにメッセージを確実に送信できるようにします。「WebLogic JMSでのSAFの使用」を参照してください。
WebLogic Webサービスでは、SAFサービスを利用して、Web Services Reliable Messaging (WSRM)の信頼性を確保します。「Web Services Reliable Messaging (WSRM)でのSAFの使用」を参照してください。
メッセージの格納と転送のプロセスには、ローカルの送信側とリモートの受信エンドポイントという2つの側面があります。SAFエージェントは、ローカルの送信エンドポイントとリモートの受信エンドポイントの間でメッセージの格納と転送を行います。SAFエージェントは、送信機能または受信機能のみを持つように構成することも、両方の機能を持つように構成することもできます。
JMS SAFでは、JMSメッセージの送信側に送信エージェントのみが必要になります。一方、WSRM SAFでは、送信エージェントと受信エージェントの両方が必要になります。
送信エージェント - JMSメッセージおよびWSRMで使用されます。送信エージェントは、メッセージの永続性が必要になる場合に、永続ストレージへのメッセージの格納、受信側へのメッセージの転送、確認応答が時間内に戻らなかった場合のメッセージの再送信を行います。
受信エージェント - WSRMのみで使用されます。受信エージェントは、送信エージェントが送信したメッセージのうち重複するものの検出および消去と、最終的な宛先へのメッセージの配信を行います。
注意: JMSメッセージの場合は、受信側のエクスポート済みリモートJMS宛先に関連付けられたJMSサーバーが重複排除を管理します。 |
SAFエージェントは構成可能なオブジェクトであり、メッセージの永続性、ページング・パラメータ、およびしきい値と割当てを管理するという点でJMSサーバーに似ています。SAFサービスの動作は、SAFエージェントの以下の構成可能なパラメータによって制御されます。
以下のような、全般的な構成パラメータ。
永続ストレージの選択
メッセージ・ページングのデフォルトの設定
配信再試行設定の指定
ウィンドウ・サイズの指定
メッセージ確認応答の間隔の指定(WSRMのみ)
配信再試行の設定、ロギング、およびページングのデフォルトの詳細は、「SAFエージェントの設計」を参照してください。
SAFエージェントに対するすべての一般構成パラメータの詳細は、Oracle WebLogic Server管理コンソール・ヘルプの「ストア・アンド・フォワード・エージェント: 構成: 全般」を参照してください。
SAFエージェントのメッセージ・スループットを制御するための、しきい値および割当てに関するパラメータ。
しきい値および割当てに関するパラメータの詳細は、「SAFエージェントの設計」を参照してください。
SAFエージェント、リモート・エンドポイント、および会話のモニター機能。SAFエージェントでの着信、転送、および受信メッセージ処理、およびリモート・エンドポイントに対する着信および転送メッセージ処理を管理するための機能もあります。
SAFエージェントのモニター・オプションの詳細は、第4章「SAFエージェントのモニターと管理」を参照してください。
SAFインポート済み宛先のJMSメッセージ・ロギング機能。JMSメッセージが、SAFエージェントによって格納されてから、最終的にリモートのJMS宛先に転送されるまでに発生するイベントを外側から見る形になります。
SAF宛先のJMSメッセージ・ロギングのオプションについては、「JMSメッセージのSAFメッセージ・ライフ・サイクルのロギング」を参照してください。
SAFエージェントをスタンドアロン・サーバーに割り当てる場合には、サーバーのデフォルトの永続ストアを使用することも、明示的に構成されたストアを選択することもできます。しかし、SAFエージェントをクラスタに割り当てる場合には、以下の永続ストアの選択ルールが適用されます。
移行可能な対象を使用しない場合には、クラスタ内の各サーバー・インスタンスはデフォルト永続ストアを使用しなければならず、SAFエージェントもデフォルト・ストアを使用しなければなりません。
JMSメッセージの場合には、SAF送信エージェントとインポート済み宛先が同じサーバー・インスタンス上に存在しなければなりません。SAFエージェントがクラスタに割り当てられると、クラスタ内の各サーバー・インスタンス上にエージェントが自動的に構成されます。
移行可能な対象に割り当てる場合には、SAFエージェントがカスタム永続ストアを使用し、かつそのカスタム・ストアで使用されるものと同じ移行可能な対象に割り当てられていることが必要です。SAFエージェント、JMSサーバー、およびカスタム・ストアは、1つの移行可能な対象を共有できます。『Oracle WebLogic Serverクラスタの使い方』のクラスタ内の移行可能な対象の理解に関する項を参照してください。
注意: SAFメッセージの一貫性を保持するために、WebLogic Serverでは既存のSAFエージェントを移行可能な対象に再割当てすることはできません。かわりに、既存のSAFを削除し、同じ値で構成した新しいSAFを移行可能な対象に割り当てる必要があります。 |
JMSストア・アンド・フォワードでは、1つの送信エージェントを使用して、高可用性を備えたJMSメッセージ生成を行います。たとえば、ローカルのサーバー・インスタンスに接続されたJMSメッセージ・プロデューサは、メッセージ送信時にリモートのJMS宛先が一時的に使用できない場合でも、そのリモート宛先に確実にメッセージを転送できます。JMS SAFはJMSアプリケーションからは透過的なので、JMSクライアント・コードは既存のJMS APIを使用して、リモート宛先にアクセスできます。詳細については、第3章「JMSメッセージに対するSAFの構成」を参照してください。
インポート済みJMS宛先に対するSAF送信エージェントによってクラスタ内の依存するJMSアプリケーションに対してシングル・ポイント障害が発生しないように、SAFエージェントをクラスタ内の正常なサーバー・インスタンスに移行するようWebLogic Serverを構成できます。「可用性の高いメッセージングのための移行可能なSAFエージェント」を参照してください。
WSRMでは、ローカル・サーバー・インスタンスで構成されたSAF送信エージェント、およびリモート・サーバー・インスタンスで構成されたSAF受信エージェントのペアが使用されます。これにより、別々のサーバー・インスタンス上で動作する2つのWebサービスは、ソフトウェア・コンポーネント、システム、またはネットワークに障害がある場合でも確実に通信できるようになります。具体的には、ソース・エンドポイントから宛先エンドポイントに送信されたメッセージは1つまたは複数の配信保証に基づいて確実に配信され、配信されない場合には必ずエラーが送出されます。
詳細は、『Oracle WebLogic Server JAX-RPC Webサービスの高度な機能のプログラミング』のWebサービスの信頼性のあるメッセージングの使用に関する項を参照してください。
SAFサービスでは、クロス・ドメイン・セキュリティを構成する必要はありません。ただし、1つのドメインにクロス・ドメイン・セキュリティが構成されていて、共通分散宛先のメンバーシップがSAFの変更を介してインポートされる場合には、プロセスの通信対象となるすべてのドメインに対して、クロス・ドメイン・セキュリティを構成する必要があります。ベスト・プラクティスは、プロセスで使用されるすべてのドメインに関してクロス・ドメイン・セキュリティの構成を統一することです。つまり、すべてのドメインがクロス・ドメイン・セキュリティを使用する(または、適切な例外リストに含まれる)か、どのドメインについてもクロス・ドメイン・セキュリティを有効にしないかのいずれかにします。『Oracle WebLogic Serverの保護』の「WebLogicドメインのセキュリティの構成」を参照してください。
SAFサービスは、WebLogic Server 9.x以降のドメイン間でJMSメッセージまたはWSRMメッセージを転送する場合に使用します。
SAFサービスによるメッセージの配信対象間の関係は、以下のとおりです。
2つのスタンドアロンのサーバー・インスタンス間
クラスタ内のサーバー・インスタンス間
ドメイン内の2つのクラスタ間
異なるドメイン間
SAFサービスを使用しない場合は、以下のとおりです。
以前のリリースのWebLogic Serverにメッセージを転送する場合
サード・パーティのJMS製品(MQSeriesなど)と相互運用する場合
これらのタスクでは、WebLogicメッセージング・ブリッジを使用します。『Oracle WebLogic Serverメッセージング・ブリッジの構成と管理』のメッセージング・ブリッジの理解に関する項を参照してください。
リクエストにレスポンスを返すためにJMSReplyTo
で一時的な宛先を使用する場合
なお、JMS SAFを使用する場合、アプリケーションはリモート・サーバーから直接メッセージを受信することしかできません。それも、リモート・サーバーが使用可能な場合に限られます。
ドメインにSAFサービスを実装するには、以下のタスクを行う必要があります。
送信側クラスタまたはサーバー・インスタンスで、SAFエージェントを構成します。SAFエージェントは、以下のいずれかの方法で作成できます。
WebLogic Server管理コンソールを使用します。これにより、使用している環境のSAFエージェントを構成、変更、ターゲット指定、モニター、および削除できます。SAFエージェントの構成タスクの手順については、『Oracle WebLogic Server管理コンソール・ヘルプ』のストア・アンド・フォワード・エージェントの作成に関する項を参照してください。
WebLogic Java Management Extensions (JMX)を使用します。これにより、SAFエージェントを作成および管理するためのSAFAgentMBean
およびSAFAgentRuntimeMBean
の各MBeanにアクセスできます。詳細は、『Oracle WebLogic Server JMXによるカスタム管理ユーティリティの開発』のWebLogic ServerサブシステムMBeanの概要に関する項を参照してください。
WebLogic Scripting Tool (WLST)を使用します。これにより、JMSサーバーとJMSシステム・リソースを作成および管理できます。詳細は、『Oracle WebLogic Server JMSの構成と管理』のWLSTを使用したJMSサーバーとJMSシステム・リソースの管理に関する項を参照してください。
WSRMを使用する場合は、送信側で送信機能と受信機能の両方の機能を持つSAFエージェントを構成した場合でも、受信側のクラスタまたはサーバー・インスタンスで受信機能を持つSAFエージェントを構成する必要があります。
SAFエージェントの構成時には、サーバーのデフォルト・ストアをそのまま使用することもできますし、SAFメッセージ専用のストアを構成する場合はストアを構成することもできます。SAFエージェントをクラスタに割り当てる場合には、サーバーのデフォルト・ストアをそのまま使用しなければなりません。また、SAFエージェントを移行可能な対象に割り当てて可用性を高めることもできます。「SAFエージェントをクラスタに割り当てる場合の永続ストアのルール」を参照してください。
永続ストアの詳細は、『Oracle WebLogic Serverサーバー環境の構成』のWebLogic永続ストアの使用に関する項を参照してください。
WebLogic JMSの場合は、JMSモジュールでSAFインポート済み宛先、SAFコンテキスト処理、およびSAFエラー処理(オプション)の各オブジェクトを構成します。第3章「JMSメッセージに対するSAFの構成」を参照してください。
(オプション)送信側がクラスタで、JMSプロデューサがメッセージ順序単位に関連付けられている場合は、JMSメッセージのパス・サービスを構成します。メッセージ順序単位を使用することで、JMSメッセージ・プロデューサは順序付けされたメッセージを1つの単位にグループ化できます。JMS順序単位の詳細は、『Oracle WebLogic Server JMSのプログラミング』のメッセージ順序単位の使用に関する項を参照してください。
パス・サービスは、メッセージのグループとメッセージング・リソース(SAFエージェントなど)との間のマッピングを格納できる永続マップです。パス・サービスの構成の詳細は、『Oracle WebLogic Server JMSの構成と管理』のWebLogicパス・サービスの使用に関する項を参照してください。
以下の節では、メッセージを転送するためにSAFエージェントを設計および構成する場合に役立つ情報について説明します。
SAFの信頼性は、時間に基づいています。存続時間のパラメータを使用して、メッセージがSAFエージェントによって確実に配信されなければならない期間を構成できます。構成された存続時間が経過すると、送信エージェントはメッセージをストレージから削除し、受信側に対するメッセージの再送信の試行を中止します。存続時間が経過したときに、配信できなかったメッセージをどのように処理するかは、アプリケーション側の設定で決まります。
失敗したメッセージ配信のJMSにおける処理方法については、「SAFエラー処理」を参照してください。
メッセージ配信の失敗で考えられる理由は、以下のとおりです。
ネットワークの停止があった
エンドポイントが存在しない(構成されていない)
エンドポイントが停止している
エンドポイントの割当てエラーが発生した
セキュリティによって拒否された
必要なQOSがサポートされていない
WSRM会話がタイムアウトになった(会話があまりに長い間アイドル状態にある)
ロギングのパラメータが有効になっている場合、失敗したメッセージごとに、送信エージェントによってメッセージがサーバー・ログに記録されます。これは、アプリケーションで独自の失敗処理が定義されていない場合や、アプリケーションで失敗処理を完了できない場合のかわりの方法として使用できます。Web Logicロギングの詳細は、『Oracle WebLogic Serverログ・ファイルの構成とログ・メッセージのフィルタ処理』のWebLogicロギング・サービスの理解に関する項を参照してください。
メッセージを転送するために、送信エージェントは受信側に接続する必要がありますが、接続が使用不能になっている場合もあります。メッセージ送信の試行が失敗した場合には、送信エージェントは成功するまで再試行しなければなりません。同様に、必要なQOSが「必ず1回」または「1回以上」である場合には、そのメッセージの確認応答を受信するまで、送信エージェントはメッセージを送信し続ける必要があります。
試行の頻度、および連続する2回の試行の間隔を制御するには、再試行遅延の基数、再試行遅延の乗数、および最大再試行遅延の各パラメータのデフォルト値を構成します。再試行遅延の乗数パラメータの値は1以上に設定する必要があり、最大再試行遅延パラメータの値は再試行遅延の基数パラメータの値以上に設定する必要があります。デフォルトでは、再試行遅延の乗数パラメータの値は1に設定されています。この場合は、再試行遅延の基数パラメータの値で定義された一定間隔が、連続する2回の試行の間隔に使用され、最大再試行遅延パラメータの値は無視されます。再試行遅延の乗数パラメータに1より大きい値が設定されている場合、再試行間隔の調整に指数関数的なバックオフ・アルゴリズムが使用されます。
遅延は、再試行遅延の基数パラメータの値から始まり、指数関数的に長くなります。つまり、試行のたびに再試行遅延の乗数パラメータの値で乗算されていきます。最大再試行遅延パラメータの値に達すると、遅延時間はそれ以上長くなりません。試行が成功すると、再試行遅延の乗数パラメータの対象は、再試行遅延の基数パラメータの値にリセットされます。
SAFエージェントの配信再試行パラメータの詳細は、Oracle WebLogic Server管理コンソール・ヘルプの「ストア・アンド・フォワード・エージェント: 構成: 全般」を参照してください。
永続メッセージは、受信側に正常に転送され、確認応答されるまで送信側の永続ストアに保存されます。一方、配信が保留になっている非永続メッセージは送信側のメモリー内に存在し、すべての履歴記録は受信側のメモリー内に存在します。リモート側が長時間使用不能になっている場合には、保留中の非永続メッセージによって送信側サーバーのメモリーがすべて使用されてしまい、サーバーが停止してしまうこともあります。各SAFエージェントの割当てを構成することで、メモリー不足からサーバーを保護できます。割当てを超過しそうになると、SAFエージェントは新しいリクエストを拒否します。
割当てに達する前に、メッセージまたは履歴記録をページング・ディレクトリにページングするように、SAFエージェントを構成することもできます。ページングは、SAFエージェントの構成でしきい値として指定された一定の条件が満たされるとトリガーされます。メッセージまたは履歴記録用の永続ストアもページングに使用されます。
SAFエージェントのしきい値および割当てに関するパラメータとその関係は、JMS宛先やJMSサーバーのしきい値および割当てに関するパラメータと同じです。
SAFエージェントのしきい値および割当てパラメータの詳細は、Oracle WebLogic Server管理コンソール・ヘルプの「ストア・アンド・フォワード・エージェント: 構成: しきい値と割当て」を参照してください。
WebLogic Serverインスタンスが再起動すると、そのサーバー・インスタンスが停止する前に送信されなかったメッセージが、サーバーの永続ストアから回復されます。送信エージェントは、リモート側がまだ期限切れになっていなければ、それらのメッセージをリモート側に送信しようとします。同様に、受信側でも再起動時に履歴記録が回復されます。
インポート済みJMS宛先に対するSAF送信エージェントによってクラスタ内の依存するJMSアプリケーションに対してシングル・ポイント障害が発生しないように、SAFエージェントをクラスタ内の正常なサーバー・インスタンスに自動または手動で移行するようWebLogic Serverを構成できます。
サービス・レベルの移行は、JMSサーバー、SAFエージェント、永続ストアなどのJMS関連の固定サービスをグループ化した「移行可能な対象」ごとに制御されます。移行可能な対象は、クラスタ内のいずれか1つの物理サーバーでホストされます。ホストされているサービスは、ヘルス・モニター・サブシステムを使用することで、現在異常のあるホスト・サーバーから正常なアクティブ・サーバーに自動的に移行されます。移行可能な対象によってホストされるJMSサービスは、サーバー障害への対処として、また定期的なメンテナンスの一環として手動で移行できます。移行可能な対象を移行すると、その対象によってホストされているすべての固定サービスも移行されます。
『Oracle WebLogic Serverクラスタの使い方』のサービスの移行に関する項を参照してください。