Amazon Web Services上的会话粘性

时间:2012-05-08 13:40:52

标签: amazon-ec2 amazon-web-services elastic-beanstalk amazon-elb

我对亚马逊网络服务上会话粘性的使用感到有些困惑。当我使用Amazon Elastic Beanstalk部署我的Java Web应用程序时,我可以选择启用会话粘性,然后指定cookie过期时间。

我的应用程序使用cookie作为会话(JSESSIONID)以及其他小东西。大多数网站只有在登录后才能访问(我使用Spring安全管理它)。该网站最多可运行25个小型EC2实例。

我应该启用会话粘性吗?如果我不启用它,是否意味着我可以突然登出,因为负载均衡器将我带到另一台服务器(而不是验证我的服务器)?如果我启用会话粘性,当验证我的服务器关闭时,我是否会被注销?基本上,为什么以及何时应该使用会话粘性?

非常感谢。

2 个答案:

答案 0 :(得分:22)

  

如果我没有启用它,是否意味着我可以突然登出,因为负载均衡器将我带到另一台服务器(而不是验证我的服务器)?

  

如果启用会话粘性,当我验证身份的服务器关闭时,是否会退出?

将Elastic Beanstalk与典型的Java webapp一起使用时,我认为您肯定希望启用会话粘性。否则,来自用户浏览器的每个HTTP请求都可以路由到不同的服务器。

要解决当用户“被卡住”关闭时用户会话被销毁的问题,您需要查看Tomcat session replication。不幸的是,这不是Elastic Beanstalk开箱即用的,因此为了设置会话复制,您必须为应用程序创建自定义Elastic Beanstalk AMI。此外,您必须使用Tomcat会话复制that does not rely on multicast的实现,因为AWS上没有多播,或者我知道的任何其他云环境。不依赖于多播的实现的示例将是使用数据库(例如Amazon RDS)或memcached服务器(例如Amazon Elastic Cache)来实现跨多个Tomcat实例的会话。

另请注意,Elastic Beanstalk UI仅允许您启用负载均衡器生成的HTTP Cookie。但是,在Elastic Beanstalk创建了负载均衡器之后,您可以进入EC2控制台并修改负载均衡器的设置,将其切换为应用程序生成的HTTP cookie,然后告诉它使用“JSESSIONID”cookie。

答案 1 :(得分:1)