了解自动调节程序决策

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

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

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

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

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

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

缩小过程中出现的延迟

为了缩小实例组,自动调节程序会考虑按照最近 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 文档