第 6 章 WEB アプリケーションのクラスター化
6.7. 分散可能な WEB セッション設定の DISTRIBUTABLE-WEB サブシステ ム
distributable-web サブシステムは、柔軟で分散可能な Web セッション設定を実現します。このサブシ ステムは、一連の分散可能な Web セッション管理プロファイルを定義します。これらのプロファイル のいずれかが、デフォルトのプロファイルとして指定されます。これは、分散可能な Web アプリケー ションのデフォルト動作を定義します。例を以下に示します。
[standalone@embedded /] /subsystem=distributable-web:read-attribute(name=default-session-management)
{
"outcome" => "success", "result" => "default"
}
デフォルトのセッション管理では、以下の例が示すように、Web セッションデータを Infinispan キャッ シュに格納します。
[standalone@embedded /] /subsystem=distributable-web/infinispan-session-management=default:read-resource
{
"outcome" => "success", "result" => {
"cache" => undefined, "cache-container" => "web", "granularity" => "SESSION",
"affinity" => {"primary-owner" => undefined}
} }
この例と利用できる値で使用される属性は以下になります。
cache: 関連するキャッシュコンテナー内のキャッシュ。Web アプリケーションのキャッシュ
は、このキャッシュの設定に基づいています。定義されていない場合は、関連付けられた キャッシュコンテナーのデフォルトキャッシュが使用されます。
cache-container: セッションデータが格納される Infinispan サブシステムで定義されたキャッ シュコンテナー。
granularity: セッションマネージャーがセッションを個別のキャッシュエントリーにマッピング
する方法を定義します。以下の値が使用できます。
SESSION: 単一のキャッシュエントリー内にすべてのセッション属性を保存しま
す。ATTRIBUTE 粒度よりも大きいですが、クロス属性オブジェクト参照を保持します。
ATTRIBUTE: 各セッション属性を個別のキャッシュエントリー内に保存します。SESSION
粒度よりも効率的ですが、クロス属性オブジェクト参照は維持しません。
affinity: Web リクエストがサーバーに必要とするアフィニティーを定義します。関連する Web セッションのアフィニティーでは、セッション ID に追加されるルートを生成するアルゴリズム が決まります。以下の値が使用できます。
affinity=none: Web リクエストには、いかなるノードへのアフィニティーもありません。
Web セッションの状態がアプリケーションサーバー内で維持されていない場合は、これを 使用します。
affinity=local: Web リクエストには、セッションに対する要求を最後に処理したサーバーに アフィニティーが設定されます。このオプションは、スティッキーセッションの動作に一 致します。
affinity=primary-owner: Web リクエストには、セッションのプライマリー所有者に対して アフィニティーがあります。これは、この分散セッションマネージャーのデフォルトのア フィニティーです。バッキングキャッシュが分散または複製されていない場合
は、affinity=local と同じように動作します。
affinity=ranked: Web リクエストには、プライマリーおよびバックアップ所有者を含む一覧 の先頭のメンバーと、最後にセッションを処理したメンバーのアフィニティーがありま す。
affinity=ranked delimiter: エンコーディングしたセッション識別子内の個別のルートを分 離するために使用される区切り文字。
affinity=ranked max routes: セッション識別子にエンコードするルートの最大数。
複数の順序付けされたルートを持つセッションアフィニティーを設定するには、ランク付けされたセッ ションアフィニティーをロードバランサーで有効にする必要があります。詳細は、JBoss EAP『設定ガ設定ガ イド
イド』の「Enabling Ranked Session Affinity in Your Load Balancer」を参照してください。
セッション管理プロファイルを名前で参照するか、デプロイメント固有のセッション管理設定を指定し て、デフォルトの分散可能なセッション管理動作をオーバーライドすることができます。詳細は、
「Overide Default Distributable Session Management Behavior」を参照してください。
6.7.1. リモート Red Hat Data Grid での Web セッションデータの格納
distributable-web サブシステムを設定すると、HotRod プロトコルを使用して、リモート Red Hat
Data Grid クラスターに Web セッションデータを格納できます。Web セッションデータをリモートク
ラスターに格納すると、キャッシュレイヤーはアプリケーションサーバーとは独立してスケーリングで きます。
設定例:
[standalone@embedded
/]/subsystem=distributable-web/hotrod-session-management=ExampleRemoteSessionStore:add(remote-container=datagrid, cache-configuration=__REMOTE_CACHE_CONFIG_NAME__, granularity=ATTRIBUTE)
{
"outcome" => "success"
}
この例と利用できる値で使用される属性は以下になります。
remote-cache-container: web セッションデータを格納するために Infinispan サブシステムに 定義されたリモートキャッシュコンテナー。
cache-configuration: Red Hat Data Grid クラスターのキャッシュ設定の名前。新しく作成され たデプロイメント固有のキャッシュは、この設定に基づいています。
名前に一致するリモートキャッシュ設定が見つからない場合は、リモートコンテナーに新しい キャッシュ設定が作成されます。
granularity: セッションマネージャーがセッションを個別のキャッシュエントリーにマッピング
する方法を定義します。以下の値が使用できます。
SESSION: 単一のキャッシュエントリー内にすべてのセッション属性を保存しま
す。ATTRIBUTE 粒度よりも大きいですが、クロス属性オブジェクト参照を保持します。
ATTRIBUTE: 各セッション属性を個別のキャッシュエントリー内に保存します。SESSION
粒度よりも効率的ですが、クロス属性オブジェクト参照は維持しません。