REL01-BP01 了解服务限额和约束 - AWS Well-Architected Framework

REL01-BP01 了解服务限额和约束

了解您的工作负载架构的默认限额并管理限额提高请求。了解哪些云资源约束(如磁盘或网络)可能会对您产生影响。

期望结果:客户可以通过实施正确的准则,来监视关键指标、基础设施审查和自动化补救步骤,以确认没有达到服务限额和约束(这可能导致服务降级或中断),从而防止其 AWS 账户中的服务降级或中断。

常见反模式:

  • 在不了解所用服务的硬限额或软限额及其限制的情况下部署工作负载。

  • 在未分析和重新配置必要限额或未事先联系支持部门的情况下,部署替代工作负载。

  • 假设云服务没有限制,并且认为可以在不考虑费率、限制、计数、数量的情况下使用服务。

  • 假设限额会自动增加。

  • 不了解限额请求的流程和时间表。

  • 假设每个服务的默认云服务限额在不同区域都是相同的。

  • 假设可以突破服务约束,并且系统会自动扩展或提高限制以超出资源约束。

  • 没有在流量高峰期测试应用程序,以便对资源的利用率进行压力测试。

  • 在没有分析所需资源规模的情况下配置资源。

  • 通过选择远远超出实际需求或预期峰值的资源类型来过量配置容量。

  • 在新的客户事件或部署新技术之前,不评估新流量水平的容量需求。

建立此最佳实践的好处:对服务限额和资源约束的监视和自动化管理可以主动减少故障。如果不遵循最佳实践,客户服务的流量模式变化可能会导致中断或降级。通过监视和管理所有区域和所有账户的这些值,应用程序可以在出现不利或意外事件时具有更好的复原能力。

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

实施指导

Service Quotas 是一项 AWS 服务,可帮助您在一个位置管理 250 多项 AWS 服务的限额。除了查找限额值,您还可以在 Service Quotas 控制台或使用 AWS SDK 请求增加限额并跟踪。AWS Trusted Advisor 提供服务限额检查,显示您的服务使用情况,以及某些服务在某些方面的限额。有关每个服务的默认服务限额,请查看相应服务的 AWS 文档,例如,请参阅 Amazon VPC 限额

通过配置使用计划,可在 Amazon API Gateway 内设置某些服务限制,例如限流 API 的速率限制。可通过配置对应的服务进行设置的一些限制包括预置 IOPS、已分配的 Amazon RDS 存储,以及 Amazon EBS 卷分配等。Amazon Elastic Compute Cloud 有自身的服务限制控制面板,可帮助您管理您的实例、Amazon Elastic Block Store 和弹性 IP 地址限制。如果在某用例中,服务限额会对您应用程序的性能造成影响,而且无法按您的需求进行调整,请联系 AWS Support 了解是否有解决的办法。

服务限额可以是区域特定的,也可以是全局性的。使用达到其限额的 AWS 服务将不会具有正常使用中预期的行为,并且可能会导致服务中断或降级。例如,服务限额可限制一个区域中使用的 DL Amazon EC2 数量,在使用 Auto Scaling 组(ASG)的流量扩展事件中,可能会达到该限制。

应定期评估每个账户的服务限额的使用情况,以确定适合该账户的适当服务限制。这些服务限额是作为操作防护机制存在的,以防止意外地配置超出所需数量的资源。它们还用于限制 API 操作的请求率,以保护服务不被滥用。

服务约束与服务限额不同。服务约束代表由特定资源类型定义的该资源的限制,可能是存储容量(例如,gp2 的大小限制为 1GB - 16TB)或磁盘吞吐量(10,0000 iops)。必须对资源类型的约束进行设计,并不断评估可能达到其限制的使用量。如果意外地达到约束条件,账户的应用程序或服务可能会降级或中断。

如果在某用例中,服务限额对应用程序的性能造成影响,而且无法根据所需要求进行调整,请联系 AWS Support 了解是否有解决办法。有关调整固定限额的更多详情,请参阅REL01-BP03 通过架构适应固定服务限额和限制

有一些 AWS 服务和工具可以帮助监视和管理 Service Quotas。应该利用这些服务和工具来自动或手动检查限额水平。

  • AWS Trusted Advisor 提供服务限额检查,显示您的服务使用情况,以及某些服务在某些方面的限额。它可以帮助识别接近限额的服务。

  • AWS Management Console提供了显示服务限额值,管理、请求新限额,监视限额请求状态以及显示限额历史记录的方法。

  • AWS CLI 和 CDK 提供了通过编程方式自动管理和监视服务限额水平和使用情况的方法。

实施步骤

对于 Service Quotas:

  • 审核 AWS Service Quotas。

  • 为了了解您现有的服务限额,请确定使用的服务(如 IAM Access Analyzer)。大约有 250 个 AWS 服务由服务限额控制。然后,确定每个账户和区域内可能使用的具体服务限额名称。每个区域大约有 3000 个服务限额名称。

  • 使用 AWS Config 来增强这种限额分析,以查找您的 AWS 账户中使用的所有 AWS 资源

  • 使用 AWS CloudFormation 数据来确定使用的 AWS 资源。查看 AWS Management Console中创建的资源或通过 list-stack-resources AWS CLI 命令创建的资源。您还可以查看配置为要在模板自身部署的资源。

  • 通过查看部署代码来确定工作负载所需的所有服务。

  • 确定适用的服务限额。通过 Trusted Advisor 和 Service Quotas 使用能够以编程方式访问的信息。

  • 建立一个自动监视方法(请参阅REL01-BP02 跨多个账户和区域管理服务限额REL01-BP04 监控和管理限额),以便在服务限额接近或已达到其限制时发出提醒和通知。

  • 建立一个自动化编程方法,以检查服务限额是否在一个区域已更改,但在同一账户的其他区域没有更改(请参阅REL01-BP02 跨多个账户和区域管理服务限额REL01-BP04 监控和管理限额)。

  • 自动扫描应用程序日志和指标,以确定是否存在任何限额或服务约束错误。如果存在这些错误,则向监视系统发送警报。

  • 一旦确定特定服务需要更高限额,则制定工程设计步骤来计算所需的限额变化(请参阅REL01-BP05 自动管理限额)。

  • 创建一个配置和批准工作流,以请求更改服务限额。这应该包括在请求被拒绝或部分批准情况下的例外工作流。

  • 创建一个工程设计方法,在配置和使用新的 AWS 服务之前,以及在推出到生产环境或加载的环境之前(例如,负载测试账户),审查服务限额。

对于服务约束:

  • 建立监视和度量方法,以提醒资源接近其资源约束。适当地利用 CloudWatch 进行指标或日志监视。

  • 为每个具有对应用程序或系统有意义的约束的资源建立警报阈值。

  • 创建工作流和基础设施管理过程,以在约束条件接近利用率时更改资源类型。该工作流应包括负载测试作为最佳实践,以验证新类型是新约束条件下的正确资源类型。

  • 使用现有的过程和流程,将确定的资源迁移到推荐的新资源类型。

资源

相关最佳实践:

相关文档:

相关视频:

相关工具: