REL 11: 如何将您的工作负载设计为可承受组件故障的影响?
在设计具有高可用性和较短平均恢复时间 (MTTR) 要求的工作负载时必须考虑到弹性。
资源
Static stability in AWS: AWS re:Invent 2019: Introducing The Amazon Builders’ Library
(DOP328)
AWS OpsWorks: Using Auto Healing to Replace Failed Instances
What Is Amazon EventBridge?
Amazon Route 53: Choosing a Routing Policy
What Is AWS Global Accelerator?
The Amazon Builders' Library: Static stability using Availability Zones
The Amazon Builders' Library: Implementing health checks
Well-Architected lab: Level 300: Implementing Health Checks and Managing Dependencies
to Improve Reliability
The Berkeley/Stanford Recovery-Oriented Computing (ROC) Project
Multiple data center HA network connectivity
AWS Marketplace: products that can be used for fault tolerance
APN
Partner: partners that can help with automation of your fault tolerance
最佳实践:
-
监控工作负载的所有组件以检测故障: 持续监控您的工作负载的运行状况,以便您和您的自动化系统在性能下降或发生全面故障时立即察觉。监控基于商业价值的关键性能指标 (KPI)。
-
故障转移到运行状况良好的资源: 确保如果某个资源发生故障,该运行状况良好的资源可以继续为请求提供服务。对于位置故障(如可用区或 AWS 区域),确保您拥有适当的系统以故障转移到未受损位置内运行状况良好的资源。
-
自动修复所有层: 在检测到故障时,使用自动化功能执行修复操作。
-
使用静态稳定性来防止双模态行为: 双模态行为是指您的工作负载在正常和故障模式下展现出不同的行为,例如,若可用区发生故障时依赖于启动新的实例。您应该构建静态稳定的工作负载,并且仅在一个模式下运行。在这种情况下,如果删除了一个可用区,要在每个可用区内预置足够的实例来处理工作负载,然后再使用 Elastic Load Balancing 或 Amazon Route 53 运行状况检查将负载从受损实例中转出。
-
当事件影响可用性时发出通知: 在检测到重大事件时发送通知,即使由事件引发的问题已经自动解决。
改进计划
监控工作负载的所有组件以检测故障
- 您的监控间隔取决于您必须恢复的速度: 您的恢复时间取决于恢复所需的时间,因此您在确定收集频率时,必须考虑此时间和恢复时间目标 (RTO)。
- 确定是否需要为 EC2 实例和 Auto Scaling 配置详细的监控。: 详细的监控提供间隔为 1 分钟的指标,默认监控提供间隔为 5 分钟的指标。
Enable or Disable Detailed Monitoring for Your Instance
Monitoring Your Auto Scaling Groups and Instances Using Amazon CloudWatch - 确定是否需要为 RDS 设置增强的监控: 增强的监控使用 RDS 实例上的代理来获取关于 RDS 实例上不同进程或线程的有用信息。
Enhanced Monitoring
Publishing Custom Metrics
Amazon CloudWatch Synthetics enables you to create user canaries
Publishing Custom Metrics
Using Amazon CloudWatch Alarms
Using CloudWatch Dashboards
故障转移到运行状况良好的资源
- 如果您的工作负载使用 Amazon S3 或 Amazon DynamoDB 等 AWS 服务,则它们会被自动部署到多个可用区。当发生故障时,AWS 控制平面会自动为您将流量路由至运行正常的位置。
- 针对 Amazon RDS,您必须选择多可用区作为配置选项,然后在发生故障时,AWS 会自动将流量定向至运行正常的实例。
High Availability (Multi-AZ) for Amazon RDS - 对于 Amazon EC2 实例或 Amazon ECS 任务,您要选择部署到哪些可用区。然后,Elastic Load Balancing 会提供解决方案以检测运行不正常可用区内的实例,并将流量路由至运行正常的可用区。Elastic Load Balancing 甚至可以将流量路由至本地数据中心内的组件。
- TRANSLATION REQUIRED
- TRANSLATION REQUIRED
Overview of Amazon RDS Read Replicas - TRANSLATION REQUIRED
Amazon Route 53: Choosing a Routing Policy
What Is AWS Global Accelerator?
- TRANSLATION REQUIRED
自动修复所有层
How AWS Auto Scaling Works
Amazon EC2 Automatic Recovery
Amazon Elastic Block Store (Amazon EBS)
Amazon Elastic File System (Amazon EFS)
What is Amazon FSx for Lustre?
What is Amazon FSx for Windows File Server?
- 使用 AWS OpsWorks,您可以在层级别配置 EC2 实例的自动修复。
AWS OpsWorks: Using Auto Healing to Replace Failed Instances
What is AWS Step Functions?
What is AWS Lambda?
- Amazon EventBridge 可用于监控和筛选事件,例如 CloudWatch 警报或其他 AWS 服务中的状态更改。根据事件信息,它可以触发 AWS Lambda(或其他目标)在您的工作负载上执行自定义修复逻辑。
What Is Amazon EventBridge?
Using Amazon CloudWatch Alarms
使用静态稳定性来防止双模态行为
The Amazon Builders' Library: Static stability using Availability Zones
Static stability in AWS: AWS re:Invent 2019: Introducing The Amazon Builders’ Library (DOP328)
- 您应该构建静态稳定的系统,并且仅在一个模式下运行。在这种情况下,如果删除了一个可用区,要在每个区域内预置足够的实例来处理工作负载,然后再使用 Elastic Load Balancing 或 Amazon Route 53 运行状况检查将负载从受损实例中转出。
- 双模态行为的另一个示例是允许客户端在故障发生时绕过您的工作负载缓存。这看起来似乎是可以满足客户端需求的解决方案,但却不应该被允许,因为它会明显改变您的工作负载的需求,而且很有可能导致故障。
当事件影响可用性时发出通知
Creating a CloudWatch Alarm Based on a Static Threshold
What is Amazon Simple Notification Service?