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設定ガイドの ロードバランサーでのランク付けされたセッションアフィニティーの有効化 を参照してください。
セッション管理プロファイルを名前で参照するか、デプロイメント固有のセッション管理設定を指定して、デフォルトの分散可能なセッション管理動作をオーバーライドすることができます。詳細は、デフォルトの分散可能セッション管理動作のオーバーライド を参照してください。
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-cache-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
粒度よりも効率的ですが、クロス属性オブジェクト参照は維持しません。
-