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

Cha*_*ntz 6 tomcat memcached amazon-ec2 session

我的网站之一是通过 Amazon EC2 服务托管的。当站点面临沉重的负载时,问题就开始发生,而这又通过 AutoScaling 产生了一个新的 EC2 实例。这很好,但问题是当这些实例被杀死(由于负载不足)时,会话信息也会丢失,从而迫使用户重新登录站点。

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

我查看了Memcached 会话管理器,它适用于粘性会话,但是当我尝试使用非粘性会话时会导致问题,因为我向我的服务器发出了很多并行请求。

我现在的服务器是Apache+Tomcat

任何有用的指针。谢谢。

来自 webmasters.stackexchange 的交叉帖子

Eri*_*ond 5

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

如果您有一个数据库(例如 MySQL、RDS),您可以在那里存储会话。这适用于中低容量的网站,但可能会因较高的容量而中断。

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

您也可以考虑 Amazon ElastiCache(刚刚发布):

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

这与 Memcached 协议兼容,因此现有的 Web 服务器会话插件软件应该能够正常工作。