REL10-BP02 为多位置部署选择合适的位置 - AWS Well-Architected 框架

REL10-BP02 为多位置部署选择合适的位置

期望结果:要实现高可用性,请始终(在可行时)将工作负载组件部署到多个可用区(AZ)。对于具有极高韧性要求的工作负载,请谨慎评估用于多区域架构的选项。

图中显示了具有韧性的多可用区数据库部署备份到另一个 AWS 区域

具有韧性的多可用区数据库部署备份到另一个 AWS 区域

常见反模式:

  • 在多可用区架构满足要求时选择设计多区域架构。

  • 如果应用程序组件之间的韧性和多位置要求不同,则不考虑这些组件之间的依赖关系。

建立此最佳实践的好处:要实现韧性,应使用可构建防御层的方法。其中一层使用多个可用区,通过构建高度可用的架构,防护较小规模的、更常见的中断。另一个防御层用于防御很少发生的事件,例如大范围的自然灾害和区域级别的中断。这个第二层涉及到设计应用程序的架构来跨越多个 AWS 区域。

  • 99.5% 的可用性与 99.99% 的可用性相比,每个月的正常运行时间之差超过 3.5 小时。采用多个可用区的工作负载的可用性,预期只能达到“四个九”。

  • 通过在多个可用区中运行工作负载,您可以隔离电力、冷却和网络中的故障,以及火灾和洪水之类的大多数自然灾害。

  • 为工作负载实施多区域策略,有助于防御影响到某个国家/地区中较大地理面积的大范围自然灾害,或者区域范围的技术故障。请注意,实施多区域架构会有很高的复杂性,对于大部分工作负载通常来说都是不必要的。

在未建立这种最佳实践的情况下暴露的风险等级:

实施指导

对源于一个可用区的中断或部分丢失而导致的灾难事件,在单个 AWS 区域内的多个可用区中实施高可用工作负载,有助于减轻自然灾难和技术灾难。每个 AWS 区域由多个可用区组成,各个可用区之间实现了故障隔离,并且相互保持较远的距离。但是,对于包括丢失多个可用区组件(彼此相距很远)风险的灾难事件,应该实施灾难恢复选项来减轻整个区域范围的故障。对于需要极高韧性的工作负载(关键基础设施、健康相关应用程序、财务系统基础设施等),可能需要使用多区域策略。

实施步骤

  1. 评估工作负载,确定是否可以通过多可用区方法(单个 AWS 区域)来满足韧性需求,或者是否需要多区域方法。实施多区域架构来满足这些要求会引入额外的复杂性,因此请仔细考虑应用场景及其要求。使用单个 AWS 区域几乎总能满足韧性要求。在确定是否需要使用多个区域时,请考虑以下可能的要求:

    1. 灾难恢复(DR):对源于一个可用区的中断或部分丢失而导致的灾难事件,在单个 AWS 区域内的多个可用区中实施高可用工作负载,有助于减轻自然灾难和技术灾难。对于包括丢失多个可用区组件(彼此相距很远)风险的灾难事件,应该跨多个区域实施灾难恢复来减轻整个区域范围的自然灾害或技术故障。

    2. 高可用性(HA):多区域架构(在每个区域使用多个可用区)可用于实现 4 个 9 以上(> 99.99%)的可用性。

    3. 堆栈本地化:面向全球受众部署工作负载时,可以将本地化的堆栈部署在不同的 AWS 区域中,以便服务于这些区域的受众。本地化可以包括语言、货币和所存储数据的类型本地化。

    4. 靠近用户:面向全球受众部署工作负载时,可以通过在靠近最终用户所在位置的 AWS 区域中部署堆栈,从而减少延迟。

    5. 数据驻留:一些工作负载面临着数据驻留要求,来自特定用户的数据必须保留在特定国家/地区的边界内。根据相关法规,可以选择将整个堆栈或者仅仅将数据部署到这些边界内的 AWS 区域中。

  2. 以下是 AWS 服务提供的一些多可用区功能的示例:

    1. 要使用 EC2 或 ECS 保护工作负载,请在计算资源前端部署弹性负载均衡器。然后,弹性负载均衡会提供解决方案来检测运行状况不佳的可用区内的实例,并将流量路由至运行状况良好的可用区。

    2. 当 EC2 实例运行不支持负载均衡的现成商用软件时,您可以通过实施多可用区灾难恢复方法来实现某种形式的容错能力。

    3. 对于 Amazon ECS 任务,将服务均匀地部署在三个可用区上,实现可用性与成本的平衡。

    4. 对于非 Aurora Amazon RDS,可以选择多可用区作为配置选项。在主数据库实例出现故障时,Amazon RDS 会自动提升备用数据库,用于接收其他可用区中的流量。还可以创建多区域只读副本来改进韧性。

  3. 以下是 AWS 服务提供的一些多区域功能的示例:

    1. 对于服务自动提供多可用区可用性的 Amazon S3 工作负载,如果需要多区域部署,请考虑多区域接入点。

    2. 对于服务自动提供多可用区可用性的 DynamoDB 表,可以轻松地将现有表转换为全局表,以利用多个区域。

    3. 如果工作负载采用应用程序负载均衡器或网络负载均衡器作为前端,请将流量引导到包含运行状况良好的端点的多个区域,从而使用 AWS Global Accelerator 来改进应用程序的可用性。

    4. 对于利用 AWS EventBridge 的应用程序,请考虑使用跨区域总线将事件转发到选择的其他区域。

    5. 对于 Amazon Aurora 数据库,请考虑使用跨多个 AWS区域的 Aurora 全球数据库。也可以修改现有集群以添加新的区域。

    6. 如果工作负载包括 AWS Key Management Service(AWS KMS)加密密钥,请考虑多区域密钥是否适合应用程序。

    7. 有关其他 AWS 服务功能,请参阅此系列博客文章《Creating a Multi-Region Application with AWS Services

实施计划的工作量级别:中到高

资源

相关文档:

相关视频:

相关示例: