intra-mart Accel Platform セットアップガイド 第21版 2017-04-01

11.5. セッション管理モジュール

11.5.1. 概要

../../../_images/overview.png
セッション管理モジュールは、アプリケーションサーバのセッション管理機能を利用せずに intra-mart Accel Platform にてセッション管理を行う機能です。
セッション管理モジュールでは、セッション情報をオンメモリで管理します。永続化設定を行うことでデータベースにセッション情報を永続化することも可能です。永続化設定を行うことにより、アプリケーションサーバの再起動を行った場合でも再起動前のセッション情報が参照可能です。

コラム

セッション管理モジュールを利用した場合、アプリケーションサーバのセッションに関する設定が無視されます。

11.5.1.1. クラスタリング

../../../_images/backup.png
クラスタ構成を採用している場合セッション情報は各ノードに分散して保持します。また、1つのセッション情報はメイン/バックアップの2つが異なるノードにてそれぞれ保持されます。このため永続化設定を行わない環境においても、単一のノードが停止した場合にクラスタの再構築により停止したノードが保持していた情報が復元されます。

11.5.2. 前提条件

  • アプリケーションサーバには Resin を使用してください。

  • 以下のモジュールが必要です。
    • セッション管理モジュール
    • セッション管理 組み込みHazelcast連携

11.5.3. セットアップ

11.5.3.1. セッション管理設定

IM-Juggling で以下の設定を行います。
  • セッション管理モジュール - セッション管理設定 session-store-config.xml
詳細は設定ファイルリファレンスの「セッション管理設定」を参照してください。

11.5.3.2. Hazelcast設定

IM-Juggling で以下の設定を行います。
  • セッション管理 組み込みHazelcast連携 - Hazelcast設定 hazelcast-config.xml
詳細は設定ファイルリファレンスの「Hazelcast設定」を参照してください。

11.5.4. クラスタ構成場合

  1. TCPを採用している場合、Hazelcast設定の以下の要素をノードの台数分指定します。

    hazelcast-config/network/join/TCP/member-list/member

      <network>
        <join>
          <TCP>
            <member-list>
              <member>127.248.100.1</member>
              <member>127.248.100.2</member>
              <member>127.248.100.3</member>
            </member-list>
          </TCP>
        </join>
      </network>
    
  2. Hazelcast設定の以下の要素にノード間通信に利用するスレッド数を指定します。

    hazelcast-config/base/io-thread-count

      <base>
        <id>im_session_store</id>
        <io-thread-count>3</io-thread-count>
      </base>
    

11.5.5. セッション情報の永続化を行う場合

  1. セッション情報の永続化に利用するデータソースを用意します。

    セッション情報の永続化先用にアプリケーションサーバのデータソース設定を追加してください。
    以下は resin-web.xml<database> でデータソース設定を行う例です。
      <database jndi-name="jdbc/session-store">
        <driver>
          <type>org.postgresql.Driver</type>
          <url>jdbc:postgresql://domain:5432/session_store</url>
          <user>session_store</user>
          <password>session_store</password>
        </driver>
        <max-connections>1024</max-connections>
        <prepared-statement-cache-size>8</prepared-statement-cache-size>
      </database>
    

    注意

    セッション管理機能で利用するデータソースと他の機能で利用するデータソースが同時に利用された場合、永続化するセッション情報に不整合が発生する可能性があります。 セッション情報の永続化に利用するデータソースはセッション情報管理専用のデータソースを用意してください。

    注意

    データソースへの書き込み/読み込みはアプリケーションサーバへのリクエストの都度発生する可能性があります。このため、このデータソースへのアクセスが遅延するとリクエスト処理のパフォーマンス劣化が発生してしまいます。運用環境に応じてデータベースのチューニングを行った上でご利用ください。

    注意

    データソースへの書き込み/読み込みはアプリケーションサーバへのリクエストの都度発生する可能性があります。このため、データベース製品のアーカイブログが大量に出力される可能性があります。

  2. データベースにセッション管理を行うためのテーブルを作成します。

    永続化先データソースに対して以下のSQLを実行してください。SQLの実行は各データベース製品が提供しているSQL実行ツールを利用してください。

  3. Hazelcast設定の以下の要素を true に設定します。

    hazelcast-config/store/persistance@enable

  4. Hazelcast設定の以下の要素に用意したデータソースのJNDI名を指定します。

    hazelcast-config/store/persistance/jndi-name

      <store>
        <persistance enable="true">
          <jndi-name>java:comp/env/jdbc/session-store</jndi-name>
        </persistance>
      </store>