自动扩缩实例组

使用集合让一切井井有条 根据您的偏好保存内容并对其进行分类。

托管实例组 (MIG) 提供自动扩缩功能,可让您根据负载的增减自动在 MIG 中添加或删除虚拟机 (VM) 实例。自动扩缩可帮助您的应用顺利应对流量增加的情况,并在资源需求量减少时降低费用。您只需定义自动扩缩政策,自动扩缩器即可根据测量到的负载和配置的选项执行自动扩缩。

自动扩缩的工作原理是,当有更多负载时,该功能会向您的 MIG 中添加更多虚拟机(扩充),而在虚拟机需求量减少时,该功能会删除虚拟机(缩减)。

规格

  • 自动扩缩仅适用于代管式实例组 (MIG)。不支持非托管实例组。
  • 如果您要自动扩缩区域级 MIG,则会受到以下限制:
  • 启用自动扩缩功能时,您无法创建具有特定名称的实例。不过,您可以在创建具有特定名称的虚拟机实例后启用自动扩缩器。
  • 如果您的 MIG 采用有状态配置,则您无法使用自动扩缩功能。
  • 不要将 Compute Engine 自动扩缩功能用于 Google Kubernetes Engine 拥有的 MIG。对于 Google Kubernetes Engine 实例组,请改用集群自动扩缩

    如果您不确定自己的实例组是否属于 GKE 集群,请在 MIG 名称中查找 gke 前缀。 例如 gke-test-1-3-default-pool-eadji9ah

  • 自动扩缩政策必须始终至少有一个扩缩信号。

  • 一个自动扩缩器可以根据多个信号做出扩缩决策,但只能为每种类型的指标处理一个信号(Cloud Monitoring 指标属于例外情况);对于 Monitoring 指标,一个自动扩缩器最多可以处理五个信号。自动扩缩器会计算每个信号的建议虚拟机数量,然后根据在实例组中提供的虚拟机数量最多的信号来扩缩实例组。

  • 自动扩缩与自动修复是彼此独立工作的。 如果您为实例组配置了自动修复,并且某一实例未通过健康检查,则自动修复程序会尝试重新创建该实例。重新创建实例可能会导致实例组中的实例数低于您指定的自动扩缩阈值 (minNumReplicas)。

  • 如果您自动扩缩地区 MIG,则可以添加一个实例,然后立即从其中一个区域中删除该实例。如果区域中的利用率触发横向扩容,但地区 MIG 中的总体利用率不需要额外实例或其他区域需要其他实例,则会发生这种情况。

前提条件

自动扩缩器使用 Compute Engine 服务代理在组中添加和移除实例。启用 Compute Engine API 时,Google Cloud 会自动创建此服务帐号及其绑定到 Compute Engine Service Agent 角色的 IAM 政策。

如果您的项目缺少此帐号(例如,如果您已移除此帐号),可以手动添加:

控制台

  1. 在 Google Cloud 控制台中,前往 IAM 页面。

    转到 IAM

  2. 点击添加

  3. 输入 service-PROJECT_NUMBER@compute-system.iam.gserviceaccount.com

  4. 选择 Compute Engine Service Agent 角色。

  5. 点击保存

gcloud

gcloud projects add-iam-policy-binding PROJECT_ID \
   --member serviceAccount:service-PROJECT_NUMBER@compute-system.iam.gserviceaccount.com \
   --role roles/compute.serviceAgent

基础知识

自动扩缩功能使用以下基础概念和服务。

代管实例组

自动扩缩是托管实例组 (MIG) 的一项功能。 代管式实例组是根据公共实例模板创建的虚拟机 (VM) 实例的集合。自动扩缩器会根据代管式实例组的自动扩缩政策添加或删除代管式实例。虽然 Compute Engine 同时提供了代管式实例组和非代管式实例组,但只有代管式实例组可以使用自动调节程序进行扩缩。

如需了解代管式实例组和非代管式实例组之间的区别,请参阅实例组

如需了解如何创建代管式实例组,请参阅创建 MIG

自动扩缩政策

为实例组定义自动扩缩政策时,您可以指定一个或多个用于自动扩缩实例组的信号。如果您在政策中设置多个信号,自动扩缩器会计算每个信号的建议虚拟机数量,并将实例组的建议大小设置为最大值。

以下部分简要介绍了基于目标利用率指标的信号和基于时间表的信号。

目标利用率指标

您可以根据以下一个或多个指标进行自动扩缩,以反映实例组的负载:

  • 平均 CPU 利用率。
  • HTTP 负载平衡服务容量,可能基于利用率或每秒请求次数
  • Cloud Monitoring 指标。

自动扩缩器会根据所选的利用率指标持续收集用量信息,将实际利用率与您所需的目标利用率进行比较,并使用此信息来确定该实例组是需要移除实例(缩减)还是添加实例(扩充)。

目标利用率水平是指您希望将虚拟机实例数量维持在哪个水平。例如,如果要根据 CPU 利用率进行扩缩,则可以将目标利用率水平设置为 75%,这样自动扩缩器会将所指定实例组的 CPU 利用率维持在 75% 或接近 75% 的水平。根据自动扩缩政策,每个指标的利用率水平的解释方式各不相同。

如需详细了解如何根据目标利用率指标进行扩缩,请参阅以下页面:

时间表

您可以使用基于时间表的自动扩缩功能来为预期负载分配容量。每个实例组最多可以有 128 个扩缩时间表。对于每个扩缩时间表,请指定以下各项:

  • 容量:要求的虚拟机实例数量下限
  • 时间表:开始时间、时长和重复周期(例如,一次、每天、每周或每月)

