Skip to main content

This is documentation for Caché & Ensemble. See the InterSystems IRIS version of this content.Opens in a new tab

For information on migrating to InterSystems IRISOpens in a new tab, see Why Migrate to InterSystems IRIS?

ECP および高可用性

Caché の最も強力で固有な特徴の 1 つは、多数のサーバ・システム間でデータとアプリケーション・ロジックを分散することによって効率的に調整できるということです。この機能の基礎となるテクノロジを ECP (Enterprise Cache Protocol) といいます。この分散データ・キャッシュ・アーキテクチャは、異種ネットワークで構成したサーバ・システムでデータとロックの分散を管理します。ECP アプリケーション・サーバは、データ・サーバのフェイルオーバーが発生しても、その前後で実行中のアプリケーションの状態が維持されるように設計されています。アプリケーション・アクティビティの特性に応じて、フェイルオーバーが完了するまで一時停止する場合がありますが、その後ワークフローを中断することなく動作を続行できます。

この章では以下のトピックで、高可用性を維持するために ECP のアーキテクチャがどのように機能するのかを説明します。

ECP に関する詳細は、"Caché 分散データ管理ガイド" を参照してください。

高可用性の ECP アーキテクチャ

高可用性の一般的な ECP アーキテクチャでは、一連のアプリケーション・サーバデータ・サーバに接続します。アプリケーション負荷は、外部の負荷分散によってアプリケーション・サーバ層の間に分散され、データ・サーバはデータベースの状態を維持し、一部のアプリケーション負荷をローカルにホストする場合があります (バッチ・アクティビティなど)。ECP は、アプリケーション・サーバを追加して需要の増加を満たせるようにして、効率的なスケーリングを実現します。アプリケーション・サーバで障害が発生しても需要を適切に満たすために、アプリケーション・サーバ層は、厳密に必要な数よりも少なくとも 1 台多いサーバを備える必要があります。データ・サーバは、以下の図に示すように、"システム・フェイルオーバーの方法" で説明したシステム・フェイルオーバーの方法のいずれかを使用して高可用性が実現されます。

generated description: ecp basic

データ・サーバに使用するフェイルオーバーの方法に関係なく、アプリケーション・サーバは、フェイルオーバーに続いて再接続してその状態を回復し、障害発生前の場所からアプリケーションのプロセスを続行できます。このアプリケーション回復機能は ECP を使用する環境に有用ですが、別の状況では不要な場合でも、一般的にこれだけが ECP を導入する理由ではありません。アプリケーション・サーバ自体で障害が発生し、ユーザが再接続する必要が生じる場合があり、アプリケーション・サーバを導入すると環境がより複雑になります。

ECP のリカバリおよびフェイルオーバー

ECP アプリケーション・サーバ、データ・サーバ、またはこれらを接続するネットワークで障害が発生したとき、ECP は、障害の特性に応じて異なるリカバリ・プロトコルを実行します。その結果は、接続が回復されるか、何も発生しなかったかのようにアプリケーションのプロセスを続行できるか、または接続がリセットされ、トランザクションを強制的にロールバックし、アプリケーションのプロセスが再構築されます。主な原則は以下のとおりです。

  • データ・サーバは、応答しないアプリケーション・サーバに対して短時間 ([トラブル状態の時間間隔] 設定、既定では 1 分) しか待機しません。その後、データ・サーバは接続をリセットします。これによって、データ・サーバは、トランザクションをロールバックし、応答しないアプリケーション・サーバからロックを解放し、アプリケーション・サーバの動作をブロックしないようにできます。

  • データ・サーバのフェイルオーバーまたは再起動の後に接続を回復するための十分な時間を確保するために、アプリケーション・サーバは、応答しないデータ・サーバが再び使用できるようになるまで長時間 ([リカバリまでの待機時間] 設定、既定では 20 分) 待機します。この時間が経過すると、アプリケーション・サーバは接続をリセットします。

  • アプリケーション・サーバの接続がリセットされると、データ・サーバを待機しているアプリケーション・サーバ上のあらゆるプロセスは、<NETWORK> エラーを受け取り、それらのトランザクションは rollback-only 条件になります ("Caché 分散データ管理ガイド" の “分散アプリケーションの開発” の章にある "ECP 関連エラー" を参照してください)。

