首页 文章

Amazon Web Services上的会话粘性

提问于
浏览
17

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

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

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

非常感谢你 .

2 回答

  • 22

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

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

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

    为了解决当服务器被关闭时用户会话被销毁的问题,你需要查看Tomcat session replication . 不幸的是,这不是Elastic Beanstalk开箱即用的,因此为了设置会话复制,您必须为应用程序创建自定义Elastic Beanstalk AMI . 此外,您必须使用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 .

  • 1

相关问题