查看 H4D 叢集拓撲

在預留容量區塊上建立 H4D 叢集後,即可查看組成叢集的 VM 實體排列方式。瞭解 VM 的排列方式,可讓您執行下列操作:

  • 調整應用程式或工作負載設計,進一步縮短網路延遲時間,特別是使用 Cloud RDMA 的工作負載。
  • 排解經常通訊的 VM 網路延遲或效能問題。

事前準備

請確認您擁有必要權限,可以查看 VM 拓撲資訊。

必要的角色

如要取得查看 VM 拓撲所需的權限,請要求管理員在專案中授予您 Compute 執行個體管理員 (v1) IAM 角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。

這個預先定義的角色具備查看 VM 拓撲的所有必要權限。如要查看確切的必要權限,請展開「Required permissions」(必要權限) 部分:

如要查看 VM 拓撲,必須具備下列權限:

  • 如要查看 VM 的詳細資料,請按一下專案中的 compute.instances.get
  • 如要查看 VM 清單,請在專案中按一下 compute.instances.list

瞭解 VM 拓撲

查看執行中 VM 的詳細資料時,您可以檢查「實體主機」欄位 (適用於 Google Cloud 控制台) 或 physicalHostTopology 欄位 (適用於 Google Cloud CLI),或透過 Compute Engine API 或查詢中繼資料鍵,擷取叢集內實體位置的相關資訊。這些欄位包含下列子欄位:

  • cluster:叢集的全域名稱。
  • block:VM 所在的預留區塊專屬 ID。
  • sub-block:VM 所在的子區塊專屬 ID。
  • host:VM 執行的主機專屬 ID。

如需這些字詞的定義,請參閱叢集術語

如要瞭解 VM 之間的距離,請比較 VM 之間的「實體主機」physicalHostTopology 欄位值。VM 共用的子欄位越多,實體位置就越接近。

您也可以查看建立 VM 的預留資源拓撲。預留項目和 VM 的 physicalHostTopology 欄位會顯示相同的 blockcluster 欄位。查看特定預留區塊時,您可以查看部署在該區塊中的所有 VM 名稱和子區塊。如要進一步瞭解預留項目的拓撲,請參閱「查看預留項目的拓撲」。

查看 VM 拓撲

如要查看多個執行中 VM 的實際位置,請選取下列任一選項:

控制台

  • 前往 Google Cloud 控制台的「VM instances」(VM 執行個體) 頁面

    前往 VM 執行個體

  • 在「Name」(名稱) 欄中,按一下 VM 名稱即可查看詳細資料。隨即會顯示含有 VM 詳細資料的頁面。系統預設會選取「詳細資料」分頁。

  • 在「Basic information」(基本資訊) 區段中,檢查「Physical host」(實體主機) 欄位的值。

Google Cloud CLI

如要查看執行中 VM 的實際位置,請使用 gcloud compute instances describe 指令搭配 flatten=resourceStatus.physicalHostTopology

更改下列內容:

  • VM_NAME:VM 名稱。
  • ZONE:VM 所在的區域

輸出結果會與下列內容相似:

---
cluster: europe-west1-cluster-jfhb
block: 3e3056e23cf91a5cb4a8621b6a52c100
subBlock: 0fc09525cbd5abd734342893ca1c083f
host: 1215168a4ecdfb434fd4d28056589059

REST

如要查看執行中 VM 的實體位置,請提出下列其中一項 GET 要求。提出要求時,您必須加入 fields 查詢參數,並指定只顯示 VM 的 namemachineTypephysicalHostTopology 欄位。您也必須加入 filter 查詢參數,並指定只列出正在執行的 VM。

GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/aggregated/instances?fields=items.name,items.machineType,items.resourceStatus.physicalHostTopology&filter=status=RUNNING
  • 如要查看特定可用區的 VM 清單,請使用 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:VM 所在的專案 ID。 * ZONE:VM 所在的區域。

輸出結果會與下列內容相似:

{
  "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"
        }
      }
    },
    ...
  ]
}

如要修正 VM 清單,請編輯 filter 查詢參數中的篩選器運算式。

透過查詢中繼資料鍵,查看 VM 拓撲

如要透過查詢 physical_host_topology 中繼資料鍵,查看執行中 VM 的實際位置,請選取下列其中一個選項:

Linux VM

  1. 連線至 Linux VM
  2. 在 Linux VM 中,使用 curl 工具建立查詢。如要在 Linux VM 上查詢 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 VM

  1. 連線至 Windows VM
  2. 在 Windows VM 中,使用 Invoke-RestMethod 建立查詢。如要在 Windows VM 上查詢 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"
}

後續步驟