了解自动扩缩程序决策

自动扩缩可代表您对托管实例组进行自动调节。利用本文档了解自动扩缩程序在调节托管实例组时可能做出的一些决策。

目标利用率和实际利用率之间的差距

在自动扩缩过程中,您会注意到较小实例组的实际利用率和目标利用率之间存在较大差距。这是因为当自动调节程序解释利用率数据,并确定要添加或移除的实例数时,总是通过向上或向下舍入来保守地进行操作。这样可防止自动调节程序添加的资源数量不足,或移除过多资源。

例如,如果您将利用率目标设置为 0.7,并且您的应用超出了利用率目标,则自动调节程序可能会断定添加 1.5 个虚拟机会将利用率降低到接近 0.7。由于无法添加 1.5 个虚拟机,因此调节程序会向上舍入并添加 2 个虚拟机。这会导致平均 CPU 利用率降低到不足 0.7,但可以确保您的应用有足够的资源来提供支持。

同样,如果自动调节程序确定移除 1.5 个虚拟机会将您的利用率提高到接近 0.7,它将只移除一个虚拟机。

对于拥有更多虚拟机的较大实例组,利用率会在大量实例之间分配,因此添加或移除虚拟机会缩小实际利用率与目标利用率之间的差距。

缩小过程中出现的延迟

为了缩小实例组,自动调节程序会根据最近 10 分钟的峰值负载来计算该组的建议目标大小。最近 10 分钟称为稳定期

观察最近 10 分钟的使用率可为自动调节程序提供以下帮助:

  • 确保从实例组收集的使用量信息的稳定。
  • 防止自动调节程序以过高的速率连续添加或移除实例。
  • 确定较小的组大小足以支持最近 10 分钟的峰值负载后,安全地移除实例。

这 10 分钟的稳定期可能在缩小实例组的过程中表现为延时,但实际上这是自动扩缩的内置功能。此外,如果新实例添加到托管实例组,则此延迟还可确保该实例会至少运行 10 分钟,然后才能终止。

在决定是否缩小组时,新实例的冷却期会被忽略。

连接排空导致的延迟

如果该组属于已启用连接排空后端服务,则可能要在连接排空结束后等待最多 60 秒才会移除或删除虚拟机实例。

准备终止实例

当自动调节程序缩小实例组的规模时,会确定需要关停的虚拟机数量,然后从实例组中选择利用率较低的虚拟机实例以将其终止。在终止实例之前,您也许希望确保这些实例执行某些特定任务,例如关闭其中的现有连接、安全关闭任何应用或应用服务器、上传日志等。您可以指示实例使用关闭脚本来执行这些任务。

关闭脚本会在终止请求发出和实例实际终止之间的短暂时间内尽力运行。在此期间,Compute Engine 将尝试运行您的关闭脚本以执行您在其中指定的所有任务。

如果要对托管实例组使用负载平衡,则此功能特别有用。如果您的实例运行状况不佳,则负载平衡器可能需要过一段时间才能识别出实例运行状况不佳,而这会导致负载平衡器继续向该实例发送新请求。如果使用关闭脚本,则实例会在关闭时报告其运行状况不佳,以便负载平衡器停止向该实例发送流量。如需了解详情,请参阅负载平衡文档中的处理运行状况不佳的实例

如需详细了解关闭脚本,请参阅关闭脚本

如需详细了解实例关停,请阅读有关停止删除实例的文档。

查看自动扩缩图表以了解利用率

如果您有一个正在使用自动扩缩的托管实例组,Compute Engine 会提供一个自动扩缩图表,用于跟踪任何时间点的总利用率和自动扩缩的实例数量。您可以在 Google Cloud Platform Console 中访问此图表。

  1. 转到 GCP Console 中的“实例组”页面。

    转到“实例组”页面

  2. 点击要查看的自动扩缩的托管实例组的名称。请注意,相应的组必须基于 CPU 利用率使用自动扩缩(尚不支持其他自动扩缩指标)。
  3. 在托管实例组详情页面上,选择监控标签(如果尚未选择)。

    “监控”标签页的屏幕截图

  4. 确保在下拉菜单中选择了自动扩缩的实例数

