16

Amazon Web Servicesでのセッションスティッキネスの使用について少し混乱します。 Amazon Elastic Beanstalkを使用してJava Webアプリケーションをデプロイするときに、セッションスティッキーを有効にしてからCookieの有効期限を指定することができます。Amazon Web Servicesのセッションスティッキー

私のアプリケーションは、セッション(JSESSIONID)のためのクッキーと他の小さなものを使用します。ほとんどのWebサイトはログイン後にしかアクセスできません(私はSpringセキュリティを使ってそれを管理しています)。このウェブサイトは、最大25の小さなEC2インスタンスで実行されます。

セッションの粘着性を有効にする必要がありますか?私がそれを有効にしないと、ロードバランサが私を(私を認証したサーバではなく)別のサーバに連れて来たので、私は偶然にログアウトすることができますか?セッションスティッキーを有効にすると、私を認証したサーバーがシャットダウンするとログアウトされますか?基本的に、なぜ、いつセッションの粘着性を使用すべきですか?

ありがとうございました。

+0

セッション粘りはAWS上のノードのjsのアプリケーションで可能です?? –

答えて

21

ロードバランサが別のサーバー(私を認証したサーバーではありません)に連れて行ったので、私はうまくログアウトできましたか?

はい

私はセッションの粘りを有効にした場合、私を認証し、サーバーがシャットダウンしますとき、私はログアウトのですか?

典型的なのJava WebアプリケーションをElastic Beanstalkでを使用する場合は[はい

、私は、あなたは間違いなくセッション粘りを有効にしたいと思います。そうしないと、ユーザーのブラウザからの各HTTPリクエストを別のサーバーにルーティングできます。

サーバがシャットダウンするときにサーバが壊れたときにユーザのセッションが破棄される問題を回避するには、Tomcat session replicationを調べる必要があります。残念ながら、これはElastic Beanstalkに付属しているものではありません。セッション複製を設定するには、アプリケーションで使用するカスタムElastic Beanstalk AMIを作成する必要があります。また、AWSや他のどのクラウド環境でもマルチキャストが利用できないため、Tomcatセッションレプリケーションthat does not rely on multicastの実装を使用する必要があります。マルチキャストに依存しない実装の例としては、データベース(Amazon RDSなど)またはmemcachedサーバー(Amazon Elastic Cacheなど)を使用して複数のTomcatインスタンス間でセッションを使用可能にする方法があります。

また、Elastic Beanstalk UIでは、ロードバランサによって生成されたHTTP Cookieのみを有効にすることができます。ただし、Elastic Beanstalkがロードバランサを作成した後、EC2コンソールに移動してロードバランサの設定を変更して、アプリケーションが生成したHTTPクッキーに切り替え、「JSESSIONID」クッキーを使用するように指示できます。

+0

あなたの網羅的な回答、@mbairdをありがとうございました。 MySQL DBを使用してTomcatでセッションレプリケーションを設定しました。私はこのガイドに従った:http://www.intelligrape.com/blog/2010/07/21/tomcat-6-session-persistence-through-jdbcstore/。 1つのEC2インスタンスが1つしかない場合は正常に動作します。 2つ(またはそれ以上)があるとき、ログインするとリダイレクトループに入る。それは、何度も何度もホームページにリダイレクトされる。リダイレクトされるたびに、サーバーは異なるJSESSIONIDを持つCookieを設定します。なぜそれが起こっているか分かりましたか?ありがとうございました! – satoshi

+3

Amazon ElastiCacheで動作する 'memcached-session-manager'を設定すると、問題が解決しました。ありがとうございます! – satoshi

関連する問題