Créer et appliquer des stratégies d'emplacement par répartition aux VM


Ce document explique comment améliorer la fiabilité de vos instances de machine virtuelle (VM) en créant et en appliquant des stratégies d'emplacement par répartition. Pour en savoir plus sur les stratégies d'emplacement, y compris leurs restrictions et leurs tarifs, consultez la section Présentation des stratégies d'emplacement.

Une stratégie d'emplacement par répartition spécifie que vos VM doivent être réparties sur différents domaines de disponibilité. Cette distribution permet de limiter les perturbations spécifiques à un emplacement, telles que les erreurs matérielles, et est utile lorsque vous exécutez des charges de travail distribuées, répliquées et à grande échelle, telles que le système de fichiers distribué Hadoop (HDFS), Cassandra ou Kafka.

Avant de commencer

  • Si ce n'est pas déjà fait, configurez l'authentification. L'authentification est le processus permettant de valider votre identité pour accéder aux services et aux API Google Cloud. 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:

    Select the tab for how you plan to use the samples on this page:

    gcloud

    1. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    2. Set a default region and zone.
    3. REST

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

        Install the Google Cloud CLI, then initialize it by running the following command:

        gcloud init

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

Rôles requis

Pour obtenir les autorisations nécessaires pour créer et appliquer une stratégie d'emplacement par répartition aux VM, demandez à votre administrateur de vous accorder le rôle IAM Administrateur d'instances Compute (v1) (roles/compute.instanceAdmin.v1) sur votre projet. Pour en savoir plus sur l'attribution de rôles, consultez la page Gérer l'accès aux projets, aux dossiers et aux organisations.

Ce rôle prédéfini contient les autorisations requises pour créer et appliquer une stratégie de répartition aux VM. Pour connaître les autorisations exactes requises, développez la section Autorisations requises :

Autorisations requises

Les autorisations suivantes sont requises pour créer et appliquer une stratégie d'emplacement par répartition aux VM :

  • Pour créer des stratégies d'emplacement par répartition : compute.resourcePolicies.create sur le projet
  • Pour appliquer une stratégie d'emplacement par répartition aux VM existantes : compute.instances.addResourcePolicies sur le projet
  • Pour créer des machines virtuelles :
    • compute.instances.create sur le projet
    • Pour créer la VM à l'aide d'une image personnalisée : compute.images.useReadOnly sur l'image
    • Pour créer la VM à l'aide d'un instantané : compute.snapshots.useReadOnly sur l'instantané
    • Pour créer la VM à l'aide d'un modèle d'instance : compute.instanceTemplates.useReadOnly sur le modèle d'instance
    • Pour attribuer un ancien réseau à la VM : compute.networks.use sur le projet
    • Pour spécifier une adresse IP statique pour la VM : compute.addresses.use sur le projet
    • Pour attribuer une adresse IP externe à la VM, en cas d'utilisation d'un ancien réseau : compute.networks.useExternalIp sur le projet
    • Pour spécifier un sous-réseau pour la VM : compute.subnetworks.use sur le projet ou sur le sous-réseau choisi
    • Pour attribuer une adresse IP externe à la VM, en cas d'utilisation d'un réseau VPC : compute.subnetworks.useExternalIp sur le projet ou sur le sous-réseau choisi
    • Pour définir les métadonnées d'instance de VM pour la VM : compute.instances.setMetadata sur le projet
    • Pour définir des tags pour la VM : compute.instances.setTags sur la VM
    • Pour définir des libellés pour la VM : compute.instances.setLabels sur la VM
    • Pour définir un compte de service à utiliser avec la VM : compute.instances.setServiceAccount sur la VM
    • Pour créer un disque pour la VM : compute.disks.create sur le projet
    • Pour associer un disque existant en mode lecture seule ou en mode lecture-écriture : compute.disks.use sur le disque
    • Pour associer un disque existant en mode lecture seule : compute.disks.useReadOnly sur le disque
  • Pour créer un modèle d'instance : compute.instanceTemplates.create sur le projet.
  • Pour créer un groupe d'instances géré (MIG) : compute.instanceGroupManagers.create sur le projet

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

Créer une règle d'emplacement

À moins que vous ne souhaitiez tester l'application de la stratégie d'emplacement par répartition à vos VM, Google Cloud vous recommande de créer des stratégies d'emplacement par répartition avec deux domaines de disponibilité ou plus. Cela réduit le risque que toutes les VM soient affectées par une seule erreur matérielle. Pour en savoir plus, consultez la section À propos des stratégies d'emplacement par répartition.

Pour créer une stratégie d'emplacements par répartition, sélectionnez l'une des options suivantes :

gcloud

Pour créer une stratégie d'emplacement par répartition, utilisez la commande gcloud compute resource-policies create group-placement avec l'option --availability-domain-count.

gcloud compute resource-policies create group-placement POLICY_NAME \
    --availability-domain-count=DOMAIN_COUNT \
    --region=REGION

Remplacez les éléments suivants :

  • POLICY_NAME : nom de la stratégie d'emplacement par répartition.

  • DOMAIN_COUNT : nombre distinct de domaines de disponibilité dans lesquels placer vos VM. La valeur doit être comprise entre 1 et 8.

  • REGION : région dans laquelle créer la stratégie d'emplacement.

REST

Pour créer une stratégie de répartition, envoyez une requête POST à la méthode resourcePolicies.insert. Dans le corps de la requête, incluez le champ availabilityDomainCount.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/resourcePolicies

{
  "name": "POLICY_NAME",
  "groupPlacementPolicy": {
    "availabilityDomainCount": DOMAIN_COUNT
  }
}

Remplacez les éléments suivants :

  • PROJECT_ID : ID du projet dans lequel créer la stratégie d'emplacement.

  • REGION : région dans laquelle créer la stratégie d'emplacement.

  • POLICY_NAME : nom de la stratégie d'emplacement par répartition.

  • DOMAIN_COUNT : nombre distinct de domaines de disponibilité dans lesquels placer vos VM. La valeur doit être comprise entre 1 et 8.

Appliquer une stratégie d'emplacement par répartition

Vous pouvez appliquer une stratégie d'emplacement par répartition à une VM ou un MIG existants, ou lorsque vous créez des VM, des modèles d'instance ou des MIG.

Pour appliquer une stratégie d'emplacement par répartition à une ressource Compute Engine, sélectionnez l'une des méthodes suivantes :

Une fois que vous avez appliqué une stratégie d'emplacement par répartition à une VM, vous pouvez vérifier le domaine de disponibilité dans lequel se trouve la VM en affichant les détails de la VM et en vérifiant la valeur du champ availabilityDomain.

Appliquer la stratégie à une VM existante

Avant d'appliquer une stratégie d'emplacement par répartition à une VM existante, tenez compte des points suivants :

  • Si votre règle d'emplacement par répartition spécifie plusieurs domaines de disponibilité, vous pouvez l'appliquer à une VM sans l'arrêter. Toutefois, il peut être nécessaire de la déplacer vers un autre domaine de disponibilité. Au cours de ce processus, Compute Engine arrête ou migre à chaud la VM en fonction de sa stratégie de maintenance de l'hôte.

  • La VM et la stratégie d'emplacement par répartition doivent se trouver dans la même région. Par exemple, si la règle d'emplacement se trouve dans la région us-central1, la VM doit se trouver dans une zone de us-central1. Si vous devez migrer une VM vers une autre région, consultez la section Déplacer une VM entre plusieurs zones ou régions.

Si vous souhaitez spécifier le domaine de disponibilité dans lequel placer votre VM, appliquez la règle d'emplacement à la VM en mettant à jour ses propriétés. Lorsque vous mettez à jour les propriétés de la VM, veillez à inclure les champs resourcePolicies et scheduling.availabilityDomain.

