具体来说,我有一个问题,在AWS环境中组织可用区故障转移的推荐方法是什么。此外,最好了解典型的AWS故障,以便组织应用程序HA(高可用性(。 因此,应用程序架构(AWS 服务使用情况(如下所示: 它是 AWS 中更多/更少典型的 Web 应用程序架构
- 有 53 号路线可以解析某些 ELB 的 ip。
- 存在具有 ELB 的公有子网,它将流量路由到 Web 服务器到私有 VPC;
- 在私有子网中,流量进入:Web 服务器 -> ELB-> 应用程序服务器;
- 应用程序服务器将数据写入多可用区 RDS。
此类部署的主要缺点是服务在一个可用区中处于活动状态,因为在多可用区部署中,Amazon RDS 会自动在不同的可用区中预置和维护同步备用副本。因此,主服务器仅在一个可用区中,而另一个可用区中的服务不允许写入 RDS,因为它是备用的。
两个问题:
- 为此类部署实施 HA 的更好方法是什么?
- 常见的 AWS 故障是什么(如果一个可用区不可用,是否经常只发生在某些服务上(例如 VPC/EC2/EBS 其他问题?或者通常整个可用区特定的服务不可用(?
有关此类方法的 HA 注意事项:
- RDS。来自 AWS 文档:"如果您的数据库实例发生计划内或计划外中断,如果您启用了多可用区,Amazon RDS 会自动切换到另一个可用区中的备用副本。它所花费的时间....."。因此,AWS 会自动更改 RDS Master。
- 可以向 Route53 添加不同的运行状况检查,并基本上使另一个 AWS 可用区处于活动状态。但是如何使其与RDS同步(只有在RDS成为另一个可用区中的主节点后,才能使该可用区处于活动状态(?
更新维护一个主动可用区和一个被动可用区的另一个原因是,我们的应用服务器应该支持设备IP地址的粘性(例如,它根据用户或设备的IP保持会话(。我们在每个可用区中都有 1 个维护它的 EC2 Web 服务器实例(我们不能允许向不同的可用区发出请求(。
我想你误解了可用性区域的工作原理。一个可用区中的服务可以连接到另一个可用区中的 RDS 主服务器。您应该在至少 2 个可用区中运行所有服务。
对于 RDS,当主服务器发生故障或主服务器所在的可用区出现故障时,RDS 服务会将备用数据库提升为主数据库并更新 RDS 终端节点的 DNS,以便终端节点随后指向新的主节点。
为了处理 RDS 故障转移,您的代码需要做的就是通过重试优雅地处理突然的数据库断开连接。