Sun ロゴ      前へ      目次      次へ     

Sun Java System Application Server Enterprise Edition 8.1 2005Q1 管理ガイド

第 7 章
可用性とセッション持続性の設定

この章では、Sun JavaTM System Application Server Enterprise Edition 環境でセッション持続性と可用性を設定する方法について説明します。この章には次の節が含まれています。


可用性とセッション持続性について

セッション持続性が必要な理由

アプリケーションセッションが進行していくと、従来型データベースに格納されていないセッションの一部のデータが出現することがあります。このようなデータの例として、ショッピングカートの中身があります。Sun Java System Application Server は、このセッションデータをリポジトリ内に保存、または持続させる機能を提供し、アプリケーションサーバーインスタンスに障害が発生しても、セッションの状態が復元されて情報を損失せずにセッションを継続できるようにしています。

J2EE アプリケーションでは、セッションデータは通常 HTTP セッションまたはステートフルセッション Bean (SFSB) セッションに格納されます。Sun Java System Application Server は、HTTP セッションと SFSB セッションの状態の持続性をサポートします。HTTP セッションおよび SFSB セッション内に保存される特定の J2EE オブジェクト参照のフェイルオーバーもサポートします。『Developer's Guide』を参照してください。

Sun Java System Application Server に含まれている高可用性データベース (HADB) は、セッションデータの高可用性を提供する持続ストアとして機能します。

セッション持続性設定の概要

セッション持続性を正しく設定するためには、以下の手順を表示される順に実行してください。あとの手順には、前提条件として前の手順が含まれる場合があります。

  1. クラスタの HADB データベースを作成します。『Reference Manual』のコマンド configure-ha-cluster の説明を参照してください。
  2. クラスタの HTTP ロードバランスを設定します。第 3 章「ロードバランスとフェイルオーバーの設定」を参照してください。
  3. セッション持続性をサポートする必要があるアプリケーションサーバーインスタンスおよび Web または EJB コンテナの可用性を有効にして、セッション持続性の設定を行います。次の方法のうち 1 つを選択します。
  4. 可用性を有効にしない場合、SFSB のファイルシステムのセッションストアを必要に応じて変更できます。「可用性が無効の場合の SFSB セッションストアの設定」を参照してください。
  5. クラスタ内の各サーバーインスタンスを再起動します。
  6. 可用性を必要とする特定の SFSB の可用性を有効にして、セッション状態にチェックポイントを設定する必要がある方法を選択します。『Developer's Guide』を参照してください。
  7. 高可用性を必要とする各 Web モジュールを分散可能にします。『Developer's Guide』を参照してください。
  8. 配備中に、J2EE アプリケーション、Web モジュール、または EJB モジュールの可用性を有効にします。管理コンソールで、可用性を有効にするチェックボックスをチェックするか、または deploy コマンドを、--availabilityenabled オプションを true にして使用します。

  9. セッション持続性は、動的配備、動的再読み込み、および自動配備とは互換性がありません。これらの配備機能は、開発環境を対象としていて、本稼動環境は対象としていません。これらの機能を無効にする方法については、第 5 章「アプリケーションの配備」を参照してください。



    インスタンスが現在要求を処理中の場合、インスタンスをいったん停止してから再起動して、インスタンスが要求を処理する時間が十分に取れるようにします。詳細については、「サーバーインスタンスまたはクラスタの無効化 (停止)」を参照してください。


可用性のレベル

可用性は、5 つの異なるレベルで有効にできます。

  1. デフォルトで有効になっているサーバーインスタンス
  2. デフォルトで有効になっている Web または EJB コンテナ
  3. デフォルトで無効になっているアプリケーション
  4. デフォルトで無効になっているスタンドアロンの Web または EJB モジュール
  5. デフォルトで無効になっている SFSB

可用性をある特定のレベルで有効にするには、それより上のすべてのレベルでも有効にする必要があります。たとえば、アプリケーションレベルで可用性を有効にするには、サーバーインスタンスレベルおよびコンテナレベルでも有効にする必要があります。

ある特定のレベルの可用性は、デフォルトでは 1 つ上のレベルに設定されます。たとえば、可用性がコンテナレベルで有効になっている場合、デフォルトではアプリケーションレベルで有効になります。

可用性がサーバーインスタンスレベルで無効になっている場合、ほかのすべてのレベルで有効にしても反映されません。可用性がサーバーインスタンスレベルで有効になっている場合、明示的に無効化しないかぎり、すべてのレベルで有効になります。

HTTP セッション状態のシングルサインオンの可用性

単一のアプリケーションサーバーインスタンスでは、ユーザーがある 1 つのアプリケーションによって認証されると、同じインスタンス上で動作しているほかのアプリケーションに対して個別に再認証を行う必要はありません。これをシングルサインオンといいます。シングルサインオンの詳細については、「シングルサインオンの確認」を参照してください。

HTTP セッションがクラスタ内のほかのインスタンスにフェイルオーバーした場合でも、シングルサインオンが機能し続けるようにするには、シングルサインオン情報が HADB に対して持続される必要があります。まず、サーバーインスタンスと Web コンテナの可用性を有効にして、次にシングルサインオン状態の持続性を有効にします。「サーバーインスタンスレベルの可用性の設定」を参照してください。

単一の名前とパスワードの組み合わせによってアクセス可能なアプリケーションは、シングルサインオングループを構成します。

シングルサインオングループに属するアプリケーションに対応する HTTP セッションでは、1 つのセッションがタイムアウトになった場合、ほかのセッションは無効化されず、引き続き有効となります。これは、1 つのセッションがタイムアウトしてもほかのセッションの可用性には影響しないからです。

この動作の当然の結果として、あるセッションがタイムアウトして、セッションを実行していた同じブラウザウィンドウから対応するアプリケーションにアクセスを試みる場合、再度認証を行う必要はありません。ただし、新しいセッションが作成されます。

シングルサインオングループに属するショッピングカートアプリケーションの例を挙げます。このグループにはほかに 2 つのアプリケーションが含まれます。ほかの 2 つのアプリケーションのセッションタイムアウト値は、ショッピングカートアプリケーションのセッションタイムアウト値を上回るものと仮定します。ショッピングカートアプリケーションのセッションがタイムアウトして、セッションを実行していた同じブラウザウィンドウからショッピングカートアプリケーションの実行を試みる場合、再度認証を行う必要はありません。ただし、以前のショッピングカートは失われていて、新しいショッピングカートを作成する必要があります。ほかの 2 つのアプリケーションは、ショッピングカートアプリケーションを実行していたセッションのタイムアウト後も変わらず動作し続けます。

同様に、ほかの 2 つのアプリケーションのどちらかに対応するセッションがタイムアウトしたとします。セッションを実行していた同じブラウザウィンドウからアプリケーションに接続している間は、再度認証を行う必要はありません。


この動作は、セッションがタイムアウトした場合にのみ当てはまります。シングルサインオンが有効になっていて、HttpSession.invalidate() を使用してセッションの 1 つを無効にする場合、シングルサインオングループに属するすべてのアプリケーションのセッションが無効になります。シングルサインオングループに属する任意のアプリケーションへのアクセスを試みる場合、再認証が必要であり、アプリケーションにアクセスするクライアントに対して新しいセッションが作成されます。


サンプルアプリケーション

次のディレクトリには、HTTP および SFSB セッションの持続性を示すサンプルアプリケーションが含まれています。

install_dir/samples/ee-samples/highavailability
install_dir/samples/ee-samples/failover


可用性設定に関する管理コンソールタスク

可用性が無効の場合の SFSB セッションストアの設定

可用性が無効になっている場合、ローカルファイルシステムは SFSB 状態の非活性化に使用されますが、持続性には使用されません。SFSB 状態が格納される場所を変更するには、EJB コンテナのセッション格納位置の設定を変更します。「一般的な EJB 設定の設定」を参照してください。

サーバーインスタンスレベルの可用性の設定

管理コンソールを使用して、サーバーインスタンスレベルの可用性を有効または無効にするには、次の手順に従います。

  1. ツリーコンポーネントで、「設定」ノードを開きます。
  2. 編集する設定のノードを開きます。
  3. 「可用性サービス」ノードを選択します。
  4. 「可用性サービス」ページに移動します。
  5. 「可用性サービス」ボックスにチェックマークを付けて、インスタンスレベルの可用性を有効にします。無効にするには、このボックスのチェックマークを外します。
  6. セッションの持続性のために HADB への接続に使用する JDBC リソースを変更した場合、格納プール名を変更できます。詳細については、『Reference Manual』のコマンド configure-ha-cluster の説明を参照してください。

  7. 「保存」ボタンをクリックします。
  8. 「インスタンス」ノードを開きます。
  9. サーバーインスタンスを選択します。
  10. 「サーバーインスタンス」ページに移動します。
  11. サーバーを再起動します。

Web コンテナレベルの可用性の設定

個別の Web アプリケーションの可用性を有効にする、または可用性設定をオーバーライドするには、sun-web.xml ファイルの設定を使用します。詳細については、『Developer's Guide』を参照してください。

