创建分散布置政策并应用于虚拟机


本文档介绍了如何通过创建分散布置政策并将其应用于虚拟机实例来提高虚拟机实例的可靠性。

分散布置政策指定应将虚拟机分布在不同的可用性网域中。这种分布有助于减少特定于位置的中断(例如硬件错误),在运行大规模、分布式和复制的工作负载(如 Hadoop 分布式文件系统 [HDFS]、Cassandra 或 Kafka)时非常有用。

准备工作

  • 设置身份验证(如果尚未设置)。身份验证是通过其进行身份验证以访问 Google Cloud 服务和 API 的过程。如需从本地开发环境运行代码或示例,您可以按如下方式向 Compute Engine 进行身份验证。

    Select the tab for how you plan to use the samples on this page:

    gcloud

    1. Install the Google Cloud CLI, then initialize it by running the following command:

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

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

        Install the Google Cloud CLI, then initialize it by running the following command:

        gcloud init

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

所需的角色

如需获得创建分散布置政策并将其应用于虚拟机所需的权限,请让管理员向您授予针对项目的 Compute Instance Admin (v1) (roles/compute.instanceAdmin.v1) IAM 角色。 如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

此预定义角色包含创建分散布置政策并将其应用于虚拟机所需的权限。如需查看所需的确切权限,请展开所需权限部分:

所需权限

若要创建分散布置政策并将其应用于虚拟机,您需要以下权限:

  • 创建布置政策:针对项目的 compute.resourcePolicies.create 权限
  • 将布置政策应用于现有虚拟机:针对项目的 compute.instances.addResourcePolicies 权限
  • 创建虚拟机:
    • 针对项目的 compute.instances.create 权限
    • 使用自定义映像创建虚拟机:针对映像的 compute.images.useReadOnly 权限
    • 使用快照创建虚拟机:针对快照的 compute.snapshots.useReadOnly 权限
    • 使用实例模板创建虚拟机:针对实例模板的 compute.instanceTemplates.useReadOnly 权限
    • 为虚拟机分配旧版网络:针对项目的 compute.networks.use 权限
    • 为虚拟机指定静态 IP 地址:针对项目的 compute.addresses.use 权限
    • 使用旧版网络时为虚拟机分配外部 IP 地址:针对项目的 compute.networks.useExternalIp 权限
    • 为虚拟机指定子网:针对项目或所选子网的 compute.subnetworks.use 权限
    • 在使用 VPC 网络时为虚拟机分配外部 IP 地址:针对项目或所选子网的 compute.subnetworks.useExternalIp 权限
    • 为虚拟机设置虚拟机实例元数据:针对项目的 compute.instances.setMetadata 权限
    • 为虚拟机设置标记:针对虚拟机的 compute.instances.setTags 权限
    • 为虚拟机设置标签:针对虚拟机的 compute.instances.setLabels 权限
    • 为虚拟机设置要使用的服务账号:针对虚拟机的 compute.instances.setServiceAccount 权限
    • 为虚拟机创建新磁盘:针对项目的 compute.disks.create 权限
    • 以只读或读写模式挂接现有磁盘:针对磁盘的 compute.disks.use 权限
    • 以只读模式挂接现有磁盘:针对磁盘的 compute.disks.useReadOnly 权限
  • 如需创建实例模板:针对项目的 compute.instanceTemplates.create 权限
  • 如需创建托管式实例组 (MIG):针对项目的 compute.instanceGroupManagers.create 权限

您也可以使用自定义角色或其他预定义角色来获取这些权限。

创建分散放置政策

除非您想测试将分散布置政策应用于虚拟机的效果,否则 Google Cloud 建议创建具有两个或更多可用性网域的分散布置政策。这样可以降低所有虚拟机受单个硬件错误影响的风险。如需了解详情,请参阅分散布置政策简介

如需创建分散布置政策,请选择以下选项之一:

gcloud

如需创建分散布置政策,请使用带有 --availability-domain-count 标志的 gcloud compute resource-policies create group-placement 命令

gcloud compute resource-policies create group-placement POLICY_NAME \
    --availability-domain-count=DOMAIN_COUNT \
    --region=REGION

替换以下内容:

  • POLICY_NAME:分散布置政策的名称。

  • DOMAIN_COUNT:要在其中布置虚拟机的不同可用性网域数。该值必须在 18 之间。

  • REGION:要在其中创建布置政策的区域。

REST

如需创建分散布置政策,请向 resourcePolicies.insert 方法发出 POST 请求。在请求正文中,包含 availabilityDomainCount 字段。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/resourcePolicies

{
  "name": "POLICY_NAME",
  "groupPlacementPolicy": {
    "availabilityDomainCount": DOMAIN_COUNT
  }
}

替换以下内容:

  • PROJECT_ID:要在其中创建布置政策的项目 ID。

  • REGION:要在其中创建布置政策的区域。

  • POLICY_NAME:分散布置政策的名称。

  • DOMAIN_COUNT:要在其中布置虚拟机的不同可用性网域数。该值必须在 18 之间。

应用分散布置政策

您可以将分散布置政策应用于现有虚拟机或 MIG,也可以在创建虚拟机、实例模板或 MIG 时应用。

如需将分散布置政策应用于 Compute Engine 资源,请选择以下方法之一:

将分散布置政策应用于虚拟机后,您可以通过查看虚拟机的详细信息并检查 availabilityDomain 字段的值来验证虚拟机所在的可用性网域。

将政策应用于现有虚拟机

在将分散布置政策应用于现有虚拟机之前,请考虑以下事项:

  • 如果您的分散布置政策指定了多个可用性网域,那么您无需停止虚拟机即可将该政策应用于该虚拟机。不过,虚拟机可能需要迁移到其他可用性网域。在此过程中,Compute Engine 会根据主机维护政策停止或实时迁移虚拟机。

  • 虚拟机和分散布置政策必须位于同一区域。例如,如果布置政策位于区域 us-central1,则虚拟机必须位于 us-central1 的可用区中。如果您需要将虚拟机迁移到其他区域,请参阅在可用区或区域之间移动虚拟机

如果虚拟机已指定布置政策,并且您想替换该政策,请改为参阅替换虚拟机中的布置政策

如需将分散布置政策应用于现有虚拟机,请选择以下选项之一:

gcloud

如需将分散布置政策应用于现有虚拟机,请使用 gcloud compute instances add-resource-policies 命令

gcloud compute instances add-resource-policies VM_NAME \
    --resource-policies=POLICY_NAME \
    --zone=ZONE

替换以下内容:

  • VM_NAME:现有虚拟机的名称。

  • POLICY_NAME:现有分散布置政策的名称。

  • ZONE:该虚拟机所在的可用区。

(可选)如需指定要将虚拟机布置在的可用性网域,请添加 --availability-domain 标志。

gcloud compute instances add-resource-policies VM_NAME \
    --availability-domain=DOMAIN_NUMBER \
    --resource-policies=POLICY_NAME \
    --zone=ZONE

DOMAIN_NUMBER 替换为要将虚拟机布置在其中的可用性网域的编号。该值必须在 1 到分散布置政策中指定的网域数量之间。如需验证分散布置政策中的网域数量,请查看布置政策的详细信息

REST

如需将分散布置政策应用于现有虚拟机,请向 instances.addResourcePolicies 方法发出 POST 请求。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/addResourcePolicies

{
  "resourcePolicies": [
    "projects/PROJECT_ID/regions/REGION/resourcePolicies/POLICY_NAME"
  ]
}

替换以下内容:

  • PROJECT_ID:分散布置政策和虚拟机所在项目的 ID。

  • ZONE:该虚拟机所在的可用区。

  • VM_NAME:现有虚拟机的名称。

  • REGION:分散布置政策所在的区域。

  • POLICY_NAME:现有分散布置政策的名称。

(可选)如需指定要在其中布置虚拟机的可用性网域,请在请求正文中添加 availabilityDomain 字段。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/addResourcePolicies

{
  "resourcePolicies": [
    "projects/PROJECT_ID/regions/REGION/resourcePolicies/POLICY_NAME"
  ],
  "scheduling": {
    "availabilityDomain": DOMAIN_NUMBER
  }
}

DOMAIN_NUMBER 替换为要将虚拟机布置在其中的可用性网域的编号。该值必须在 1 到分散布置政策中指定的网域数量之间。如需验证分散布置政策中的网域数量,请查看布置政策的详细信息

在创建虚拟机时应用政策

您只能在与布置政策相同的区域中创建指定分散布置政策的虚拟机。

如需创建用于指定分散布置政策的虚拟机,请选择以下选项之一:

gcloud

如需创建指定分散布置政策的虚拟机,请使用带有 --resource-policies 标志的 gcloud compute instances create 命令

gcloud compute instances create VM_NAME \
    --machine-type=MACHINE_TYPE \
    --resource-policies=POLICY_NAME \
    --zone=ZONE

请替换以下内容:

  • VM_NAME:要创建的虚拟机的名称。

  • MACHINE_TYPE:虚拟机的机器类型。

  • POLICY_NAME:现有分散布置政策的名称。

  • ZONE:要在其中创建虚拟机的可用区。

(可选)如需指定要在其中创建虚拟机的可用区,请添加 --availability-domain 标志。

gcloud compute instances create VM_NAME \
    --availability-domain=DOMAIN_NUMBER \
    --machine-type=MACHINE_TYPE \
    --resource-policies=POLICY_NAME \
    --zone=ZONE

DOMAIN_NUMBER 替换为要将虚拟机布置在其中的可用性网域的编号。该值必须在 1 到分散布置政策中指定的网域数量之间。如需验证分散布置政策中的网域数量,请查看布置政策的详细信息

REST

如需创建指定分散布置政策的虚拟机,请向 instances.insert 方法发出 POST 请求。在请求正文中,包含 resourcePolicies 字段。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances

{
  "name": "VM_NAME",
  "machineType": "zones/ZONE/machineTypes/MACHINE_TYPE",
  "disks": [
    {
      "boot": true,
      "initializeParams": {
        "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
      }
    }
  ],
  "networkInterfaces": [
    {
      "network": "global/networks/default"
    }
  ],
  "resourcePolicies": [
    "projects/PROJECT_ID/regions/REGION/resourcePolicies/POLICY_NAME"
  ]
}

请替换以下内容:

  • PROJECT_ID:分散布置政策所在项目的 ID。

  • ZONE:要用于创建虚拟机以及机器类型所在的可用区。您只能指定分散布置政策所在区域内的可用区。

  • VM_NAME:要创建的虚拟机的名称。

  • MACHINE_TYPE:虚拟机的机器类型。

  • IMAGE_PROJECT:映像所属的映像项目;例如 debian-cloud。如需详细了解支持的映像项目,请参阅公共映像

  • IMAGE:指定以下其中一项:

    • 操作系统映像的特定版本,例如 debian-12-bookworm-v20240617

    • 映像系列,其格式必须为 family/IMAGE_FAMILY。此项指定最新的未弃用操作系统映像。例如,如果您指定 family/debian-12,则系统会使用 Debian 12 映像系列中的最新版本。如需详细了解如何使用映像系列,请参阅映像系列最佳实践

  • REGION:分散布置政策所在的区域。

  • POLICY_NAME:现有分散布置政策的名称。

(可选)如需指定要在其中创建虚拟机的可用性网域,请在请求正文中添加 availabilityDomain 字段。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances

{
  "name": "VM_NAME",
  "machineType": "zones/ZONE/machineTypes/MACHINE_TYPE",
  "disks": [
    {
      "boot": true,
      "initializeParams": {
        "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
      }
    }
  ],
  "networkInterfaces": [
    {
      "network": "global/networks/default"
    }
  ],
  "resourcePolicies": [
    "projects/PROJECT_ID/regions/REGION/resourcePolicies/POLICY_NAME"
  ],
  "scheduling": {
    "availabilityDomain": DOMAIN_NUMBER
  }
}

DOMAIN_NUMBER 替换为要将虚拟机布置在其中的可用性网域的编号。该值必须在 1 到分散布置政策中指定的网域数量之间。如需验证分散布置政策中的网域数量,请查看布置政策的详细信息

如需详细了解用于创建虚拟机的配置选项,请参阅创建和启动虚拟机实例

批量创建虚拟机时应用政策

在批量创建用于指定分散布置政策的虚拟机之前,请确保满足以下条件:

  • 您只能在与布置政策位于同一区域中批量创建用于指定分散布置政策的虚拟机。

  • 使用分散布置政策批量创建虚拟机时,您可以选择指定要用于创建虚拟机的可用性网域。避免在单个网域中创建所有虚拟机。否则,您将无法降低单个硬件错误影响所有虚拟机的风险。

如需批量创建用于指定分散布置政策的虚拟机,请选择以下选项之一:

gcloud

若要批量创建指定分散布置政策的虚拟机,请使用带有 --resource-policies 标志的 gcloud compute instances bulk create 命令

例如,如需在单个可用区中批量创建虚拟机并为虚拟机指定名称模式,请运行以下命令:

gcloud compute instances bulk create \
    --count=COUNT \
    --machine-type=MACHINE_TYPE \
    --name-pattern=NAME_PATTERN \
    --resource-policies=POLICY_NAME \
    --zone=ZONE

请替换以下内容:

  • COUNT:要创建的虚拟机数量。

  • MACHINE_TYPE:虚拟机的机器类型。

  • NAME_PATTERN:虚拟机的名称模式。如需替换虚拟机名称中的数字序列,请使用哈希值 (#) 字符序列。例如,使用 vm-# 作为名称模式将生成名称以 vm-1vm-2 开头的虚拟机,一直到由 COUNT 指定的虚拟机数量。

  • POLICY_NAME:现有分散布置政策的名称。

  • ZONE:要用于批量创建虚拟机的可用区。

(可选)如需指定要在其中批量创建虚拟机的可用性网域,请添加 --availability-domain 标志。

gcloud compute instances bulk create \
    --availability-domain=DOMAIN_NUMBER \
    --count=COUNT \
    --machine-type=MACHINE_TYPE \
    --name-pattern=NAME_PATTERN \
    --resource-policies=POLICY_NAME \
    --zone=ZONE

DOMAIN_NUMBER 替换为要将虚拟机布置在其中的可用性网域的编号。该值必须在 1 到分散布置政策中指定的网域数量之间。如需验证分散布置政策中的网域数量,请查看布置政策的详细信息

REST

如需批量创建指定分散布置政策的虚拟机,请向 instances.bulkInsert 方法发出 POST。在请求正文中,包含 resourcePolicies 字段。

例如,如需在单个可用区中批量创建虚拟机并为虚拟机指定名称模式,请发出 POST 请求,如下所示:

POST https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/bulkInsert

{
  "count": "COUNT",
  "namePattern": "NAME_PATTERN",
  "instanceProperties": {
    "machineType": "MACHINE_TYPE",
    "disks": [
      {
        "boot": true,
        "initializeParams": {
          "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
        }
      }
    ],
    "networkInterfaces": [
      {
        "network": "global/networks/default"
      }
    ],
    "resourcePolicies": [
      "POLICY_NAME"
    ]
  }
}

替换以下内容:

  • PROJECT_ID:分散布置政策所在项目的 ID。

  • ZONE:要用于批量创建虚拟机的可用区。

  • COUNT:要创建的虚拟机数量。

  • NAME_PATTERN:虚拟机的名称模式。如需替换虚拟机名称中的数字序列,请使用哈希值 (#) 字符序列。例如,使用 vm-# 作为名称模式将生成名称以 vm-1vm-2 开头的虚拟机,一直到由 COUNT 指定的虚拟机数量。

  • MACHINE_TYPE:虚拟机的机器类型。

  • IMAGE_PROJECT:映像所属的映像项目;例如 debian-cloud。如需详细了解支持的映像项目,请参阅公共映像

  • IMAGE:指定以下其中一项:

    • 操作系统映像的特定版本,例如 debian-12-bookworm-v20240617

    • 映像系列,其格式必须为 family/IMAGE_FAMILY。此项指定最新的未弃用操作系统映像。例如,如果您指定 family/debian-12,则系统会使用 Debian 12 映像系列中的最新版本。如需详细了解如何使用映像系列,请参阅映像系列最佳实践

  • POLICY_NAME:现有分散布置政策的名称。

(可选)如需指定要在其中批量创建虚拟机的可用性网域,请在请求正文中添加 availabilityDomain 字段。

POST https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/bulkInsert

{
  "count": "COUNT",
  "namePattern": "NAME_PATTERN",
  "instanceProperties": {
    "machineType": "MACHINE_TYPE",
    "disks": [
      {
        "boot": true,
        "initializeParams": {
          "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
        }
      }
    ],
    "networkInterfaces": [
      {
        "network": "global/networks/default"
      }
    ],
    "resourcePolicies": [
      "POLICY_NAME"
    ],
    "scheduling": {
      "availabilityDomain": DOMAIN_NUMBER
    }
  }
}

DOMAIN_NUMBER 替换为要将虚拟机布置在其中的可用性网域的编号。该值必须在 1 到分散布置政策中指定的网域数量之间。如需验证分散布置政策中的网域数量,请查看布置政策的详细信息

如需详细了解用于批量创建虚拟机的配置选项,请参阅批量创建虚拟机

在创建实例模板时应用政策

在创建用于指定分散布置政策的实例模板之前,请确保以下各项:

  • 如果您要创建区域实例模板,那么请在与分散布置政策相同的区域内创建该模板。否则,创建实例模板将失败。

  • 创建实例模板时,您可以选择指定要用于创建虚拟机的可用性网域。避免在单个网域中创建所有虚拟机。否则,您将无法降低单个硬件错误影响所有虚拟机的风险。

创建指定分散布置政策的实例模板后,您便可以使用该模板执行以下操作:

如需创建用于指定分散布置政策的实例模板,请选择以下选项之一:

gcloud

如需创建指定紧凑布置政策的实例模板,请使用带有 --resource-policies 标志的 gcloud compute instance-templates create 命令

例如,如需创建指定分散布置政策的全局实例模板,请运行以下命令:

gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
    --machine-type=MACHINE_TYPE \
    --resource-policies=POLICY_NAME

请替换以下内容:

  • INSTANCE_TEMPLATE_NAME:实例模板的名称。

  • MACHINE_TYPE:使用实例模板创建的虚拟机的机器类型。

  • POLICY_NAME:现有分散布置政策的名称。

(可选)如需指定要在其中创建虚拟机的可用区,请添加 --availability-domain 标志。

gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
    --availability-domain=DOMAIN_NUMBER  \
    --machine-type=MACHINE_TYPE \
    --resource-policies=POLICY_NAME

DOMAIN_NUMBER 替换为要在其中创建虚拟机的可用区编号。该值必须在 1 到布置政策中指定的网域数量之间。如需验证分散布置政策中的网域数量,请查看布置政策的详细信息

REST

如需创建指定分散布置政策的实例模板,请向以下方法之一发出 POST 请求:

在请求正文中,指定 resourcePolicies 字段。

例如,如需创建指定分散布置政策的全球实例模板,请发出 POST 请求,如下所示:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates

{
  "name": "INSTANCE_TEMPLATE_NAME",
  "properties": {
    "disks": [
      {
        "boot": true,
        "initializeParams": {
          "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
        }
      }
    ],
    "machineType": "MACHINE_TYPE",
    "networkInterfaces": [
      {
        "network": "global/networks/default"
      }
    ],
    "resourcePolicies": [
      "POLICY_NAME"
    ]
  }
}

替换以下内容:

  • PROJECT_ID:分散布置政策所在项目的 ID。

  • INSTANCE_TEMPLATE_NAME:实例模板的名称。

  • IMAGE_PROJECT:映像所属的映像项目;例如 debian-cloud。如需详细了解支持的映像项目,请参阅公共映像

  • IMAGE:指定以下其中一项:

    • 操作系统映像的特定版本,例如 debian-12-bookworm-v20240617

    • 映像系列,其格式必须为 family/IMAGE_FAMILY。此项指定最新的未弃用操作系统映像。例如,如果您指定 family/debian-12,则系统会使用 Debian 12 映像系列中的最新版本。如需详细了解如何使用映像系列,请参阅映像系列最佳实践

  • MACHINE_TYPE:使用实例模板创建的虚拟机的机器类型。

  • POLICY_NAME:现有分散布置政策的名称。

(可选)如需指定要在其中创建虚拟机的可用性网域,请在请求正文中添加 availabilityDomain 字段。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates

{
  "name": "INSTANCE_TEMPLATE_NAME",
  "properties": {
    "disks": [
      {
        "boot": true,
        "initializeParams": {
          "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
        }
      }
    ],
    "machineType": "MACHINE_TYPE",
    "networkInterfaces": [
      {
        "network": "global/networks/default"
      }
    ],
    "resourcePolicies": [
      "POLICY_NAME"
    ],
    "scheduling": {
      "availabilityDomain": DOMAIN_NUMBER
    }
  }
}

DOMAIN_NUMBER 替换为要在其中创建虚拟机的可用区编号。该值必须在 1 到布置政策中指定的网域数量之间。如需验证分散布置政策中的网域数量,请查看布置政策的详细信息

如需详细了解用于创建实例模板的配置选项,请参阅创建实例模板

将政策应用于 MIG 中的虚拟机

创建指定分散布置政策的实例模板后,您便可以使用该模板执行以下操作:

在创建 MIG 时应用政策

只有当虚拟机与布置政策位于同一区域时,您才能创建用于指定分散布置政策的虚拟机。

如需使用指定分散布置政策的实例模板创建 MIG,请选择以下选项之一:

gcloud

如需使用用于指定分散布置政策的实例模板创建 MIG,请使用 gcloud compute instance-groups managed create 命令

例如,如需使用用于指定分散布置政策的全局实例模板创建可用区级 MIG,请运行以下命令:

gcloud compute instance-groups managed create INSTANCE_GROUP_NAME \
    --size=SIZE \
    --template=INSTANCE_TEMPLATE_NAME \
    --zone=ZONE

替换以下内容:

  • INSTANCE_GROUP_NAME:要创建的 MIG 的名称。

  • SIZE:MIG 的大小。

  • INSTANCE_TEMPLATE_NAME:指定分散布置政策的现有全局实例模板的名称。

  • ZONE:要用于创建 MIG 的可用区,该可用区必须位于分散布置政策所在的区域内。

REST

如需使用用于指定分散布置政策的实例模板创建 MIG,请向以下方法之一发出 POST 请求:

例如,如需使用用于指定分散布置政策的全局实例模板创建可用区级 MIG,请发出 POST 请求,如下所示:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers

{
  "name": "INSTANCE_GROUP_NAME",
  "targetSize": SIZE,
  "versions": [
    {
      "instanceTemplate": "global/instanceTemplates/INSTANCE_TEMPLATE_NAME"
    }
  ]
}

替换以下内容:

  • PROJECT_ID:分散布置政策以及指定布置政策的实例模板所在项目的 ID。

  • ZONE:要用于创建 MIG 的可用区,该可用区必须位于分散布置政策所在的区域内。

  • INSTANCE_GROUP_NAME:要创建的 MIG 的名称。

  • SIZE:MIG 的大小。

  • INSTANCE_TEMPLATE_NAME:指定分散布置政策的现有全局实例模板的名称。

如需详细了解用于创建 MIG 的配置选项,请参阅创建 MIG 的基本场景

将政策应用于现有 MIG

仅当现有 MIG 与布置政策位于同一区域或者位于布置政策所在区域中的某个可用区(对于可用区级 MIG)时,您才能将紧凑布置政策应用于该 MIG。

如需更新 MIG 以使用指定分散布置政策的实例模板,请选择以下选项之一:

gcloud

如需更新 MIG 以使用指定分散布置政策的实例模板,请使用 gcloud compute instance-groups managed rolling-action start-update 命令

例如,如需更新可用区级 MIG 以使用指定分散布置政策的实例模板,并将 MIG 中的现有虚拟机替换为指定模板属性的新虚拟机,请运行以下命令:

gcloud compute instance-groups managed rolling-action start-update INSTANCE_GROUP_NAME \
    --version=template=INSTANCE_TEMPLATE_NAME \
    --zone=ZONE

替换以下内容:

  • INSTANCE_GROUP_NAME:现有 MIG 的名称。

  • INSTANCE_TEMPLATE_NAME:指定分散布置政策的现有全局实例模板的名称。

  • ZONE:该 MIG 所在的可用区。 您只能将分散布置政策应用于与布置政策位于同一区域的 MIG。

REST

如需更新 MIG 以使用指定分散布置政策的实例模板,并自动将模板和布置政策的属性应用于 MIG 中的现有虚拟机,请向以下方法之一发出 PATCH 请求。

例如,如需更新可用区级 MIG 以使用用于指定分散布置政策的全球级实例模板,并将 MIG 中的现有虚拟机替换为指定模板属性的新虚拟机,请发出以下 PATCH 请求:

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/INSTANCE_GROUP_NAME

{
  "instanceTemplate": "global/instanceTemplates/INSTANCE_TEMPLATE_NAME"
}

替换以下内容:

  • PROJECT_ID:您用于创建现有 MIG、分散布置政策以及指定分散布置政策的实例模板的项目的 ID。

  • ZONE:该 MIG 所在的可用区。 您只能将分散布置政策应用于与布置政策位于同一区域的 MIG。

  • INSTANCE_GROUP_NAME:现有 MIG 的名称。

  • INSTANCE_TEMPLATE_NAME:指定分散布置政策的现有全局实例模板的名称。

如需详细了解用于更新 MIG 中虚拟机的配置选项,请参阅更新 MIG 中的虚拟机配置并将新配置应用于虚拟机

后续步骤