Afficher la topologie d'une instance Compute Engine

Ce document explique comment afficher la topologie de vos instances Compute Engine en cours d'exécution. Une fois que vous avez créé et démarré des instances de calcul, vous pouvez afficher leur emplacement physique dans une zone pour comprendre la topologie de votre cluster. Ces informations vous aident à effectuer les opérations suivantes :

  • Organiser les jobs : vous pouvez ajuster la conception de votre charge de travail pour, par exemple, placer les tâches nécessitant beaucoup de communication sur les instances de calcul les plus proches physiquement.

  • Résoudre les problèmes : vous pouvez examiner les problèmes de latence ou de performances du réseau si des instances de calcul spécifiques sont plus éloignées que prévu.

Pour vérifier les instances de calcul en cours d'exécution dans votre projet, affichez la liste des instances de calcul.

Limites

Vous ne pouvez afficher la topologie que des instances de calcul qui répondent à un ou plusieurs des critères suivants :

Comprendre la topologie des instances de calcul

Chaque instance de calcul s'exécute sur un serveur physique, un hôte, qui se trouve sur un bloc de serveur. Chaque bloc appartient à un cluster, qui réside dans un centre de données au sein d'une zoneGoogle Cloud . Lorsque vous affichez des instances de calcul qui répondent à des exigences spécifiques, vous pouvez comprendre leur topologie par rapport à d'autres instances de calcul qui répondent aux mêmes exigences. Plus précisément, vous pouvez connaître l'emplacement physique de vos instances de calcul en consultant les sous-champs suivants dans le champ physicalHostTopology de chaque instance de calcul :

  • Cluster (cluster) : nom global du cluster dans lequel se trouve votre instance de calcul. Un cluster est un regroupement logique de haut niveau de plusieurs hôtes, qui peuvent s'étendre sur plusieurs blocs et qui fonctionnent ensemble en tant que pool de ressources unique.

  • Bloc (block) : ID spécifique à l'organisation du bloc dans lequel se trouve votre instance de calcul. Un bloc est un ensemble de plusieurs hôtes regroupés. Les instances de calcul d'un même bloc présentent une faible latence réseau.

  • Sous-bloc (subBlock) : ID spécifique à l'organisation du sous-bloc dans lequel se trouve votre instance de calcul. Un sous-bloc est une subdivision physique d'un bloc, qui regroupe les hôtes dans un même boîtier physique. Les instances de calcul du même sous-bloc présentent une latence réseau inférieure à celle des instances de calcul du même bloc.

  • Hôte (host) : ID spécifique à l'organisation de l'hôte sur lequel se trouve votre instance de calcul. Un hôte est un serveur physique unique sur lequel vos instances de calcul s'exécutent. Chaque hôte possède son propre processeur virtuel physique, sa propre mémoire, son propre espace de stockage et sa propre carte d'interface réseau (NIC). Les instances de calcul sur des hôtes adjacents bénéficient de la latence réseau la plus faible possible.

Plus deux instances de calcul en cours d'exécution partagent de sous-champs, plus elles sont physiquement proches l'une de l'autre. Ces informations vous aident à optimiser vos charges de travail en organisant vos jobs de manière à minimiser la latence du réseau ou en concevant des systèmes plus résilients.

Avant de commencer

Rôles requis

Pour obtenir les autorisations nécessaires pour vérifier la topologie de vos instances de calcul, demandez à votre administrateur de vous accorder le rôle IAM Lecteur de Compute (roles/compute.viewer) sur le projet. Pour en savoir plus sur l'attribution de rôles, consultez Gérer l'accès aux projets, aux dossiers et aux organisations.

Ce rôle prédéfini contient les autorisations requises pour vérifier la topologie de vos instances de calcul. Pour connaître les autorisations exactes requises, développez la section Autorisations requises :

Autorisations requises

Les autorisations suivantes sont requises pour vérifier la topologie de vos instances de calcul :

  • Pour afficher les détails d'une instance de calcul : compute.instances.get sur le projet
  • Pour afficher la liste des instances de calcul : compute.instances.list sur le projet

Vous pouvez également obtenir ces autorisations avec des rôles personnalisés ou d'autres rôles prédéfinis.

