0

AWS設定を使用してアプリケーションを実行しています - EC2インスタンスのElastic Load Balancer(ELB)の背後にあるTomcat、ノードが2つあるmemcachedのElasticacheを実行しています。私は、Tomcatサーバーをユーザーが高可用性に保つために、セッションデータをElasticacheに保存するようにWebアプリケーションを構成しました(つまり、Tomcatがシャットダウンしたとき、ユーザーはログアウトしていないが、 Tomcat)。テスト中に気付いた1つの興味深いケースを除き、期待どおりに動作します。AWS Elasticache Tomcatフェイルオーバー - プライマリTomcatの優先設定ですか?

現在、アプリケーションを実行しているTomcatをシャットダウンすると、別のTomcatが要求の処理を開始し、ユーザーはログインしたままになりますが、停止したTomcatを再起動すると、私が期待していたものではない、以前に停止したインスタンス上で実行する現在のTomcat - 私は、アプリケーションが停止するまで、新しいTomcat上で実行し続けると思っていました。

私は、この動作の説明のために周りを見回してきた、といくつかのソースは、それがELBの設定の問題であるが、この「優先プライマリ」治療を引き起こしている可能性がどのようなコンフィギュレーションオプションの言及に失敗する可能性が示されています。私のELBは現在、スティッキーセッション用に設定されており、CookieNameがJSESSIONIDのAppCookieStickinessPolicyを使用しています。これまで私のTomcatはすべて同じアベイラビリティゾーン(us-east-1b)に存在していました。何か案は?この粘着性の挙動は典型的ですか?

EDIT:Amazonのドキュメントはこちらです:http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/elb-sticky-sessions.htmlは私が観察した振る舞いを直接反駁しているようです。インスタンスに障害が発生したり、不健康になると

は、ロードバランサは、既存の負荷分散アルゴリズムに基づいて新しい健康的なインスタンスをそのインスタンスにルーティング要求を停止し、選択します。ロードバランサは、現在のセッションを新しい健全なインスタンスに「スタック」したものとして扱い、失敗したインスタンスが戻ってもそのインスタンスへの要求のルーティングを続けます。

答えて

0

私はアマゾンに存在しない管理システムで数年間この動作を観察しています。私はこれがmemcached-session-managerのデフォルトの動作であると考えています。Tomcatはリモートキャッシュへのセッションレプリケーションに使用します。

Tomcatノードが緩んだ場合、まったく同じ動作が発生します。 Tomcatはセッションのためにmemcachedをして行くと、別の箱にスムーズに顧客との対話を可能にし、元の箱がアップ戻ったときに、ユーザーが戻って、彼らが上にあったボックスに戻ります。

それが設定可能であるならば、私はあなたを伝えることができませんでしたが、私たちがここで最小構成のセットアップを実行し、それはMSMのデフォルトの動作であるように思われます。