Amazon Web Services上的会话粘性

sat*_*shi 17 amazon-ec2 amazon-web-services amazon-elb amazon-elastic-beanstalk

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

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

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

非常感谢你.

Mar*_*k B 22

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

如果我启用会话粘性,当验证我的服务器关闭时,我是否会被注销?

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

为了解决当用户被"卡住"的服务器被关闭时用户会话被破坏的问题,你需要调查Tomcat会话复制.不幸的是,这不是Elastic Beanstalk开箱即用的,因此为了设置会话复制,您必须为应用程序创建自定义Elastic Beanstalk AMI.此外,您必须使用不依赖于多播的Tomcat会话复制的实现,因为在AWS或我知道的任何其他云环境中无法使用多播.不依赖于多播的实现的示例将是使用数据库(诸如Amazon RDS)或memcached服务器(诸如Amazon Elastic Cache)以使得会话跨多个Tomcat实例可用的实现.

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

  • 配置`memcached-session-manager`以使用Amazon ElastiCache解决了这个问题..谢谢! (3认同)