4

具体来说,我有一个问题,在 AWS 环境中组织 AZ 故障转移的推荐方法是什么。此外,最好了解典型的 AWS 故障以组织应用程序 HA(高可用性)。因此,应用程序架构(AWS 服务使用)如下:它或多/少是 AWS 中典型的 Web 应用程序架构

  1. 有路由 53 可以解析某些 ELB 的 ip。
  2. 有一个具有 ELB 的公共子网,它将到 Web 服务器的流量路由到私有 VPC;
  3. 在私有子网中,流量进入:Web Servers -> ELB-> Application Servers;
  4. 应用服务器将数据写入多可用区 RDS。

这种部署的主要缺点是服务在一个 AZ 中处于活动状态,因为在多 AZ 部署中,Amazon RDS 会自动在不同的可用区中预置和维护一个同步备用副本。因此,master 只在一个 AZ 中,另一个 AZ 中的服务不允许写入 RDS,因为它是备用的。

两个问题:

  1. 为此类部署实施 HA 的更好方法是什么?
  2. 常见的 AWS 故障是什么(如果一个 AZ 不可用,是否经常只发生在某些服务上(例如 VPC/EC2/EBS 其他问题?)或者通常是整个 AZ 特定的服务不可用)?

对于这种方法,有关 HA 的注意事项:

  1. RDS。来自 AWS 文档:“如果您的数据库实例发生计划内或计划外中断,如果您启用了多可用区,Amazon RDS 会自动切换到另一个可用区中的备用副本。所花费的时间......”。因此,AWS 会自动更改 RDS Master。
  2. 活动/非活动 AZ。可以将不同的健康检查添加到 Route53 并基本上使 Active 成为另一个 AWS AZ。但是如何使它与 RDS 同步(只有在 RDS 成为另一个 AZ 的 master 后才能使这个 AZ 处于活动状态)?

更新 维护一个主动AZ和一个被动AZ的另一个原因是我们的应用服务器应该支持设备IP地址的粘性(例如,它根据用户或设备的IP保持会话)。我们在每个 AZ 中都有 1 个 EC2 Web Server 实例来维护它(我们不能允许将请求发送到不同的 AZ)。

4

1 回答 1

3

我认为您误解了可用区的工作方式。一个AZ的服务可以连接到不同AZ的RDS master。您应该在至少 2 个可用区中运行所有服务。

对于 RDS,当 master 发生故障或 master 所在的 AZ 出现故障时,RDS 服务会将备用提升为 master,并更新 RDS 端点的 DNS,以便端点将指向新的 master。

为了处理 RDS 故障转移,您需要做的所有代码就是通过重试优雅地处理突然的数据库断开连接。

于 2017-08-25T15:19:37.020 回答