ページの先頭行へ戻る
Enterprise Application Platform V2.0.0 GlassFishユーザーズガイド

5.17.4 セッションレプリケーションマネージャーの設定

ここでは、セッションレプリケーションの設定について説明します。

5.17.4.1 セッションレプリケーション機能の運用環境の構成例

セッションレプリケーション機能の構成例を以下に示します。

このような構成では、GlassFish Serverクラスターとセッションストアが独立して運用されています。そのため、マシン、GlassFish Serverクラスター、GlassFish Serverインスタンス(プロセス)のいずれかが一部ダウンした場合でも、残ったプロセスで継続してWebアプリケーションを運用することができます。

ただし、セッションストアがダウンしている間は、セッションレプリケーション機能が使用できません(セッションのバックアップ/リカバリーはできませんが、通常の業務継続は可能です)。そのため、アプリケーションの要件に沿ってセッションストアの信頼性を十分に確保する必要があります。

5.17.4.2 セッションレプリケーションマネージャーの設定方法

運用環境の例

設定方法の説明で使用する例を以下に示します。

マシンAの例

項目

マシンのホスト名

machine-a.com

GlassFish Serverクラスター名

Cluster001

GlassFish Serverインスタンス名

Cluster001_instance001

GlassFish Serverインスタンス名

Cluster001_instance002

設定方法

セッションレプリケーションマネージャーの設定を以下に示します。

設定項目

設定内容

Redisのクライアントライブラリーの設定

Redisのクライアントライブラリーを共通ディレクトリーに配置、またはクラスパスのサフィックスに設定します。

ライフサイクルモジュールの設定

ライフサイクルモジュールを作成します。

また、セッションレプリケーションマネージャーのプロパティをライフサイクルモジュールに設定します。

次のプロパティは必ず設定してください。

  • セッションストアのホスト名(storeHost)

  • セッションストアのリスニングポート(storePort)

制御用Valveの追加

仮想サーバー(server)に次のプロパティを設定します。

[プロパティ名]
valve_sr

[値]
com.fujitsu.appsrv.servlet.sessionreplication.manager.core.SessionReplicationValve
(固定値)

可用性サービスの設定

GlassFish Serverクラスターの可用性サービスの定義項目について、以下の値を設定します。

  • 可用性サービスの有効化
    [プロパティ名]
    availability-service.availability-enabled
    [値]
    true

  • Webコンテナの可用性の有効化
    [プロパティ名]
    availability-service.web-container-availability.availability-enabled
    [値]
    true

  • EJBコンテナの可用性の無効化
    [プロパティ名]
    availability-service.ejb-container-availability.availability-enabled
    [値]
    false

CDIの設定

GlassFish ServerクラスターのJava VMの定義項目について、以下のJava VMオプションを追加します。

[値]
-Dorg.jboss.weld.serialization.beanIdentifierIndexOptimization=false

SSL/TLSの設定

セッションストアのサーバー証明書を発行する認証局(CA)の証明書をトラストストアに格納します。

ユーザーアプリケーションのglassfish-web.xmlの設定

ユーザーアプリケーションのglassfish-web.xmlに、以下の設定を追加します。

[タグ・属性名]
<session-manager>タグのpersistence-type属性

[値]
redis

ユーザーアプリケーションの配備

ユーザーアプリケーションを配備します。

設定には、asadminコマンドを使用します。asadminコマンドの詳細については、「11.1 asadmin」を参照してください。

設定手順

Redisのクライアントライブラリーの設定

jedis、slf4j-api、slf4j-jdk14、commons-pool2のjarファイルを入手し、共通ディレクトリーに配置、またはクラスパスのサフィックスに設定します。

1.2.5 セッションストア」に記載されたバージョンに対応するファイルを入手してください。

注意

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の追加

制御用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の設定

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の設定

セッションストアとの通信の暗号化を行うには、SSL/TLSの設定が必要です。特に、GlassFishをSSLクライアントとして機能させるために、セッションストアのサーバー証明書を発行する認証局(CA)の証明書をトラストストアに格納する必要があります。利用するパブリッククラウドサービスに応じて、証明書を取得し設定してください。

