REL 10: 如何使用故障隔离来保护您的工作负载?
故障隔离边界可将一个工作负载内的故障影响限制于有限数量的组件。边界以外的组件不会受到故障的影响。使用多个故障隔离边界,您可以限制作用于您的工作负载的影响。
资源
AWS re:Invent 2018: Architecture Patterns for Multi-Region Active-Active Applications
(ARC209-R2)
Shuffle-sharding: AWS re:Invent 2019: Introducing The Amazon Builders’ Library (DOP328)
AWS re:Invent 2018: How AWS Minimizes the Blast Radius of Failures (ARC338)
AWS re:Invent 2019: Innovation and operation of the AWS global network infrastructure
(NET339)
What is AWS Outposts?
Global Tables: Multi-Region Replication with DynamoDB
AWS Local Zones FAQ
AWS Global Infrastructure
The Amazon Builders' Library: Workload isolation using shuffle-sharding
最佳实践:
-
将工作负载部署到多个位置: 将工作负载数据和资源分发到多个可用区,或在必要时分发到多个 AWS 区域。可通过选择不同位置满足各种需求。
-
组件的自动恢复受限于单个位置: 如果工作负载的组件只能在单个可用区或本地数据中心内运行,您必须利用相关功能在定义的恢复目标内彻底重建工作负载。
-
采用隔板架构: 类似于船上的隔板,此模式确保将故障限制在较小的请求/用户子集,受损的请求数量有限,因此大部分可以继续执行而不会受错误影响。数据的隔板经常被称作分区或分片,而服务的隔板称为单元格。
改进计划
将工作负载部署到多个位置
- 区域性服务本质上是跨多个可用区部署的。
- 这包括 Amazon S3、Amazon DynamoDB 和 AWS Lambda(未连接到 VPC 时)
- 将容器、实例和基于功能的工作负载部署到多个可用区中。使用包括缓存在内的多可用区数据存储: 使用 EC2 Auto Scaling、ECS 任务置放,AWS Lambda 函数配置(在 VPC 中运行时)和 ElastiCache 集群的功能。
- 部署 Auto Scaling 组时,请使用单独可用区中的子网。
Example: Distributing instances across Availability Zones
Amazon ECS task placement strategies
Configuring an AWS Lambda function to access resources in an Amazon VPC
Choosing Regions and Availability Zones - 部署 Auto Scaling 组时,请使用单独可用区中的子网。
Example: Distributing instances across Availability Zones - 使用 ECS 任务置放参数,并指定数据库子网组。
Amazon ECS task placement strategies - 配置要在 VPC 中运行的函数时,请使用多个可用区中的子网。
Configuring an AWS Lambda function to access resources in an Amazon VPC - 将多个可用区与 ElastiCache 集群配合使用。
Choosing Regions and Availability Zones
- 部署 Auto Scaling 组时,请使用单独可用区中的子网。
AWS re:Invent 2018: Architecture Patterns for Multi-Region Active-Active Applications (ARC209-R2)
- 备份到另一个 AWS 区域可以让您更加确信,数据在需要时可用。
- 有些工作负载具有法规要求,需要使用多区域策略
What is AWS Outposts?
AWS Local Zones FAQ
组件的自动恢复受限于单个位置
- 将 Auto Scaling 组用于对单个实例 IP 地址、私有 IP 地址、弹性 IP 地址和实例元数据没有要求的实例和容器工作负载。
What Is EC2 Auto Scaling?
Service automatic scaling- 启动配置用户数据可以用于实现自动化,从而让大多数工作负载可以自我修复。
- 将 EC2 实例的自动恢复功能用于需要单个实例 ID 地址、私有 IP 地址、弹性 IP 地址和实例元数据的工作负载。
Recover your instance.- 自动恢复功能会在检测到实例故障时,向 SNS 主题发送恢复状态提醒。
- 使用 EC2 实例生命周期事件或 ECS 事件实现自我修复自动化,在这种情况下,无法使用自动扩展或 EC2 恢复。
EC2 Auto Scaling lifecycle hooks
Amazon ECS events- 使用这些事件调用自动化,该自动化将根据您需要的流程逻辑来修复组件。
Recover your instance.
- 自动恢复功能会在检测到实例故障时,向 SNS 主题发送恢复状态提醒。
EC2 Auto Scaling lifecycle hooks
Amazon ECS events
- 使用这些事件调用自动化,该自动化将根据您需要的流程逻辑来修复组件。
采用隔板架构
Shuffle-sharding: AWS re:Invent 2019: Introducing The Amazon Builders’ Library (DOP328)
AWS re:Invent 2018: How AWS Minimizes the Blast Radius of Failures (ARC338)
- Colm MacCarthaigh 在他的 AWS 博文中说明了 Amazon Route 53 如何利用随机分区的概念来隔离客户请求以避免影响其他分区
Shuffle Sharding: Massive and Magical Fault Isolation