ここでは、Session Registry Clientの設定について説明します。
構成
Session Registry ServerとSession Registry Clientの構成例を以下に示します。
この構成の場合、IJServerクラスタとSession Registry Serverがそれぞれ別々のマシンで運用されていますので、IJServerクラスタが動作しているマシンA、マシンBのどちらかがダウンした場合でも継続してWebアプリケーションを運用することができます。ただし、Session Registry Serverが動作しているマシンCがダウンしている間はセッションリカバリ機能が使用できません。(セッションのバックアップ/リカバリはできませんが、通常の業務継続は可能です。)
そのため、この構成で運用する場合、以下のように費用面での欠点があります。
Session Registry Server用に1台マシンを用意する必要があります。
Session Registry Serverには信頼性の高いマシンを使用する必要があります。
この構成の場合、IJServerクラスタの1つのサーバーインスタンスがダウンしている間は、ダウンしていないサーバーインスタンスにセッションがリカバリされるため、サーバーインスタンスがダウンしている間もWebアプリケーションを継続して運用することができます。
この構成の場合、IJServerクラスタが1つのマシンで運用されているため、マシンがダウンした場合はWebアプリケーションを継続して運用することはできません。
設定方法
設定方法の説明で使用する例を以下に示します。
マシンAの例
項目 | 値 | |
---|---|---|
マシンのIPアドレス | 192.0.2.2 | |
IJServerクラスタ名 | IJServer001 | |
サーバーインスタンス名 | IJServer001_instance001 | |
制御用HTTPリスナーのポート番号 | 15000 | |
サーバーインスタンス名 | IJServer001_instance002 | |
制御用HTTPリスナーのポート番号 | 15001 |
マシンBの説明は、「4.23.2 Session Registry Serverの設定」を参照してください。
Session Registry Clientとして使用する場合は、通常のIJServerクラスタの設定に加えて、以下の定義項目と、ユーザアプリケーションの定義が必要です。なお、IJServerクラスタを起動したまま定義項目を変更した場合、IJServerクラスタの再起動が必要です。
定義項目
項目名 | 設定箇所 | 設定内容 |
---|---|---|
ライフサイクルモジュールのクラス名 | ライフサイクルモジュール | [値] |
セッションのバックアップ先Session Registry Serverのアドレス | ライフサイクルモジュールのプロパティ | [プロパティ名] [値] |
セッションのバックアップ先Session Registry Serverのポート | [プロパティ名] [値] | |
バックアップの契機 | [プロパティ名] [値] | |
バックアップの間隔 | [プロパティ名] [値] | |
Session Registry Serverからの応答待ち時間 | [プロパティ名] [値] | |
セッションを使用しないURLの末尾 | [プロパティ名] [値] | |
制御用Valve | 仮想サーバー(server)のプロパティ | [プロパティ名] [値] |
制御用仮想サーバー名 | 制御用仮想サーバー | [値] |
制御用仮想サーバーが要求を受け付けるクライアントのアドレス | 制御用仮想サーバーのプロパティ | [プロパティ名] [値] |
制御用HTTPリスナーのポート番号 | IJServerクラスタの設定のシステムプロパティ | [プロパティ名] [値] デフォルト値:設定されていないため、サーバーインスタンスごとに一意になるように、IJServerクラスタの設定のデフォルト値と、サーバーインスタンスのオーバーライド値を設定します。 |
制御用HTTPリスナーのポート番号 | サーバーインスタンスのシステムプロパティ | |
制御用HTTPリスナーの名前 | 制御用HTTPリスナー | [値] |
制御用HTTPリスナーのWebコンテナへアクセスする運用形態 | 制御用HTTPリスナー | [プロパティ名] [値] 詳細については「8.8.3 ネットワーク設定の定義項目」を参照してください。 |
可用性サービスの有効化 | IJServerクラスタ | [プロパティ名] [値] |
Webコンテナの可用性の有効化 | IJServerクラスタ | [プロパティ名] [値] |
EJBコンテナの可用性の無効化 | IJServerクラスタ | [プロパティ名] [値] |
Java VMのオプション | IJServerクラスタのJava VMのオプション | [値] |
注)Session Registry ServerとWebコンテナの間にファイアウォールを設置する場合、ここで設定したポート番号のHTTP通信が許可されるように、ファイアウォールの設定を行う必要があります。
deployment descriptorの設定
設定するdeployment descriptor | 設定するタグ |
---|---|
Web application deployment descriptor (web.xml) | <distributable/> Web application deployment descriptor(web.xml)の詳細は、Java EE規約、およびそのサブ規約を参照してください。 |
Interstage Web application deployment descriptor (glassfish-web.xml) | <session-config> |
設定はasadminコマンドを使用します。asadminコマンドの詳細については、「第10章 Java EE 7運用コマンド」-「10.1 asadmin」を参照してください。
ライフサイクルモジュールを作成します。なお、ライフサイクルモジュールの定義名(以下例の src_module001)は任意の名前で指定可能です。また、IJServerクラスタを起動したままライフサイクルモジュールを作成した場合、IJServerクラスタを再起動する必要があります。
例
asadmin create-lifecycle-module --target IJServer001 --classname com.fujitsu.interstage.jservlet.sessionrecovery.client.startup.ISJE7Starter --property srsAddress=192.0.2.1:srsPort=5678 src_module001 |
制御用Valveを追加します。
例
asadmin set IJServer001.http-service.virtual-server.server.property.valve_sr=com.fujitsu.interstage.jservlet.sessionrecovery.client.core.isje7.ISJE7SessionRegistryValve |
制御用仮想サーバーを作成します。
asadmin create-virtual-serverサブコマンドを使用します。作成した仮想サーバーに対し、アクセスを許可するIPアドレスを正規表現で指定します。--hostsオプションには、Session Registry ClientのIPアドレスを指定します。なお、誤って制御用仮想サーバーを作成してしまった場合には、IJServerクラスタを作成し直してください。
例
asadmin create-virtual-server --target IJServer001 --hosts 192.0.2.2 __sessionrecovery asadmin set IJServer001.http-service.virtual-server.__sessionrecovery.property.allowRemoteAddress=192\.0\.2\.1 |
asadmin create-virtual-server --target IJServer001 --hosts 192.0.2.2 __sessionrecovery asadmin set IJServer001.http-service.virtual-server.__sessionrecovery.property.allowRemoteAddress=192\\.0\\.2\\.1 |
制御用HTTPリスナーのポート番号を設定します。
IJServerクラスタの設定のデフォルト値とサーバーインスタンスごとのオーバーライド値を設定します。値はサーバーインスタンスごとに異なる値を指定してください。
例
asadmin create-system-properties --target IJServer001-config SESSIONRECOVERY_PORT=15000 asadmin create-system-properties --target IJServer001_instance002 SESSIONRECOVERY_PORT=15001 |
注意
IJServerクラスタに対してシステムプロパティを定義する際は、1行目の例のように、設定名(IJServerクラスタ名-config)を指定してください。
制御用HTTPリスナーを作成します。
asadmin create-http-listenerサブコマンドを使用します。作成したHTTPリスナーが受け付けるリクエストはWebサーバを経由しないため、Webコンテナへアクセスする運用形態を「direct」にします。なお、誤って制御用HTTPリスナーを作成してしまった場合には、IJServerクラスタを作成し直してください。
例
asadmin create-http-listener --listeneraddress 0.0.0.0 --listenerport ${SESSIONRECOVERY_PORT} --defaultvs __sessionrecovery --target IJServer001 __sr-listener asadmin set IJServer001.network-config.protocols.protocol.__sr-listener.http.request-check=direct |
asadmin create-http-listener --listeneraddress 0.0.0.0 --listenerport \$\{SESSIONRECOVERY_PORT\} --defaultvs __sessionrecovery --target IJServer001 __sr-listener asadmin set IJServer001.network-config.protocols.protocol.__sr-listener.http.request-check=direct |
制御用アプリケーションを配備します。
例
asadmin deploy --virtualservers=__sessionrecovery --target IJServer001 C:\Interstage\F3FMisje7\glassfish\lib\install\applications\sr\srcapl\jssrc-servlets.war |
asadmin deploy --virtualservers=__sessionrecovery --target IJServer001 /opt/FJSVisje7/glassfish/lib/install/applications/sr/srcapl/jssrc-servlets.war |
注意
同一マシン内で、業務ごとにSession Registry Clientを運用することが可能です。その際は、業務ごとにIJServerクラスタを作成し、それぞれに対しアプリケーション名を変更して、制御用アプリケーションを配備してください。
複数運用するSession Registry Clientに作成するIJServerクラスタ名をそれぞれ“IJServer001”、“IJServer002”とした場合
asadmin deploy --virtualservers=__sessionrecovery --target IJServer001 --name jssrc-servlets001 C:\Interstage\F3FMisje7\glassfish\lib\install\applications\sr\srcapl\jssrc-servlets.war asadmin deploy --virtualservers=__sessionrecovery --target IJServer002 --name jssrc-servlets002 C:\Interstage\F3FMisje7\glassfish\lib\install\applications\sr\srcapl\jssrc-servlets.war |
asadmin deploy --virtualservers=__sessionrecovery --target IJServer001 --name jssrc-servlets001 /opt/FJSVisje7/glassfish/lib/install/applications/sr/srcapl/jssrc-servlets.war asadmin deploy --virtualservers=__sessionrecovery --target IJServer002 --name jssrc-servlets002 /opt/FJSVisje7/glassfish/lib/install/applications/sr/srcapl/jssrc-servlets.war |
可用性サービスとWebコンテナの可用性を有効にします。また、EJBコンテナの可用性を無効にします。
例
asadmin set IJServer001.availability-service.availability-enabled=true asadmin set IJServer001.availability-service.web-container-availability.availability-enabled=true asadmin set IJServer001.availability-service.ejb-container-availability.availability-enabled=false |
Java VMのオプションを設定します。
例
asadmin create-jvm-options --target IJServer001 \-Dorg.jboss.weld.serialization.beanIdentifierIndexOptimization=false |
asadmin create-jvm-options --target IJServer001 \\-Dorg.jboss.weld.serialization.beanIdentifierIndexOptimization=false |
ユーザアプリケーションのWeb application deployment descriptor (web.xml)を設定します。
web.xmlに以下の記述を追加してください。
<distributable/> |
ユーザアプリケーションのInterstage Web application deployment descriptor (glassfish-web.xml)を設定します。
glassfish-web.xmlに以下の記述を追加してください。
<session-config> <session-manager persistence-type="isjee-src"/> </session-config> |
ユーザアプリケーションを配備します。
ユーザアプリケーションでセッションリカバリ機能を使用する場合、アプリケーションの配備はasadminコマンドのdeployサブコマンドを使用し、--availabilityenabledオプションと--virtualserversオプションを指定します。
注意
IJServerクラスタ内にセッションリカバリを使用するアプリケーションがある場合、同じIJServerクラスタ内のセッションリカバリを使用しないアプリケーションについても配備時に--virtualserversオプションで、配備先の仮想サーバー「server」を指定する必要があります。
例
asadmin deploy --availabilityenabled=true --virtualservers=server --target IJServer001 C:\sample.war |
asadmin deploy --availabilityenabled=true --virtualservers=server --target IJServer001 /home/sample.war |