REL10-BP01 将工作负载部署到多个位置 - 可靠性支柱

REL10-BP01 将工作负载部署到多个位置

将工作负载数据和资源分布到多个可用区,或在必要时分布到多个 AWS 区域。可通过选择不同位置满足各种需求。

在 AWS,服务设计的其中一个基本原则是避免底层物理基础设施中存在单点故障。这促使我们构建使用多个可用区并能灵活应对单个可用区故障的软件和系统。同样,系统也被构建可灵活应对单个计算节点、单个存储卷或单个数据库实例故障。构建依赖冗余组件的系统时,务必要确保组件独立运行;如果是 AWS 区域,组件应自主运行。只有实现了这一点,采用冗余组件的理论可用性计算的优点才能发挥作用。

可用区(AZ,Availability Zone)

AWS 区域由在设计上彼此相互独立的多个可用区组成。每个可用区之间都间隔相当的物理距离,以避免因环境公害(如火灾、洪水和龙卷风)导致的相互关联的故障情况。每个可用区还拥有独立的物理基础设施:专用的公用电源连接、独立备份电源、独立机械服务以及可用区内外的独立网络连接。此设计将任意这些系统的故障限制在受影响的那一个 AZ 中。尽管可用区在地理位置上相互分离,但它们位于相同的区域中,从而实现高吞吐量、低延迟的联网。整个 AWS 区域(跨多个可用区,由多个物理上独立的设计中心组成)可以视为工作负载的单个逻辑部署目标,包括同步复制数据(例如,在两个数据库之间)的能力。这样一来,您便能在主动/主动或主动/备用配置中使用可用区。

可用区是独立的,因此当工作负载采用了使用多个可用区的架构时,可以提高工作负载的可用性。一些 AWS 服务(包括 Amazon EC2 实例数据面板)作为严格的区级别服务部署,与其所在的可用区共存亡。其他 AZ 中的 Amazon EC2 实例不受影响,可以继续正常工作。与此类似,如果某个可用区中的故障导致 Amazon Aurora 数据库失败,则不受影响的 AZ 中的只读副本 Aurora 实例可以自动提升为主实例。另一方面,区域性 AWS 服务(例如 Amazon DynamoDB)在内部以主动/主动配置的形式使用多个可用区,以实现为该服务设定的可用性设计目标,而且无需您配置 AZ 置放。

图中显示跨三个可用区部署的多层架构。请注意,Amazon S3 和 Amazon DynamoDB 始终会自动部署到多个可用区。而 ELB 也会被部署到所有三个区。

图 9:跨三个可用区部署多层架构。请注意,Amazon S3 和 Amazon DynamoDB 始终会自动部署到多个可用区。而 ELB 也会被部署到所有三个区。

虽然 AWS 控制面板通常提供在整个区域(多个可用区)内管理资源的功能,但某些控制面板(包括 Amazon EC2 和 Amazon EBS)能够将结果筛选到单个可用区。完成筛选后,请求仅在指定可用区中进行处理,从而降低其他可用区的中断风险。此 AWS CLI 示例演示仅从 us-east-2c 可用区中获取 Amazon EC2 实例信息:

AWS ec2 describe-instances --filters Name=availability-zone,Values=us-east-2c

AWS Local Zones

AWS Local Zones 在其各自的 AWS 区域内的作用与可用区相似,它们可被选择作为区级别 AWS 资源(如子网和 EC2 实例)的置放位置。特别之处在于,它们并不位于相关的 AWS 区域内,而是靠近目前还未设置 AWS 区域的人口密集的工业和 IT 中心。但是,您还是可以享有高带宽,并且能够在本地区域的本地工作负载与在 AWS 区域内运行的工作负载之间进行安全连接。您应该利用 AWS Local Zones 将工作负载尽量部署在接近用户的地方,以满足低延迟的要求。

Amazon 全球边缘网络

Amazon 全球边缘网络由全球各大城市的边缘站点组成。Amazon CloudFront 使用此网络以较低的延迟向最终用户分发内容。您可以通过 AWS Global Accelerator 在这些边缘站点创建您的工作负载端点,以便在靠近您的用户的 AWS 全球网络进行接入。利用 Amazon API Gateway,使用 CloudFront 分配的边缘优化 API 端点可以通过最近的边缘站点方便客户端访问。

