Définir des règles de placement des instances

Vous pouvez contrôler l'emplacement physique de vos instances les unes par rapport aux autres dans une zone. Les stratégies d'emplacement disponibles sont les suivantes :

  • Répartition : utilisez des stratégies de répartition lorsque vous souhaitez que les instances soient à distance les unes des autres pour réduire l'impact des défaillances potentielles du système hôte.
  • Concentration : utilisez des stratégies de concentration lorsque vous souhaitez que les instances soient proches les unes des autres pour obtenir une faible latence réseau entre les instances.

Avant de commencer

Restrictions

Les stratégies d'emplacement comportent les restrictions suivantes :

  • Répartition :
    • Jusqu'à huit instances par stratégie
    • Fonctionnement possible avec un nombre dynamique d'instances
    • Compatibilité uniquement avec les types de machines N1, N2, N2D et C2
  • Concentration :
    • Jusqu'à 22 instances dans chaque stratégie
    • S'applique à un nombre d'instances fixe
    • Compatible uniquement avec les types de machines C2
    • N'est pas compatible avec la migration à chaud, et les instances avec des stratégies d'emplacement doivent être définies sur TERMINATE lors de la maintenance de l'hôte.
    • Ne peut pas être appliqué à des instances existantes
  • Répartition et concentration :

Définir et appliquer une stratégie d'emplacement

Pour contrôler l'emplacement de vos instances les unes par rapport aux autres, procédez comme suit :

  1. Créez une stratégie d'emplacement avec la configuration d'emplacement dont vos instances ont besoin. Vous pouvez créer l'un des types de stratégie suivants :
    • Les stratégies d'emplacement dites de répartition positionnent vos instances de VM sur l'infrastructure du centre de données sous-jacent de sorte qu'elles ne partagent pas le même hôte ou système d'alimentation. Cela réduit l'impact des défaillances de l'hôte ou de l'alimentation.
    • Les stratégies d'emplacement dites de concentration positionnent vos instances de VM à proximité les unes des autres pour obtenir une faible latence réseau entre les instances.
  2. Appliquez la stratégie d'emplacement à une ou plusieurs instances. Les instances qui partagent la même stratégie sont placées les unes par rapport aux autres en fonction de la manière dont vous avez défini celle-ci.

Créer une stratégie de répartition

Pour créer une stratégie de répartition qui situe les instances dans plusieurs domaines de disponibilité distincts, spécifiez le nombre de domaines de disponibilité que cette stratégie doit utiliser pour séparer les instances les unes des autres.

gcloud

Utilisez l'outil gcloud pour créer la stratégie.

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

Remplacez les éléments suivants :

  • POLICY_NAME : le nom de la nouvelle stratégie
  • DOMAIN_COUNT : le nombre d'ensembles distincts de matériel hôte et de réseaux physiques que cette stratégie utilisera pour séparer les instances
  • REGION : la région dans laquelle vous prévoyez de créer des instances de VM utilisant cette stratégie
  • PROJECT_ID : l'ID de votre projet

API

Créez une stratégie de répartition à l'aide de la méthode resourcePolicies.insert dans les API et services de Cloud Console.

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 : l'ID de votre projet
  • REGION : la région dans laquelle vous prévoyez de créer des instances de VM utilisant cette stratégie
  • POLICY_NAME : le nom de la nouvelle stratégie
  • DOMAIN_COUNT : le nombre d'ensembles distincts de matériel hôte et de réseaux physiques que cette stratégie utilisera pour séparer les instances

Créer une stratégie de concentration

Pour créer une stratégie de concentration situant les instances plus près les unes des autres et sur la même infrastructure réseau, spécifiez une stratégie COLLOCATED et le nombre d'instances de VM que vous prévoyez d'inclure dans celle-ci.

gcloud

Utilisez l'outil gcloud pour créer la stratégie.

gcloud compute resource-policies create group-placement POLICY_NAME \
        --collocation COLLOCATED \
        --vm-count VM_COUNT \
        --region REGION \
        --project PROJECT_ID

Remplacez les éléments suivants :

  • POLICY_NAME : le nom de la nouvelle stratégie.
  • VM_COUNT : le nombre d'instances de VM à inclure dans cette stratégie. Pour les stratégies de concentration, vous devez appliquer la stratégie à ce nombre exact d'instances.
  • REGION : la région dans laquelle vous prévoyez de créer des instances de VM utilisant cette stratégie.
  • PROJECT_ID : l'ID de votre projet.

API

Créez une stratégie de répartition à l'aide de la méthode resourcePolicies.insert dans les API et services de Cloud Console.

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

{
  "name": "POLICY_NAME",
  "groupPlacementPolicy": {
    "vmCount": VM_COUNT,
    "collocation": "COLLOCATED"
  }
}

Remplacez les éléments suivants :

  • PROJECT_ID : l'ID de votre projet.
  • REGION : la région dans laquelle vous prévoyez de créer des instances de VM utilisant cette stratégie.
  • POLICY_NAME : le nom de la nouvelle stratégie.
  • VM_COUNT : le nombre d'instances de VM à inclure dans cette stratégie. Pour les stratégies de concentration, vous devez appliquer la stratégie à ce nombre exact d'instances.

