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
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- 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.
Install the Google Cloud CLI, then initialize it by running the following command:
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 entre2
et8
, 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 entre2
et8
, 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 stratégie d'emplacement par répartition à une VM existante.
- Créer une VM qui spécifie une stratégie d'emplacement par répartition.
- Créer de manière groupée des VM qui spécifient une stratégie d'emplacement par répartition.
- Créer un modèle d'instance spécifiant une stratégie d'emplacement par répartition.
- Appliquer une stratégie d'emplacement par répartition aux VM d'un MIG.
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éerPOLICY_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éerREGION
: 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écifiezvm-#
, vous créez des VM portant les nomsvm-1
,vm-2
, et ainsi de suite jusqu'à ce que le nombre de VM spécifié dansCOUNT
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écifiezvm-#
pour créer des VM avec les nomsvm-1
,vm-2
, et ainsi de suite jusqu'à ce que le nombre de VM spécifié dansCOUNT
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
Découvrez comment afficher les stratégies d'emplacement.
Découvrez comment remplacer, retirer ou supprimer des stratégies d'emplacement.
Découvrez comment effectuer les opérations suivantes avec une VM qui spécifie une stratégie d'emplacement :
Découvrez le processus de migration à chaud lors des événements de maintenance.