AWS多区域灾难恢复和负载平衡 - 最佳方法?

时间:2014-06-16 13:51:16

标签: amazon-web-services amazon-ec2 amazon-elasticache

我正在使用Amazon Web Services,并尝试设置适度的负载平衡和灾难恢复系统。该应用程序基于PHP,前端有Zend Framework 2(ZF2),本地memcached服务器和MySQL通过RDS。所有服务器都在运行Amazon Linux。

我正在尝试配置弹性负载均衡器以在两个不同的AWS“可用区域中使用两个服务器。”为了无缝地允许一个服务器关闭而另一个服务器接管,我们需要共享的PHP会话。所以我用ZF2建立了PHP数据库会话。

一般而言,我认为AWS区域中断的可能性远低于单个服务器或应用程序本身中致命问题的可能性。所以我正在考虑采用不同的方法:

  1. 同一可用区中的所有服务器
  2. 单独的AWS ElastiCache服务器(基本上是memcached,不能跨区域使用)
  3. 存储在缓存中的PHP会话(内置支持memcached)
  4. 不同区域中的一个紧急服务器 - 在极少数区域中断的情况下,我们会更改DNS记录以使用不同的服务器
  5. 这是DR和负载平衡的一种很好的标准方法吗?在区域中断的情况下我不喜欢DR解决方案,但我没有看到区域下降太多,如果它简化了设计,我们可以处理这种风险级别。如果负载均衡器可以称重为服务器,我会将所有权重拉到一个区域,备份服务器的权重要低得多。

1 个答案:

答案 0 :(得分:1)

将所有PHP服务器保留在同一个AZ中并将它们分配到多个AZ中会有什么好处?除了非常小的(3-5毫秒)延迟改进之外,我无法想到任何问题。由于缺点很少,为什么不在多个AZ之间传播服务器呢?

您的Elasticache memcached仍然是单点故障。如果运行Elasticache实例的AZ出现问题,则会丢失会话。您可以切换到使用Elasticache w / Redis(支持主/从)来实现缓存层的多可用区域。