ここでは、セッションレプリケーションの設定について説明します。
セッションレプリケーション機能の構成例を以下に示します。
このような構成では、GlassFish Serverクラスターとセッションストアが独立して運用されています。そのため、マシン、GlassFish Serverクラスター、GlassFish Serverインスタンス(プロセス)のいずれかが一部ダウンした場合でも、残ったプロセスで継続してWebアプリケーションを運用することができます。
ただし、セッションストアがダウンしている間は、セッションレプリケーション機能が使用できません(セッションのバックアップ/リカバリーはできませんが、通常の業務継続は可能です)。そのため、アプリケーションの要件に沿ってセッションストアの信頼性を十分に確保する必要があります。
運用環境の例
設定方法の説明で使用する例を以下に示します。
マシンAの例
項目 | 値 | |
---|---|---|
マシンのホスト名 | machine-a.com | |
GlassFish Serverクラスター名 | Cluster001 | |
GlassFish Serverインスタンス名 | Cluster001_instance001 | |
GlassFish Serverインスタンス名 | Cluster001_instance002 |
設定方法
セッションレプリケーションマネージャーの設定を以下に示します。
設定項目 | 設定内容 |
---|---|
Redisのクライアントライブラリーの設定 | Redisのクライアントライブラリーを共通ディレクトリーに配置、またはクラスパスのサフィックスに設定します。 |
ライフサイクルモジュールの設定 | ライフサイクルモジュールを作成します。 また、セッションレプリケーションマネージャーのプロパティをライフサイクルモジュールに設定します。 次のプロパティは必ず設定してください。
|
制御用Valveの追加 | 仮想サーバー(server)に次のプロパティを設定します。 [プロパティ名] [値] |
可用性サービスの設定 | GlassFish Serverクラスターの可用性サービスの定義項目について、以下の値を設定します。
|
CDIの設定 | GlassFish ServerクラスターのJava VMの定義項目について、以下のJava VMオプションを追加します。 [値] |
SSL/TLSの設定 | セッションストアのサーバー証明書を発行する認証局(CA)の証明書をトラストストアに格納します。 |
ユーザーアプリケーションのglassfish-web.xmlの設定 | ユーザーアプリケーションのglassfish-web.xmlに、以下の設定を追加します。 [タグ・属性名] [値] |
ユーザーアプリケーションの配備 | ユーザーアプリケーションを配備します。 |
設定には、asadminコマンドを使用します。asadminコマンドの詳細については、「11.1 asadmin」を参照してください。
設定手順
jedis、slf4j-api、slf4j-jdk14、commons-pool2のjarファイルを入手し、共通ディレクトリーに配置、またはクラスパスのサフィックスに設定します。
「1.2.5 セッションストア」に記載されたバージョンに対応するファイルを入手してください。
参照
Redisのクライアントライブラリーの入手先
jedis
slf4j-api
slf4j-jdk14
commons-pool2
注意
OSSの利用については、適用された使用条件(ライセンス条件)に従い、お客様の責任において入手、ご利用ください。
例
クラスパスのサフィックスに指定する場合
asadmin set Cluster001.java-config.isjee-classpath-suffix=C:\\work\\jedis-5.1.0.jar;C:\\work\\slf4j-api-1.7.36.jar;C:\\work\\slf4j-jdk14-1.7.36.jar;C:\\work\\commons-pool2-2.12.0.jar |
asadmin set Cluster001.java-config.isjee-classpath-suffix=/work/jedis-5.1.0.jar:/work/slf4j-api-1.7.36.jar:/work/slf4j-jdk14-1.7.36.jar:/work/commons-pool2-2.12.0.jar |
ライフサイクルモジュールを作成します。
なお、ライフサイクルモジュールの定義名(以下例の srm_module001)は任意の名前で指定可能です。
また、GlassFish Serverクラスターを起動したままライフサイクルモジュールを作成した場合、GlassFish Serverクラスターを再起動する必要があります。
ライフサイクルモジュールに設定可能なプロパティについては、「5.17.4.3 セッションレプリケーションマネージャーのプロパティ」を参照してください。
例
asadmin create-lifecycle-module --target Cluster001 --classname com.fujitsu.appsrv.servlet.sessionreplication.manager.startup.Starter --property storeHost=sessionstore.com:storePort=6379 srm_module001 |
制御用Valveを追加します。
例
asadmin set Cluster001.http-service.virtual-server.server.property.valve_sr=com.fujitsu.appsrv.servlet.sessionreplication.manager.core.SessionReplicationValve |
注意
セッションレプリケーションは、デフォルトの仮想サーバー「server」でのみ利用可能です。そのため、制御用Valveはデフォルトの仮想サーバー「server」に設定してください。
可用性サービスとWebコンテナの可用性を有効にします。また、EJBコンテナの可用性を無効にします。
例
asadmin set Cluster001.availability-service.availability-enabled=true asadmin set Cluster001.availability-service.web-container-availability.availability-enabled=true asadmin set Cluster001.availability-service.ejb-container-availability.availability-enabled=false |
CDIのBean識別子インデックス最適化を無効に設定するために、Java VMオプションを設定します。
例
asadmin create-jvm-options --target Cluster001 \-Dorg.jboss.weld.serialization.beanIdentifierIndexOptimization=false |
asadmin create-jvm-options --target Cluster001 \\-Dorg.jboss.weld.serialization.beanIdentifierIndexOptimization=false |
セッションストアとの通信の暗号化を行うには、SSL/TLSの設定が必要です。特に、GlassFishをSSLクライアントとして機能させるために、セッションストアのサーバー証明書を発行する認証局(CA)の証明書をトラストストアに格納する必要があります。利用するパブリッククラウドサービスに応じて、証明書を取得し設定してください。
参照
GlassFishのSSL/TLS設定の詳細については、「6.3.3 SSL」を参照してください。
ユーザーアプリケーションのglassfish-web.xmlを設定します。
glassfish-web.xmlに、以下の記述を追加してください。
<session-config> <session-manager persistence-type="redis"> <manager-properties> <property name="reapIntervalSeconds" value="60" /> </manager-properties> </session-manager> </session-config> |
セッションレプリケーション機能では、glassfish-web.xmlの<session-manager>タグのpersistence-type属性にredisを指定すると、Webアプリケーションのweb.xmlおよびWEB-INF/lib配下のjarファイルに<distributable>タグが設定されているかどうかにかかわらず、Webアプリケーションがdistributableとみなして動作します。セッションレプリケーション機能を有効にする場合には、<session-manager>タグのpersistence-type属性にredisを必ず設定してください。
<manager-properties>タグのreapIntervalSecondsプロパティの指定は必須ではありません(デフォルト: 60秒)。値を変更する場合に指定してください。
ユーザーアプリケーションを配備します。
ユーザーアプリケーションでセッションレプリケーション機能を使用する場合、アプリケーションの配備はasadminコマンドのdeployサブコマンドを使用し、--availabilityenabledオプションを指定します。
例
asadmin deploy --availabilityenabled=true --target Cluster001 C:\sample.war |
asadmin deploy --availabilityenabled=true --target Cluster001 /home/sample.war |
ライフサイクルモジュールに設定可能なセッションレプリケーションマネージャーのプロパティを以下に示します。
項目名 | 設定内容 |
---|---|
セッションストアのホスト名 | [プロパティ名] [値] |
セッションストアのポート(注1) | [プロパティ名] [値] |
セッションストアのユーザー名(注2) | [プロパティ名] [値] |
セッションストアのパスワード(注2) | [プロパティ名] [値] |
通信クライアントのソケットタイムアウト時間 | [プロパティ名] [値] |
バックアップの契機 | [プロパティ名] [値] |
バックアップの間隔 | [プロパティ名] [値] |
セッションロックの取得待ち時間 | [プロパティ名] [値] |
セッションロックの存続期間 | [プロパティ名] [値] |
セッションストアの無効セッションの存続期間 | [プロパティ名] [値] |
セッションレプリケーショントレースログの有効化 | [プロパティ名] [値] |
セッションレプリケーショントレースログの出力対象外のイベント | [プロパティ名] [値] |
セッションレプリケーショントレースログの出力対象外のフラグ | [プロパティ名] [値] |
セッションレプリケーショントレースログのログサイズ | [プロパティ名] [値] |
セッションレプリケーショントレースログの世代数 | [プロパティ名] [値] |
セッションレプリケーショントレースログの出力ディレクトリー | [プロパティ名] [値] |
注1) セッションストアとWebコンテナの間にファイアウォールを設置する場合、ここで設定したポート番号での通信が許可されるように、ファイアウォールの設定を行う必要があります。
注2) セッションストアのユーザー認証情報
セッションストアのユーザー名やパスワードは、セッションストアの設定やセキュリティ要件に応じて適切に設定する必要があります。詳細については、「5.17.3 セッションストアの設定」を参照してください。
なお、セキュリティの観点上、「セッションストアのパスワード」は平文で設定すべきではないため、GlassFishのパスワードエイリアス機能を用いて暗号化することを検討してください。GlassFishのパスワードエイリアス機能については、Eclipse GlassFishドキュメントに含まれる「Security Guide」の「Administering Password Aliases」を参照してください。