2009-06-02 31 views
5

Webサーバーがクラスタ化され、アプリケーションサーバーがクラスタ化されていないインフラストラクチャが設定されています。 Webサーバーは、ラウンドロビンポリシーに基づいてアプリケーションサーバーに要求をルーティングします。WebSphereのJVM間でのセッション複製

このシナリオでは、1つのアプリケーションサーバーで使用できるセッションデータは、他のアプリケーションサーバーでは利用できません。とにかく、最初のアプリケーションサーバーからのセッションデータを2番目のアプリケーションで使用できるようにすることはできますか? 2つのアプリケーションサーバーは、異なるセル内の物理的に別々のボックスです。

1つの方法として、データベースを使用することができます。このセッション複製を達成する他の方法はありますか?

+0

私はあなたをWASコンソール内のクラスタとして構成することができると思います。 –

答えて

1

多分あなたは 'terracota'を見ることができます。セッションをキャッシュすることができ、そのキャッシングフレームワーク、およびWebSphereでは別々のサーバー

4

にセッションデータを複製するには、2つの方法基本的にあります実行されます。データベース

  • メモリ - メモリ間の転送に永続化

    1. は、あなたのニーズに適している1

    アプリケーションのシナリオに大きく依存している:

    PEはどのくらい重要ですすべてのアプリケーションサーバーが停止したときのセッションデータの存在 あなたは一度にいくつのセッションオブジェクトを同時に持っていますか?

    DBでは、多くのセッションを大きな問題なく保存できます。もう1つのオプションは、使用可能なメモリの量に関する問題です。

    私はすでにデータベースを持っていますが、もしあなたが既に1つのセットアップを持っていれば、すべてのアプリケーションサーバが使用します。

    ここには、必要な詳細が記載されたWebSphere Information Centerへのリンクがあります。

  • +0

    お返事ありがとうございました。かなりの量のセッションデータを使用しています。悪い習慣であることに同意しましたが、メンテナンスアプリケーションであったため、それほど良い結果が得られました。データベースにデータを保存する場合は、そのデータを取得してアプリケーションオブジェクトを再投入して、ここで問題になると思われるページを再表示する必要があります。 – Subramanian

    +0

    Webアプリケーションのweb.xmlに「distributable」というタグは存在しませんが、websphereがセッションデータを複製するかどうか知っていますか? http://stackoverflow.com/questions/26043080/does-websphere-replicate-the-session-although-the-web-xml-has-no-distributable-t –

    0

    oracle coherenceを忘れないでください。

    2

    明白な解決策の1つは、アプリケーションサーバーのクラスタリングを有効にすることです。私は、あなたがこのオプションを拒否したことをあなたの質問に書いたやり方から推測します。もう1つの選択肢は、セッションアフィニティを使用するようにWebサーバーによって使用されるルーティングを変更することです(同じセッションの要求は同じアプリケーションサーバーに送られます)。

    それ以外は、私はdertoniの答えを2番目にします。

    +0

    セッションアフィニティは、この問題に対する貧弱な解決策ですほとんどの状況下で。 – Rick

    1

    WebSphere、セッション・レプリケーションまたはデータベース内のクラスタリングには、2つのオプションがあります。大規模なセッションオブジェクトがある場合は、失効したセッションをディスクにオフロードできるため、データベースを使用するのが最良です。セッションレプリケーションを使用する場合は、それらのセッションをターゲットサーバだけでなくレプリケーショングループ内の他のサーバにもメモリに保存する必要があります。大規模なセッションでは、メモリ不足状態に陥る可能性があります。

    データベースセッションの処理では、これも非常にカスタマイズ可能で、私が使用した環境ではパフォーマンスが顕著に向上しません。

    関連する問題