通过已暂停和已停止的虚拟机加速扩容


本文档介绍了已暂停和已停止的虚拟机 (VM) 实例的备用池的工作原理,以及如何使用备用池来加速托管式实例组 (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

    1. 安装 Google Cloud CLI,然后通过运行以下命令初始化 Google Cloud CLI:

      gcloud init
    2. Set a default region and zone.
    3. REST

      如需在本地开发环境中使用本页面上的 REST API 示例,请使用您提供给 gcloud CLI 的凭据。

        安装 Google Cloud CLI,然后通过运行以下命令初始化 Google Cloud CLI:

        gcloud init

      如需了解详情,请参阅 Google Cloud 身份验证文档中的使用 REST 时进行身份验证

使用 MIG API 进行自动扩缩

我们建议您使用 Compute Engine 自动扩缩器来自动扩缩 MIG。但是,如果您出于某种原因想要使用其他自动扩缩器,请使用 MIG API 的端点来处理已暂停和已停止的虚拟机。

借助 MIG API,您可以连接自动扩缩器(例如 GKE 自动扩缩器),并利用备用虚拟机池更快地进行扩容。

在已暂停和已停止的池之间选择

在已暂停和已停止的池之间选择取决于您的具体应用场景。为了获得最佳性能,您应该针对扩容场景尝试不同的备用池类型,以确定哪种类型最符合您的需求。 不同工作负载可能展示使用不同选项进行处理的时间更短。在某些情况下,将内存状态从存储复制到虚拟机这一操作所花费的时间可能比重启虚拟机或从头开始创建新虚拟机的时间更长。

为了找到最佳方法,请先参考以下准则:

  • 如果虚拟机需要耗时的内存初始化,请使用已暂停的虚拟机,因为已暂停的虚拟机会保留内存状态。确保您的应用可以暂停和恢复。保留内存状态需要额外的存储空间,并且可能会产生额外的费用。
  • 如果虚拟机初始化主要侧重于初始化存储在永久性磁盘中的数据,请使用已停止的虚拟机。

修改 MIG 中的备用政策

本部分介绍了如何设置初始延迟时间,以及如何设置备用池模式以扩容池。

控制台

  1. 在 Google Cloud 控制台中,转到实例组页面。

    转到“实例组”

  2. 在列表的名称列下方,点击要在其中修改备用政策的实例组的名称。

  3. 点击修改以修改此代管实例组。

  4. 点击显示高级配置

  5. 备用池部分的模式下,选择扩容

  6. 初始延迟时间字段中,输入 MIG 在暂停或停止虚拟机之前应等待的秒数。初始延迟时间可让初始化脚本有时间来准备虚拟机以快速地进行扩容。

  7. 点击保存

gcloud

使用 beta instance-groups managed update 命令并指定操作模式和初始延迟时间。

gcloud beta compute instance-groups managed update MIG_NAME \
  --standby-policy-mode=scale-out-pool \
  --standby-policy-initial-delay=DELAY \
  [--region=REGION | --zone=ZONE]

替换以下内容:

  • MIG_NAME:MIG 的名称。
  • DELAY:MIG 在暂停或停止虚拟机之前应等待的秒数。初始延迟时间可让初始化脚本有时间来准备虚拟机以快速地进行扩容。
  • REGION:对于区域级 MIG,这是 MIG 所在的区域。
  • ZONE:对于可用区级 MIG,这是 MIG 所在的可用区。

API

使用 instanceGroupManager.update 方法并在请求正文中指定操作模式和初始延迟时间。对于区域级 MIG,请使用 regionInstanceGroupManager.update 方法

PUT https://www.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/MIG_NAME

{
// ...
"standbyPolicy": {
  "mode": "SCALE_OUT_POOL",
  "initialDelaySec": DELAY
}
// ...
}

替换以下内容:

  • PROJECT_ID:您的项目的 ID。
  • MIG_NAME:MIG 的名称。
  • DELAY:MIG 在暂停或停止虚拟机之前应等待的秒数。初始延迟时间可让初始化脚本有时间来准备虚拟机以快速地进行扩容。
  • REGION:对于区域级 MIG,这是 MIG 所在的区域。
  • ZONE:对于可用区级 MIG,这是 MIG 所在的可用区。

调整 MIG 中的备用池的大小

本部分介绍了如何调整 MIG 中的已暂停和已停止的虚拟机池的大小。

控制台

  1. 在 Google Cloud 控制台中,转到实例组页面。

    转到“实例组”

  2. 在列表的名称列下方,点击要在其中修改备用池大小的实例组的名称。

  3. 点击修改以修改此代管实例组。

  4. 点击显示高级配置

  5. 备用池部分的已暂停的虚拟机已停止的虚拟机字段中输入新大小。

  6. 点击保存

gcloud

instance-groups managed resize Beta 版命令--suspended-size--stopped-size 标志结合使用。

gcloud beta compute instance-groups managed resize MIG_NAME \
--suspended-size=SUSPENDED_SIZE \
--stopped-size=STOPPED_SIZE \
[--region=REGION | --zone=ZONE]

替换以下内容:

  • MIG_NAME:要在其中暂停实例的 MIG 的名称
  • SUSPENDED_SIZE:MIG 在任何给定时间应维护的已暂停虚拟机的数量
  • STOPPED_SIZE:MIG 在任何给定时间应维护的已停止虚拟机的数量
  • REGION:对于区域级 MIG,这是 MIG 所在的区域
  • ZONE:对于可用区级 MIG,这是 MIG 所在的可用区

API

使用 instanceGroupManager.update 方法并在请求正文中指定已暂停和已停止的虚拟机池的大小。对于区域级 MIG,请使用 regionInstanceGroupManager.update 方法

PUT https://www.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/MIG_NAME

{
// ...
"targetSuspendedSize": SUSPENDED_SIZE,
"targetStoppedSize": STOPPED_SIZE
// ...
}

替换以下内容:

  • PROJECT_ID:请求的项目 ID。
  • ZONE:对于可用区级 MIG,这是 MIG 所在的可用区
    • 对于地区级 MIG,将 zones/ZONE 替换为 regions/REGION 并指定 MIG 所在的地区
  • MIG_NAME:要在其中停止实例的 MIG 的名称
  • SUSPENDED_SIZE:MIG 在任何给定时间应维护的已暂停虚拟机的数量
  • STOPPED_SIZE:MIG 在任何给定时间应维护的已停止虚拟机的数量

后续步骤