検索

第10章 Web アプリケーションのクラスター化

download PDF

10.1. セッションレプリケーション

10.1.1. HTTP セッションレプリケーション

セッションレプリケーションは、配布可能なアプリケーションのクライアントセッションが、クラスター内のノードのフェイルオーバーによって中断されないようにします。クラスター内の各ノードは、進行中のセッションに関する情報を共有し、最初に関与したノードが消えた場合にそれらを引き継ぐことができます。
セッションレプリケーションは、mod_cluster、mod_jk、mod_proxy、ISAPI、および NSAPI クラスターにより高可用性を確保する仕組みのことです。

10.1.2. Web セッションキャッシュについて

Web セッションキャッシュは、standalone-ha.xml プロファイル、または管理対象ドメインプロファイル ha または full-ha を含む任意の HA プロファイルを使用するときに設定できます。最も一般的に設定される要素は、キャッシュモードと分散キャッシュのキャッシュ所有者の数です。所有者 パラメーターは、DISTモード。

キャッシュモード

キャッシュモードは次のいずれかになりますREPL(デフォルト) またはDIST

REPL
TheREPLモードは、キャッシュ全体をクラスター内の他のすべてのノードに複製します。これは最も安全なオプションですが、より多くのオーバーヘッドが発生します。
DIST
TheDISTモードは、以前の実装で提供された バディモード に似ています。所有者 パラメーターで指定されたノード数にキャッシュを分散することにより、オーバーヘッドを削減します。この所有者の数のデフォルトは 2 です。

所有者

所有者 パラメーターは、セッションの複製されたコピーを保持するクラスターノードの数を制御します。デフォルトは 2 です。

10.1.3. Web セッションキャッシュを設定する

Web セッションキャッシュのデフォルトはREPL。使用したい場合DISTモードの場合は、管理 CLI で次の 2 つのコマンドを実行します。別のプロファイルを使用する場合は、コマンドでプロファイル名を変更してください。スタンドアロンサーバーを使用する場合は、コマンドの /profile=ha 部分を削除してください。

手順10.1 Web セッションキャッシュを設定する

  1. デフォルトのキャッシュモードをに変更しますDIST

    /profile=ha/subsystem=infinispan/cache-container=web/:write-attribute(name=default-cache,value=dist)
    
  2. 分散キャッシュの所有者の数を設定します。

    以下のコマンドは所有者の数を 5 に設定します。デフォルトは 2 です。
    /profile=ha/subsystem=infinispan/cache-container=web/distributed-cache=dist/:write-attribute(name=owners,value=5)
    
  3. デフォルトのキャッシュモードをに戻しますREPL

    /profile=ha/subsystem=infinispan/cache-container=web/:write-attribute(name=default-cache,value=repl)
    
  4. サービスを再起動します。

    Web キャッシュモードを変更した後、サーバーを再起動する必要があります。

結果

サーバーはセッションレプリケーション用に設定されています。独自のアプリケーションでセッションレプリケーションを使用するには、次のトピックを参照してください。「アプリケーションにおけるセッションレプリケーションの有効化」

10.1.4. アプリケーションにおけるセッションレプリケーションの有効化

概要

JBoss EAP 6 高可用性 (HA) 機能を利用するには、アプリケーションを配布可能に設定する必要があります。この手順では、その方法を示し、次に、使用できるいくつかの高度な設定オプションについて説明します。

手順10.2 アプリケーションを配布可能にする

  1. 必須: アプリケーションが配布可能であることを示します。

    アプリケーションが配布可能でないと、そのセッションは配布されません。アプリケーションの web.xml 記述子ファイルの <web-app> タグ内に <distributable/> 要素を追加します。以下は例です。

    例10.1 配布可能なアプリケーションの最低限の設定

    <?xml version="1.0"?>
    <web-app  xmlns="http://java.sun.com/xml/ns/j2ee"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
              xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
                                  http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" 
              version="2.4">
              
          <distributable/>
        
    </web-app>
    
    
  2. 必要に応じて、デフォルトのレプリケーション動作を変更します。

    セッションレプリケーションに影響を与える値のいずれかを変更する場合は、アプリケーションの jboss-web.xml ファイルの <jboss-web> 要素の子要素である <replication-config> 要素内でそれらをオーバーライドできます。該当する要素で、デフォルト値をオーバーライドする場合のみ値を含めます。次の例は、すべてのデフォルト設定をリストし、その後に最も一般的に変更されるオプションを説明する表が続きます。

    例10.2 例: <replication-config> の値

    <!DOCTYPE jboss-web PUBLIC
        "-//JBoss//DTD Web Application 5.0//EN"
        "http://www.jboss.org/j2ee/dtd/jboss-web_5_0.dtd">
    
    <jboss-web>
       
       <replication-config>
          <replication-trigger>SET_AND_NON_PRIMITIVE_GET</replication-trigger>
          <replication-granularity>SESSION</replication-granularity>
          <use-jk>false</use-jk>
          <max-unreplicated-interval>30</max-unreplicated-interval>
          <snapshot-mode>INSTANT</snapshot-mode>
          <snapshot-interval>1000</snapshot-interval>
          <session-notification-policy>com.example.CustomSessionNotificationPolicy</session-notification-policy>
      </replication-config>
    
    </jboss-web>
    
    
表10.1 セッションレプリケーションの一般的なオプション
オプション
Description
<replication-trigger>
クラスター全体でセッションデータレプリケーションをトリガーする条件を制御します。このオプションが必要なのは、セッションから可変オブジェクト (セッション属性として格納されている) にアクセスした後、メソッドがない限り、コンテナーはオブジェクトが変更されて複製する必要があるかどうかを明確に知る方法がないためです。setAttribute()直接呼び出されます。
SET_AND_GET
これは最も安全ですが、パフォーマンスが最も悪いオプションです。セッションデータは、コンテンツがアクセスされただけで変更されていない場合でも、常に複製されます。この設定は、レガシー目的でのみ保持されます。同じ動作をより良いパフォーマンスで得るには、この設定を使用する代わりに、<max-unreplicated-interval> を 0 に設定することができます。
SET_AND_NON_PRIMITIVE_GET
デフォルトの値です。セッションデータは、非プリミティブ型のオブジェクトにアクセスした場合にのみ複製されます。これは、オブジェクトが IntegerLongString などのよく知られた Java タイプではないことを意味します。
SET
このオプションは、アプリケーションが明示的に呼び出すことを前提としています setAttributeデータを複製する必要があるセッションで。不要な複製を防ぎ、全体的なパフォーマンスを向上させることができますが、本質的に安全ではありません。
設定に関係なく、を呼び出すことでいつでもセッションレプリケーションをトリガーできますsetAttribute()
<replication-granularity>
複製されるデータの粒度を決定します。デフォルト値は SESSION ですが、代わりにATTRIBUTE を設定すると、ほとんどの属性は変更されずにセッションのパフォーマンスを向上させることができます。
ATTRIBUTE
これは、セッション内のダーティ属性と、最後にアクセスされたタイムスタンプなどの一部のセッションデータにのみ適用されます。
SESSION
デフォルトの値です。属性がダーティーである場合に、セッションオブジェクト全体がレプリケートされます。共有されるオブジェクト参照は、1 つのユニットでセッション全体がシリアライズされるため、リモートノードで維持されます。
注記
JBoss EAP 6 では FIELD はサポートされていません。
次のオプションを変更する必要はほとんどありません。
表10.2 あまり一般的に変更されないセッションレプリケーションのオプション
オプション
Description
<use-jk>
次のようなロードバランサーを想定するかどうかmod_clustermod_jk、またmod_proxy使用中です。デフォルトは false です。true に設定されている場合、コンテナーは各リクエストに関連付けられているセッション ID を調べ、jvmRouteフェイルオーバーがある場合は、セッション ID の一部。
<max-unreplicated-interval>
セッションが変更されていないと見なされた場合でも、セッションがアクセスされた後、セッションのタイムスタンプのレプリケーションをトリガーする前に待機する最大間隔 (秒単位)。これにより、クラスターノードが各セッションのタイムスタンプを認識し、フェイルオーバー中に複製されていないセッションが誤って期限切れになることがなくなります。また、メソッドの呼び出しに正しい値を信頼できることも保証しますHttpSession.getLastAccessedTime()フェイルオーバー中。
デフォルトでは、値は指定されていません。値が 0 の場合、セッションにアクセスするたびにタイムスタンプが複製されます。値が -1 の場合、要求中の他のアクティビティーがレプリケーションをトリガーした場合にのみ、タイムスタンプがレプリケートされます。より大きい正の値HttpSession.getMaxInactiveInterval()設定ミスとして扱われ、0 に変換されます。
<snapshot-mode>
セッションを他のノードに複製するタイミングを指定します。デフォルトは INSTANT で、他の可能な値は INTERVAL です。
インスタント モードでは、変更はリクエスト処理スレッドを使用して、リクエストの最後に複製されます。<snapshot-interval> オプションは無視されます。
INTERVAL モードでは、バックグラウンドタスクは <snapshot-interval> で指定された間隔で実行され、変更されたセッションを複製します。
<snapshot-interval>
<snapshot-mode> の値に INTERVAL を使用するときに、変更されたセッションが複製される間隔 (ミリ秒単位)。
<session-notification-policy>
インターフェイスの実装の完全修飾クラス名ClusteredSessionNotificationPolicyこれは、サーブレット仕様通知が登録済みに発行されるかどうかを管理しますHttpSessionListenerHttpSessionAttributeListener、またHttpSessionBindingListener
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.