Pour appliquer une stratégie d'emplacement par répartition à une VM existante, sélectionnez l'une des options suivantes :

gcloud

Pour appliquer une stratégie d'emplacement par répartition à une VM existante, exécutez la commande gcloud compute instances add-resource-policies.

gcloud compute instances add-resource-policies VM_NAME \
    --resource-policies=POLICY_NAME \
    --zone=ZONE

Remplacez les éléments suivants :

  • VM_NAME : nom d'une VM existante.

  • POLICY_NAME : nom d'une stratégie de répartition.

  • ZONE : zone où se trouve la VM.

REST

Pour appliquer une stratégie de répartition à une VM existante, envoyez une requête POST à la méthode instances.addResourcePolicies.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/addResourcePolicies

{
  "resourcePolicies": [
    "projects/PROJECT_ID/regions/REGION/resourcePolicies/POLICY_NAME"
  ]
}

Remplacez les éléments suivants :

  • PROJECT_ID : ID du projet dans lequel se trouvent la stratégie de répartition et la VM.

  • ZONE : zone où se trouve la VM.

  • VM_NAME : nom d'une VM existante.

  • REGION : région où se trouve la stratégie d'emplacement par répartition.

  • POLICY_NAME : nom d'une stratégie de répartition.

Appliquer la stratégie lors de la création d'une VM

Vous ne pouvez créer une VM qui spécifie une stratégie d'emplacement par répartition que dans la même région que la stratégie d'emplacement.

Pour créer une VM qui spécifie une stratégie d'emplacement par répartition, sélectionnez l'une des options suivantes :

gcloud

Pour créer une VM qui spécifie une stratégie d'emplacement par répartition, exécutez la commande gcloud compute instances create avec l'option --resource-policies.

gcloud compute instances create VM_NAME \
    --machine-type=MACHINE_TYPE \
    --resource-policies=POLICY_NAME \
    --zone=ZONE

Remplacez les éléments suivants :

  • VM_NAME : nom de la VM à créer

  • MACHINE_TYPE : type de machine pour la VM.

  • POLICY_NAME : nom d'une stratégie de répartition.

  • ZONE : Zone dans laquelle créer l'instance de VM.

Vous pouvez également spécifier le domaine de disponibilité dans lequel créer la VM en incluant l'option --availability-domain.

gcloud compute instances create VM_NAME \
    --availability-domain=DOMAIN_NUMBER \
    --machine-type=MACHINE_TYPE \
    --resource-policies=POLICY_NAME \
    --zone=ZONE

Remplacez DOMAIN_NUMBER par le numéro du domaine de disponibilité dans lequel placer votre VM. La valeur doit être comprise entre 1 et le nombre de domaines spécifiés dans la stratégie d'emplacement par répartition. Pour vérifier le nombre de domaines dans une stratégie d'emplacement par répartition, affichez les détails de la stratégie d'emplacement.

REST

Pour créer une VM qui spécifie une stratégie de répartition, envoyez une requête POST à la méthode instances.insert. Dans le corps de la requête, incluez le champ resourcePolicies.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances

{
  "name": "VM_NAME",
  "machineType": "zones/ZONE/machineTypes/MACHINE_TYPE",
  "disks": [
    {
      "boot": true,
      "initializeParams": {
        "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
      }
    }
  ],
  "networkInterfaces": [
    {
      "network": "global/networks/default"
    }
  ],
  "resourcePolicies": [
    "projects/PROJECT_ID/regions/REGION/resourcePolicies/POLICY_NAME"
  ]
}

Remplacez les éléments suivants :

  • PROJECT_ID : ID du projet dans lequel se trouve la stratégie de répartition.

  • ZONE : zone où créer la VM et où se trouve le type de machine. Vous ne pouvez spécifier qu'une zone dans la région de la stratégie d'emplacement par répartition.

  • VM_NAME : nom de la VM à créer

  • MACHINE_TYPE : type de machine pour la VM.

  • IMAGE_PROJECT : projet contenant l'image, par exemple, debian-cloud. Pour en savoir plus sur les projets d'image compatibles, consultez la page Images publiques.

  • IMAGE : spécifiez l'une des options suivantes :

    • Version spécifique de l'image de l'OS. Exemple : debian-12-bookworm-v20240617

    • Une famille d'images, qui doit être au format family/IMAGE_FAMILY. Cela permet de spécifier l'image d'OS non obsolète la plus récente. Par exemple, si vous spécifiez family/debian-12, la dernière version de la famille d'images Debian 12 est utilisée. Pour en savoir plus sur l'utilisation des familles d'images, consultez la page Bonnes pratiques concernant les familles d'images.

  • REGION : région où se trouve la stratégie d'emplacement par répartition.

  • POLICY_NAME : nom d'une stratégie de répartition.

Vous pouvez éventuellement spécifier le domaine de disponibilité dans lequel créer la VM en incluant le champ availabilityDomain dans le corps de la requête.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances

{
  "name": "VM_NAME",
  "machineType": "zones/ZONE/machineTypes/MACHINE_TYPE",
  "disks": [
    {
      "boot": true,
      "initializeParams": {
        "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
      }
    }
  ],
  "networkInterfaces": [
    {
      "network": "global/networks/default"
    }
  ],
  "resourcePolicies": [
    "projects/PROJECT_ID/regions/REGION/resourcePolicies/POLICY_NAME"
  ],
  "scheduling": {
    "availabilityDomain": DOMAIN_NUMBER
  }
}

Remplacez DOMAIN_NUMBER par le numéro du domaine de disponibilité dans lequel placer votre VM. La valeur doit être comprise entre 1 et le nombre de domaines spécifiés dans la stratégie d'emplacement par répartition. Pour vérifier le nombre de domaines dans une stratégie d'emplacement par répartition, affichez les détails de la stratégie d'emplacement.

Pour en savoir plus sur les options de configuration permettant de créer une VM, consultez la section Créer et démarrer une instance de VM.

Appliquer la stratégie lors de la création groupée de VM

Avant de créer des VM de manière groupée qui spécifient une stratégie d'emplacement par répartition, vérifiez les points suivants :

  • Vous ne pouvez créer de manière groupée des VM qui spécifient une stratégie d'emplacement par répartition que dans la même région que la stratégie d'emplacement.

  • Lorsque vous créez des VM de manière groupée avec une stratégie d'emplacement par répartition, vous pouvez éventuellement spécifier le domaine de disponibilité dans lequel créer vos VM. Évitez de créer toutes vos VM dans un seul domaine. Sinon, vous ne réduisez pas le risque qu'une seule erreur matérielle affecte toutes vos VM.

Pour créer de manière groupée des VM qui spécifient une stratégie d'emplacement par répartition, sélectionnez l'une des options suivantes :

gcloud

Pour créer de manière groupée des VM qui spécifient une stratégie d'emplacement par répartition, exécutez la commande gcloud compute instances bulk create avec l'option --resource-policies.

Par exemple, pour créer des VM de manière groupée dans une seule zone et spécifier un format de nom pour les VM, exécutez la commande suivante :

gcloud compute instances bulk create \
    --count=COUNT \
    --machine-type=MACHINE_TYPE \
    --name-pattern=NAME_PATTERN \
    --resource-policies=POLICY_NAME \
    --zone=ZONE

Remplacez les éléments suivants :

  • COUNT : nombre de VM à créer.

  • MACHINE_TYPE : type de machine pour les VM.

  • NAME_PATTERN : modèle de nom des VM. Pour remplacer une séquence de nombres dans un nom de VM, utilisez une séquence de caractères de hachage (#). Par exemple, le modèle de nom vm-# génère des VM portant des noms commençant par vm-1, vm-2, etc., jusqu'au nombre de VM spécifié par COUNT.

  • POLICY_NAME : nom d'une stratégie de répartition.

  • ZONE : zone dans laquelle créer les VM de manière groupée.

Vous pouvez éventuellement spécifier le domaine de disponibilité dans lequel créer les VM de manière groupée en incluant l'option --availability-domain.

gcloud compute instances bulk create \
    --availability-domain=DOMAIN_NUMBER \
    --count=COUNT \
    --machine-type=MACHINE_TYPE \
    --name-pattern=NAME_PATTERN \
    --resource-policies=POLICY_NAME \
    --zone=ZONE

Remplacez DOMAIN_NUMBER par le numéro du domaine de disponibilité dans lequel placer votre VM. La valeur doit être comprise entre 1 et le nombre de domaines spécifiés dans la stratégie d'emplacement par répartition. Pour vérifier le nombre de domaines dans une stratégie d'emplacement par répartition, affichez les détails de la stratégie d'emplacement.

REST

Pour créer de manière groupée des VM qui spécifient une stratégie de répartition, envoyez une requête POST à la méthode instances.bulkInsert. Dans le corps de la requête, incluez le champ resourcePolicies.

Par exemple, pour créer des VM de manière groupée dans une seule zone et spécifier un format de nom pour les VM, envoyez une requête POST comme suit :

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/bulkInsert

{
  "count": "COUNT",
  "namePattern": "NAME_PATTERN",
  "instanceProperties": {
    "machineType": "MACHINE_TYPE",
    "disks": [
      {
        "boot": true,
        "initializeParams": {
          "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
        }
      }
    ],
    "networkInterfaces": [
      {
        "network": "global/networks/default"
      }
    ],
    "resourcePolicies": [
      "POLICY_NAME"
    ]
  }
}

Remplacez les éléments suivants :

  • PROJECT_ID : ID du projet dans lequel se trouve la stratégie de répartition.

  • ZONE : zone dans laquelle créer les VM de manière groupée.

  • COUNT : nombre de VM à créer.

  • NAME_PATTERN : modèle de nom des VM. Pour remplacer une séquence de nombres dans un nom de VM, utilisez une séquence de caractères de hachage (#). Par exemple, le modèle de nom vm-# génère des VM portant des noms commençant par vm-1, vm-2, etc., jusqu'au nombre de VM spécifié par COUNT.

  • MACHINE_TYPE : type de machine pour les VM.

  • IMAGE_PROJECT : projet contenant l'image, par exemple, debian-cloud. Pour en savoir plus sur les projets d'image compatibles, consultez la page Images publiques.

  • IMAGE : spécifiez l'une des options suivantes :

    • Version spécifique de l'image de l'OS. Exemple : debian-12-bookworm-v20240617

    • Une famille d'images, qui doit être au format family/IMAGE_FAMILY. Cela permet de spécifier l'image d'OS non obsolète la plus récente. Par exemple, si vous spécifiez family/debian-12, la dernière version de la famille d'images Debian 12 est utilisée. Pour en savoir plus sur l'utilisation des familles d'images, consultez la page Bonnes pratiques concernant les familles d'images.

  • POLICY_NAME : nom d'une stratégie de répartition.

Vous pouvez éventuellement spécifier le domaine de disponibilité dans lequel créer les VM de manière groupée en incluant le champ availabilityDomain dans le corps de la requête.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/bulkInsert

{
  "count": "COUNT",
  "namePattern": "NAME_PATTERN",
  "instanceProperties": {
    "machineType": "MACHINE_TYPE",
    "disks": [
      {
        "boot": true,
        "initializeParams": {
          "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
        }
      }
    ],
    "networkInterfaces": [
      {
        "network": "global/networks/default"
      }
    ],
    "resourcePolicies": [
      "POLICY_NAME"
    ],
    "scheduling": {
      "availabilityDomain": DOMAIN_NUMBER
    }
  }
}

Remplacez DOMAIN_NUMBER par le numéro du domaine de disponibilité dans lequel placer votre VM. La valeur doit être comprise entre 1 et le nombre de domaines spécifiés dans la stratégie d'emplacement par répartition. Pour vérifier le nombre de domaines dans une stratégie d'emplacement par répartition, affichez les détails de la stratégie d'emplacement.

Pour en savoir plus sur les options de configuration permettant de créer des VM de manière groupée, consultez la section Créer des VM de manière groupée.

Appliquer la stratégie lors de la création d'un modèle d'instance

Avant de créer un modèle d'instance qui spécifie une stratégie d'emplacement par répartition, vérifiez les points suivants :

  • Si vous souhaitez créer un modèle d'instance régional, créez-le dans la même région que la stratégie d'emplacement par répartition. Sinon, la création du modèle d'instance échoue.

  • Lorsque vous créez un modèle d'instance, vous pouvez éventuellement spécifier le domaine de disponibilité dans lequel créer des VM. Évitez de créer toutes vos VM dans un seul domaine. Sinon, vous ne réduisez pas le risque qu'une seule erreur matérielle affecte toutes vos VM.

Après avoir créé un modèle d'instance qui spécifie une stratégie d'emplacement par répartition, vous pouvez utiliser le modèle pour effectuer les opérations suivantes :

Pour créer un modèle d'instance qui spécifie une stratégie d'emplacement par répartition, sélectionnez l'une des options suivantes :

gcloud

Pour créer un modèle d'instance spécifiant une stratégie d'emplacement par répartition, exécutez la commande gcloud compute instance-templates create avec l'option --resource-policies.

Par exemple, pour créer un modèle d'instance global qui spécifie une stratégie d'emplacement par répartition, exécutez la commande suivante :

gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
    --machine-type=MACHINE_TYPE \
    --resource-policies=POLICY_NAME

Remplacez les éléments suivants :

  • INSTANCE_TEMPLATE_NAME : nom du modèle d'instance.

  • MACHINE_TYPE : type de machine des VM créés à l'aide du modèle d'instance.

  • POLICY_NAME : nom d'une stratégie de répartition.

Vous pouvez également spécifier le domaine de disponibilité dans lequel créer les VM en incluant l'indicateur --availability-domain.

gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
    --availability-domain=DOMAIN_NUMBER  \
    --machine-type=MACHINE_TYPE \
    --resource-policies=POLICY_NAME

Remplacez DOMAIN_NUMBER par le numéro du domaine de disponibilité dans lequel créer vos VM. La valeur doit être comprise entre 1 et le nombre de domaines spécifiés dans la stratégie d'emplacement. Pour vérifier le nombre de domaines dans une stratégie d'emplacement par répartition, affichez les détails de la stratégie d'emplacement.

REST

Pour créer un modèle d'instance qui spécifie une stratégie d'emplacement par répartition, envoyez une requête POST à l'une des méthodes suivantes :

Dans le corps de la requête, spécifiez le champ resourcePolicies.

Par exemple, pour créer un modèle d'instance global qui spécifie une stratégie d'emplacement par répartition, envoyez une requête POST comme suit :

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates

{
  "name": "INSTANCE_TEMPLATE_NAME",
  "properties": {
    "disks": [
      {
        "boot": true,
        "initializeParams": {
          "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
        }
      }
    ],
    "machineType": "MACHINE_TYPE",
    "networkInterfaces": [
      {
        "network": "global/networks/default"
      }
    ],
    "resourcePolicies": [
      "POLICY_NAME"
    ]
  }
}

Remplacez les éléments suivants :

  • PROJECT_ID : ID du projet dans lequel se trouve la stratégie de répartition.

  • INSTANCE_TEMPLATE_NAME : nom du modèle d'instance.

  • IMAGE_PROJECT : projet contenant l'image, par exemple, debian-cloud. Pour en savoir plus sur les projets d'image compatibles, consultez la page Images publiques.

  • IMAGE : spécifiez l'une des options suivantes :

    • Version spécifique de l'image de l'OS. Exemple : debian-12-bookworm-v20240617

    • Une famille d'images, qui doit être au format family/IMAGE_FAMILY. Cela permet de spécifier l'image d'OS non obsolète la plus récente. Par exemple, si vous spécifiez family/debian-12, la dernière version de la famille d'images Debian 12 est utilisée. Pour en savoir plus sur l'utilisation des familles d'images, consultez la page Bonnes pratiques concernant les familles d'images.

  • MACHINE_TYPE : type de machine des VM créés à l'aide du modèle d'instance.

  • POLICY_NAME : nom d'une stratégie de répartition.

Vous pouvez éventuellement spécifier le domaine de disponibilité dans lequel créer les VM en incluant le champ availabilityDomain dans le corps de la requête.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates

{
  "name": "INSTANCE_TEMPLATE_NAME",
  "properties": {
    "disks": [
      {
        "boot": true,
        "initializeParams": {
          "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
        }
      }
    ],
    "machineType": "MACHINE_TYPE",
    "networkInterfaces": [
      {
        "network": "global/networks/default"
      }
    ],
    "resourcePolicies": [
      "POLICY_NAME"
    ],
    "scheduling": {
      "availabilityDomain": DOMAIN_NUMBER
    }
  }
}

Remplacez DOMAIN_NUMBER par le numéro du domaine de disponibilité dans lequel créer vos VM. La valeur doit être comprise entre 1 et le nombre de domaines spécifiés dans la stratégie d'emplacement. Pour vérifier le nombre de domaines dans une stratégie d'emplacement par répartition, affichez les détails de la stratégie d'emplacement.

Pour en savoir plus sur les options de configuration permettant de créer un modèle d'instance, consultez la page Créer des modèles d'instance.

Appliquer la stratégie aux VM d'un MIG

Après avoir créé un modèle d'instance qui spécifie une stratégie d'emplacement par répartition, vous pouvez utiliser le modèle pour effectuer les opérations suivantes :

Appliquer la stratégie lors de la création d'un groupe d'instances de machine virtuelle (MIG)

Vous ne pouvez créer des VM qui spécifient une stratégie d'emplacement par répartition que si elles se trouvent dans la même région que la stratégie d'emplacement.

Pour créer un MIG à l'aide d'un modèle d'instance qui spécifie une stratégie d'emplacement par répartition, sélectionnez l'une des options suivantes :

gcloud

Pour créer un MIG à l'aide d'un modèle d'instance qui spécifie une stratégie d'emplacement par répartition, utilisez la commande gcloud compute instance-groups managed create.

Par exemple, pour créer un MIG zonal à l'aide d'un modèle d'instance global qui spécifie une stratégie d'emplacement par répartition, exécutez la commande suivante :

gcloud compute instance-groups managed create INSTANCE_GROUP_NAME \
    --size=SIZE \
    --template=INSTANCE_TEMPLATE_NAME \
    --zone=ZONE

Remplacez les éléments suivants :

  • INSTANCE_GROUP_NAME : nom du MIG à créer.

  • SIZE : taille du MIG.

  • INSTANCE_TEMPLATE_NAME : nom d'un modèle d'instance existant qui spécifie une stratégie d'emplacement par répartition.

  • ZONE : zone dans laquelle créer le MIG, qui doit se trouver dans la région où se trouve la stratégie d'emplacement par répartition.

REST

Pour créer un MIG à l'aide d'un modèle d'instance qui spécifie une stratégie d'emplacement par répartition, envoyez une requête POST à l'une des méthodes suivantes :

Par exemple, pour créer un MIG zonal à l'aide d'un modèle d'instance global qui spécifie une stratégie d'emplacement par répartition, envoyez une requête POST comme suit :

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers

{
  "name": "INSTANCE_GROUP_NAME",
  "targetSize": SIZE,
  "versions": [
    {
      "instanceTemplate": "global/instanceTemplates/INSTANCE_TEMPLATE_NAME"
    }
  ]
}

Remplacez les éléments suivants :

  • PROJECT_ID : ID du projet dans lequel se trouvent la stratégie de répartition et le modèle d'instance qui spécifie la stratégie d'emplacement.

  • ZONE : zone dans laquelle créer le MIG, qui doit se trouver dans la région où se trouve la stratégie d'emplacement par répartition.

  • INSTANCE_GROUP_NAME : nom du MIG à créer.

  • SIZE : taille du MIG.

  • INSTANCE_TEMPLATE_NAME : nom d'un modèle d'instance existant qui spécifie une stratégie d'emplacement par répartition.

Pour en savoir plus sur les options de configuration permettant de créer des MIG, consultez la section Scénarios de base pour la création de MIG.

Appliquer la stratégie à un MIG existant

Vous ne pouvez appliquer une stratégie d'emplacement par répartition qu'à un MIG existant s'il se trouve dans la même région que la stratégie d'emplacement ou, pour les MIG zonaux, dans une zone de la même région que la stratégie d'emplacement.

Pour mettre à jour un MIG afin d'utiliser un modèle d'instance qui spécifie une stratégie d'emplacement par répartition, sélectionnez l'une des options suivantes :

gcloud

Pour mettre à jour un MIG afin d'utiliser un modèle d'instance qui spécifie une stratégie de répartition, utilisez la commande gcloud compute instance-groups managed rolling-action start-update.

Par exemple, pour mettre à jour un MIG zonal afin qu'il utilise un modèle d'instance spécifiant une stratégie d'emplacement par répartition et remplacer les VM existantes du MIG par de nouvelles VM spécifiant les propriétés du modèle, exécutez la commande suivante :

gcloud compute instance-groups managed rolling-action start-update INSTANCE_GROUP_NAME \
    --version=template=INSTANCE_TEMPLATE_NAME \
    --zone=ZONE

Remplacez les éléments suivants :

  • INSTANCE_GROUP_NAME : nom d'un MIG existant.

  • INSTANCE_TEMPLATE_NAME : nom d'un modèle d'instance existant qui spécifie une stratégie d'emplacement par répartition.

  • ZONE : zone où se trouve le MIG. Vous ne pouvez appliquer la stratégie d'emplacement par répartition qu'à un MIG situé dans la même région que la stratégie d'emplacement.

REST

Pour mettre à jour un MIG afin qu'il utilise un modèle d'instance spécifiant une stratégie d'emplacement par répartition et appliquer automatiquement les propriétés du modèle et la stratégie d'emplacement aux VM existantes dans le MIG, envoyez une requête PATCH à l'une des méthodes suivantes :

Par exemple, pour mettre à jour un MIG zonal afin qu'il utilise un modèle d'instance spécifiant une stratégie de répartition et remplacer les VM existantes du MIG par de nouvelles VM spécifiant les propriétés du modèle, envoyez la requête PATCH suivante :

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/INSTANCE_GROUP_NAME

{
  "instanceTemplate": "global/instanceTemplates/INSTANCE_TEMPLATE_NAME"
}

Remplacez les éléments suivants :

  • PROJECT_ID : ID du projet que vous avez utilisé pour créer un MIG existant, stratégie de répartition et modèle d'instance qui spécifie la stratégie de répartition.

  • ZONE : zone où se trouve le MIG. Vous ne pouvez appliquer la stratégie d'emplacement par répartition qu'à un MIG situé dans la même région que la stratégie d'emplacement.

  • INSTANCE_GROUP_NAME : nom d'un MIG existant.

  • INSTANCE_TEMPLATE_NAME : nom d'un modèle d'instance existant qui spécifie une stratégie d'emplacement par répartition.

Pour en savoir plus sur les options de configuration permettant de mettre à jour les VM d'un MIG, consultez la section Mettre à jour et appliquer de nouvelles configurations aux VM d'un MIG.

Étape suivante