Compute Engine インスタンスのトポロジを表示する

このドキュメントでは、実行中の Compute Engine インスタンスのトポロジを表示する方法について説明します。コンピューティング インスタンスを作成して起動すると、ゾーン内の物理的な場所を確認して、クラスタのトポロジを把握できます。この情報は、次のことに役立ちます。

  • ジョブの整理: ワークロードの設計を調整して、たとえば、 通信量の多いタスクを物理的に最も近いコンピューティング インスタンスに配置できます。

  • 問題のトラブルシューティング: 特定のコンピューティング インスタンスが予期せず離れた場所に配置されている場合は、ネットワーク レイテンシやパフォーマンス の問題を調査できます。

プロジェクトで実行されているコンピューティング インスタンスを確認するには、 コンピューティング インスタンスのリストを表示します

制限事項

次の要件を 1 つ以上満たすコンピューティング インスタンスのトポロジのみを表示できます。

コンピューティング インスタンスのトポロジについて

各コンピューティング インスタンスは、サーバー ブロックにある物理サーバー( ホスト)で実行されます。各ブロックはクラスタに属し、クラスタはゾーン内のデータセンターに存在します。Cloud de Confiance 特定の要件を満たすコンピューティングインスタンスを表示すると、同じ要件を満たす他のコンピューティングインスタンスとの関係でトポロジを把握できます。具体的には、各コンピューティング インスタンスの physicalHostTopology フィールドで次のサブフィールドを確認することで、コンピューティング インスタンスの物理的な場所を把握できます。

  • クラスタ(cluster: コンピューティング インスタンスが存在するクラスタのグローバル名。 クラスタは、複数のブロックにまたがることができ、単一のリソースプールとして連携する複数のホストの高レベルの論理グループです。

  • ブロック(block: コンピューティング インスタンスが存在するブロックの組織固有の ID。 ブロックは、グループ化された複数のホストのコレクションです。同じブロック内のコンピューティング インスタンスでは、ネットワーク レイテンシが低くなります。

  • サブブロック(subBlock: コンピューティング インスタンスが存在するサブブロックの組織固有の ID。 サブブロックは、ブロック内の物理的な細分化であり、単一の物理エンクロージャ内のホストをグループ化します。同じサブブロック内のコンピューティング インスタンスでは、同じブロック内のコンピューティング インスタンスよりもネットワーク レイテンシが低くなります。

  • ホスト(host: コンピューティング インスタンスが存在するホストの組織固有の ID。 ホストは、コンピューティング インスタンスが実行される単一の物理サーバーです。各ホストには、独自の物理 vCPU、メモリ、ストレージ、ネットワーク インターフェース カード(NIC)があります。隣接するホストのコンピューティング インスタンスでは、可能な限り低いネットワーク レイテンシが発生します。

2 つの実行中のコンピューティング インスタンスが共有するサブフィールドが多いほど、物理的に近くなります。この情報は、ネットワーク レイテンシを最小限に抑えるようにジョブを整理したり、より復元力の高いシステムを設計したりすることで、ワークロードを最適化するのに役立ちます。

始める前に

必要なロール

コンピューティング インスタンスのトポロジを確認するために必要な権限を取得するには、プロジェクトに対するCompute 閲覧者 roles/compute.viewer)IAM ロールを付与するよう管理者に依頼してください。ロールの付与については、プロジェクト、フォルダ、組織に対するアクセス権の管理をご覧ください。

この事前定義ロールには コンピューティングインスタンスのトポロジを確認するために必要な権限が含まれています。必要とされる正確な権限については、必要な権限セクションを開いてご確認ください。

必要な権限

コンピューティング インスタンスのトポロジを確認するには、次の権限が必要です。

  • コンピューティング インスタンスの詳細を表示する: compute.instances.get プロジェクトに対する
  • コンピューティング インスタンスのリストを表示する: compute.instances.list プロジェクトに対する

カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。

コンピューティング インスタンスのトポロジを確認する

実行中のコンピューティング インスタンスのトポロジを確認するには、次のいずれかの方法を使用します。

コンソール、gcloud CLI、または REST を使用してコンピューティング インスタンスのトポロジを確認する Cloud de Confiance

複数のコンピューティング インスタンスのトポロジを同時に表示するには、REST API を使用します。または、次のオプションのいずれかを選択します。

コンソール

  1. Cloud de Confiance コンソールで、[VM インスタンス] ページに移動します。

    [VM インスタンス] に移動

  2. [名前] 列で、詳細を表示するコンピューティング インスタンスの名前をクリックします。インスタンスの詳細を示すページが表示され、[詳細] タブが選択されます。

  3. [基本情報] セクションで、[物理ホスト] フィールドの値を確認します。

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. physical_host_topology メタデータキーに curlクエリを実行します。

    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"
    }
    

次のステップ

  • コンピューティング インスタンスの ホストイベントの詳細を確認する。

  • コンピューティング インスタンスをモニタリングする方法を学習する