Amazon EC2 ELB 将负载导向其他实例和会话存储

Amazon EC2 ELB 将负载导向其他实例和会话存储
  1. 如果我们扩大规模(向 ELB 添加一个实例),我们是否可以将一些现有请求重定向到新实例。这样,我们强制使用新服务器的用户将被要求再次登录

  2. 如果我们缩减规模(从 ELB 中删除一个实例),那么来自该服务器的所有用户将自动被 ELB 重定向到其他剩余服务器。这些用户不应被要求再次登录。

这可能吗 (包括请求重定向)? 怎么做?

欢迎提出任何想法,但我认为这可以通过使用中央会话存储来解决。我只是不知道如何实现它。

使用中央会话存储有哪些选项?simpledb?redis?memcached?

更新:

我们的应用程序只是一个简单的 Web 应用程序,托管在 Apache 中。我们在 Amazon ELB 中添加了两个实例,并且使用的是 PHP。

有任何 ELB php 特定的建议吗?当发生缩小/扩大时,不应显示任何用户可见的症状?

答案1

是的,使用集中式会话存储可以解决所有这些问题,甚至更多。如果不了解您的应用程序,就不可能为您提供实现它的权威指南(无论如何,这将是一个 Stack Overflow 问题),但它通常很简单,只需设置一个选项(在 Rails 等框架中)或编写几行粘合代码,这些代码由 Web 框架调用,并连接到存储以存储详细信息或检索它们。

至于使用什么,我推荐 Redis。虽然 memcached 似乎可以解决问题,但它有一个令人不快的缺点,即每当您需要重新启动 memcached 实例时,用户都需要重新登录。在冗余系统中,一个好的经验法则是,对基础设施的任何更改都不应显示出来任何用户可见的症状。另一方面,Redis 持久保存到磁盘,更新和检索速度都极快,并且在我使用它的大规模情况下表现出令人难以置信的稳健性。

相关内容