具体来说,我有一个问题,在 AWS 环境中组织 AZ 故障转移的推荐方法是什么。此外,最好了解典型的 AWS 故障以组织应用程序 HA(高可用性)。因此,应用程序架构(AWS 服务使用)如下:它或多/少是 AWS 中典型的 Web 应用程序架构
- 有路由 53 可以解析某些 ELB 的 ip。
- 有一个具有 ELB 的公共子网,它将到 Web 服务器的流量路由到私有 VPC;
- 在私有子网中,流量进入:Web Servers -> ELB-> Application Servers;
- 应用服务器将数据写入多可用区 RDS。
这种部署的主要缺点是服务在一个 AZ 中处于活动状态,因为在多 AZ 部署中,Amazon RDS 会自动在不同的可用区中预置和维护一个同步备用副本。因此,master 只在一个 AZ 中,另一个 AZ 中的服务不允许写入 RDS,因为它是备用的。
两个问题:
- 为此类部署实施 HA 的更好方法是什么?
- 常见的 AWS 故障是什么(如果一个 AZ 不可用,是否经常只发生在某些服务上(例如 VPC/EC2/EBS 其他问题?)或者通常是整个 AZ 特定的服务不可用)?
对于这种方法,有关 HA 的注意事项:
- RDS。来自 AWS 文档:“如果您的数据库实例发生计划内或计划外中断,如果您启用了多可用区,Amazon RDS 会自动切换到另一个可用区中的备用副本。所花费的时间......”。因此,AWS 会自动更改 RDS Master。
- 活动/非活动 AZ。可以将不同的健康检查添加到 Route53 并基本上使 Active 成为另一个 AWS AZ。但是如何使它与 RDS 同步(只有在 RDS 成为另一个 AZ 的 master 后才能使这个 AZ 处于活动状态)?
更新 维护一个主动AZ和一个被动AZ的另一个原因是我们的应用服务器应该支持设备IP地址的粘性(例如,它根据用户或设备的IP保持会话)。我们在每个 AZ 中都有 1 个 EC2 Web Server 实例来维护它(我们不能允许将请求发送到不同的 AZ)。