管理コンソールを使用して、Web コンテナの可用性を有効または無効にするには、次の手順に従います。

  1. 「Web コンテナの可用性」タブを選択して、「可用性サービス」ボックスにチェックマークを付けます。無効にするには、このボックスのチェックマークを外します。次のオプション設定を変更することもできます。
    • 持続性のタイプ: 可用性が有効化されている Web アプリケーションのセッションの持続性メカニズムを指定します。使用できる値は、memory (持続性なし) file (ファイルシステム)、および ha (HADB) です。可用性が有効の場合、デフォルトは ha です。可用性が無効の場合、デフォルトは memory です。セッションの持続性が必要となる本稼動環境では、ha を使用します。

      持続性のタイプを memory に設定すると、サーバーインスタンスが正常にシャットダウンする場合に、sessionFilename プロパティを使用して HTTP セッション状態が格納されるファイルシステムの場所を指定できます。このオプションは内部テストには役立ちますが、本稼働環境ではサポートされません。

      持続性のタイプを file に設定すると、ディレクトリのプロパティを使用して HTTP セッション状態が格納されるファイルシステムの場所を指定できます。ファイルシステムに対する持続性は内部テストには役立ちますが、本稼働環境ではサポートされません。

    • 持続性の頻度: セッション状態を格納する頻度を指定します。持続性のタイプが ha の場合にのみ適用できます。使用できる値は次のとおりです。
      • web-method - セッション状態は、各 Web 要求の終了時に、クライアントに応答を返信する前に格納されます。このモードでは、障害発生時にセッション状態を完全に更新するための最良の保証が得られます。デフォルトです。
      • time-based - セッション状態が、reapIntervalSeconds ストアプロパティによって設定された頻度でバックグラウンドに格納されます。このモードでは、セッション状態が必ずしも完全に更新される保証は得られません。ただし、各要求後に状態が格納されないので、パフォーマンスが大幅に向上します。このプロパティの設定については、「ストアプロパティの設定」を参照してください。
    • 持続性の範囲: セッション状態を格納する範囲を指定します。持続性のタイプが ha の場合にのみ適用できます。使用できる値は次のとおりです。
      • session - 常にすべてのセッション状態が格納されます。このモードでは、セッションデータを分散可能な Web アプリケーションに正しく格納するための最良の保証が得られます。デフォルトです。
      • modified-session - セッション状態が変更された場合、すべてのセッション状態が格納されます。HttpSession.setAttribute() または HttpSession.removeAttribute() が呼び出された場合に、セッションが変更されたと見なします。属性が変更されるたびに、必ず setAttribute() を呼び出す必要があります。これは J2EE 仕様の要件ではありませんが、このモードを正しく動作させるために必要になります。
      • modified-attribute - 変更されたセッション属性だけが格納されます。このモードを正しく動作させるには、次のガイドラインに従う必要があります。

        セッション状態が変更されるたびに、setAttribute() を呼び出します。

        属性間で相互参照しないようにします。別個の各属性キーにあるオブジェクトグラフを直列化し、別々に格納します。別個の各キーにあるオブジェクト間に相互参照がある場合は、正常な直列化および非直列化は行われません。

        複数の属性間、または少なくとも読み取り専用属性と変更可能な属性間でセッション状態を分散します。

    • シングルサインオン状態: このボックスにチェックマークを付けて、シングルサインオン状態の持続性を有効にします。無効にするには、このボックスのチェックマークを外します。
    • HTTP セッションストア: セッションの持続性のために HADB への接続に使用する JDBC リソースを変更した場合、HTTP セッションストアを変更できます。詳細については、『Reference Manual』のコマンド configure-ha-cluster の説明を参照してください。
  2. 「保存」ボタンをクリックします。
  3. セッション持続性に影響する追加のオプション設定を変更するには、「Web コンテナセッションの設定」を参照してください。
  4. 「インスタンス」ノードを開きます。
  5. サーバーインスタンスを選択します。
  6. 「サーバーインスタンス」ページに移動します。
  7. サーバーを再起動します。

EJB コンテナレベルの可用性の設定

可用性を有効化し、個々のステートフルセッション Bean (SFSB) のチェックポイントを設定する方法を選択するには、sun-ejb-jar.xml ファイルの設定を使用します。詳細については、『Developer's Guide』を参照してください。

管理コンソールを使用して、EJB コンテナの可用性を有効または無効にするには、次の手順に従います。

  1. 「EJB コンテナの可用性」タブを選択して、「可用性サービス」ボックスにチェックマークを付けます。無効にするには、このボックスのチェックマークを外します。次のオプション設定を変更することもできます。
    • HA 持続性のタイプ: 可用性が有効化されている SFSB のセッションの持続性および非活性化メカニズムを指定します。使用できる値は、file (ファイルシステム) と ha (HADB) です。セッションの持続性が必要となる本稼動環境では、デフォルトの ha を使用します。
    • SFSB 持続性のタイプ: 可用性が有効化されていない SFSB の非活性化メカニズムを指定します。使用できる値は、file (デフォルト) と ha です。

      いずれかの持続性のタイプを file に設定すると、EJB コンテナによって非活性化されたセッション Bean が格納されるファイルシステムの場所が指定されます。「一般的な EJB 設定の設定」を参照してください。ファイルシステムに対するチェックポイントは内部テストには役立ちますが、本稼働環境ではサポートされません。

    • SFSB ストアプール名: セッションの持続性のために HADB への接続に使用する JDBC リソースを変更した場合、SFSB ストアプール名を変更できます。詳細については、『Reference Manual』のコマンド configure-ha-cluster の説明を参照してください。
  2. 「保存」ボタンをクリックします。
  3. 「インスタンス」ノードを開きます。
  4. サーバーインスタンスを選択します。
  5. 「サーバーインスタンス」ページに移動します。
  6. サーバーを再起動します。


前へ      目次      次へ     


Copyright 2004 - 2005 Sun Microsystems, Inc. All rights reserved.