本文档介绍如何创建能够自动扩缩的代管式实例组 (MIG),以便根据整个实例组的平均 CPU 利用率自动添加和移除虚拟机。例如,如果实例组的 CPU 利用率较低,则实例组会自动移除虚拟机以节省费用。
您可以根据各种自动扩缩信号来自动扩缩 MIG。如需了解详情,请参阅自动扩缩器概览。
您还可以阅读创建 MIG 的其他基本场景。
准备工作
- 创建实例模板,以便创建代管式实例组。
-
如果您尚未设置身份验证,请进行设置。身份验证是通过其进行身份验证以访问 Google Cloud 服务和 API 的过程。如需从本地开发环境运行代码或示例,您可以选择以下任一选项向 Compute Engine 进行身份验证:
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
-
在控制台中,转到实例组页面。
其余步骤会显示在 Google Cloud 控制台中。
-
如果您有实例组,请选择该实例组,然后点击修改。如果您没有实例组,请点击
创建实例组 。 - 对于新实例组,请指定名称,然后为该实例组选择实例模板或创建新的实例组。
- 如果不存在自动扩缩配置,请在自动扩缩下点击配置自动扩缩。
-
在
自动扩缩模式 下,选择“开启:在实例组中添加和移除实例”。 - 指定您希望自动扩缩器在此组中创建的实例数量下限和上限。
- 在自动扩缩指标部分中,如果现有的 CPU 利用率指标尚不存在,请添加一项指标:
-
点击
添加指标 。 -
在
指标类型 下,选择 CPU 利用率。 -
输入所需的目标 CPU 利用率。此值被视为百分比。例如,如果 CPU 利用率为 75%,请输入
75
。 -
在预测性自动扩缩下,选择
关闭 。如需详细了解预测性自动扩缩以及它是否适合您的工作负载,请参阅根据预测进行扩缩。 - 点击完成。
-
点击
- 您可以使用初始化期来设置初始化期,以告知自动扩缩器应用初始化所需的时间。指定准确的初始化期可以改进自动扩缩器的决策。例如,扩容时,自动扩缩器会忽略仍在初始化的虚拟机中的数据,因为这些虚拟机可能尚未代表应用的正常使用情况。默认初始化期为 60 秒。
- 如需创建 MIG,请点击
创建 。 - 详细了解自动扩缩功能,以及您可以添加到自动扩缩政策的不同类型的扩缩信号。
- 了解如何管理自动扩缩器。
- 设置基于应用的自动修复功能,该功能会定期验证应用是否在 MIG 的每个虚拟机上按预期响应,并自动重新创建无响应的虚拟机。
- 了解如何通过设置并应用新的实例模板、所有实例配置或每个实例配置,将新配置应用于 MIG 中的所有或部分虚拟机。
- 了解如何将外部 HTTP(S) 负载均衡器前端添加到实例组。如需了解其他类型的负载均衡器,请参阅负载均衡概览。
Terraform
如需在本地开发环境中使用本页面上的 Terraform 示例,请安装并初始化 gcloud CLI,然后使用您的用户凭据设置应用默认凭据。
如需了解详情,请参阅 Set up authentication for a local development environment。
REST
如需在本地开发环境中使用本页面上的 REST API 示例,请使用您提供给 gcloud CLI 的凭据。
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
如需了解详情,请参阅 Google Cloud 身份验证文档中的使用 REST 时进行身份验证。
限制
如需查看 MIG 限制的完整列表(因您使用的配置而异),请参阅 MIG 限制。
创建 MIG 并启用自动扩缩
使用 Google Cloud 控制台、gcloud CLI、Terraform, 或 REST。
控制台
gcloud
您必须先创建 MIG,然后才能启用自动扩缩功能。请按照说明执行以下操作:创建 MIG 并将虚拟机限制在单个可用区或创建 MIG 并使其虚拟机分布在一个区域内的多个可用区中。
然后使用
set-autoscaling
子命令为组启用自动扩缩功能。例如,以下命令会创建目标 CPU 利用率为 60% 的自动扩缩器。创建自动扩缩器时,不仅需要--target-cpu-utilization
参数,还需要--max-num-replicas
参数。(可选)您可以设置
--min-num-replicas
,以指明该组中所需的最小虚拟机数。如果您未设置最小值,则默认情况下,MIG 会将此值设置为 2。您可以使用
--cool-down-period
标志来设置初始化期,用于告知自动扩缩器应用初始化所需的时间。指定准确的初始化期可以改进自动扩缩器的决策。例如,扩容时,自动扩缩器会忽略仍在初始化的虚拟机中的数据,因为这些虚拟机可能尚未代表应用的正常使用情况。默认初始化期为 60 秒。gcloud compute instance-groups managed set-autoscaling example-managed-instance-group \ --max-num-replicas 20 \ --target-cpu-utilization 0.60 \ --cool-down-period 90
如果需要,您可以启用预测性自动扩缩功能,以在预测的负载之前提前横向扩容。如需了解预测性自动扩缩是否适合您的工作负载,请参阅根据预测进行扩缩。
您可以使用
instance-groups managed describe
命令验证自动扩缩功能是否已成功启用,该命令描述了相应的 MIG,并提供该组的任何自动扩缩功能的相关信息:gcloud compute instance-groups managed describe example-managed-instance-group
Terraform
您必须先创建 MIG,然后才能启用自动扩缩功能。请按照说明执行以下操作:创建 MIG 并将虚拟机限制在单个可用区或创建 MIG 并使其虚拟机分布在一个区域内的多个可用区中。
如需在 MIG 中配置自动扩缩,您可以使用
google_compute_autoscaler
资源。以下示例根据可用区级 MIG 中的 CPU 利用率配置自动扩缩。
如需了解如何应用或移除 Terraform 配置,请参阅基本 Terraform 命令。
REST
在启用自动扩缩功能之前,您必须先创建 MIG 并将虚拟机限制在单个可用区,或者创建 MIG 并使其虚拟机分布在一个区域内的多个可用区中。
如果您有可用区级 MIG,请向
autoscalers.insert
方法发出POST
请求。如果您有区域级 MIG,请使用regionAutoscalers.insert
方法。例如:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/autoscalers/
请求正文必须包含
name
、target
、autoscalingPolicy
字段。autoscalingPolicy
字段必须定义目标cpuUtilization
值和maxNumReplicas
值。(可选)您可以设置
minNumReplicas
,以指明该组中所需的最小虚拟机数。如果您未设置最小值,则默认情况下,MIG 会将此值设置为 2。您可以使用
coolDownPeriodSec
字段来设置初始化期,以告知自动扩缩器应用初始化所需的时间。指定准确的初始化期可以改进自动扩缩器的决策。例如,扩容时,自动扩缩器会忽略仍在初始化的虚拟机中的数据,因为这些虚拟机可能尚未代表应用的正常使用情况。默认初始化期为 60 秒。{ "name": "example-autoscaler", "target": "https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-f/instanceGroupManagers/example-managed-instance-group", "autoscalingPolicy": { "maxNumReplicas": 10, "cpuUtilization": { "utilizationTarget": 0.6 }, "coolDownPeriodSec": 90 } }
如果需要,您可以启用预测性自动扩缩功能,以在预测的负载之前提前横向扩容。如需了解预测性自动扩缩是否适合您的工作负载,请参阅根据预测进行扩缩。
如需详细了解如何根据 CPU 利用率启用自动扩缩功能,请参阅根据 CPU 利用率进行扩缩。
后续步骤
如未另行说明,那么本页面中的内容已根据知识共享署名 4.0 许可获得了许可,并且代码示例已根据 Apache 2.0 许可获得了许可。有关详情,请参阅 Google 开发者网站政策。Java 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2024-12-22。
-