本文档介绍了如何查看正在运行的 Compute Engine 实例的拓扑。创建并启动计算实例后,您可以查看它们在可用区中的物理位置,以了解集群的拓扑。这些信息可帮助您执行以下操作:
整理作业:您可以调整工作负载设计,例如将通信密集型任务放置在物理距离最近的计算实例上。
排查问题:如果特定计算实例意外地相距很远,您可以调查网络延迟或性能问题。
如需验证项目中正在运行哪些计算实例,请查看计算实例列表。
限制
您只能查看满足以下一项或多项要求的计算实例的拓扑:
计算实例使用以下机器类型之一:
A4X Max
A4X
A4
A3 Ultra
A3 Mega
具有 8 个 GPU 的 A3 High
H4D
计算实例指定了紧凑布置政策。
计算实例属于一个代管式实例组 (MIG),该组指定了具有高吞吐量 (
HIGH_THROUGHPUT) 类型的工作负载政策。
了解计算实例拓扑
每个计算实例都在物理服务器(即主机)上运行,该服务器位于服务器块上。每个块都属于一个集群,该集群位于Google Cloud 可用区内的数据中心中。查看满足特定要求的计算实例时,您可以了解它们相对于满足相同要求的其他计算实例的拓扑。具体而言,您可以通过检查每个计算实例的 physicalHostTopology 字段中的以下子字段来了解计算实例的物理位置:
集群 (
cluster):计算实例所在的集群的全局名称。集群是多个主机的高级逻辑分组,可以跨越多个块,这些主机共同构成一个资源池。块 (
block):计算实例所在的块的组织专用 ID。块是分组在一起的多个主机的集合。同一块中的计算实例所经历的网络延迟时间较短。子块 (
subBlock):您的计算实例所在的子块的组织专用 ID。子区块是区块中的物理细分,用于将单个物理机箱中的主机分组。与同一块中的计算实例相比,同一子块中的计算实例所经历的网络延迟时间更短。主机 (
host):计算实例所在主机的组织专用 ID。主机是运行计算实例的单个物理服务器。每个主机都有自己的物理 vCPU、内存、存储空间和网络接口卡 (NIC)。相邻主机中的计算实例所经历的网络延迟时间最短。
两个正在运行的计算实例共享的子字段越多,它们彼此间的物理位置就越靠近。此信息有助于您优化工作负载,方法是整理作业以最大限度地缩短网络延迟时间,或设计更具弹性的系统。
准备工作
-
如果您尚未设置身份验证,请进行设置。身份验证用于验证您的身份,以便访问 Google Cloud 服务和 API。如需从本地开发环境运行代码或示例,您可以通过选择以下选项之一向 Compute Engine 进行身份验证:
选择标签页以了解您打算如何使用本页面上的示例:
控制台
当您使用 Google Cloud 控制台访问 Google Cloud 服务和 API 时,无需设置身份验证。
gcloud
-
安装 Google Cloud CLI。 安装完成后,运行以下命令来初始化 Google Cloud CLI:
gcloud init如果您使用的是外部身份提供方 (IdP),则必须先使用联合身份登录 gcloud CLI。
-
- 设置默认区域和可用区。
REST
如需在本地开发环境中使用本页面上的 REST API 示例,请使用您提供给 gcloud CLI 的凭证。
安装 Google Cloud CLI。
如果您使用的是外部身份提供方 (IdP),则必须先使用联合身份登录 gcloud CLI。
如需了解详情,请参阅 Google Cloud 身份验证文档中的使用 REST 时进行身份验证。
所需的角色
如需获得验证计算实例拓扑所需的权限,请让管理员向您授予项目的 Compute Viewer (roles/compute.viewer) IAM 角色。如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
此预定义角色包含验证计算实例拓扑所需的权限。如需查看所需的确切权限,请展开所需权限部分:
所需权限
您需要具备以下权限才能验证计算实例的拓扑:
-
查看计算实例的详细信息:针对项目的
compute.instances.get权限 -
查看计算实例列表:针对项目的
compute.instances.list权限
验证计算实例拓扑
如需验证正在运行的计算实例的拓扑,请使用以下方法之一:
使用 Google Cloud 控制台、gcloud CLI 或 REST 验证计算实例拓扑
如需同时查看多个计算实例的拓扑,请使用 REST API。否则,请选择以下选项之一:
控制台
在 Google Cloud 控制台中,前往虚拟机实例页面。
在名称列中,点击要查看其详细信息的计算实例的名称。系统会显示一个包含实例详细信息的页面,并且详细信息标签页处于选中状态。
在基本信息部分中,检查物理主机字段的值。
gcloud
如需查看正在运行的计算实例的拓扑,请使用带有 --flatten=resourceStatus.physicalHostTopology 标志的 gcloud compute instances describe 命令:
gcloud compute instances describe INSTANCE_NAME \
--flatten=resourceStatus.physicalHostTopology \
--zone=ZONE
替换以下内容:
INSTANCE_NAME:计算实例名称。ZONE:计算实例所在的可用区。
输出类似于以下内容:
---
block: 3e3056e23cf91a5cb4a8621b6a52c100
cluster: europe-west1-cluster-jfhb
host: 1215168a4ecdfb434fd4d28056589059
subBlock: 0fc09525cbd5abd734342893ca1c083f
REST
如需查看正在运行的计算实例的拓扑,请发出以下 GET 请求之一。发出请求时,您必须添加 fields 查询参数,并指定仅显示计算实例的 name、machineType 和 physicalHostTopology 字段。您还必须添加 filter 查询参数,并指定仅列出正在运行的计算实例。
如需查看所有可用区中的实例列表,请使用
instances.aggregatedList方法GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/aggregated/instances?fields=items.name,items.machineType,items.resourceStatus.physicalHostTopology&filter=status=RUNNING如需查看特定可用区中的实例列表,请使用
instances.list方法GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances?fields=items.name,items.machineType,items.resourceStatus.physicalHostTopology&filter=status=RUNNING
替换以下内容:
PROJECT_ID:计算实例所在项目的 ID。ZONE:计算实例所在的可用区。
输出类似于以下内容:在以下示例中,计算实例 vm-01 和 vm-02 位于同一块中。
{
"items": [
{
"name": "vm-01",
"machineType": "https://www.googleapis.com/compute/v1/projects/example-project/zones/europe-west1-b/machineTypes/a3-ultragpu-8g",
"resourceStatus": {
"physicalHostTopology": {
"block": "3e3056e23cf91a5cb4a8621b6a52c100",
"cluster": "europe-west1-cluster-jfhb",
"host": "1215168a4ecdfb434fd4d28056589059",
"subBlock": "0fc09525cbd5abd734342893ca1c083f"
}
}
},
{
"name": "vm-02",
"machineType": "https://www.googleapis.com/compute/v1/projects/example-project/zones/europe-west1-b/machineTypes/a3-ultragpu-8g",
"resourceStatus": {
"physicalHostTopology": {
"block": "3e3056e23cf91a5cb4a8621b6a52c100",
"cluster": "europe-west1-cluster-jfhb",
"host": "2326279b5ecdfc545fd5e39167698168",
"subBlock": "1fc18636cbd4abd623553784ca2c174e"
}
}
},
...
]
}
如果您想优化计算实例列表,请修改 filter 查询参数中的过滤表达式。
通过查询元数据键验证计算实例拓扑
如需通过查询 physical_host_topology 元数据键来查看正在运行的计算实例的拓扑,请选择以下选项之一:
Linux 实例
连接到您的 Linux 实例。
使用
curl查询physical_host_topology元数据键:user@myinst:~$ curl -s -H "Metadata-Flavor: Google" http://metadata.google.internal/computeMetadata/v1/instance/attributes/physical_host_topology输出类似于以下内容:
{ "block": "3e3056e23cf91a5cb4a8621b6a52c100", "cluster": "europe-west1-cluster-jfhb", "host": "2326279b5ecdfc545fd5e39167698168", "subBlock": "1fc18636cbd4abd623553784ca2c174e" }
Windows 实例
连接到您的 Windows 实例。
使用
Invoke-RestMethod命令查询physical_host_topology元数据键:PS C:\> $value = (Invoke-RestMethod ` -Headers @{'Metadata-Flavor' = 'Google'} ` -Uri "http://metadata.google.internal/computeMetadata/v1/instance/attributes/physical_host_topology") $value输出类似于以下内容:
{ "block": "3e3056e23cf91a5cb4a8621b6a52c100", "cluster": "europe-west1-cluster-jfhb", "host": "2326279b5ecdfc545fd5e39167698168", "subBlock": "1fc18636cbd4abd623553784ca2c174e" }
后续步骤
详细了解计算实例中的主机事件。
了解如何监控计算实例。