0

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

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

一般来说,我假设 AWS 区域中断的可能性远低于单个服务器或应用程序本身出现致命问题的可能性。所以我正在考虑一种不同的方法:

  1. 同一可用区中的所有服务器
  2. 单独的 AWS ElastiCache 服务器(本质上是 memcached,不能跨区域使用)
  3. 存储在缓存中的 PHP 会话(内置对 memcached 的支持)
  4. 不同区域中的一个紧急服务器——在极少数情况下区域中断,我们会更改 DNS 记录以使用不同的服务器

这是 DR 和负载平衡的良好标准方法吗?在区域中断的情况下,我不喜欢 DR 解决方案,但我没有看到区域下降太多,如果它简化了设计,我们可能可以处理这种风险水平。如果负载均衡器的权重可以是服务器,我会将所有权重都放在一个区域上,而备份服务器的权重要低得多。

4

1 回答 1

1

将所有 PHP 服务器保留在同一个 AZ 中与将它们分布在多个 AZ 之间有什么好处?除了非常小的(3-5ms)延迟改进之外,我想不出任何办法。既然没有什么坏处,为什么不将服务器分散到多个 AZ 中呢?

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

于 2014-06-16T16:43:32.353 回答