REL11-BP05 使用静态稳定性来防止双模态行为 - AWS Well-Architected Framework

REL11-BP05 使用静态稳定性来防止双模态行为

双模态行为是指您的工作负载在正常和故障模式下展现出不同的行为,例如,可用区发生故障时依赖于启动新的实例。您应该构建静态稳定的工作负载,并且仅在一个模式下运行。在这种情况下,如果删除了一个可用区,要在每个可用区内预置足够的实例来处理工作负载,然后再使用 Elastic Load Balancing 或 Amazon Route 53 运行状况检查将负载从受损实例中转出。

适用于计算部署(如 EC2 实例或容器)的静态稳定性将提供最高水平的可靠性。您必须在稳定性水平和成本之间认真权衡。预置较小的计算容量,并在发生故障时依赖启动新实例,其成本较低。但对于大规模故障(如可用区故障)来说,此方法的效果较差,因为它依赖于对发生的损坏做出反应,而不会在损坏发生前做好准备。您选择的解决方案应在工作负载的可用性和成本需求之间做出取舍。若使用更多可用区,静态稳定性所需的额外计算量就会减少。

显示跨可用区的 EC2 实例的静态稳定性的图表

图 14:跨可用区的 EC2 实例的静态稳定性

在流量转移以后,使用 AWS Auto Scaling 异步替换故障区的实例,并且在运行正常的区内启动。

双模态行为的另一个例子是,网络超时可能会导致系统尝试刷新整个系统的配置状态。这会向另一个组件添加意外负载,进而可能导致该组件出现故障,触发其他意外后果。此负面的反馈环路会影响您的工作负载的可用性。您应该构建静态稳定的系统,并且仅在一个模式下运行。静态稳定的设计会持续工作,并且始终定期刷新配置状态。当调用失败时,工作负载会使用之前的缓存值,并触发警报。

双模态行为的另一个示例是允许客户端在故障发生时绕过您的工作负载缓存。这看起来似乎是可以满足客户端需求的解决方案但却不应该被允许,因为它会明显改变您的工作负载的需求,而且很有可能导致故障。

未建立此最佳实践暴露的风险等级:

实施指导

资源

相关文档:

相关视频: