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. Après avoir 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 tâches : 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 quelles instances de calcul sont en cours d'exécution dans votre projet, consultez la liste des instances de calcul.

Limites

Vous ne pouvez afficher la topologie des instances de calcul que si elles répondent à une ou plusieurs des exigences suivantes :

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 serveurs. Chaque bloc appartient à un cluster, qui réside dans un centre de données au sein d'une Google Cloud zone. 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 comprendre l'emplacement physique de vos instances de calcul en vérifiant 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 du même bloc présentent une faible latence du 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 dans un bloc, regroupant les hôtes dans une seule enceinte 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 dans lequel se trouve votre instance de calcul. Un hôte est un serveur physique unique sur lequel s'exécutent vos instances de calcul. Chaque hôte possède ses propres vCPU physiques, sa mémoire, son stockage et sa carte d'interface réseau (NIC). Les instances de calcul des hôtes adjacents présentent 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 proches physiquement l'une de l'autre. Ces informations vous aident à optimiser vos charges de travail en organisant vos tâches de manière à minimiser la latence du réseau ou en concevant des systèmes plus résilients.

Avant de commencer

  • Si ce n'est pas déjà fait, configurez l'authentification. L'authentification permet de valider votre identité pour accéder aux Google Cloud services et aux API. Pour exécuter du code ou des exemples depuis un environnement de développement local, vous pouvez vous authentifier auprès de Compute Engine en sélectionnant l'une des options suivantes :

    Sélectionnez l'onglet correspondant à la façon dont vous prévoyez d'utiliser les exemples de cette page :

    Console

    Lorsque vous utilisez la Google Cloud console pour accéder aux Google Cloud services et aux API, vous n'avez pas besoin de configurer l'authentification.

    gcloud

    1. Installez la Google Cloud CLI. Une fois que la Google Cloud CLI est installée, initialisezla en exécutant la commande suivante :

      gcloud init

      Si vous utilisez un fournisseur d'identité (IdP) externe, vous devez d'abord vous connecter à la gcloud CLI avec votre identité fédérée.

  • Définissez une région et une zone par défaut.
  • REST

    Pour utiliser les exemples API REST de cette page dans un environnement de développement local, vous devez utiliser les identifiants que vous fournissez à la gcloud CLI.

      Installez la Google Cloud CLI.

      Si vous utilisez un fournisseur d'identité (IdP) externe, vous devez d'abord vous connecter à la gcloud CLI avec votre identité fédérée.

    Pour en savoir plus, consultez la section S'authentifier pour utiliser REST dans la documentation sur l' Google Cloud authentification.

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 nécessaires 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 Google Cloud console, de la 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 contenant 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 gcloud compute instances describe commande 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 dans laquelle 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 répertorier que les instances de calcul en cours d'exécution.

  • Pour afficher la liste de vos instances dans toutes les zones : instances.aggregatedList méthode

    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: instances.list méthode

    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 dans laquelle 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 filter paramètre de requête.

Vérifier la topologie des instances 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 Invoke-RestMethod commande :

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

Étape suivante