在多个 Amazon EC2 实例之间维护会话时遇到问题

在多个 Amazon EC2 实例之间维护会话时遇到问题

我的一个网站通过 Amazon EC2 服务托管。当网站面临高负载时,问题就开始出现,进而通过 AutoScaling 生成新的 EC2 实例。这很好,但问题是当这些实例被终止(由于负载不足)时,会话信息也会丢失,从而迫使用户重新登录网站。

解决这个问题的最佳方法是什么?

我已经看过了Memcached 会话管理器并且它对于粘性会话运行良好,但当我尝试使用非粘性会话时会出现问题,因为我向我的服务器发出了很多并行请求。

我目前的服务器是Apache+Tomcat

任何建议都有用。谢谢。

来自 webmasters.stackexchange 的交叉帖子

答案1

如果您的自动扩展实例可以随时终止,并且您不能丢失会话信息,那么您就不能将会话信息存储在自动扩展实例上。

如果您有数据库(例如 MySQL、RDS),则可以将会话存储在那里。这对于流量较低到中等的网站来说没问题,但对于流量较大的网站来说可能会有问题。

您可以使用非自动缩放的 memcached 运行单独的实例。

您可能还会考虑 Amazon ElastiCache(刚刚发布):

http://aws.amazon.com/elasticache/

这是与 Memcached 协议兼容的,因此现有的 Web 服务器会话插件软件应该能够毫无问题地工作。

相关内容