Red Hat Training

A Red Hat training course is available for Red Hat JBoss Enterprise Application Platform

第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 セッションの外部化

  1. リモートキャッシュコンテナーが 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>
  2. ネットワーク情報を 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>
  3. 上記の手順を各キャッシュコンテナーと各 Red Hat JBoss Data Grid サーバーで繰り返します。定義された各サーバーには、個別の < outbound-socket-binding> 要素が定義されて いる必要があります。
  4. パッシベーションおよびキャッシュ情報をアプリケーションの 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 セッションタイムアウトを使用することを前提とします。これらの値は、各アプリケーションのワークロードに基づいて調整する必要があります。