查看 Compute Engine 執行個體拓撲

本文說明如何查看執行中 Compute Engine 執行個體的拓撲。建立並啟動運算執行個體後,您可以在區域中查看執行個體的實際位置,瞭解叢集拓撲。這項資訊有助於您執行下列操作:

  • 安排工作:您可以調整工作負載設計,例如將通訊量大的工作放在實體上最接近的運算執行個體。

  • 排解問題:如果特定運算執行個體意外相距甚遠,您可以調查網路延遲或效能問題。

如要確認專案中正在執行的運算執行個體,請查看運算執行個體清單

限制

您只能查看符合下列一或多項條件的運算執行個體拓撲:

瞭解運算執行個體拓撲

每個運算執行個體都會在伺服器區塊的實體伺服器 (即主機) 上執行。每個區塊都屬於一個叢集,而叢集位於「區域」Google Cloud 內的資料中心。查看符合特定需求的運算執行個體時,您可以瞭解這些執行個體與其他符合相同需求的運算執行個體之間的拓撲關係。具體來說,您可以查看每個運算執行個體 physicalHostTopology 欄位中的下列子欄位,瞭解運算執行個體的實際位置:

  • 叢集 (cluster):運算執行個體所在的叢集全域名稱。叢集是多個主機的高階邏輯分組,可跨越多個區塊,共同運作成為單一資源集區。

  • 區塊 (block):區塊的機構專屬 ID,您的運算執行個體位於該區塊。區塊是多個主機的集合,同一個區塊中的運算執行個體網路延遲時間較短。

  • 子區塊 (subBlock):運算執行個體所在的子區塊專屬 ID。子區塊是區塊中的實體細分部分,可將單一實體外殼內的主機分組。與同一個區塊中的運算執行個體相比,同一個子區塊中的運算執行個體網路延遲時間較短。

  • 主機 (host):主機的機構專屬 ID,您的運算執行個體位於該主機。主機是執行運算執行個體的單一實體伺服器。每個主機都有自己的實體 vCPU、記憶體、儲存空間和網路介面卡 (NIC)。相鄰主機中的運算執行個體可享有最低的網路延遲時間。

兩個執行中的運算執行個體共用的子欄位越多,彼此的實際距離就越近。這項資訊可協助您整理工作,盡量減少網路延遲時間,或設計更具彈性的系統,進而最佳化工作負載。

事前準備

  • 如果尚未設定驗證,請先完成設定。 驗證可確認您的身分,以便存取 Google Cloud 服務和 API。如要從本機開發環境執行程式碼或範例,請選取下列其中一個選項,向 Compute Engine 進行驗證:

    選取這個頁面上的分頁,瞭解如何使用範例:

    控制台

    使用 Google Cloud 控制台存取 Google Cloud 服務和 API 時,無須設定驗證。

    gcloud

    1. 安裝 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 檢視者 」(roles/compute.viewer) IAM 角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。

這個預先定義的角色具備驗證運算執行個體拓撲所需的權限。如要查看確切的必要權限,請展開「Required permissions」(必要權限) 部分:

所需權限

如要驗證運算執行個體的拓撲,必須具備下列權限:

  • 如要查看運算執行個體的詳細資料: compute.instances.get 在專案中
  • 如要查看運算執行個體清單: compute.instances.list 專案

您或許還可透過自訂角色或其他預先定義的角色取得這些權限。

驗證運算執行個體拓撲

如要驗證執行中運算執行個體的拓撲,請使用下列其中一種方法:

使用 Google Cloud 控制台、gcloud CLI 或 REST 驗證運算執行個體拓撲

如要同時查看多個運算執行個體的拓撲,請使用 REST API。否則,請選取下列其中一個選項:

控制台

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

    前往 VM 執行個體

  2. 在「名稱」欄中,按一下要查看詳細資料的運算執行個體名稱。系統會顯示執行個體詳細資料頁面,並選取「Details」(詳細資料) 分頁。

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

gcloud

如要查看執行中運算執行個體的拓撲,請使用 gcloud compute instances describe 指令並加上 --flatten=resourceStatus.physicalHostTopology 旗標:

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 查詢參數,並指定只顯示運算執行個體的 namemachineTypephysicalHostTopology 欄位。您也必須加入 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-01vm-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 執行個體

  1. 連線至 Linux 執行個體。

  2. 使用 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 執行個體

  1. 連線至 Windows 執行個體。

  2. 使用 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"
    }
    

後續步驟