本文档介绍如何创建能够自动扩缩的代管式实例组 (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
-
安装 Google Cloud CLI,然后通过运行以下命令初始化 Google Cloud CLI:
gcloud init
- Set a default region and zone.
- 安装 Google Cloud CLI。
-
如需初始化 gcloud CLI,请运行以下命令:
gcloud init
-
为您的 Google 账号创建本地身份验证凭据:
gcloud auth application-default login
-
在控制台中,前往实例组页面。
其余步骤将自动显示在 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 的凭据。
如需了解详情,请参阅 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-07-09。
[{ "type": "thumb-down", "id": "hardToUnderstand", "label":"Hard to understand" },{ "type": "thumb-down", "id": "incorrectInformationOrSampleCode", "label":"Incorrect information or sample code" },{ "type": "thumb-down", "id": "missingTheInformationSamplesINeed", "label":"Missing the information/samples I need" },{ "type": "thumb-down", "id": "translationIssue", "label":"翻译问题" },{ "type": "thumb-down", "id": "otherDown", "label":"其他" }] [{ "type": "thumb-up", "id": "easyToUnderstand", "label":"易于理解" },{ "type": "thumb-up", "id": "solvedMyProblem", "label":"解决了我的问题" },{ "type": "thumb-up", "id": "otherUp", "label":"其他" }] -