使用基于负载的自动扩展 - AWS OpsWorks

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用基于负载的自动扩展

重要

该 AWS OpsWorks Stacks 服务于 2024 年 5 月 26 日终止,新客户和现有客户均已禁用。我们强烈建议客户尽快将其工作负载迁移到其他解决方案。如果您对迁移有疑问,请通过 re AWS : Post 或通过 Pre mium Su AWS pp ort 与 AWS Support 团队联系。

基于负载的实例允许您快速启动或停止实例,以响应传入流量的变化。 AWS OpsWorks Stacks 使用 Amazon CloudWatch 数据计算每个层的以下指标,这些指标表示该层所有实例的平均值:

  • CPU:平均 CPU 消耗,如 80%

  • 内存:平均内存消耗,如 60%

  • 负载:一个系统在一分钟内的平均计算工作。

您可以为这些指标中的任何一个或全部定义规模升级规模降级 阈值。您也可以使用自定义 CloudWatch 警报作为阈值。

超出阈值会触发扩展事件。通过指定以下值来确定 AWS OpsWorks Stacks 如何响应扩展事件:

  • 启动或停止多少个实例。

  • AWS OpsWorks 堆栈在超过阈值后应等待多长时间才能启动或删除实例。例如,CPU 利用率必须超过阈值至少 15 分钟。该值允许您忽略短暂的流量波动。

  • AWS OpsWorks Stacks 在启动或停止实例后应等待多长时间才能再次监控指标。通常,需要留有足够的时间来让启动的实例上线,或让停止的实例关闭,然后再评估层是否仍超出阈值。

发生扩展事件时, AWS OpsWorks Stacks 仅启动或停止基于负载的实例。而不启动或停止全天候实例或基于时间的实例。

注意

基于负载的自动扩展不创建新实例;它仅启动和停止那些已创建的实例。因此,您必须提前配置足够的基于负载的实例来处理预期的最大负载。

创建基于负载的实例
  1. 实例页面上,选择+实例添加一个实例。选择高级,然后选择基于负载

    “Add instance (添加实例)”页面上基于负载的扩展选项
  2. 配置实例,然后选择添加实例将实例添加到层。

重复此步骤,直到创建了足够数量的实例。稍后,您可以根据需要添加或移除实例。

将基于负载的实例添加到层后,必须启用基于负载的扩展并指定配置。基于负载的扩展配置是一种层属性,而非实例属性,它指定一个层什么时候应启动或停止其基于负载的实例。必须为每个使用基于负载的实例的层单独指定该属性。

启用和配置基于负载的自动扩展
  1. 在导航窗格中,单击实例下的基于负载,并针对相应的层单击编辑

    实例层上的编辑操作
  2. 启用基于负载的自动扩缩设置为开启。然后,设置阈值和扩展参数来定义如何以及何时添加或删除实例。

    基于负载的扩展的阈值
    层-平均阈值

    您可以基于以下值设置扩展阈值,这些值为层所有实例的平均值。

    • 平均 CPU:层的平均 CPU 使用率,用占总量的百分比表示。

    • 平均内存:层的平均内存使用率,用占总量的百分比表示。

    • 平均负载:层的平均负载。

      有关负载计算方法的更多信息,请参阅维基百科的负载(计算)

    超过阈值会导致扩展事件,如果需要更多实例,则会扩大规模,如果需要更少的实例,则会缩小规模。 AWS OpsWorks 然后,堆栈会根据扩展参数添加或删除实例。

    自定义 CloudWatch 警报

    您最多可以使用五个自定义 CloudWatch 警报作为扩大或缩小阈值。这些警报必须和堆栈在同一个区域。有关如何创建自定义警报的更多信息,请参阅创建 Amazon CloudWatch 警报

    注意

    要使用自定义警报,必须更新您的服务角色以允许 cloudwatch:DescribeAlarms。你可以让 AWS OpsWorks Stacks 在你第一次使用此功能时为你更新角色,也可以手动编辑角色。有关更多信息,请参阅 允许 AWS OpsWorks Stacks 代表你行事

    当为基于负载的配置配置了多个警报时,如果警报处于 INSUFFICIENT_DATA 指标警报状态,则即使另一个警报处于 ALARM 状态,也无法进行基于负载的实例扩展。只有当所有警报都处于 OKALARM 状态时,才能继续进行自动扩缩。有关使用亚马逊 CloudWatch 警报的更多信息,请参阅亚马逊 CloudWatch 用户指南中的使用亚马逊 CloudWatch 警报

    扩展参数

    以下参数控制 AWS OpsWorks 堆栈管理扩展事件的方式。

    • 批量启动的服务器数:当发生扩展事件时要添加或移除的实例数量。

    • 如果超过阈值 — 在 AWS OpsWorks 堆栈触发扩展事件之前,负载必须保持在升级阈值或缩减阈值之下的时间(以分钟为单位)。

    • 缩放后,忽略指标 — 扩展事件发生后, AWS OpsWorks 堆栈应忽略指标并抑制其他扩展事件的时间(以分钟为单位)。

      例如, AWS OpsWorks Stacks 在发生升级事件后会添加新实例,但这些实例在启动和配置后才会开始减少负载。引发更多的扩展事件直到新的实例在线并处理请求,这样的做法没有意义,实例在线和处理请求通常需要花费几分钟的时间。该设置允许您指示 AWS OpsWorks Stacks 抑制扩展事件足够长的时间以便让新的实例在线。

      您可以提高此设置,防止当平均 CPU平均内存平均负载等层平均值临时偏离时扩展突然波动。

      例如,如果 CPU 利用率超出限制并且内存使用率接近规模降级,则实例规模升级事件发生之后会紧接着发生内存规模降级事件。为防止这种情况发生,您可以增加扩展之后,忽略指标设置中的分钟数。在这个例子中,虽然会发生 CPU 扩展,但不会发生内存规模降级事件。

  3. 要添加额外的基于负载的实例,请单击+实例,配置设置,然后单击添加实例。重复此步骤,直到您有足够的基于负载的实例来处理您的预期最高负载。然后选择保存

注意

您也可以向层中添加新的基于负载的实例,方法是打开基于负载页面,单击添加基于负载的实例 (如果您尚未向层中添加任何基于负载的实例) 或 +实例 (如果该层已有一个或多个基于负载的实例)。然后,如本节前面所述配置实例。

向层中添加基于负载的现有实例
  1. 在导航窗格中,选择实例下的基于负载

  2. 如果您已为层启用了基于负载的自动扩展,则单击 +实例。否则,选择添加基于负载的实例。选择 “现有” 选项卡。

    向层中添加基于负载的现有实例
  3. 现有选项卡上,选择一个实例。该列表仅显示基于负载的实例。

    注意

    如果您改变了主意,不想使用现有实例,可在新建选项卡按照上一步骤所述创建一个新实例。

  4. 选择添加实例将实例添加到层。

您可以随时修改基于负载的自动扩展的配置或将其禁用。

禁用基于负载的自动扩展
  1. 在导航窗格中,单击实例下的基于负载,并针对相应的层单击编辑

  2. 启用基于负载的自动扩缩切换为