自动扩缩实例组

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

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

基础知识

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

托管实例组

自动扩缩是托管实例组的一项功能。 托管实例组是根据共同实例模板创建的同构实例池。自动扩缩程序可以在托管实例组中添加或删除实例。虽然 Compute Engine 同时提供托管实例组和非托管实例组,但只有托管实例组可以使用自动扩缩程序进行扩缩。

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

自动扩缩政策和目标利用率

要创建自动扩缩程序,请指定自动扩缩政策和目标利用率水平,以供自动扩缩程序用于确定何时需要扩缩实例组。您可以选择使用以下政策进行扩缩:

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

自动扩缩程序会根据政策持续收集使用量信息,将实际利用率与您所需的目标利用率进行比较,并确定该实例组是需要进行纵向扩容还是缩减。

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

如需了解每项政策的简要总结,请参阅政策。如需查看每项政策的详细讨论,请参阅以下内容:

冷却期

设置自动扩缩时,您需要指定一个冷却期,以便让您的实例在自动扩缩程序开始从其收集信息之前完成初始化。实例启动期间的信息可能对于自动扩缩程序决策而言并不可靠,因此您可能希望忽略此数据。默认情况下,冷却期为 60 秒。

稳定期

为了缩减实例组,自动扩缩程序会根据最近 10 分钟内的峰值负载来计算该实例组的建议目标大小。我们所说的最近 10 分钟即称为稳定期

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

自动扩缩模式

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

规范

  • 自动扩缩功能仅适用于托管实例组。不支持非托管实例组。
  • 如果停用主动式实例重新分配,则自动扩缩不适用于托管实例组。
  • 启用自动扩缩功能时,您无法创建具有特定名称的实例。不过,您可以在创建具有特定名称的实例后启用自动扩缩程序。
  • 不要将 Compute Engine 自动扩缩功能用于 Google Kubernetes Engine 拥有的托管实例组。对于 Google Kubernetes Engine 实例组,请改用集群自动扩缩

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

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

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

准备工作

  1. 了解托管实例组

    由于自动扩缩程序是托管实例组的一项功能,因此在使用自动扩缩功能之前,请了解托管实例组的工作原理。

  2. 获取托管实例组的名称或网址

    对于所有自动扩缩请求,您都必须提供托管实例组名称或托管实例组网址。在 gcloud 命令行工具中,您可以使用托管实例组名称,而在 API 中,您将需要提供完全限定网址。

    要获取现有托管实例组的网址,您可以使用 instance-groups managed list --uri 命令或 instance-groups managed list [INSTANCE_GROUP] --uri 命令。例如,以下命令会提供 us-central1-f 地区中托管实例组的网址:

    gcloud compute instance-groups managed list example-group --uri --filter="zone:(us-central1-f)"
    

    gcloud 工具会返回托管实例组的网址:

    https://compute.googleapis.com/compute/v1/projects/myproject/zones/us-central1-f/instanceGroupManagers/example-group
    

    如果您当前没有托管实例组,请参阅创建托管实例组的方法。

后续步骤

准备就绪后,您需要创建一个自动扩缩程序,以根据 CPU 或负载平衡服务容量或者 Stackdriver Monitoring 指标进行扩缩。

此页内容是否有用?请给出您的反馈和评价:

发送以下问题的反馈:

此网页
Compute Engine 文档