每个扩缩时间表的有效状态会从其开始时间持续到配置的时长。在此期间,自动扩缩器会扩缩实例组,使其至少具有扩缩时间表定义的实例数量。

如需了解详情,请参阅根据时间表进行扩缩

冷却期

冷却期也称为应用初始化期。在应用初始化实例时,实例的用量数据可能无法反映正常情况。因此,自动扩缩器使用冷却期来通过以下方式做出扩缩决策:

  • 对于缩减决策,自动扩缩器会考虑所有实例的使用情况数据,即使实例仍在冷却期内。如果所有实例的平均利用率低于目标利用率,则自动扩缩器建议移除实例。
  • 对于横向扩容决策,自动扩缩器会忽略仍处于冷却期的实例的使用情况数据。
  • 如果启用了预测性模式,则冷却期会指示预测性自动扩缩器在预期负载之前进一步扩容,以便在负载到达时初始化应用。例如,如果您将冷却期设置为 300 秒,则预测性自动扩缩器会在预测负载前 5 分钟创建虚拟机。

指定冷却期以指示实例上应用初始化所需的时间。默认情况下,冷却期为 60 秒。

实际的初始化时间因许多因素而异。我们建议您测试应用的初始化用时。为此,请创建一个实例,并测定从实例变为 RUNNING 状态到应用准备就绪的启动过程用时。

如果您设置的冷却期值明显长于实例初始化所花费的时间,那么您的自动扩缩器可能会忽略合理的利用率数据,并且可能会低估您的实例组所需的规模,从而导致纵向扩容时出现延迟

稳定期

为了缩减实例组,自动扩缩器会根据最近 10 分钟内的峰值负载来计算该实例组的建议目标大小。这些最近 10 分钟时段称为稳定期

借助稳定期,自动扩缩器可确保代管式实例组的建议大小始终足以处理在过去 10 分钟内观察到的峰值负载。

这一为时 10 分钟的稳定期可能表现为在缩减规模时出现的延迟,但实际上这是自动扩缩功能的一项内置特性。此延时可确保规模较小的实例组足以支持最近 10 分钟内的峰值负载。

自动扩缩模式

如果您需要调查或配置实例组而不受自动扩缩器操作的干扰,可以暂时关闭或限制自动扩缩活动。停用或限制自动扩缩器时,其配置保持不变;再次启用自动扩缩器或解除限制时,所有自动扩缩活动都会恢复。

预测性自动扩缩

如果您启用预测性自动扩缩功能以优化 MIG 来提高可用性,则自动扩缩器会根据历史数据预测未来的负载,并在预测的负载到达之前横向扩容 MIG,以使新实例能够在负载到达时提供服务。

如果您的工作负载符合以下条件,则预测性自动扩缩效果最佳:

  • 您的应用需要很长时间才能完成初始化,例如,您配置了超过 2 分钟的冷却期
  • 您的工作负载每日或每周预计会发生变化。

如需了解详情,请参阅根据预测进行扩缩

缩容控制机制

如果您的工作负载需要很长时间来初始化(例如,由于安装任务时间过长),您可以配置缩减控制机制,以降低由于突发的缩减事件导致响应延迟的风险。 具体而言,如果您希望在负载下降后不久出现负载峰值,则可以限制缩减速率,以防止自动扩缩功能将 MIG 的大小缩减到超过工作负载所能容忍的虚拟机实例数量。

如果应用的初始化速度足够快,可以在横向扩容时提取负载峰值,则无需配置缩减控制机制。

如需配置缩减控制机制,请在自动扩缩政策中设置以下属性。

  • 允许的缩减量上限。 这是指在指定的跟踪时间窗口内,您的工作负载可以接受虚拟机实例数比其实例数峰值低多少。借助此参数,您可以限制实例组的缩减幅度,这样,在更多实例开始处理负载之前,您仍然可以处理可能的负载峰值。您设置的允许的缩减量上限越小,您的实例组进行缩减所需的时间就越长。

  • 跟踪时间窗口。 这是指自动扩缩器在其中监控工作负载所需实例数峰值的历史记录。自动扩缩器不会将实例组大小调整为低于在跟踪时段内观察到的峰值与允许的缩减量上限之差。您可以使用此参数来定义自动扩缩器在移除实例之前应等待的时长(由允许的缩减量上限定义)。如果跟踪时间窗口较长,自动扩缩器会考虑更多历史峰值,这会使缩减更加保守和稳定。

如需了解详情,请参阅配置缩减控制机制了解自动扩缩器决策

建议的实例组大小是自动扩缩器根据在最近 10 分钟内观察到的峰值负载建议托管实例组保留的虚拟机数量。这些最近 10 分钟时段称为稳定期。建议的大小会不断重新计算。如果您设置了具有缩减控制机制的自动扩缩政策,则建议的大小将受缩减控制机制的约束。

价格

配置自动扩缩政策无需额外费用。自动扩缩器会动态地添加或删除虚拟机实例,因此您只需为 MIG 使用的资源付费。您可以通过在自动扩缩政策中配置最小和最大实例数来控制资源费用。如需了解 Compute Engine 价格信息,请参阅价格

后续步骤

  1. 如果您没有现成的 MIG,请查看如何创建托管实例组
  2. 创建可根据以下指标进行扩缩的自动扩缩器:

  3. 管理您的自动扩缩器,以获取其相关信息、配置缩减控制机制或施以临时性限制等。