REL11-BP04 恢复期间依赖于数据平面而不是控制平面 - AWS Well-Architected Framework

REL11-BP04 恢复期间依赖于数据平面而不是控制平面

控制平面提供用于创建、读取和描述、更新、删除和列出(CRUDL)资源的管理 API,而数据平面则处理日常服务流量。在对可能影响弹性的事件实施恢复或缓解响应时,着眼于使用最少数量的控制平面操作,来实现对服务的恢复、重新扩展、恢复、修复或失效转移。在这些降级事件期间,数据平面操作应凌驾于任何活动之上。

例如,以下是所有控制平面操作:启动新的计算实例、创建数据块存储和描述队列服务。启动计算实例时,控制平面必须执行多项任务,例如查找具有容量的物理主机、分配网络接口、准备本地数据块存储卷、生成凭证以及添加安全规则。控制平面往往是复杂的编排。

期望的结果: 当资源进入受损状态时,系统能够通过将流量从受损资源转移到正常运行资源,来自动或手动恢复。

常见反模式:

  • 依赖于通过更改 DNS 记录来重新路由流量。

  • 由于预置资源不足,依赖控制平面扩展操作来替换受损组件。

  • 依靠广泛、多服务、多 API 控制平面操作来修复任何类别的受损情况。

建立此最佳实践的好处: 提高自动修复的成功率可以缩短平均恢复时间,并提高工作负载的可用性。

未建立这种最佳实践的情况下暴露的风险等级: 中。对于某些类型的服务降级,控制平面会受到影响。依赖于大量使用控制平面进行修复可能会增加恢复时间(RTO)和平均恢复时间(MTTR)。

实施指导

要限制数据平面操作,请评估每项服务,以了解恢复服务所需的操作。

利用 Amazon Route 53 Application Recovery Controller 来转移 DNS 流量。这些功能持续监控您的应用程序从故障中恢复的能力,并使您能够跨多个 AWS 区域、可用区和本地部署控制您的应用程序恢复。

Route 53 路由策略使用控制平面,因此不要依赖控制平面进行恢复。Route 53 数据平面会回复 DNS 查询,并执行和评估运行状况检查。它们分布在全球各地,专为 100% 可用性的服务等级协议(SLA)而设计。

您用于创建、更新和删除 Route 53 资源的 Route 53 管理 API 和控制台是在控制平面上运行的,而这些控制平面设计用于优先考虑您在管理 DNS 时所需的强一致性和持久性。为了实现这一点,控制平面位于单个区域“美国东部(弗吉尼亚州北部)”中。虽然这两个系统都非常可靠,但控制平面不包含在 SLA 中。在极少数情况下,数据平面的弹性设计允许它保持可用性,而控制平面做不到。对于灾难恢复和失效转移机制,使用数据平面功能可提供尽可能高的可靠性。

对于 Amazon EC2,使用静态稳定性设计来限制控制平面操作。控制平面操作包括单独扩展资源,或使用 Auto Scaling 群组(ASG)来扩展资源。要获得最高级别的弹性,请在集群中配置足够的容量用于失效转移。如果必须限制此容量阈值,请在整个端到端系统上设置限制,以安全地限制到达有限资源集的总流量。

对于诸如 Amazon DynamoDB、Amazon API Gateway、负载均衡器和 AWS Lambda 无服务器之类的服务,使用这些服务时可以利用数据平面。但是,创建新函数、负载均衡器、API 网关或 DynamoDB 表是一项控制平面操作,应在降级之前完成,以便为事件和演练失效转移操作做准备。对于 Amazon RDS,数据平面操作允许访问数据。

有关数据平面、控制平面以及 AWS 如何构建服务以满足高可用性目标的更多信息,请参阅 使用可用区的静态稳定性

了解哪些操作位于数据平面,哪些位于控制平面。

实施步骤

对于降级事件后需要恢复的每个工作负载,请评估失效转移运行手册、高可用性设计、自动修复设计或 HA 资源恢复计划。确定可能被视为控制平面操作的每个操作。

考虑将控制平面操作更改为数据平面操作:

  • Auto Scaling(控制平面)与预扩展 Amazon EC2 资源(数据平面)的比较

  • 迁移到 Lambda 及其扩展方法(数据平面)或 Amazon EC2 和 ASG(控制平面)

  • 评估任何使用 Kubernetes 的设计以及控制平面操作的性质。在 Kubernetes 中,添加 Pod 是一项数据平面操作。操作应仅限于添加 Pod 而不是添加节点。使用 过度预置的节点 是限制控制平面操作的首选方法

考虑允许数据平面操作影响相同修复措施的其他方法。

如果服务是任务关键型,可考虑使用辅助区域中的某些服务,以便在不受影响的区域内进行更多控制平面和数据平面操作。

  • 主区域中的 Amazon EC2 Auto Scaling 或 Amazon EKS 与辅助区域中的 Amazon EC2 Auto Scaling 或 Amazon EKS 的比较,以及将流量路由到辅助区域(控制平面操作)

  • 在辅助区域中创建只读副本或在主区域中尝试相同的操作(控制平面操作)

资源

相关最佳实践:

相关文档:

相关视频:

相关示例:

相关工具: