在预留的容量块上创建 H4D 集群后,您可以查看构成该集群的虚拟机的物理排列。了解虚拟机的排列方式后,您可以执行以下操作:
- 调整应用或工作负载设计,以进一步最大限度地减少网络延迟,尤其是对于利用 Cloud RDMA 的工作负载。
- 排查频繁通信的虚拟机的网络延迟或性能问题。
准备工作
确保您拥有查看虚拟机拓扑信息的必要权限。
所需的角色
如需获得查看虚拟机拓扑所需的权限,请让您的管理员为您授予项目的 Compute Instance Admin (v1) IAM 角色。如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
此预定义角色包含查看虚拟机拓扑所需的所有权限。如需查看所需的确切权限,请展开所需权限部分:
需要具备以下权限才能查看虚拟机拓扑:
- 查看虚拟机的详细信息:针对项目的
compute.instances.get权限 - 查看虚拟机列表:针对项目的
compute.instances.list权限
了解虚拟机拓扑
查看正在运行的虚拟机的详细信息时,您可以检查物理主机字段(对于 Cloud de Confiance by S3NS 控制台)或 physicalHostTopology 字段(对于 Google Cloud CLI、Compute Engine API),或者通过查询元数据键来检索有关虚拟机在集群中的物理位置的信息。
这些字段包含以下子字段:
cluster:集群的全局名称。block:虚拟机所在预留块的组织专用 ID。sub-block:虚拟机所在子块的组织专用 ID。host:虚拟机运行所在主机的组织专用 ID。
如需了解这些术语的定义,请参阅集群术语。
如需了解虚拟机彼此间的距离有多近,请比较虚拟机之间的物理主机或 physicalHostTopology 字段的值。虚拟机共享的子字段越多,它们彼此间的物理位置就越靠近。
您还可以查看创建虚拟机的预留的拓扑。
预留和虚拟机的 physicalHostTopology 字段显示相同的 block 和 cluster 字段。查看特定预留块时,您可以查看部署在该块中的所有虚拟机的名称和子块。如需详细了解预留的拓扑,请参阅查看预留的拓扑。
查看虚拟机拓扑
如需查看多个正在运行的虚拟机的物理位置,请选择以下任一选项:
控制台
在 Cloud de Confiance 控制台中,转到虚拟机实例页面。
在名称列中,点击虚拟机的名称以查看其详细信息。系统会显示一个包含虚拟机详情的页面。默认情况下,详细信息标签页处于选中状态。
在基本信息部分,检查物理主机字段的值。
Google Cloud CLI
如需查看正在运行的虚拟机的物理位置,请使用带有 flatten=resourceStatus.physicalHostTopology 的 gcloud compute instances describe 命令。
替换以下内容:
VM_NAME:虚拟机名称。ZONE:虚拟机所在的可用区。
输出类似于以下内容:
---
cluster: europe-west1-cluster-jfhb
block: 3e3056e23cf91a5cb4a8621b6a52c100
subBlock: 0fc09525cbd5abd734342893ca1c083f
host: 1215168a4ecdfb434fd4d28056589059
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:虚拟机所在的可用区。
输出类似于以下内容:
{
"items": [
{
"name": "vm-01",
"machineType": "https://www.googleapis.com/compute/v1/projects/example-project/zones/europe-west4-b/machineTypes/h4d-highmem-192-lssd",
"resourceStatus": {
"physicalHostTopology": {
"cluster": "europe-west4-cluster-jfhb",
"block": "3e3056e23cf91a5cb4a8621b6a52c100",
"subBlock": "0fc09525cbd5abd734342893ca1c083f",
"host": "1215168a4ecdfb434fd4d28056589059"
}
}
},
{
"name": "vm-02",
"machineType": "https://www.googleapis.com/compute/v1/projects/example-project/zones/europe-west1-b/machineTypes/h4d-highmem-192-lssd",
"resourceStatus": {
"physicalHostTopology": {
"cluster": "europe-west4-cluster-jfhb",
"block": "3e3056e23cf91a5cb4a8621b6a52c100",
"subBlock": "1fc18636cbd4abd623553784ca2c174e",
"host": "2326279b5ecdfc545fd5e39167698168"
}
}
},
...
]
}
如果您想优化虚拟机列表,请修改 filter 查询参数中的过滤条件表达式。
通过查询元数据键查看虚拟机拓扑
如需通过查询 physical_host_topology 元数据键来查看正在运行的虚拟机的物理位置,请选择以下选项之一:
Linux 虚拟机
- 连接到您的 Linux 虚拟机。
- 在 Linux 虚拟机中,使用 curl 工具创建查询。如需查询 Linux 虚拟机上的
physical_host_topology元数据键,请运行以下命令:
curl -s -H "Metadata-Flavor: Google" http://metadata.google.internal/computeMetadata/v1/instance/attributes/physical_host_topology
输出类似于以下内容:
{
"cluster": "europe-west4-cluster-jfhb",
"block": "3e3056e23cf91a5cb4a8621b6a52c100",
"subBlock": "1fc18636cbd4abd623553784ca2c174e",
"host": "2326279b5ecdfc545fd5e39167698168"
}
Windows 虚拟机
- 连接到您的 Windows 虚拟机。
- 在 Windows 虚拟机中,使用 Invoke-RestMethod 创建查询。
如需查询 Windows 虚拟机上的
physical_host_topology元数据键,请运行以下命令:
$value = (Invoke-RestMethod `
-Headers @{'Metadata-Flavor' = 'Google'} `
-Uri "http://metadata.google.internal/computeMetadata/v1/instance/attributes/physical_host_topology")
$value
输出类似于以下内容:
{
"cluster": "europe-west4-cluster-jfhb",
"block": "3e3056e23cf91a5cb4a8621b6a52c100",
"subBlock": "1fc18636cbd4abd623553784ca2c174e",
"host": "2326279b5ecdfc545fd5e39167698168"
}