第25章 セッションの外部化
25.1. JBoss EAP から JBoss Data Grid への HTTP セッションの外部化
Red Hat JBoss Data Grid は、Red Hat JBoss Enterprise Application Platform(JBoss EAP)6.4 以降で、HTTP セッションなどのアプリケーション固有のデータの外部キャッシュコンテナーとして使用できます。これにより、アプリケーションとは独立したデータレイヤーのスケーリングが可能になり、さまざまなドメインに存在する可能性がある異なる EAP クラスターが同じ JBoss Data Grid クラスターからデータにアクセスできるようになります。また、他のアプリケーションは Red Hat JBoss Data Grid によって提供されたキャッシュと対話できます。
以下の手順は、EAP のスタンドアロンモードとドメインモードの両方に適用されますが、ドメインモードでは、各サーバーグループに一意のリモートキャッシュを設定する必要があります。複数のサーバーグループは同じ Red Hat JBoss Data Grid クラスターを使用できますが、各リモートキャッシュは EAP サーバーグループに固有のものです。
注記
分散可能なアプリケーションごとに完全に新しいキャッシュを作成する必要があります。これは既存のキャッシュコンテナー(web など)で作成できます。
手順25.1 HTTP セッションの外部化
- リモートキャッシュコンテナーが EAP の
infinispan
サブシステムで定義されているようにしてください。以下の例では、remote-store
要素のcache
属性はリモート JBoss Data Grid サーバーのキャッシュ名を定義します。<subsystem xmlns="urn:jboss:domain:infinispan:4.0"> [...] <cache-container name="web" default-cache="dist" module="org.jboss.as.clustering.web.infinispan" statistics-enabled="true"> <transport lock-timeout="60000"/> <invalidation-cache name="jdg" 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
に追加します。以下の例では、web
はキャッシュコンテナーの名前で、jdg
はこのコンテナーにあるデフォルトキャッシュの名前です。ファイルの例を以下に示します。<?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>web.jdg</cache-name> </replication-config> </jboss-web>
注記上記のパッシベーションタイムアウトは、典型的なセッションが 15 分以内に破棄され、JBoss EAP の 30 分間でデフォルトの HTTP セッションタイムアウトを使用することを前提とします。これらの値は、各アプリケーションのワークロードに基づいて調整する必要があります。