GlassFishのSSL/TLS設定の詳細については、「6.3.3 SSL」を参照してください。

ユーザーアプリケーションのglassfish-web.xmlの設定

ユーザーアプリケーションの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

5.17.4.3 セッションレプリケーションマネージャーのプロパティ

ライフサイクルモジュールに設定可能なセッションレプリケーションマネージャーのプロパティを以下に示します。

項目名

設定内容

セッションストアのホスト名

[プロパティ名]
storeHost

[値]
セッションストアのホスト名

セッションストアのポート(注1)

[プロパティ名]
storePort

[値]
セッションストアのリスニングポート

セッションストアのユーザー名(注2)

[プロパティ名]
storeUserName

[値]
セッションストアのユーザー認証のユーザー名
プロパティ値を設定しない場合は認証にユーザー名は使われません。

セッションストアのパスワード(注2)

[プロパティ名]
storePassword

[値]
セッションストアのユーザー認証のパスワード
プロパティ値を設定しない場合は認証にパスワードは使われません。

通信クライアントのソケットタイムアウト時間

[プロパティ名]
jedisClientSocketTimeoutMillis

[値]
0~2147483647(ミリ秒)
デフォルト値: 60000

バックアップの契機

[プロパティ名]
backupMode

[値]
interval: 一定間隔
request: リクエスト終了時
デフォルト値: interval

バックアップの間隔

[プロパティ名]
backupInterval

[値]
1~2147483647(秒)
デフォルト値: 5

セッションロックの取得待ち時間

[プロパティ名]
sessionLockWaitTime

[値]
1~86400(秒)
デフォルト値: 360

セッションロックの存続期間

[プロパティ名]
sessionLockTTL

[値]
1~86400(秒)
デフォルト値: 480

セッションストアの無効セッションの存続期間

[プロパティ名]
invalidSessionTTL

[値]
1~2147483647(秒)
デフォルト値: 86400

セッションレプリケーショントレースログの有効化

[プロパティ名]
srTraceLogEnabled

[値]
true: セッションレプリケーショントレースログを有効にする
false: セッションレプリケーショントレースログを無効にする
デフォルト値: true

セッションレプリケーショントレースログの出力対象外のイベント

[プロパティ名]
srTraceLogExcludeEvents

[値]
セッションレプリケーショントレースログの各イベント名が指定可能。複数指定する場合のセパレータはカンマ(,)

セッションレプリケーショントレースログの出力対象外のフラグ

[プロパティ名]
srTraceLogExcludeFlags

[値]
セッションレプリケーショントレースログの各フラグ名が指定可能。複数指定する場合のセパレータはカンマ(,)

セッションレプリケーショントレースログのログサイズ

[プロパティ名]
srTraceLogRotationSize

[値]
1~2000(MB)
デフォルト値: 10

セッションレプリケーショントレースログの世代数

[プロパティ名]
srTraceLogMaxHistoryFiles

[値]
1~999(ファイル)
デフォルト値: 10

セッションレプリケーショントレースログの出力ディレクトリー

[プロパティ名]
srTraceLogDirectory

[値]
任意のディレクトリー
デフォルト値:

[運用資産格納ディレクトリー]\nodes\localhost-domain1\<GlassFish Serverインスタンス名>\logs\sr

[運用資産格納ディレクトリー]/nodes/localhost-domain1/<GlassFish Serverインスタンス名>/logs/sr

1) セッションストアとWebコンテナの間にファイアウォールを設置する場合、ここで設定したポート番号での通信が許可されるように、ファイアウォールの設定を行う必要があります。

2) セッションストアのユーザー認証情報
セッションストアのユーザー名やパスワードは、セッションストアの設定やセキュリティ要件に応じて適切に設定する必要があります。詳細については、「5.17.3 セッションストアの設定」を参照してください。
なお、セキュリティの観点上、「セッションストアのパスワード」は平文で設定すべきではないため、GlassFishのパスワードエイリアス機能を用いて暗号化することを検討してください。GlassFishのパスワードエイリアス機能については、Eclipse GlassFishドキュメントに含まれる「Security Guide」の「Administering Password Aliases」を参照してください。