第38章 セッションの外部化
38.1. JBoss EAP から JBoss Data Grid への HTTP セッションの外部化
Red Hat JBoss Data Grid は、HTTP セッションなどの、JBoss Enterprise Application Platform (EAP) のアプリケーション固有データの外部キャッシュコンテナーとして使用できます。これにより、アプリケーションとは独立したデータレイヤーのスケーリングが可能になり、さまざまなドメインに存在する可能性がある異なる EAP クラスターが同じ JBoss Data Grid クラスターからデータにアクセスできるようになります。また、他のアプリケーションは Red Hat JBoss Data Grid により提供されたキャッシュと対話できます。
注記
以下の手順は、JBoss EAP 7.0 および JBoss Data Grid 7.0 で機能するようテストされ、確認されています。HTTP セッションを JBoss Data Grid 7.x で外部化する場合、これらのみを使用するか、または各製品の各種バージョンを後で使用します。
以下の手順は、EAP のスタンドアロンモードとドメインモードの両方に適用されます。ただし、ドメインモードでは、各サーバーグループで一意のリモートキャッシュが設定されている必要があります。複数のサーバーグループは同じ Red Hat JBoss Data Grid クラスターを使用できますが、各リモートキャッシュは EAP サーバーグループに対して一意になります。
注記
分散可能なアプリケーションごとに完全に新しいキャッシュを作成する必要があります。新しいキャッシュは Web などの既存のキャッシュコンテナーに作成できます。
手順38.1 HTTP セッションの外部化
- リモートキャッシュコンテナーが EAP の
infinispan
サブシステムで定義されるようにします。以下の例では、remote-store
要素のcache
属性によって、リモート JBoss Data Grid サーバーのキャッシュ名を定義します。<subsystem xmlns="urn:jboss:domain:infinispan:4.0"> [...] <cache-container name="cacheContainer" default-cache="default-cache" module="org.jboss.as.clustering.web.infinispan" statistics-enabled="true"> <transport lock-timeout="60000"/> <replicated-cache name="default-cache" mode="SYNC"> <locking isolation="REPEATABLE_READ"/> <transaction mode="BATCH"/> <remote-store remote-servers="remote-jdg-server1 remote-jdg-server2" cache="default" socket-timeout="60000" preload="true" passivation="false" purge="false" shared="true"/> </replicated-cache> </cache-container> </subsystem>
- ネットワーク情報を
socket-binding-group
に追加することにより、リモート Red Hat JBoss Data Grid サーバーの場所を定義します。<socket-binding-group ...> <outbound-socket-binding name="remote-jdg-server1"> <remote-destination host="JDGHostName1" port="11222"/> </outbound-socket-binding> <outbound-socket-binding name="remote-jdg-server2"> <remote-destination host="JDGHostName2" port="11222"/> </outbound-socket-binding> </socket-binding-group>
- 各キャッシュコンテナーと各 Red Hat JBoss Data Grid サーバーに対して上記の手順を繰り返します。定義された各サーバーでは、個別の
<outbound-socket-binding>
要素が定義されている必要があります。 - パッシベーションとキャッシュ情報をアプリケーションの
jboss-web.xml
に追加します。以下の例では、cacheContainer
はキャッシュコンテナーの名前であり、default-cache
はこのコンテナーにあるデフォルトのキャッシュの名前です。サンプルファイルを以下に示します。<?xml version="1.0" encoding="UTF-8"?> <jboss-web xmlns="http://www.jboss.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.jboss.com/xml/ns/javaee http://www.jboss.org/j2ee/schema/jboss-web_10_0.xsd" version="10.0"> <replication-config> <replication-granularity>SESSION</replication-granularity> <cache-name>cacheContainer.default-cache</cache-name> </replication-config> </jboss-web>
注記
上記のパッシベーションタイムアウトは、通常のセッションが 15 分以内に破棄され、JBoss EAP のデフォルトの HTTP セッションタイムアウトが 30 分であることを前提として提供されています。これらの値は、各アプリケーションのワークロードに 基づいて調整する必要がある場合があります。