Sun ONE Application Server 7, Enterprise Edition 管理者ガイド |
付録 B
フェイルオーバーのシナリオこの付録のシナリオでは、アプリケーションサーバーインスタンスおよび Web アプリケーションのセッション持続性の設定が SunTM Open Net Environment (Sun ONE) Application Server 7, Enterprise Edition のセッション状態のフェイルオーバーにどのような影響を及ぼすかについて説明します。
この付録では次のトピックについて説明します。
前提条件と要件この付録で説明するシナリオには、セッションの持続性に関する次の情報が関連します。
- HTTP セッションの持続性とフェイルオーバー機能を必要とする本稼働環境では、持続型 ha のみがサポートされる
- アプリケーションサーバーインスタンスがセッションの持続性をサポートするためには、高可用性が有効化されている必要がある。アプリケーションサーバーインスタンスの高可用性を有効化する方法の詳細は、「アプリケーションサーバーインスタンスの可用性の有効化」を参照。このシナリオでは、アプリケーションサーバーインスタンスの高可用性が有効化されていることを前提とする
- Web アプリケーションがセッションの持続性をサポートするためには、分散可能である必要がある。分散可能な Web アプリケーションの詳細は、「アプリケーションを分散可能にする」を参照。この付録のシナリオでは、Web アプリケーションが分散可能であることを前提とする
- Web アプリケーションのセッション持続性の設定は、その Web アプリケーションが配備されているアプリケーションサーバーインスタンスのセッション持続性の設定よりも優先される
セッションの持続性およびこれに関連する設定の詳細は、第 18 章「セッション持続性の設定」を参照してください。
クラスタ内のアプリケーションサーバーインスタンスの持続型を memory に設定する要約
クラスタ内のアプリケーションサーバーインスタンスの持続型が memory に設定されていて、クラスタ内に配備されている Web アプリケーションに持続型は設定されません。セッションが作成されたアプリケーションサーバーインスタンスが利用できなくなった場合、そのインスタンスで作成されたセッションはほかのアプリケーションサーバーインスタンスにはフェイルオーバーされません。
例
このシナリオの例を示します。
結果の説明
これらのセッションは、クラスタ内の別のアプリケーションサーバーインスタンスにはフェイルオーバーされません。これらのセッションに対応する要求を受信した場合、これらの要求は、ロードバランサのロードバランスアルゴリズムに従って、クラスタ内の (利用可能な) 別のアプリケーションサーバーインスタンスにルーティングされます。
アプリケーションサーバーインスタンスの持続型を memory に設定する要約
開発環境で、アプリケーションサーバーインスタンスの持続型が memory に設定されていて、インスタンス上に配備されている Web アプリケーションに持続型は設定されていません。
インスタンスが適切に停止しました。インスタンスを再起動するとき、ファイルからインスタンスのセッション状態を復旧できます。
このモードは、1 つのアプリケーションサーバーインスタンスだけを使用し、ロードバランサがない場合に便利です。ただし、クラスタ化された環境でロードバランサが存在する場合は、インスタンスを完全に停止して再起動するまでの間にロードバランサがセッション状態をクラスタ内の別のインスタンスにフェイルオーバーして、再起動時にインスタンスがセッション状態を復旧できないことがあります。
例
このシナリオの例を示します。
結果の説明
インスタンスは、適切に停止する前に、セッション状態をディレクトリ内のファイルに保存します。server.xml ファイル内にある session-manager 要素の sessionFilename 属性の値が、このディレクトリのパスになります。
インスタンスの再起動時に、インスタンスはファイルからセッション状態を取得できます。
アプリケーションサーバーインスタンスの持続型を file に設定する要約
開発環境で、アプリケーションサーバーインスタンスの持続型が file に設定されていて、インスタンス上に配備されている Web アプリケーションに持続型は設定されていません。
インスタンスが適切に停止するか、利用できなくなります。インスタンスを再起動するとき、ファイルからインスタンスのセッション状態を復旧できます。
このモードは、1 つのアプリケーションサーバーインスタンスだけを使用し、ロードバランサがない場合に便利です。ただし、クラスタ化された環境でロードバランサが存在する場合は、クラスタ内の別のインスタンスではセッション状態を復旧できません。また、インスタンスが利用できないときにはロードバランサがセッションを別のインスタンスにフェイルオーバーしようとするため、インスタンスの再起動後にこれらのセッションの再確立が必要になることがあります (通常、Web クライアントによる再認証が必要です)。
例
このシナリオの例を示します。
結果の説明
アプリケーションサーバーインスタンスを利用できる間、各セッションの情報は対応する各ファイルに保存されます。このようなセッション情報は、server.xml ファイル内にある session-manager 要素の reapIntervalSeconds 属性に指定された間隔で保存されます。
インスタンスの再起動時に、インスタンスは対応するファイルからセッションの情報を取得できます。セッション状態は定期的に保存されるので (つまり、Web メソッドなどの実行のたびに保存されるわけではないので)、セッションが最後に保存されたタイミングに応じて、セッションのデータが失われるリスクがあります。
クラスタ内のアプリケーションサーバーインスタンスの持続型を ha に設定する要約
クラスタ内のアプリケーションサーバーインスタンスの持続型が ha に設定されていて、クラスタ内に配備されている Web アプリケーションに持続型は設定されません。セッションが作成されたアプリケーションサーバーインスタンスが利用できなくなった場合、そのインスタンスで作成されたセッションはクラスタ内の (利用可能な) ほかのアプリケーションサーバーインスタンスにフェイルオーバーされます。
例
このシナリオの例を示します。
結果の説明
要求を最初に処理したインスタンスは、高可用性データベース (HADB) にセッション状態を書き込んでいます。
このアプリケーションサーバーインスタンスの持続性頻度が time-based に設定されている場合、セッション状態は server.xml ファイル (インスタンスレベル設定の場合) または sun-web.xml ファイル (アプリケーションレベル設定の場合) 内にある manager-properties 要素の reapIntervalSeconds 属性に指定された時間間隔で定期的に保存されます。詳細は、「セッション持続性のその他のプロパティの設定」を参照してください。
アプリケーションサーバーインスタンスの持続性頻度が web-method に設定されている場合、各 Web 要求が処理されるたびにセッション状態が保存されます。
したがって、持続性頻度の設定は、任意の時点で HADB 内のセッション状態が最新のものであるかどうかに関係があります。
セッションのフェイルオーバー先となるアプリケーションサーバーインスタンスでは、HADB からセッション状態にアクセスします。
Web アプリケーションの持続型を memory に設定する要約
クラスタ上に配備されている Web アプリケーションの持続型が memory に設定されています。この Web アプリケーションのセッションが作成されたアプリケーションサーバーインスタンスが利用できなくなった場合、そのインスタンスで作成されたセッションはクラスタ内のほかのアプリケーションサーバーインスタンスにはフェイルオーバーされません。クラスタ内のアプリケーションサーバーインスタンスの持続型の設定とは関係なく、このようになります。
例
このシナリオの例を示します。
結果の説明
「クラスタ内のアプリケーションサーバーインスタンスの持続型を memory に設定する」の場合と同じ結果になります。
Web アプリケーションの持続型を file に設定する要約
クラスタ上に配備されている Web アプリケーションの持続型が file に設定されています。この Web アプリケーションのセッションが作成されたアプリケーションサーバーインスタンスが利用できなくなった場合、そのインスタンスで作成されたセッションはクラスタ内のほかのアプリケーションサーバーインスタンスにはフェイルオーバーされません。クラスタ内のアプリケーションサーバーインスタンスの持続型の設定とは関係なく、このようになります。
例
このシナリオの例を示します。
結果の説明
「アプリケーションサーバーインスタンスの持続型を file に設定する」の場合と同じ結果になります。
Web アプリケーションの持続型を ha に設定する要約
クラスタ上に配備されている Web アプリケーションの持続型が ha に設定されています。この Web アプリケーションのセッションが作成されたアプリケーションサーバーインスタンスが利用できなくなった場合、そのインスタンスで作成されたセッションはクラスタ内のほかのアプリケーションサーバーインスタンスにフェイルオーバーされます。クラスタ内のアプリケーションサーバーインスタンスの持続型の設定とは関係なく、このようになります。
例
このシナリオの例を示します。
結果の説明
「クラスタ内のアプリケーションサーバーインスタンスの持続型を ha に設定する」の場合と同じ結果になります。