17

アマゾンウェブサービスでのセッションスティッキネスの使用について少し混乱しています。Amazon ElasticBeanstalkを使用してJavaWebアプリケーションをデプロイする場合、セッションスティッキネスを有効にしてからCookieの有効期限を指定することを選択できます。

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

セッションスティッキネスを有効にする必要がありますか?有効にしない場合、ロードバランサーが私を別のサーバー(私を認証したサーバーではない)に移動したために突然ログアウトする可能性があることを意味しますか?セッションスティッキネスを有効にした場合、認証されたサーバーがシャットダウンしたときにログアウトされますか?基本的に、なぜ、いつセッションスティッキネスを使用する必要がありますか?

どうもありがとうございます。

4

2 に答える 2

22

有効にしない場合、ロードバランサーが私を別のサーバー(私を認証したサーバーではない)に移動したために突然ログアウトする可能性があることを意味しますか?

はい

セッションスティッキネスを有効にした場合、認証されたサーバーがシャットダウンしたときにログアウトされますか?

はい

通常のJavaWebアプリでElasticBeanstalkを使用する場合は、セッションのスティッキネスを有効にする必要があると思います。そうしないと、ユーザーのブラウザからの各HTTPリクエストが異なるサーバーにルーティングされる可能性があります。

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

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

于 2012-05-08T15:56:10.057 に答える
1

また、Tomcatセッション共有にDynamoDBを使用することもできます:http://docs.aws.amazon.com/AWSSdkDocsJava/latest/DeveloperGuide/java-dg-tomcat-session-manager.html

于 2014-03-18T09:26:55.330 に答える