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


Ce document explique comment créer une stratégie de répartition et l'appliquer à une ou plusieurs instances de machine virtuelle (VM) pour améliorer la fiabilité.

Une stratégie de répartition spécifie que vos VM doivent être physiquement éloignées les unes des autres en les plaçant dans des domaines de disponibilité différents. Utilisez une stratégie de répartition pour vous assurer que vos VM sont placées sur du matériel distinct, ce qui réduit l'impact des pannes matérielles sous-jacentes ou optimise la migration à chaud.

Vous pouvez appliquer une stratégie de répartition lorsque vous effectuez les opérations suivantes :

  • Créer ou mettre à jour une VM.
  • Créer des VM de manière groupée.
  • Créez un modèle d'instance. Le modèle d'instance applique ensuite la stratégie de répartition lorsque vous l'utilisez pour effectuer les opérations suivantes :
    • Créez une VM.
    • Créer ou mettre à jour un groupe d'instances géré (MIG).

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 comme suit :

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

    gcloud

    1. Installez Google Cloud CLI, puis initialisez-la en exécutant la commande suivante :

      gcloud init
    2. Définissez une région et une zone par défaut.

    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.

      Installez Google Cloud CLI, puis initialisez-la en exécutant la commande suivante :

      gcloud init

Rôles requis

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

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 de répartition aux VM :

  • Pour créer des stratégies d'emplacement : compute.resourcePolicies.create sur le projet
  • Pour appliquer une stratégie d'emplacement à une VM existante : compute.instances.addResourcePolicies sur le projet

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

Restrictions

Outre les restrictions générales concernant les stratégies d'emplacement, les stratégies de répartition comportent les restrictions suivantes :

  • Vous ne pouvez appliquer une stratégie de répartition que sur un maximum de 8 VM.

  • Vous ne pouvez pas appliquer de stratégies de répartition aux réservations de VM.

  • Vous ne pouvez pas vérifier l'emplacement physique des VM.

Créer une règle d'emplacement

Vous pouvez créer une stratégie de répartition à l'aide de la gcloud CLI et de REST.

gcloud

Pour créer une stratégie de 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 de répartition à créer.

  • DOMAIN_COUNT : nombre distinct de domaines de disponibilité dans lesquels placer vos VM. Chaque domaine possède sa propre source d'alimentation, de refroidissement et de mise en réseau indépendante. La valeur doit être comprise entre 2 et 8, ce qui correspond au nombre maximal de VM auxquelles vous pouvez appliquer une stratégie de répartition.

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

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 vous souhaitez créer la règle.

  • REGION : région dans laquelle vous voulez créer la stratégie.

  • POLICY_NAME : nom de la stratégie de répartition à créer.

  • DOMAIN_COUNT : nombre distinct de domaines de disponibilité dans lesquels placer vos VM. Chaque domaine possède sa propre source d'alimentation, de refroidissement et de mise en réseau indépendante. La valeur doit être comprise entre 2 et 8, ce qui correspond au nombre maximal de VM auxquelles vous pouvez appliquer une stratégie de répartition.

Appliquer des stratégies de répartition

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

Pour créer une ressource Compute Engine qui spécifie une stratégie de répartition, ou appliquer cette stratégie à une VM existante, sélectionnez l'une des méthodes suivantes :

Appliquer une règle d'emplacement de répartition à une VM existante

Vous pouvez appliquer une stratégie de répartition à une VM existante à l'aide de la gcloud CLI et de REST.

gcloud

Pour appliquer une stratégie de répartition à une VM existante, exécutez la commande gcloud compute instances add-resource-policies avec l'option --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ù la VM existe, qui doit se trouver dans la région où se trouve la stratégie de répartition.

REST

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

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ù la VM existe, qui doit se trouver dans la région où se trouve la stratégie de répartition.

  • VM_NAME : nom d'une VM existante.

  • REGION : région où se trouve la stratégie de répartition.

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

Créer une VM qui spécifie une stratégie de répartition

Vous pouvez créer une VM qui spécifie une stratégie de répartition à l'aide de la gcloud CLI et de REST.

gcloud

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

