• 検索結果がありません。

分散可能な WEB セッション設定の DISTRIBUTABLE-WEB サブシステ ム

第 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

粒度よりも効率的ですが、クロス属性オブジェクト参照は維持しません。