使用紧凑布置政策缩短延迟时间


本文档介绍了如何通过创建紧凑布置政策并将其应用于虚拟机实例来缩短网络延迟时间。如需详细了解布置政策(包括支持的机器系列、限制和价格),请参阅布置政策概览

紧凑布置政策指定应将虚拟机布置在彼此靠近的物理位置。这可以帮助您提高虚拟机的性能并缩短网络延迟时间,例如,运行高性能 (HPC)、机器学习 (ML) 或数据库服务器工作负载时。

准备工作

  • 如果您尚未设置身份验证,请进行设置。身份验证是通过其进行身份验证以访问 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 时进行身份验证

所需的角色

如需获得创建紧凑布置政策并将其应用于虚拟机所需的权限,请让管理员向您授予项目的以下 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.reservations.create 权限
  • 如需创建实例模板:针对项目的 compute.instanceTemplates.create 权限
  • 如需创建托管式实例组 (MIG):针对项目的 compute.instanceGroupManagers.create 权限
  • 查看虚拟机的详细信息:针对项目的 compute.instances.get 权限

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

创建紧凑布置政策

除非您想将紧凑布置政策应用于 N2 或 N2D 虚拟机,否则 Google Cloud 建议您在创建政策时指定最大距离值。如需了解详情,请参阅紧凑布置政策的运作方式

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

gcloud

  • 如需将紧凑布置政策应用于 N2 或 N2D 虚拟机,请使用带有 --collocation=collocated 标志的 gcloud compute resource-policies create group-placement 命令创建该政策。

    gcloud compute resource-policies create group-placement POLICY_NAME \
        --collocation=collocated \
        --region=REGION
    

    替换以下内容:

    • POLICY_NAME:紧凑布置政策的名称。

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

  • 如需将紧凑布置政策应用于任何其他受支持的虚拟机,请使用带有 --collocation=collocated--max-distance 标志的 gcloud beta compute resource-policies create group-placement 命令创建该政策。

    gcloud beta compute resource-policies create group-placement POLICY_NAME \
        --collocation=collocated \
        --max-distance=MAX_DISTANCE \
        --region=REGION
    

    替换以下内容:

    • POLICY_NAME:紧凑布置政策的名称。

    • MAX_DISTANCE:虚拟机的最大距离配置。该值必须介于 1(用于指定将虚拟机放在同一机架中,以尽可能缩短网络延迟时间)和 3(用于指定将虚拟机放在相邻的集群中)之间。 如果您想将紧凑布置政策应用于预留,则不能指定值为 1

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

REST

  • 如需将紧凑布置政策应用于 N2 或 N2D 虚拟机,请向 resourcePolicies.insert 方法发出 POST 请求以创建该政策。在请求正文中,添加 collocation 字段并将其设置为 COLLOCATED

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/resourcePolicies
    
    {
      "name": "POLICY_NAME",
      "groupPlacementPolicy": {
        "collocation": "COLLOCATED"
      }
    }
    

    替换以下内容:

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

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

    • POLICY_NAME:紧凑布置政策的名称。

  • 如需将紧凑布置政策应用于任何其他受支持的虚拟机,请向 beta.resourcePolicies.insert 方法发出 POST 请求以创建该政策。在请求正文中,添加以下各项:

    • 设置为 COLLOCATEDcollocation 字段。

    • maxDistance 字段。

    POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/regions/REGION/resourcePolicies
    
    {
      "name": "POLICY_NAME",
      "groupPlacementPolicy": {
        "collocation": "COLLOCATED",
        "maxDistance": MAX_DISTANCE
      }
    }
    

    替换以下内容:

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

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

    • POLICY_NAME:紧凑布置政策的名称。

    • MAX_DISTANCE:虚拟机的最大距离配置。该值必须介于 1(用于指定将虚拟机放在同一机架中,以尽可能缩短网络延迟时间)和 3(用于指定将虚拟机放在相邻的集群中)之间。 如果您想将紧凑布置政策应用于预留,则不能指定值为 1

应用紧凑布置政策

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

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

将紧凑布置政策应用于虚拟机后,您可以验证虚拟机的物理位置(相对于指定相同布置政策的其他虚拟机)。

将政策应用于现有虚拟机

在将紧凑布置政策应用于现有虚拟机之前,请确保满足以下条件:

否则,将紧凑布置政策应用于虚拟机将失败。如果虚拟机已指定布置政策,并且您想替换该政策,请改为参阅替换虚拟机中的布置政策

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

gcloud

  1. 停止虚拟机

  2. 如需将紧凑布置政策应用于现有虚拟机,请使用 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:该虚拟机所在的可用区。

  3. 重启虚拟机

REST

  1. 停止虚拟机

  2. 如需将紧凑布置政策应用于现有虚拟机,请向 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:现有紧凑布置政策的名称。

  3. 重启虚拟机

在创建虚拟机时应用政策

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

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

gcloud

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

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

替换以下内容:

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

  • MACHINE_TYPE:紧凑布置政策支持的机器类型

  • MAINTENANCE_POLICY:虚拟机的主机维护政策。如果您指定的紧凑布置政策使用最大距离值 12,则只能指定 TERMINATE。否则,您可以指定 MIGRATETERMINATE

  • POLICY_NAME:现有紧凑布置政策的名称。

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

REST

如需创建指定紧凑布置政策的虚拟机,请向 instances.insert 方法发出 POST 请求。在请求正文中,添加 onHostMaintenanceresourcePolicies 字段。

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": {
    "onHostMaintenance": "MAINTENANCE_POLICY"
  }
}

替换以下内容:

  • 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:现有紧凑布置政策的名称。

  • MAINTENANCE_POLICY:虚拟机的主机维护政策。如果您指定的紧凑布置政策使用最大距离值 12,则只能指定 TERMINATE。否则,您可以指定 MIGRATETERMINATE

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

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

您只能在与布置政策相同的区域中批量创建使用紧凑布置政策的虚拟机。

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

gcloud

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

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

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

替换以下内容:

  • COUNT:要创建的虚拟机数量,不得高于指定紧凑布置政策的支持的虚拟机数量上限

  • MACHINE_TYPE:紧凑布置政策支持的机器类型

  • MAINTENANCE_POLICY:虚拟机的主机维护政策。如果您指定的紧凑布置政策使用最大距离值 12,则只能指定 TERMINATE。否则,您可以指定 MIGRATETERMINATE

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

  • POLICY_NAME:现有紧凑布置政策的名称。

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

REST

如需批量创建指定紧凑布置政策的虚拟机,请向 instances.bulkInsert 方法发出 POST 请求。在请求正文中,添加 onHostMaintenanceresourcePolicies 字段。

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

POST https://compute.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": [
      "projects/PROJECT_ID/regions/REGION/resourcePolicies/POLICY_NAME"
    ],
    "scheduling": {
      "onHostMaintenance": "MAINTENANCE_POLICY"
    }
  }
}

替换以下内容:

  • PROJECT_ID:紧凑布置政策所在项目的 ID。

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

  • COUNT:要创建的虚拟机数量,不得高于指定紧凑布置政策的支持的虚拟机数量上限

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

        with names starting with `vm-1`, `vm-2`, and continuing up to the number
    

    COUNT 指定的虚拟机。

  • MACHINE_TYPE:紧凑布置政策支持的机器类型

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

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

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

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

  • REGION:紧凑布置政策所在的区域。

  • POLICY_NAME:现有紧凑布置政策的名称。

  • MAINTENANCE_POLICY:虚拟机的主机维护政策。如果您指定的紧凑布置政策使用最大距离值 12,则只能指定 TERMINATE。否则,您可以指定 MIGRATETERMINATE

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

在创建预留时应用政策

如果您要创建指定紧凑布置政策的单项目按需预留,则必须创建明确针对的预留。创建虚拟机以使用预留时,请确保满足以下条件:

  • 虚拟机必须指定与预留应用的紧凑布置政策相同的紧凑布置政策。

  • 虚拟机必须明确指向预留才能使用它。 如需了解详情,请参阅使用特定预留中的虚拟机

如需创建采用紧凑布置政策的单项目预留,请选择以下方法之一:

如需通过直接指定属性来创建采用紧凑布置政策的单项目预留,请选择以下选项之一:

gcloud

如需通过直接指定属性来创建采用紧凑布置政策的单项目预留,请使用带有 --require-specific-reservation--resource-policies=policy 标志的 gcloud compute reservations create 命令

gcloud compute reservations create RESERVATION_NAME \
    --machine-type=MACHINE_TYPE \
    --require-specific-reservation \
    --resource-policies=policy=POLICY_NAME \
    --vm-count=NUMBER_OF_VMS \
    --zone=ZONE

替换以下内容:

  • RESERVATION_NAME:预留的名称。

  • MACHINE_TYPE:紧凑布置政策支持的机器类型

  • POLICY_NAME:现有紧凑布置政策的名称。

  • NUMBER_OF_VMS:要预留的虚拟机数量,不得高于指定紧凑布置政策的支持的虚拟机数量上限

  • ZONE:预留虚拟机的可用区。您只能在指定紧凑布置政策所在区域内的可用区中预留虚拟机。

REST

如需通过直接指定属性创建采用紧凑布置政策的单项目预留,请向 reservations.insert 方法发出 POST 请求。在请求正文中,添加 resourcePolicies 字段,并将 specificReservationRequired 字段设置为 true

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

{
  "name": "RESERVATION_NAME",
  "resourcePolicies": {
    "policy" : "projects/PROJECT_ID/regions/REGION/resourcePolicies/POLICY_NAME"
  },
  "specificReservation": {
    "count": "NUMBER_OF_VMS",
    "instanceProperties": {
      "machineType": "MACHINE_TYPE",
    }
  },
  "specificReservationRequired": true
}

替换以下内容:

  • PROJECT_ID:紧凑布置政策所在项目的 ID。

  • ZONE:预留虚拟机的可用区。您只能在指定紧凑布置政策所在区域内的可用区中预留虚拟机。

  • RESERVATION_NAME:预留的名称。

  • REGION:紧凑布置政策所在的区域。

  • POLICY_NAME:现有紧凑布置政策的名称。

  • NUMBER_OF_VMS:要预留的虚拟机数量,不得高于指定紧凑布置政策的支持的虚拟机数量上限

  • MACHINE_TYPE:紧凑布置政策支持的机器类型

如需详细了解用于创建单项目预留的配置选项,请参阅为单个项目创建预留

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

如果您要创建区域实例模板,则必须在与紧凑布置政策相同的区域内创建该模板。否则,创建实例模板将失败。

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

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

gcloud

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

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

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

替换以下内容:

  • INSTANCE_TEMPLATE_NAME:实例模板的名称。

  • MACHINE_TYPE:紧凑布置政策支持的机器类型

  • MAINTENANCE_POLICY:虚拟机的主机维护政策。如果您指定的紧凑布置政策使用最大距离值 12,则只能指定 TERMINATE。否则,您可以指定 MIGRATETERMINATE

  • POLICY_NAME:现有紧凑布置政策的名称。

REST

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

在请求正文中,添加 onHostMaintenanceresourcePolicies 字段。

例如,如需创建指定紧凑布置政策的全球实例模板,请发出 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"
    ],
    "scheduling": {
      "onHostMaintenance": "MAINTENANCE_POLICY"
    }
  }
}

替换以下内容:

  • 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:现有紧凑布置政策的名称。

  • MAINTENANCE_POLICY:虚拟机的主机维护政策。如果您指定的紧凑布置政策使用最大距离值 12,则只能指定 TERMINATE。否则,您可以指定 MIGRATETERMINATE

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

将政策应用于 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 的名称。

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

  • SIZE:MIG 的大小。

如需详细了解用于创建 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 MIG_NAME \
    --version=template=INSTANCE_TEMPLATE_NAME \
    --zone=ZONE

替换以下内容:

  • MIG_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/MIG_NAME

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

替换以下内容:

  • PROJECT_ID:MIG、紧凑布置政策以及指定该政策的实例模板所在项目的 ID。

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

  • MIG_NAME:现有 MIG 的名称。

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

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

验证虚拟机的物理位置

将紧凑布置政策应用于虚拟机后,您可以查看该虚拟机相对于其他虚拟机的物理位置。此比较仅限于位于您的项目中且指定了相同紧凑布置政策的虚拟机。查看虚拟机的物理位置有助于您执行以下操作:

  • 确认政策已成功应用。

  • 确定哪些虚拟机彼此最靠近。

如需查看虚拟机相对于指定了相同紧凑布置政策的其他虚拟机的物理位置,请选择以下选项之一:

gcloud

如需查看指定紧凑布置政策的虚拟机的物理位置,请使用带有 --format 标志的 gcloud compute instances describe 命令

gcloud compute instances describe VM_NAME \
    --format="table[box,title=VM-Position](resourcePolicies.scope():sort=1,resourceStatus.physicalHost:label=location)" \
    --zone=ZONE

替换以下内容:

  • VM_NAME:指定紧凑布置政策的现有虚拟机的名称。

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

输出类似于以下内容:

VM-Position

RESOURCE_POLICIES: us-central1/resourcePolicies/example-policy']
PHYSICAL_HOST: /CCCCCCC/BBBBBB/AAAA

PHYSICAL_HOST 字段的值由三部分组成。每个部分分别代表虚拟机所在的集群、机架和主机。

在比较项目中使用相同紧凑布置政策的两个虚拟机的位置时,虚拟机的 PHYSICAL_HOST 字段中相同的部分越多,它们彼此间的物理位置就越靠近。例如,假设两个虚拟机都为 PHYSICAL_HOST 字段指定以下示例值之一:

  • /CCCCCCC/xxxxxx/xxxx:这两个虚拟机位于同一集群中,等于最大距离值 2。位于同一集群中的虚拟机所经历的网络延迟时间较短。

  • /CCCCCCC/BBBBBB/xxxx:这两个虚拟机放在同一个机架中,等于最大距离值 1。与位于同一集群中的虚拟机相比,同一机架中的虚拟机所经历的网络延迟时间更短。

  • /CCCCCCC/BBBBBB/AAAA:这两个虚拟机共用同一主机。将虚拟机放在同一主机中会尽可能缩短网络延迟时间。

REST

如需查看指定紧凑布置政策的虚拟机的物理位置,请向 instances.get 方法发出 GET 请求。

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

替换以下内容:

  • PROJECT_ID:虚拟机所在项目的 ID。

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

  • VM_NAME:指定紧凑布置政策的现有虚拟机的名称。

输出类似于以下内容:

{
  ...
  "resourcePolicies": [
    "https://www.googleapis.com/compute/v1/projects/example-project/regions/us-central1/resourcePolicies/example-policy"
  ],
  "resourceStatus": {
    "physicalHost": "/xxxxxxxx/xxxxxx/xxxxx"
  },
  ...
}

physicalHost 字段的值由三部分组成。每个部分分别代表虚拟机所在的集群、机架和主机。

在比较项目中使用相同紧凑布置政策的两个虚拟机的位置时,虚拟机的 physicalHost 字段中相同的部分越多,它们彼此间的物理位置就越靠近。例如,假设两个虚拟机都为 physicalHost 字段指定以下示例值之一:

  • /CCCCCCC/xxxxxx/xxxx:这两个虚拟机位于同一集群中,等于最大距离值 2。位于同一集群中的虚拟机所经历的网络延迟时间较短。

  • /CCCCCCC/BBBBBB/xxxx:这两个虚拟机放在同一个机架中,等于最大距离值 1。与位于同一集群中的虚拟机相比,同一机架中的虚拟机所经历的网络延迟时间更短。

  • /CCCCCCC/BBBBBB/AAAA:这两个虚拟机共用同一主机。将虚拟机放在同一主机中会尽可能缩短网络延迟时间。

后续步骤