该图表跟踪实例数量与 CPU 利用率的关系。以下信息可帮助理解这些图表:

  • 上方图表中的蓝线表示托管实例组中的实例数。
  • 下方图表中的蓝线表示该实例组的总 CPU 利用率。
  • 下方图表中的绿线表示该托管实例组剩余的可用容量。
    • 如果绿线位于蓝线之上,表示有大量可用容量,您的虚拟机实例很可能未得到充分利用。
    • 如果绿线位于蓝线之下,则表示剩余容量极少(如果还有),您应该向实例组添加更多实例。
  • 如果容量下降,则可能意味着实例组的规模已经缩小,因此上方图表中的蓝线也将下降。同样,如果您的容量增加,则实例组的规模很可能也增大。

例如,下图截取的是一个已达到其容量的自动扩缩的托管实例组图片,在图中显示的情况下,会导致自动调节程序向该组添加更多虚拟机实例,从而增大该组的容量。

自动扩缩图表的屏幕截图

查看状态消息

自动调节程序在调节过程中遇到问题时,会返回警告或错误消息。您可以通过以下两种方式查看这些状态消息。

在“实例组”页面上查看状态消息

您可以直接在 Google Cloud Platform Console 的“实例组”页面上查看状态消息。

  1. 转到 Google Cloud Platform Console 中的“实例组”页面。

    转到“实例组”页面

  2. 查找任何带有警告图标 (!) 的实例组。例如:

    实例组页面上状态消息的屏幕截图

  3. 将鼠标悬停在状态图标上以获取状态消息的详情。

在“实例组详情”页面上查看状态消息

您可以直接转到特定实例组的详情页面以查看相关的状态消息。

  1. 转到 Google Cloud Platform Console 中的“实例组”页面。

    转到“实例组”页面

  2. 点击要查看其状态消息的实例组。
  3. 在详情页面上,通过成员标签查看状态消息。例如:

    实例组详情页面上状态消息的屏幕截图

通常返回的状态消息

自动调节程序在调节过程中遇到问题时,会返回警告或错误消息。以下是一些通常返回的消息及其含义。

All instances in the instance group are unhealthy (not in RUNNING state). If this is an error, check the instances.
实例组中的所有实例都未处于“RUNNING”状态。如果这是故意为之,那么您可以忽略此消息。如果不是,请对实例组进行问题排查。
The number of instances has reached the maxNumReplicas. The autoscaler cannot add more instances.
创建自动调节程序时,您可以指出实例组可以拥有的实例数上限。目前,自动调节程序正尝试调整实例组的大小以满足需求,但已达到 maxNumReplicas。如需将 maxNumReplicas 更新为更大的数字,请参阅更新自动扩缩程序
The monitoring metric that was specified does not exist or does not have the required labels. Check the metric.
虽然您使用 Stackdriver 指标进行自动扩缩,但您提供的指标不存在或缺少所需的标签。需要使用不同的标签,具体取决于指标是标准指标还是自定义指标。如需了解详情,请参阅关于根据 Stackdriver Monitoring 指标进行调节的文档。
Quota for some resources is exceeded. Increase the quota or delete resources to free up more quota.
您可以在 Google Cloud Platform Console 的配额页面上获取有关您的可用配额的信息。
Autoscaling does not work with an HTTP/S load balancer configured for maxRate.
可以使用 maxRate 配置对实例组进行负载平衡,但自动调节程序不支持此模式。因此,请更改该配置或停用自动扩缩。如需详细了解 maxRate,请参阅负载平衡文档中的限制和指南
The autoscaler is configured to scale based on a load balancing signal but the instance group has not received any queries from the load balancer. Check that the load balancing configuration is working.
实例组正在进行负载平衡,但该组没有传入查询。该服务可能正处于空闲期,在这种情况下,您无需担心。但是,此消息也可能是由配置错误导致;例如,自动扩缩的实例组可能是多个负载平衡器的目标,这种情况并不受支持。如需查看指南的完整列表,请参阅负载平衡文档中的限制和指南
此页内容是否有用?请给出您的反馈和评价:

发送以下问题的反馈:

此网页
Compute Engine 文档