ECP リカバリの詳細

ECP リカバリの簡単な例は、一時的なネットワーク接続の中断が発生した場合です。この場合の中断時間は、その発生を検知できるほどには長いが、基本の TCP 接続を維持する上では問題ない程度に短いと考えます。この障害が発生している間、アプリケーション・サーバは、接続が応答しないことを検知するため、その接続に対する新しいネットワーク要求をブロックします。接続が再開すると、ブロックされていた処理は中断していた要求を送信できるようになります。

基本の TCP 接続がリセットされた場合、データ・サーバは、[トラブル状態の時間間隔] 設定 (既定は 1 分) の時間だけ再接続を待ちます。アプリケーション・サーバがこの間隔の間に再接続を成功しないと、データ・サーバは接続をリセットし、開いているトランザクションをロールバックし、ロックを解放します。そのアプリケーション・サーバからの後続の接続は新規の接続要求に変換され、アプリケーション・サーバはその接続がリセットされたことを通知されます。

アプリケーション・サーバは、接続が再確立されると、削除するロックのキューとロールバックするトランザクションを保持します。このキューを保持することにより、中断中のトランザクションやロックがあるデータ・サーバが現在利用可能かどうかにかかわらず、アプリケーション・サーバのプロセスはいつでも停止できます。ECP リカバリでは、データ・サーバのキューに入れられた中断中の Set 処理と Kill 処理をすべて完了してから、ネットワーク障害が検出され、ロックの解放が完了します。

アプリケーション・サーバが接続をリセット (アプリケーション・サーバの再起動などが理由) したことをデータ・サーバが認識するたびに、データ・サーバは、まだ [トラブル状態の時間間隔] 内でも即時に接続をリセットし、トランザクションをロールバックし、アプリケーション・サーバの代わりにロックを解放します。アプリケーション・サーバの状態がリセットされるため、代わりにデータ・サーバによって維持される状態はなくなります。

最後の例は、データ・サーバが無理なく、またはクラッシュの結果として停止した場合です。アプリケーション・サーバは、アプリケーションの状態を維持し、[リカバリまでの待機時間] 設定 (既定は 20 分) の時間だけデータベース・サーバに再接続しようとします。データ・サーバは、クラッシュやシャットダウン時点でアクティブであったアプリケーション・サーバ接続を記憶しています。再起動後、それらのアプリケーション・サーバが再接続され、接続を回復するのを最長で 30 秒待機します。リカバリには、データ・サーバでいくつかの手順が必要です。この手順の中には、非常に重要な方法としてデータ・サーバのジャーナル・ファイルを必要とするものもあります。いくつかの異なる手順の結果は以下のようになります。

  • 各アプリケーション・サーバから見た、現在有効なトランザクションのデータ・サーバのビューは、データ・サーバのジャーナル・ファイルからリストアされています。

  • 各アプリケーション・サーバから見た、現在有効な Lock オペレーションのデータ・サーバのビューは、アプリケーション・サーバがそれらのロックをデータ・サーバにアップロードすることによってリストアされています。

  • アプリケーション・サーバとデータ・サーバは、アプリケーション・サーバからのどの要求を無視し (クラッシュ前に完了したことが確実であるため)、どの要求を再生するかを正確に一致させます。リカバリの最終手順は、単純に中断中のネットワーク要求を完了させることです。ただし、再生しても安全なネットワーク要求のみに限られます。

  • 最後に、アプリケーション・サーバはデータ・サーバに、データ・サーバの再起動中に停止したジョブから保存したすべての中断中のアンロックまたはロールバック指示を送ります。ストレージ・デバイス (データベースの場合、WIJ ファイルとジャーナル・ファイル) の整合性が保持されている限り、突然の予期しないデータ・サーバ・クラッシュに直面しても、すべての保証は維持されます。

ECP 構成システムのリカバリ中、Caché は、"Caché 分散データ管理ガイド" の付録 “ECP リカバリ保証と制限” にある "ECP リカバリ保証" セクションで詳細に説明されている多数のリカバリ・メカニズムを保証します。これらの保証に対する制限の詳細は、前述の付録の "ECP リカバリの制限" セクションで説明されています。

FeedbackOpens in a new tab