AWS 区域

AWS 区域采用自主设计,因此通过多区域方法,您可以将服务的专用副本部署到每个区域。

多区域方法对于 灾难恢复 策略很常见,用于在偶发的大规模事件中满足恢复目标。请参阅 灾难恢复 (DR) 计划 以了解有关这些策略的更多信息。不过,这里我们的重点是 可用性,旨在达成长期使用中的平均正常运行时间目标。对于高可用性目标,通常可以将多区域架构设计为主动/主动模式,各个服务副本(在其各自的区域中)处于活动状态(为请求提供服务)。

推荐

大多数工作负载的可用性目标都可通过在单个 AWS 区域内采用多 AZ 策略来实现。只有当工作负载具有极高的可用性要求或者其他业务目标时,才考虑多区域架构,在这些情况下需要使用多区域架构。

AWS 提供了跨区域运行服务的功能。例如,AWS 使用 Amazon Simple Storage Service(Amazon S3)复制、Amazon RDS 只读副本(包括 Aurora 只读副本)和 Amazon DynamoDB 全局表,提供了连续异步数据复制功能。通过连续复制,您的数据版本可近乎实时地供各个活动区域使用。

使用 AWS CloudFormation,您可以跨 AWS 账户和 AWS 区域定义基础设施并一致地进行部署。AWS CloudFormation StackSets 扩展了此功能,允许您通过单个操作,跨多个账户和区域创建、更新或删除 AWS CloudFormation 堆栈。对于 Amazon EC2 实例部署,亚马逊云机器镜像(AMI,Amazon Machine Image)可用于提供诸如硬件配置和已安装软件等信息。您可以实施 Amazon EC2 Image Builder 管道来创建所需的 AMI,并将这些 AMI 复制到您的活动区域。这可以确保这些 Golden AMI 具有您需要部署的所有内容,并可在各个新区域中扩展您的工作负载。

对于路由流量,Amazon Route 53 和 AWS Global Accelerator 均可定义策略来确定哪些用户转向哪个活动的区域端点。使用 Global Accelerator,您可以设置流量转盘,控制导向各个应用程序端点的流量的百分比。Route 53 支持这种百分比方法,还有多个其他策略可用,包括基于地理位置距离和延迟的策略。Global Accelerator 自动利用 AWS 边缘服务器广泛的网络,尽可能快地将流量载入到 AWS 主干网,从而得到较低的请求延迟。

所有这些功能在执行时,都保留了各个区域的自主性。这种方法有极少的例外,包括我们提供全球边缘交付的服务(例如 Amazon CloudFront 和 Amazon Route 53),以及 AWS Identity and Access Management(IAM)服务的控制面板。大多数服务都完全在单个区域中运行。

本地数据中心

对于在本地数据中心运行的工作负载来说,尽可能打造混合体验。AWS Direct Connect 提供从您的本地到 AWS 的专用网络连接,使您可以同时在两者中运行。

另一个选项是,通过 AWS Outposts 在本地运行 AWS 基础设施和服务。AWS Outposts 是一项完全托管式服务,可将 AWS 基础设施、AWS 服务、API 和工具延伸到您的数据中心。在您的设计中心会安装与 AWS Cloud 中使用的相同硬件基础设施。然后,AWS Outposts 会连接到最近的 AWS 区域。您可以使用 AWS Outposts 支持您的低延迟工作负载,或满足本地数据处理要求。

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

实施指导

  • 使用多个可用区和 AWS 区域。将工作负载数据和资源分布到多个可用区,或在必要时分布到多个 AWS 区域。可通过选择不同位置满足各种需求。

  • 如果您的工作负载必须部署到多个区域,请选择一个多区域策略。大多数可靠性需求可通过在单个 AWS 区域中使用多可用区策略来满足。可在必要时使用多区域策略来满足您的业务需求。

  • 评估您工作负载的 AWS Outposts。如果您的工作负载需要到本地部署数据中心的较低延迟,或具有本地数据处理要求,然后使用 AWS Outposts 在本地运行 AWS 基础设施和服务

  • 确定 AWS Local Zones 是否可以帮助您为用户提供服务。如果您有低延迟要求,请查看 AWS Local Zones 是否距离您的用户较近。如果是,则使用它将工作负载部署到离这些用户较近的位置。

资源

相关文档:

相关视频: