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


本文档介绍如何通过创建紧凑布置政策并将其应用于虚拟机实例来缩短网络延迟时间。

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

执行以下操作时,您可以应用紧凑布置政策:

  • 创建或更新虚拟机。
  • 创建单项目预留。
  • 批量创建虚拟机。
  • 创建实例模板。然后,当您使用实例模板执行以下操作时,实例模板会应用紧凑布置政策:
    • 创建一个虚拟机。
    • 创建或更新托管式实例组 (MIG)。
    • 创建单项目预留。

准备工作

  • 设置身份验证(如果尚未设置)。身份验证是通过其进行身份验证以访问 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.get 权限

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

限制

除了布置政策的一般限制之外,紧凑布置政策具有以下限制:

  • 对于紧凑布置政策,您可以使用 max-distance预览版)更好地控制虚拟机的布置距离。下表简要介绍了每个 max-distance 值支持的虚拟机数量和主机维护政策

    max-distance 说明 虚拟机数量上限 支持的主机维护政策
    未指定 根据可用性,将虚拟机布置在尽可能接近的位置。 1500 迁移或终止
    3 将虚拟机布置在相邻的集群中,以缩短延迟时间。 1500 迁移或终止
    2 将虚拟机布置在相邻机架中,相较于布置在相邻的集群中,其网络延迟时间更短。 150 终止
    1 将虚拟机布置于同一个机架中,并尽可能缩短网络延迟时间。 22 终止
  • 您只能将紧凑布置政策应用于 A2、A3、C2、C3、C2D、C3D、G2、H3、N2 和 N2D 机器系列。如果您在创建紧凑布置政策时使用 max-distance,则无法将该政策应用于 A3、G2、N2 和 N2D 机器系列。

  • 您无法将紧凑布置政策应用于指定单租户节点的虚拟机。

  • 如果您要为预留创建紧凑布置政策,请参阅预留的其他要求

创建紧凑布置政策

如需创建紧凑布置政策,请使用以下方法之一:

  • 推荐:不使用固定数量

    您可以将未指定固定的虚拟机数量的紧凑布置政策应用于未指定数量的虚拟机。这样,无论将紧凑布置政策应用到多少个虚拟机,该政策都会生效。

  • 使用固定数量

    您可以将指定固定的虚拟机数量的紧凑布置政策仅应用于确切数量的虚拟机。这样,只有将紧凑布置政策应用于指定数量的虚拟机时,该政策才有效。

不使用固定数量

您可以使用 gcloud CLI 和 REST 创建紧凑布置政策。

gcloud

如需创建紧凑布置政策,请使用带有 --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

MAX_DISTANCE 替换为虚拟机的最大距离配置。该值必须介于 1(用于指定将虚拟机放在同一机架中,以尽可能缩短网络延迟时间)和 3(用于指定将虚拟机放在相邻的集群中)之间。根据应用紧凑布置政策的虚拟机中指定的机器类型和可用区,以下条件适用:

  • 如果某个可用区具有可用容量,则 maxDistance 值较高(例如 3)的紧凑布置政策可能会使虚拟机放置在彼此更靠近的位置。

  • 如果某个可用区容量不足,则 maxDistance 值较低(例如 1)的紧凑布置政策更有可能导致无法对一个或多个虚拟机应用此政策。

REST

如需创建紧凑布置政策,请向 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"
  }
}

MAX_DISTANCE 替换为虚拟机的最大距离配置。该值必须介于 1(用于指定将虚拟机放在同一机架中,以尽可能缩短网络延迟时间)和 3(用于指定将虚拟机放在相邻的集群中)之间。根据应用紧凑布置政策的虚拟机中指定的机器类型和可用区,以下条件适用:

  • 如果某个可用区具有可用容量,则 maxDistance 值较高(例如 3)的紧凑布置政策可能会使虚拟机放置在彼此更靠近的位置。

  • 如果某个可用区容量不足,则 maxDistance 值较低(例如 1)的紧凑布置政策更有可能导致无法对一个或多个虚拟机应用此政策。

使用固定数量

您可以使用 gcloud CLI 和 REST 创建可指定固定虚拟机数量的紧凑布置政策。

gcloud

如需创建可指定固定的虚拟机数量的紧凑布置政策,请使用带有 --collocation=collocated--vm-count 标志的 gcloud compute resource-policies create group-placement 命令

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

请替换以下内容:

  • POLICY_NAME:要创建的政策的名称。

  • REGION:要用于创建政策的区域。如果要将紧凑布置政策应用于现有虚拟机,请在包含虚拟机所在可用区的区域中创建该政策。

  • VM_COUNT:可以应用紧凑布置政策的虚拟机的确切数量。该值必须处于 1 到可应用紧凑布置政策的虚拟机数上限之间。

(可选)如需在具有严格的网络延时要求时更好地控制虚拟机的布置距离,可以使用带有 --collocation=collocated--max-distance--vm-count 标志的 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 \
    --vm-count=VM_COUNT

MAX_DISTANCE 替换为虚拟机的最大距离配置。该值必须介于 1(用于指定将虚拟机放在同一机架中,以尽可能缩短网络延迟时间)和 3(用于指定将虚拟机放在相邻的集群中)之间。根据应用紧凑布置政策的虚拟机中指定的机器类型和可用区,以下条件适用:

  • 如果某个可用区具有可用容量,则 maxDistance 值较高(例如 3)的紧凑布置政策可能会使虚拟机放置在彼此更靠近的位置。

  • 如果某个可用区容量不足,则 maxDistance 值较低(例如 1)的紧凑布置政策更有可能导致无法对一个或多个虚拟机应用此政策。

REST

如需创建可指定固定虚拟机数量的紧凑布置政策,请向 resourcePolicies.insert 方法发出 POST 请求。在请求正文中,添加设置为 COLLOCATEDcollocation 字段和 vmCount 字段。

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

{
  "name": "POLICY_NAME",
  "groupPlacementPolicy": {
    "collocation": "COLLOCATED",
    "vmCount": "VM_COUNT"
  }
}

替换以下内容:

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

  • REGION:要用于创建政策的区域。如果要将紧凑布置政策应用于现有虚拟机,请在包含虚拟机所在可用区的区域中创建该政策。

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

  • VM_COUNT:可以应用紧凑布置政策的虚拟机的确切数量。该值必须处于 1 到可应用紧凑布置政策的虚拟机数上限之间。

(可选)如需在具有严格的网络延迟时间要求时更好地控制虚拟机的布置距离,您可以通过向 beta.resourcePolicies.insert 方法发出 POST 请求来创建紧凑布置政策。在请求正文中,包含设置为 COLLOCATEDcollocation 字段、maxDistance 字段和 vmCount 字段。

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

{
  "name": "POLICY_NAME",
  "groupPlacementPolicy": {
    "collocation": "COLLOCATED",
    "maxDistance": "MAX_DISTANCE",
    "vmCount": "VM_COUNT"
  }
}

MAX_DISTANCE 替换为虚拟机的最大距离配置。该值必须介于 1(用于指定将虚拟机放在同一机架中,以尽可能缩短网络延迟时间)和 3(用于指定将虚拟机放在相邻的集群中)之间。根据应用紧凑布置政策的虚拟机中指定的机器类型和可用区,以下条件适用:

  • 如果某个可用区具有可用容量,则 maxDistance 值较高(例如 3)的紧凑布置政策可能会使虚拟机放置在彼此更靠近的位置。

  • 如果某个可用区容量不足,则 maxDistance 值较低(例如 1)的紧凑布置政策更有可能导致无法对一个或多个虚拟机应用此政策。

应用紧凑布置政策

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

如需创建指定紧凑布置政策的 Compute Engine 资源,请选择以下方法之一:

如需在创建单项目预留时通过直接指定属性来指定紧凑布置政策,请参阅为单个项目创建预留

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

将紧凑布置政策应用于现有虚拟机

您可以使用 gcloud CLI 和 REST 将紧凑布置政策应用于现有虚拟机。

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

  • 虚拟机和紧凑布置政策位于同一项目中。

  • 虚拟机位于紧凑布置政策所在的区域内。

  • 虚拟机指定了支持的机器系列和主机维护政策

否则,在将紧凑布置政策应用于现有虚拟机时将会失败。

gcloud

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

REST

如需将紧凑布置政策应用于现有虚拟机,请向 instances.addResourcePolicies 方法发出包含 resourcePolicies 字段的 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:现有紧凑布置政策的名称。

创建指定紧凑布置政策的虚拟机

您可以使用 gcloud CLI 和 REST 创建指定现有紧凑布置政策的虚拟机。

gcloud

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

例如,如需创建指定 c2d-standard-2 机器类型的虚拟机,请运行以下命令:

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

请替换以下内容:

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

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

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

  • ZONE:要用于创建虚拟机的可用区。您只能在指定的紧凑布置政策所在区域的可用区中创建虚拟机。

REST

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

例如,如需创建指定 c2d-standard-2 机器类型的虚拟机,请发出以下 POST 请求:

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

{
  "machineType": "zones/ZONE/machineTypes/c2d-standard-2",
  "name": "VM_NAME",
  "resourcePolicies": [
    "projects/PROJECT_ID/regions/REGION/resourcePolicies/POLICY_NAME"
  ],
  "scheduling": {
    "onHostMaintenance": "MAINTENANCE_POLICY"
  }
}

替换以下内容:

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

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

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

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

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

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

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

批量创建指定紧凑布置政策的虚拟机

您可以使用 gcloud CLI 和 REST 批量创建指定现有紧凑布置政策的虚拟机。

gcloud

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

例如,如需批量创建全部指定 c2d-standard-2 机器类型和同一紧凑布置政策的虚拟机,请运行以下命令:

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

请替换以下内容:

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

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

  • NAME_PATTERN:要创建的虚拟机的名称格式。使用井号 (#) 将其替换为数字序列。例如,如果指定 vm-#,就可以创建名为 vm-1vm-2 等的虚拟机,最多可创建 COUNT 中指定的虚拟机数量。

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

  • ZONE:要用于批量创建虚拟机的可用区。您只能在指定的紧凑布置政策所在区域的可用区中创建虚拟机。

REST

若要批量创建指定紧凑布置政策的虚拟机,请向 instances.bulkInsert 方法发出包含 resourcePolicies 字段的 POST 请求。

例如,如需批量创建全部指定 c2d-standard-2 机器类型和同一紧凑布置政策的虚拟机,请发出以下 POST 请求:

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

{
  "count": "COUNT",
  "machineType": "zones/ZONE/machineTypes/c2d-standard-2",
  "namePattern": "NAME_PATTERN",
  "instanceProperties": {
    "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 中指定的虚拟机数量。

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

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

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

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

创建指定紧凑布置政策的实例模板

您可以使用 gcloud CLI 和 REST 创建一个指定现有紧凑布置政策的实例模板。

创建实例模板后,您可以使用该模板执行以下操作:

gcloud

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

例如,如需创建指定 c2d-standard-2 机器类型和现有紧凑布置政策的全局实例模板,请运行以下命令:

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

替换以下内容:

  • INSTANCE_TEMPLATE_NAME:实例模板的名称。

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

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

REST

如需创建指定紧凑布置政策的实例模板,请向 instanceTemplates.insert 方法发出 POST 请求。在请求正文中,指定 resourcePolicies 字段。

例如,如需创建指定 c2d-standard-2 机器类型和现有紧凑布置政策的全局实例模板,请发出以下 POST 请求:

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

{
  "name": "INSTANCE_TEMPLATE_NAME",
  "machineType": "zones/ZONE/machineTypes/c2d-standard-2",
  "properties": {
    "resourcePolicies": {
      "POLICY_NAME"
    },
    "scheduling": {
      "onHostMaintenance": "MAINTENANCE_POLICY"
    }
  }
}

替换以下内容:

  • PROJECT_ID:要应用于实例模板的紧凑布置政策所在项目的 ID。

  • ZONE:机器类型所在的可用区。

  • INSTANCE_TEMPLATE_NAME:实例模板的名称。

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

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

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

对 MIG 中的虚拟机应用紧凑布置政策

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

如需将紧凑布置政策应用于 MIG,建议创建该政策或将其应用于具有任意单个可用区分布形状的区域级 MIG。这样,每当区域级 MIG 需要通过创建虚拟机进行横向扩容时,它便会根据您的预留、配额和硬件要求选择用于创建虚拟机的可用区。

创建指定紧凑布置政策的 MIG

您可以使用 gcloud CLI 和 REST 通过指定紧凑布置政策的实例模板创建 MIG。

gcloud

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

例如,如需创建具有任意单个可用区分布形状的区域级 MIG,请运行以下命令:

gcloud compute instance-groups managed create MIG_NAME \
    --region=REGION \
    --size=SIZE \
    --target-distribution-shape=any-single-zone \
    --template=INSTANCE_TEMPLATE_NAME

请替换以下内容:

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

  • REGION:要用于创建 MIG 的区域,该区域必须与紧凑布置政策所在的区域一致。

  • SIZE:MIG 的大小。

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

REST

如需使用指定紧凑布置政策的实例模板创建 MIG,请向 instanceGroupManagers.insertregionInstanceGroupManagers.insert 方法发出 POST 请求,并将 instanceTemplate 字段设置为现有模板的名称。

例如,如需创建具有默认虚拟机属性和任意单个可用区分布形状的区域级 MIG,请发出以下 POST 请求:

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

{
  "name": "MIG_NAME",
  "instanceTemplate": "global/instanceTemplates/INSTANCE_TEMPLATE_NAME",
  "distributionPolicy": {
    "targetShape": "ANY_SINGLE_ZONE"
  },
  "targetSize": SIZE
}

替换以下内容:

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

  • REGION:要用于创建 MIG 的区域,该区域必须与紧凑布置政策所在的区域一致。

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

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

  • SIZE:MIG 的大小。

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

将紧凑布置政策应用于现有 MIG

您可以使用 gcloud CLI 和 REST 通过指定相同布置政策的实例模板将紧凑布置政策应用于现有 MIG。

gcloud

如需更新 MIG 以使用指定紧凑布置政策的实例模板,请使用带有 --version=template 标志的 gcloud compute instance-groups managed rolling-action start-update 命令

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

gcloud compute instance-groups managed rolling-action start-update MIG_NAME \
    --region=REGION \
    --type=proactive \
    --version=template=INSTANCE_TEMPLATE_NAME

请替换以下内容:

  • MIG_NAME:现有 MIG 的名称。

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

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

REST

如需更新 MIG 以使用指定紧凑布置政策的实例模板,并自动将模板和布置政策的属性应用于 MIG 中的现有虚拟机,请向 instanceGroupManagers.insertregionInstanceGroupManagers.insert 发出包含 instanceTemplate 字段的 PATCH 请求。

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

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/MIG_NAME

{
  "instanceTemplate": "global/instanceTemplates/INSTANCE_TEMPLATE_NAME",
  "updatePolicy": {
    "type": "PROACTIVE"
  }
}

替换以下内容:

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

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

  • MIG_NAME:现有 MIG 的名称。

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

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

验证虚拟机的物理位置

将紧凑布置政策应用于虚拟机后,您可以查看紧凑布置政策如何影响该虚拟机相对于指定相同政策的其他虚拟机的物理位置。这有助于您确定紧凑布置政策是否已正确应用于虚拟机,并了解哪些虚拟机彼此最接近。

您可以使用 gcloud CLI 和 REST 验证指定布置政策的虚拟机的物理位置。

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:这两个虚拟机位于同一集群中,相当于 max-distance 值为 2。位于同一集群中的虚拟机所经历的网络延迟时间较短。

  • /CCCCCCC/BBBBBB/xxxx:两个虚拟机放在同一个机架中,相当于 max-distance 值为 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:这两个虚拟机位于同一集群中,相当于 max-distance 值为 2。位于同一集群中的虚拟机所经历的网络延迟时间较短。

  • /CCCCCCC/BBBBBB/xxxx:两个虚拟机放在同一个机架中,相当于 max-distance 值为 1。与位于同一集群中的虚拟机相比,同一机架中的虚拟机所经历的网络延迟时间更短。

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

后续步骤