Vérifier la topologie des instances de calcul

Pour vérifier la topologie de vos instances de calcul en cours d'exécution, utilisez l'une des méthodes suivantes :

Vérifier la topologie des instances de calcul à l'aide de la console Google Cloud , de gcloud CLI ou de REST

Pour afficher la topologie de plusieurs instances de calcul simultanément, utilisez l'API REST. Sinon, sélectionnez l'une des options suivantes :

Console

  1. Dans la console Google Cloud , accédez à la page Instances de VM.

    Accéder à la page Instances de VM

  2. Dans la colonne Nom, cliquez sur le nom de l'instance de calcul dont vous souhaitez afficher les détails. Une page indiquant les détails de l'instance s'affiche, et l'onglet Détails est sélectionné.

  3. Dans la section Informations de base, vérifiez la valeur du champ Hôte physique.

gcloud

Pour afficher la topologie d'une instance de calcul en cours d'exécution, utilisez la commande gcloud compute instances describe avec l'option --flatten=resourceStatus.physicalHostTopology :

gcloud compute instances describe INSTANCE_NAME \
    --flatten=resourceStatus.physicalHostTopology \
    --zone=ZONE

Remplacez les éléments suivants :

  • INSTANCE_NAME : nom de l'instance de calcul.

  • ZONE : zone où se trouve l'instance de calcul.

Le résultat ressemble à ce qui suit :

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

REST

Pour afficher la topologie de vos instances de calcul en cours d'exécution, envoyez l'une des requêtes GET suivantes. Lorsque vous envoyez une requête, vous devez inclure le paramètre de requête fields et spécifier d'afficher uniquement les champs name, machineType et physicalHostTopology d'une instance de calcul. Vous devez également inclure le paramètre de requête filter et spécifier de ne lister que les instances de calcul en cours d'exécution.

  • Pour afficher la liste de vos instances dans toutes les zones : méthode 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
    
  • Pour afficher la liste de vos instances dans une zone spécifique : méthode 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
    

Remplacez les éléments suivants :

  • PROJECT_ID : ID du projet dans lequel se trouvent les instances de calcul.

  • ZONE : zone où se trouvent les instances de calcul.

Le résultat renvoyé ressemble à ceci : Dans l'exemple suivant, les instances de calcul vm-01 et vm-02 se trouvent dans le même bloc.

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

Si vous souhaitez affiner votre liste d'instances de calcul, modifiez l'expression de filtre dans le paramètre de requête filter.

Vérifier la topologie d'une instance de calcul en interrogeant la clé de métadonnées

Pour afficher la topologie d'une instance de calcul en cours d'exécution en interrogeant la clé de métadonnées physical_host_topology, sélectionnez l'une des options suivantes :

Instances Linux

  1. Connectez-vous à votre instance Linux.

  2. Interrogez la clé de métadonnées physical_host_topology à l'aide de curl :

    user@myinst:~$ curl -s -H "Metadata-Flavor: Google" http://metadata.google.internal/computeMetadata/v1/instance/attributes/physical_host_topology
    

    Le résultat ressemble à ce qui suit :

    {
      "block": "3e3056e23cf91a5cb4a8621b6a52c100",
      "cluster": "europe-west1-cluster-jfhb",
      "host": "2326279b5ecdfc545fd5e39167698168",
      "subBlock": "1fc18636cbd4abd623553784ca2c174e"
    }
    

Instances Windows

  1. Connectez-vous à votre instance Windows.

  2. Interrogez la clé de métadonnées physical_host_topology à l'aide de la commande Invoke-RestMethod :

    PS C:\> 
    $value = (Invoke-RestMethod `
            -Headers @{'Metadata-Flavor' = 'Google'} `
            -Uri "http://metadata.google.internal/computeMetadata/v1/instance/attributes/physical_host_topology")
    $value
    

    Le résultat ressemble à ce qui suit :

    {
      "block": "3e3056e23cf91a5cb4a8621b6a52c100",
      "cluster": "europe-west1-cluster-jfhb",
      "host": "2326279b5ecdfc545fd5e39167698168",
      "subBlock": "1fc18636cbd4abd623553784ca2c174e"
    }
    

Étapes suivantes