第10章 Web アプリケーションのクラスター化
10.1. セッションレプリケーション
10.1.1. HTTP セッションレプリケーション
10.1.2. Web セッションキャッシュについて
standalone-ha.xml
プロファイル、または管理対象ドメインプロファイル ha
または full-ha
を含む任意の HA プロファイルを使用するときに設定できます。最も一般的に設定される要素は、キャッシュモードと分散キャッシュのキャッシュ所有者の数です。所有者
パラメーターは、DIST
モード。
キャッシュモード
キャッシュモードは次のいずれかになりますREPL
(デフォルト) またはDIST
。
- REPL
- The
REPL
モードは、キャッシュ全体をクラスター内の他のすべてのノードに複製します。これは最も安全なオプションですが、より多くのオーバーヘッドが発生します。 - DIST
- The
DIST
モードは、以前の実装で提供された バディモード に似ています。所有者
パラメーターで指定されたノード数にキャッシュを分散することにより、オーバーヘッドを削減します。この所有者の数のデフォルトは2
です。
所有者
所有者
パラメーターは、セッションの複製されたコピーを保持するクラスターノードの数を制御します。デフォルトは 2
です。
10.1.3. Web セッションキャッシュを設定する
REPL
。使用したい場合DIST
モードの場合は、管理 CLI で次の 2 つのコマンドを実行します。別のプロファイルを使用する場合は、コマンドでプロファイル名を変更してください。スタンドアロンサーバーを使用する場合は、コマンドの /profile=ha
部分を削除してください。
手順10.1 Web セッションキャッシュを設定する
デフォルトのキャッシュモードをに変更します
DIST
。/profile=ha/subsystem=infinispan/cache-container=web/:write-attribute(name=default-cache,value=dist)
分散キャッシュの所有者の数を設定します。
以下のコマンドは所有者の数を5
に設定します。デフォルトは2
です。/profile=ha/subsystem=infinispan/cache-container=web/distributed-cache=dist/:write-attribute(name=owners,value=5)
デフォルトのキャッシュモードをに戻します
REPL
。/profile=ha/subsystem=infinispan/cache-container=web/:write-attribute(name=default-cache,value=repl)
サービスを再起動します。
Web キャッシュモードを変更した後、サーバーを再起動する必要があります。
結果
サーバーはセッションレプリケーション用に設定されています。独自のアプリケーションでセッションレプリケーションを使用するには、次のトピックを参照してください。「アプリケーションにおけるセッションレプリケーションの有効化」。
10.1.4. アプリケーションにおけるセッションレプリケーションの有効化
概要
JBoss EAP 6 高可用性 (HA) 機能を利用するには、アプリケーションを配布可能に設定する必要があります。この手順では、その方法を示し、次に、使用できるいくつかの高度な設定オプションについて説明します。
手順10.2 アプリケーションを配布可能にする
必須: アプリケーションが配布可能であることを示します。
アプリケーションが配布可能でないと、そのセッションは配布されません。アプリケーションのweb.xml
記述子ファイルの<web-app>
タグ内に<distributable/>
要素を追加します。以下は例です。例10.1 配布可能なアプリケーションの最低限の設定
<?xml version="1.0"?> <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4"> <distributable/> </web-app>
必要に応じて、デフォルトのレプリケーション動作を変更します。
セッションレプリケーションに影響を与える値のいずれかを変更する場合は、アプリケーションのjboss-web.xml
ファイルの<jboss-web>
要素の子要素である<replication-config>
要素内でそれらをオーバーライドできます。該当する要素で、デフォルト値をオーバーライドする場合のみ値を含めます。次の例は、すべてのデフォルト設定をリストし、その後に最も一般的に変更されるオプションを説明する表が続きます。例10.2 例:
<replication-config>
の値<!DOCTYPE jboss-web PUBLIC "-//JBoss//DTD Web Application 5.0//EN" "http://www.jboss.org/j2ee/dtd/jboss-web_5_0.dtd"> <jboss-web> <replication-config> <replication-trigger>SET_AND_NON_PRIMITIVE_GET</replication-trigger> <replication-granularity>SESSION</replication-granularity> <use-jk>false</use-jk> <max-unreplicated-interval>30</max-unreplicated-interval> <snapshot-mode>INSTANT</snapshot-mode> <snapshot-interval>1000</snapshot-interval> <session-notification-policy>com.example.CustomSessionNotificationPolicy</session-notification-policy> </replication-config> </jboss-web>
オプション
|
Description
|
---|---|
<replication-trigger>
|
クラスター全体でセッションデータレプリケーションをトリガーする条件を制御します。このオプションが必要なのは、セッションから可変オブジェクト (セッション属性として格納されている) にアクセスした後、メソッドがない限り、コンテナーはオブジェクトが変更されて複製する必要があるかどうかを明確に知る方法がないためです。
setAttribute() 直接呼び出されます。
設定に関係なく、を呼び出すことでいつでもセッションレプリケーションをトリガーできます
setAttribute() 。
|
<replication-granularity>
|
複製されるデータの粒度を決定します。デフォルト値は
SESSION ですが、代わりにATTRIBUTE を設定すると、ほとんどの属性は変更されずにセッションのパフォーマンスを向上させることができます。
注記
JBoss EAP 6 では FIELD はサポートされていません。
|
オプション
|
Description
|
---|---|
<use-jk>
|
次のようなロードバランサーを想定するかどうか
mod_cluster 、mod_jk 、またmod_proxy 使用中です。デフォルトは false です。true に設定されている場合、コンテナーは各リクエストに関連付けられているセッション ID を調べ、jvmRoute フェイルオーバーがある場合は、セッション ID の一部。
|
<max-unreplicated-interval>
|
セッションが変更されていないと見なされた場合でも、セッションがアクセスされた後、セッションのタイムスタンプのレプリケーションをトリガーする前に待機する最大間隔 (秒単位)。これにより、クラスターノードが各セッションのタイムスタンプを認識し、フェイルオーバー中に複製されていないセッションが誤って期限切れになることがなくなります。また、メソッドの呼び出しに正しい値を信頼できることも保証します
HttpSession.getLastAccessedTime() フェイルオーバー中。
デフォルトでは、値は指定されていません。値が
0 の場合、セッションにアクセスするたびにタイムスタンプが複製されます。値が -1 の場合、要求中の他のアクティビティーがレプリケーションをトリガーした場合にのみ、タイムスタンプがレプリケートされます。より大きい正の値HttpSession.getMaxInactiveInterval() 設定ミスとして扱われ、0 に変換されます。
|
<snapshot-mode>
|
セッションを他のノードに複製するタイミングを指定します。デフォルトは
INSTANT で、他の可能な値は INTERVAL です。
インスタント モードでは、変更はリクエスト処理スレッドを使用して、リクエストの最後に複製されます。<snapshot-interval> オプションは無視されます。
INTERVAL モードでは、バックグラウンドタスクは <snapshot-interval> で指定された間隔で実行され、変更されたセッションを複製します。
|
<snapshot-interval>
| <snapshot-mode> の値に INTERVAL を使用するときに、変更されたセッションが複製される間隔 (ミリ秒単位)。
|
<session-notification-policy>
|
インターフェイスの実装の完全修飾クラス名
ClusteredSessionNotificationPolicy これは、サーブレット仕様通知が登録済みに発行されるかどうかを管理しますHttpSessionListener 、HttpSessionAttributeListener 、またHttpSessionBindingListener 。
|