第30章 セッションの外部化
30.1. JBoss EAP 6.x から JBoss Data Grid への HTTP セッションの外部化
Red Hat JBoss Data Grid は、HTTP セッションなどの、JBoss Enterprise Application Platform (EAP) のアプリケーション固有データの外部キャッシュコンテナーとして使用できます。これにより、アプリケーションとは独立したデータレイヤーのスケーリングが可能になり、さまざまなドメインに存在する可能性がある異なる EAP クラスターが同じ JBoss Data Grid クラスターからデータにアクセスできるようになります。また、他のアプリケーションは Red Hat JBoss Data Grid により提供されたキャッシュと対話できます。
以下の手順は、EAP のスタンドアロンモードとドメインモードの両方に適用されます。ただし、ドメインモードでは、各サーバーグループで一意のリモートキャッシュが設定されている必要があります。複数のサーバーグループは同じ Red Hat JBoss Data Grid クラスターを使用できますが、各リモートキャッシュは EAP サーバーグループに対して一意になります。
手順30.1 HTTP セッションの外部化
- リモートキャッシュコンテナーが EAP の
infinispan
サブシステムで定義されるようにします。以下の例では、remote-store
要素のcache
属性によって、リモート JBoss Data Grid サーバーのキャッシュ名を定義します。<subsystem xmlns="urn:jboss:domain:infinispan:1.5"> [...] <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" batching="true"> <remote-store cache="default" socket-timeout="60000" preload="true" passivation="false" purge="false" shared="true"> <remote-server outbound-socket-binding="remote-jdg-server1"/> <remote-server outbound-socket-binding="remote-jdg-server2"/> </remote-store> </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 version="6.0" 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_6_0.xsd"> <replication-config> <replication-trigger>SET</replication-trigger> <replication-granularity>SESSION</replication-granularity> <cache-name>jboss.infinispan.cacheContainer.default-cache</cache-name> </replication-config> <passivation-config> <use-session-passivation>true</use-session-passivation> <passivation-min-idle-time>900</passivation-min-idle-time> <passivation-max-idle-time>1800</passivation-max-idle-time> </passivation-config> </jboss-web>
注記
上記のパッシベーションタイムアウトは、通常のセッションが 15 分以内に破棄され、JBoss EAP のデフォルトの HTTP セッションタイムアウトが 30 分であることを前提として提供されています。これらの値は、各アプリケーションのワークロードに基いて調整する必要がある場合があります。