Appliquer des règles d'emplacement aux instances

Utilisez les procédures suivantes pour appliquer des règles d'emplacement à de nouvelles instances et des instances existantes.

Appliquer une règle d'emplacement à une nouvelle instance

Après avoir créé la stratégie d'emplacement, appliquez-la à une ou plusieurs instances. Les instances qui partagent la même stratégie sont placées les unes par rapport aux autres en fonction de la manière dont vous avez défini celle-ci.

gcloud

Lorsque vous créez une instance, ajoutez l'option --resource-policies pour appliquer une stratégie d'emplacement : Pour les stratégies de concentration, vous devez inclure --maintenance-policy=TERMINATE --no-restart-on-failure :

gcloud compute instances create VM_NAME \
        --zone ZONE \
        --resource-policies POLICY_NAME \
        --image-family IMAGE_FAMILY \
        --image-project IMAGE_PROJECT \
        --project PROJECT_ID \
        [[--maintenance-policy=TERMINATE]] \
        [[--no-restart-on-failure]]

Remplacez les éléments suivants :

  • VM_NAME : le nom de la nouvelle instance.
  • ZONE : la zone dans laquelle vous souhaitez créer l'instance. Cette zone doit se trouver dans la même région que la stratégie d'emplacement.
  • POLICY_NAME : nom de la stratégie d'emplacement que vous souhaitez appliquer à cette instance. Vous pouvez appliquer plusieurs stratégies d'emplacement à une instance.
  • IMAGE_FAMILY : l'une des familles d'images disponibles.
  • IMAGE_PROJECT : le projet d'image auquel l'image appartient.
  • PROJECT_ID : l'ID de votre projet.

API

Lorsque vous créez une instance, ajoutez la propriété resourcePolicies pour appliquer une stratégie d'emplacement : Pour les stratégies de concentrations, vous devez inclure "onHostMaintenance": "TERMINATE" et "automaticRestart": false :

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

{
  "name": "VM_NAME",
  "machineType": "machineTypes/MACHINE_TYPE"
  "networkInterfaces": [{
    "accessConfigs": [{
      "type": "ONE_TO_ONE_NAT",
      "name": "External NAT"
    }],
    "network": "global/networks/default"
  }],
  "scheduling": {
    "onHostMaintenance": "TERMINATE",
    "automaticRestart": false
  },
  "disks": [{
     "autoDelete": "true",
     "boot": "true",
     "type": "PERSISTENT",
     "initializeParams": {
       "sourceImage": "projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY"
     }
  }],
  "resourcePolicies": [
    "projects/PROJECT_ID/regions/REGION/resourcePolicies/POLICY_NAME"
  ]
}

Remplacez les éléments suivants :

  • PROJECT_ID : l'ID de votre projet.
  • ZONE : la zone dans laquelle vous souhaitez créer l'instance. Cette zone doit se trouver dans la même région que la stratégie d'emplacement.
  • VM_NAME : le nom de la nouvelle instance.
  • MACHINE_TYPE : le type de machine de l'instance.
  • IMAGE_PROJECT : le projet d'image auquel l'image appartient.
  • IMAGE_FAMILY : l'une des familles d'images disponibles.
  • REGION : la région dans laquelle vous avez créé la stratégie d'emplacement.
  • POLICY_NAME : nom de la stratégie d'emplacement que vous souhaitez appliquer à cette instance. Vous pouvez appliquer plusieurs stratégies d'emplacement à une instance.

Appliquer une règle d'emplacement à une instance existante

Si vous créez une règle d'emplacement par répartition, vous pouvez l'appliquer à une ou plusieurs instances existantes.

gcloud

Vous appliquez une règle d'emplacement par répartition à une instance existante à l'aide de la commande add-resource-policies, en spécifiant l'option --resource-policies :

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

Remplacez l'élément suivant :

  • VM_NAME : nom de l'instance.
  • ZONE : zone de l'instance. Cette zone doit se trouver dans la même région que la règle d'emplacement.
  • POLICY_NAME : nom de la stratégie d'emplacement que vous souhaitez appliquer à cette instance. Vous pouvez appliquer plusieurs stratégies d'emplacement à une instance.
  • PROJECT_ID : ID de votre projet.

API

Vous appliquez une règle d'emplacement par répartition à une instance existante à l'aide de la méthode addResourcePolicies, en spécifiant l'option --resource-policies :

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 l'élément suivant :

  • PROJECT_ID : l'ID de votre projet.
  • ZONE : la zone dans laquelle vous souhaitez créer l'instance. Cette zone doit se trouver dans la même région que la stratégie d'emplacement.
  • VM_NAME : le nom de la nouvelle instance.
  • REGION : la région dans laquelle vous prévoyez de créer des instances de VM utilisant cette stratégie.
  • POLICY_NAME : nom de la stratégie d'emplacement que vous souhaitez appliquer à cette instance. Vous pouvez appliquer plusieurs stratégies d'emplacement à une instance.

Étape suivante