16

我对在Amazon Web Services上使用会话粘性有点困惑。当我使用Amazon Elastic Beanstalk部署我的Java Web应用程序时,可以选择启用会话粘性,然后指定cookie过期期限。Amazon Web Services上的会话粘性

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

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

非常感谢。

+0

会话粘性,可以在节点上的JS AWS应用? –

回答

21

如果我不启用它,是否意味着我可能会突然注销,因为负载平衡器带我到另一台服务器(而不是认证我的服务器)?

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

当使用弹性魔豆具有典型的Java Web应用程序,我想你一定会想启用会话粘性。否则,来自用户浏览器的每个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 Cookie,然后告诉它使用“JSESSIONID”cookie。

+0

非常感谢您的详尽回复,@mbaird。我使用MySQL DB在Tomcat中配置了会话复制。我遵循本指南:http://www.intelligrape.com/blog/2010/07/21/tomcat-6-session-persistence-through-jdbcstore/。当有一个EC2实例时,它工作正常。当有两个(或更多)它在登录时进入重定向循环。它302一次又一次地重定向到主页。每次重定向时,服务器都会使用不同的JSESSIONID设置cookie。你有什么想法为什么发生?谢谢! – satoshi

+3

配置'memcached-session-manager'以使用Amazon ElastiCache解决了这个问题..谢谢! – satoshi

相关问题