Par exemple, pour créer une VM qui possède des propriétés par défaut et qui spécifie une stratégie d'emplacement de répartition, exécutez la commande suivante :

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

Remplacez les éléments suivants :

  • VM_NAME : nom de la VM à créer

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

  • ZONE : zone dans laquelle créer la VM. Vous ne pouvez créer une VM que dans une zone située dans la région où se trouve la stratégie de répartition.

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.

Par exemple, pour créer une VM qui possède des propriétés par défaut et qui spécifie une stratégie de répartition, exécutez la requête POST suivante :

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

{
  "name": "VM_NAME",
  "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 dans laquelle créer la VM. Vous ne pouvez créer une VM que dans une zone située dans la région où se trouve la stratégie de répartition.

  • VM_NAME : nom de la VM à créer

  • REGION : région où se trouve la stratégie de répartition.

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

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

Créer de manière groupée des VM qui spécifient une stratégie de répartition

Vous pouvez créer de manière groupée des VM qui spécifient une stratégie de répartition à l'aide de gcloud CLI et de REST.

gcloud

Pour créer de manière groupée des VM qui spécifient une stratégie de répartition, exécutez la commande gcloud compute instances bulk create avec les options --async et --resource-policies.

Par exemple, pour créer de manière groupée des VM ayant toutes les propriétés par défaut et spécifier la même stratégie de répartition, exécutez la commande suivante :

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

Remplacez les éléments suivants :

  • COUNT : nombre de VM à créer.

  • NAME_PATTERN : schéma de nom des VM à créer. Utilisez le caractère de hachage (#) pour le remplacer par une séquence de nombres. Par exemple, si vous spécifiez vm-#, vous créez des VM portant les noms vm-1, vm-2, et ainsi de suite jusqu'à ce que le nombre de VM spécifié dans COUNT soit spécifié.

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

  • ZONE : zone dans laquelle créer les VM de manière groupée. Vous ne pouvez créer des VM que dans des zones situées dans la région de la stratégie de répartition que vous spécifiez.

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 de manière groupée des VM ayant toutes les propriétés par défaut et spécifier la même stratégie de répartition, envoyez la requête POST suivante :

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

{
  "count": "COUNT",
  "namePattern": "NAME_PATTERN",
  "instanceProperties": {
    "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 dans laquelle créer les VM de manière groupée. Vous ne pouvez créer des VM que dans des zones situées dans la région de la stratégie de répartition que vous spécifiez.

  • COUNT : nombre de VM à créer.

  • NAME_PATTERN : schéma de nom des VM à créer. Utilisez le caractère de hachage (#) pour le remplacer par une séquence de nombres. Par exemple, spécifiez vm-# pour créer des VM avec les noms vm-1, vm-2, et ainsi de suite jusqu'à ce que le nombre de VM spécifié dans COUNT soit atteint.

  • REGION : région où se trouve la stratégie de répartition.

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

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

Créer un modèle d'instance spécifiant une stratégie de répartition

Vous pouvez créer un modèle d'instance qui spécifie une stratégie de répartition à l'aide de la gcloud CLI et de REST.

Après avoir créé un modèle d'instance, vous pouvez l'utiliser pour effectuer les opérations suivantes :

gcloud

Pour créer un modèle d'instance qui spécifie une stratégie de 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 doté de propriétés de VM par défaut et d'une stratégie de répartition, exécutez la commande suivante :

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

Remplacez les éléments suivants :

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

  • PROJECT_ID : ID du projet dans lequel se trouve la stratégie de répartition que vous souhaitez appliquer au modèle d'instance.

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

REST

Pour créer un modèle d'instance qui spécifie une stratégie de répartition, envoyez une requête POST à la méthode instanceTemplates.insert. Dans le corps de la requête, incluez le champ resourcePolicies.

Par exemple, pour créer un modèle d'instance global doté de propriétés de VM par défaut et spécifiant une stratégie de répartition, exécutez la requête POST suivante :

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

{
  "name": "INSTANCE_TEMPLATE_NAME",
  "properties": {
    "resourcePolicies": {
      "POLICY_NAME"
    }
  }
}

Remplacez les éléments suivants :

  • PROJECT_ID : ID du projet dans lequel se trouve le modèle d'instance auquel vous souhaitez appliquer la stratégie de répartition.

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

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

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 une stratégie de répartition aux VM d'un MIG

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

Si vous souhaitez appliquer une stratégie d'emplacement de répartition à un MIG, il est recommandé de créer ou d'appliquer de la stratégie à un MIG régional avec la forme de distribution N'importe quelle zone. Ainsi, chaque fois qu'un MIG régional doit effectuer un scaling horizontal en créant des VM, il sélectionne la zone dans laquelle créer les VM en fonction de vos quotas et de vos exigences matérielles.

Créer un MIG spécifiant une stratégie de répartition

Vous pouvez créer un MIG à l'aide d'un modèle d'instance qui spécifie une stratégie de répartition à l'aide de la gcloud CLI et de REST.

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, exécutez la commande gcloud compute instance-groups managed create avec l'option --template définie sur le nom du modèle existant.

Par exemple, pour créer un MIG régional avec les propriétés de VM par défaut et la forme de distribution any-single-zone, exécutez la commande suivante :

gcloud compute instance-groups managed create MIG_NAME \
    --region=REGION \
    --size=SIZE \
    --target-distribution-shape=any-single-zone \
    --template=INSTANCE_TEMPLATE_NAME

Remplacez les éléments suivants :

  • MIG_NAME : nom du MIG à créer.

  • REGION : région dans laquelle créer le MIG, qui doit correspondre à la région dans laquelle se trouve la stratégie d'emplacement.

  • SIZE : taille du MIG.

  • INSTANCE_TEMPLATE_NAME : nom d'un modèle d'instance existant qui spécifie une stratégie de 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 à instanceGroupManagers.insert ou regionInstanceGroupManagers.insert. Dans le corps de la requête, incluez le champ instanceTemplate et définissez-le sur le nom du modèle existant.

Par exemple, pour créer un MIG régional avec les propriétés de VM par défaut et la forme de distribution any-single-zone, envoyez la requête POST suivante :

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

{
  "name": "MIG_NAME",
  "instanceTemplate": "global/instanceTemplates/INSTANCE_TEMPLATE_NAME",
  "targetSize": SIZE,
  "distributionPolicy": {
    "targetShape": "ANY_SINGLE_ZONE"
  }
}

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.

  • REGION : région dans laquelle créer le MIG, qui doit correspondre à la région dans laquelle se trouve la stratégie d'emplacement.

  • MIG_NAME : nom du MIG à créer.

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

  • SIZE : taille du MIG.

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

Appliquer une stratégie de répartition à un MIG existant

Vous pouvez appliquer une stratégie de répartition à un MIG existant à l'aide d'un modèle d'instance qui spécifie la même stratégie d'emplacement à l'aide de gcloud CLI et de REST.

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 régional 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, exécutez la commande suivante :

gcloud compute instance-groups managed rolling-action start-update MIG_NAME \
    --region=REGION \
    --type=proactive \
    --version=template=INSTANCE_TEMPLATE_NAME

Remplacez les éléments suivants :

  • MIG_NAME : nom d'un MIG existant.

  • REGION : région où se trouve le MIG. Vous ne pouvez appliquer la stratégie de répartition qu'à un MIG situé dans la même région.

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

REST

Pour mettre à jour un MIG afin qu'il utilise un modèle d'instance spécifiant une stratégie de 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 aux méthodes instanceGroupManagers.insert ou regionInstanceGroupManagers.insert.

Par exemple, pour mettre à jour un MIG régional 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/regions/REGION/instanceGroupManagers/MIG_NAME

{
  "instanceTemplate": "global/instanceTemplates/INSTANCE_TEMPLATE_NAME",
  "updatePolicy": {
    "type": "PROACTIVE"
  }
}

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.

  • REGION : région où se trouve le MIG. Vous ne pouvez appliquer la stratégie de répartition qu'à un MIG situé dans la même région.

  • MIG_NAME : nom d'un MIG existant.

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

Pour en savoir plus sur les options de configuration et les rôles IAM 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