スケーラビリティーの高いシステムでビジネスプロセスのスループットを最適化して確保するために、BPEL サービスエンジンではクラスタ化とフェイルオーバーがサポートされています。クラスタ化は、複数の BPEL サービスユニットを介して複数の BPEL サービスエンジンに処理を分散します。フェイルオーバーは、障害の発生したシステムからビジネスプロセスを引き取って処理を完了させることにより、処理が中断されることを防止します。
クラスタ化
ビジネスプロセスを処理能力増加のニーズに応じてスケーリングする必要がある場合は、複数のプロセッサまたはシステムで稼働している複数のサービスエンジンにビジネスプロセスを分散してスループットを向上させることができます。BPEL サービスエンジンのクラスタ化アルゴリズムでは、処理が複数のエンジンに自動的に分散されます。
BPEL サービスエンジンでアプリケーションサーバーのクラスタを設定する方法の詳細については、Sun Java System (GlassFish) Application Server のマニュアルを参照してください。
フェイルオーバー
ビジネスプロセスがクラスタ化に対応するように設定されている場合は、BPEL サービスエンジンのフェイルオーバー機能により、実行中のビジネスプロセスインスタンスのスループットが確保されます。エンジンに障害が発生した場合、中断したビジネスプロセスインスタンスは、クラスタ内で次に使用可能な BPEL サービスエンジンに引き取られます。
フェイルオーバーを設定するには、BPEL サービスエンジンのプロパティー EngineExpiryInterval を設定して、システムの必要に応じた頻度で BPEL サービスエンジンが自己を利用可能な状態として登録するようにします。このプロパティーの設定を最適化するには、テストが必要になる場合があります。デフォルト設定は 15 です。
BPEL サービスエンジンのクラスタを設定するには、次のガイドラインに従う必要があります。
クラスタ化とフェイルオーバーの両方の持続性を有効にする必要があります。
持続性を実行するには、すべての BPEL サービスエンジンを再起動する必要があります。
クラスタ化されたすべての JBI 環境にサービスアセンブリを手動で配備する必要があります。
クラスタ化とフェイルオーバーは、特定のビジネスプロセスに関連する特定のプロトコルおよびバインディングコンポーネントに、整合性を保って実装されます。
クラスタ化とフェイルオーバーを実装する場合は、すべての BPEL サービスエンジンに単一のデータベースだけを使用できます。
データベースに障害が発生するとクラスタ化とフェイルオーバーは機能しなくなるため、可用性の高いデータベースが必要です。
ある BPEL サービスエンジンに障害が発生すると、そのインスタンスは単一の BPEL サービスエンジンに引き取られます。クラスタに分散されることはありません。したがって、多数のインスタンスがフェイルオーバーされた場合、一度に 1 つずつサービスエンジンが過負荷状態になり、一種のドミノ効果によってクラスタ全体が過負荷状態になる可能性があります。
クラスタ内の BPEL サービスエンジンはすべて同じタイムゾーンに存在する必要があります。
BPEL サービスエンジンのクラスタ化とフェイルオーバーのサポートに関する詳細は、「Practical Guide for Testing Clustering Support for the BPEL Service Engine」を参照してください。