Définir une forme de distribution cible pour les VM d'un MIG régional


Si vous utilisez un groupe d'instances géré (MIG) régional, vous pouvez définir la forme de distribution cible de ce MIG sur l'une des les options suivantes :

  • EVEN (ÉGAL, valeur par défaut) : le groupe crée et supprime des VM pour atteindre et conserver le même nombre de VM dans les zones sélectionnées. Dans une distribution EVEN, le nombre de VM ne diffère pas de plus de 1 entre deux zones données. Option recommandée pour les charges de travail de diffusion à disponibilité élevée.
  • BALANCED (ÉQUILIBRÉ) : le groupe priorise la création de VM dans les zones où des ressources sont disponibles, tout en répartissant les VM aussi uniformément que possible entre les zones sélectionnées afin de minimiser l'impact d'une défaillance zonale. Option recommandée pour les charges de travail de diffusion ou par lot à disponibilité élevée.
  • ANY (N'IMPORTE QUELLE ZONE) : le groupe choisit les zones dans lesquelles créer les instances de VM afin de respecter le nombre de VM demandé dans les limites des ressources disponibles et d'optimiser l'utilisation des réservations zonales non utilisées. Option recommandée pour les charges de travail par lot ne nécessitant pas une disponibilité élevée.
  • N'IMPORTE QUELLE ZONE UNIQUE : le groupe crée toutes les instances de VM dans une seule zone. La zone est choisie en fonction de la compatibilité matérielle, de la disponibilité actuelle des ressources et des quotas, et des réservations correspondantes. Option recommandée en association avec une stratégie d'emplacement compact des instances pour les charges de travail qui nécessitent une communication approfondie entre les VM.

Pour utiliser des VM réservées dans un groupe d'instances géré régional, créez des réservations identiques portant le même nom dans chaque zone applicable. Ensuite, ciblez ces réservations par leur nom dans le modèle d'instance du groupe.

Pour vous aider à choisir une forme, consultez le tableau comparatif, les cas d'utilisation et le fonctionnement des formes de distribution.

Vous définissez une forme de distribution cible lorsque vous créez un MIG régional ou que vous mettez à jour la forme cible d'un MIG régional existant.

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 :

    Console

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

    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.

    Terraform

    Pour utiliser les exemples Terraform de cette page dans un environnement de développement local, installez et initialisez gcloud CLI, puis configurez le service Identifiants par défaut de l'application à l'aide de vos identifiants utilisateur.

    1. Installez Google Cloud CLI.
    2. Pour initialiser gcloudCLI, exécutez la commande suivante :

      gcloud init
    3. Créez des identifiants d'authentification locaux pour votre compte Google :

      gcloud auth application-default login

    Pour en savoir plus, consultez les sections sur Configurer l'authentification pour un environnement de développement local.

    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

Limites

  • Vous ne pouvez sélectionner des zones pour le groupe d'instances géré que lorsque vous le créez.
  • Si vous spécifiez des ressources dans le modèle d'instance ou la configuration avec état de votre MIG qui ne sont pas disponibles dans toutes les zones sélectionnées, les limites suivantes s'appliquent :

    • Vous devez définir la forme de distribution cible sur BALANCED, ANY ou ANY_SINGLE_ZONE.
    • Vous devez vous assurer que toutes les ressources requises par le MIG, telles que les disques, les types de machines ou les GPU existants, sont disponibles dans au moins l'une des zones sélectionnées.
    • Si vous souhaitez remplacer la configuration du MIG (par exemple, le modèle d'instance) par une configuration qui ne peut pas être instanciée dans toutes les zones sélectionnées, vous devez supprimer les instances gérées de toutes les zones non compatibles avant de définir la nouvelle configuration.
  • Pour définir la forme de distribution cible sur BALANCED ou ANY_SINGLE_ZONE, vous devez désactiver la redistribution proactive des instances.

  • Si vous souhaitez effectuer l'autoscaling d'un groupe d'instances géré régional, vous devez définir la forme de distribution cible du groupe sur BALANCED ([Preview](/products/#product-launch-stages)) ou EVEN.
  • Si vous définissez la forme de distribution cible sur BALANCED, ANY ou ANY_SINGLE_ZONE, les limites suivantes s'appliquent :

    • Les mises à jour Canary avec deux versions ne sont pas acceptées.
    • En cas de disponibilité limitée des ressources demandées dans l'ensemble de la région, le groupe peut planifier la création d'instances de VM dans une zone où les ressources sont déjà indisponibles. Vous pouvez essayer de réduire et d'augmenter la taille du groupe pour obtenir les ressources demandées dans d'autres zones.
    • Les mises à jour progressives qui utilisent la méthode de remplacement SUBSTITUTE tentent de créer les instances mises à jour dans la même zone que les machines obsolètes, même si la zone ne dispose pas des ressources nécessaires pour répondre aux exigences de la nouvelle version. Pour remédier à ce problème, vous pouvez supprimer les VM obsolètes de la zone limitée, puis augmenter la taille du groupe en fonction du nombre de VM supprimées. Le groupe crée des instances à partir du dernier modèle dans les zones disposant d'une capacité suffisante.
    • Si vous souhaitez mettre à jour le modèle d'instance du groupe pour qu'il utilise un modèle spécifiant les ressources qui ne sont pas disponibles dans toutes les zones sélectionnées, vous devez supprimer les instances gérées des zones non compatibles avant de définir le nouveau modèle.
  • Si vous définissez la forme de distribution cible sur ANY_SINGLE_ZONE et que le groupe dispose de VM existantes dans une seule zone, vous ne pouvez créer des VM supplémentaires que dans cette zone. Si vous souhaitez utiliser une zone différente, vous devez d'abord réduire le groupe à zéro VM.

  • Si vous devez provisionner un groupe de VM à locataire unique, vous devez définir la forme de distribution cible du groupe d'instances géré sur EVEN. Créez vos groupes de nœuds dans les mêmes zones que les zones du MIG et définissez les affinités de nœuds dans le modèle d'instance du MIG.

Créer un groupe avec une forme de distribution cible

Pour créer votre groupe, sélectionner ses zones et définir sa forme de distribution cible, utilisez la console Google Cloud, la gcloud CLI, Terraform ou REST.

Console

  1. Dans Google Cloud Console, accédez à la page Groupes d'instances.

    Accéder à la page Groupes d'instances

  2. Cliquez sur Créer un groupe d'instances pour définir un nouveau groupe d'instances.
  3. Sélectionnez l'une des options du groupe d'instances géré : sans état (par défaut) ou avec état.
  4. Attribuez un nom et éventuellement une description à votre groupe d'instances.
  5. Choisissez un modèle d'instance pour le groupe d'instances ou créez-en un.
  6. Indiquez le nombre de VM pour ce groupe. Pensez à provisionner suffisamment de VM pour les charges de travail à disponibilité élevée afin que votre application soit prise en charge en cas de défaillance zonale.
  7. Sous Emplacement, sélectionnez Plusieurs zones.
  8. Choisissez une région et sélectionnez les zones que vous souhaitez utiliser.

    • Si vous souhaitez que votre MIG puisse utiliser toutes les zones de la région, sélectionnez toutes les zones disponibles.
    • Notez qu'après la création d'un MIG régional, vous ne pouvez pas le mettre à jour pour utiliser des zones différentes.
  9. Choisissez une forme de distribution cible.

    1. Si vous souhaitez sélectionner l'option Any (N'importe quelle zone) ou Any single zone (N'importe quelle zone unique), cliquez sur Mode d'autoscaling dans la section Autoscaling puis choisissez Supprimer la configuration d'autoscaling.
    2. Si vous souhaitez sélectionner l'option Any single zone (N'importe quelle zone unique) ou Balanced (Équilibré), ne sélectionnez pas Autoriser la redistribution des instances dans la section Redistribution des instances.
  10. Terminez le processus de création de MIG.

gcloud

Exécutez la commande gcloud compute instance-groups managed create avec l'option --target-distribution-shape.

gcloud compute instance-groups managed create INSTANCE_GROUP_NAME \
    --template TEMPLATE \
    --size SIZE \
    --region REGION \
    --zones ZONES \
    --target-distribution-shape SHAPE

Remplacez les éléments suivants :

  • INSTANCE_GROUP_NAME : nom du groupe d'instances.
  • TEMPLATE : nom du modèle d'instance à utiliser pour le groupe.
  • SIZE : taille cible du groupe d'instances.
  • REGION : région dans laquelle vous souhaitez créer votre groupe.
  • ZONES (facultatif) : liste des zones de la région dans lesquelles vous souhaitez déployer les instances de VM. Par défaut, Compute Engine sélectionne trois zones pour vous.

    • Si vous souhaitez que votre MIG puisse utiliser toutes les zones de la région, spécifiez toutes les zones disponibles. Vous pouvez obtenir la liste des zones de la région à l'aide de la commande suivante :

      gcloud compute zones list --filter=region:REGION --format='list(NAME)'
    • Notez qu'après la création d'un MIG régional, vous ne pouvez pas le mettre à jour pour utiliser des zones différentes.

  • SHAPE : forme de distribution cible. Il peut s'agir de l'une des valeurs suivantes :

    • even (valeur par défaut) : le groupe crée et supprime des VM pour atteindre et conserver le même nombre de VM dans les zones sélectionnées. Dans une distribution EVEN, le nombre de VM ne diffère pas de plus de 1 entre deux zones données. Option recommandée pour les charges de travail de diffusion à disponibilité élevée.
    • balanced : le groupe priorise la création de VM dans les zones où des ressources sont disponibles, tout en répartissant les VM aussi uniformément que possible entre les zones sélectionnées afin de minimiser l'impact d'une défaillance zonale. Option recommandée pour les charges de travail de diffusion ou par lot à disponibilité élevée.
    • any : le groupe choisit les zones dans lesquelles créer les instances de VM afin de respecter le nombre de VM demandé dans les limites des ressources disponibles et d'optimiser l'utilisation des réservations zonales non utilisées. Option recommandée pour les charges de travail par lot ne nécessitant pas une disponibilité élevée.
    • any-single-zone : le groupe planifie toutes les instances de VM dans une seule zone. La zone est choisie en fonction de la compatibilité matérielle, de la disponibilité actuelle des ressources et des quotas, et des réservations correspondantes. Option recommandée en association avec une stratégie d'emplacement compact des instances pour les charges de travail qui nécessitent une communication approfondie entre les VM.

Par exemple, pour créer un MIG régional avec une forme de distribution cible équilibrée, définissez l'option --target-distribution-shape sur balanced.

gcloud compute instance-groups managed create example-rmig \
    --template example-template \
    --size 30 \
    --zones us-east1-b,us-east1-c \
    --target-distribution-shape balanced \
    --instance-redistribution-type none

Terraform

Si vous n'avez pas encore créé de modèle d'instance, qui spécifie le type de machine, l'image de disque de démarrage, le réseau et les autres propriétés de VM que vous souhaitez pour chaque VM de votre MIG, créez Un modèle d'instance.

Pour créer un MIG régional, utilisez la ressource google_compute_region_instance_group_manager.

L'exemple suivant crée un MIG régional avec la forme de distribution cible BALANCED.

resource "google_compute_region_instance_group_manager" "default" {
  name                             = "example-rmig"
  region                           = "us-east1"
  distribution_policy_zones        = ["us-east1-b", "us-east1-c"]
  distribution_policy_target_shape = "BALANCED"
  update_policy {
    type                         = "PROACTIVE"
    minimal_action               = "REFRESH"
    instance_redistribution_type = "NONE"
    max_unavailable_fixed        = 3
  }
  target_size        = 30
  base_instance_name = "instance"
  version {
    instance_template = google_compute_instance_template.default.id
  }
}

Pour savoir comment appliquer ou supprimer une configuration Terraform, consultez la page Commandes Terraform de base.

REST

Appelez la méthode regionInstanceGroupManagers.insert. Dans le corps de la requête, incluez la propriété distributionPolicy et définissez son champ targetShape.

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

{
    "name": INSTANCE_GROUP_NAME,
    "instanceTemplate": "global/instanceTemplates/TEMPLATE",
    "targetSize": SIZE,
    "distributionPolicy": {
        "zones": [
            {"zone": "zones/ZONE1"},
            {"zone": "zones/ZONE2"},
            {"zone": "zones/ZONE3"},
        ],
        "targetShape": "SHAPE"
    }
}

Remplacez les éléments suivants :

  • PROJECT_ID : ID du projet pour cette requête.
  • REGION : région du groupe d'instances.
  • INSTANCE_GROUP_NAME : nom du groupe d'instances.
  • TEMPLATE : nom du modèle d'instance à utiliser pour le groupe.
  • SIZE : taille cible du groupe d'instances.
  • ZONE : nom d'une zone de la région dans laquelle vous souhaitez déployer les instances de VM.
    • Si vous souhaitez que votre MIG puisse utiliser toutes les zones de la région, spécifiez toutes les zones disponibles. Vous pouvez obtenir la liste des zones de la région en appelant la méthode regions.get.
    • Notez qu'après la création d'un MIG régional, vous ne pouvez pas le mettre à jour pour utiliser des zones différentes.
  • SHAPE : forme de distribution cible. Il peut s'agir de l'une des valeurs suivantes :
    • EVEN (valeur par défaut) : le groupe crée et supprime des VM pour atteindre et conserver le même nombre de VM dans les zones sélectionnées. Dans une distribution EVEN, le nombre de VM ne diffère pas de plus de 1 entre deux zones données. Option recommandée pour les charges de travail de diffusion à disponibilité élevée.
    • BALANCED : le groupe priorise la création de VM dans les zones où des ressources sont disponibles, tout en répartissant les VM aussi uniformément que possible entre les zones sélectionnées afin de minimiser l'impact d'une défaillance zonale. Option recommandée pour les charges de travail de diffusion ou par lot à disponibilité élevée.
    • ANY : le groupe choisit les zones dans lesquelles créer les instances de VM afin de respecter le nombre de VM demandé dans les limites des ressources disponibles et d'optimiser l'utilisation des réservations zonales non utilisées. Option recommandée pour les charges de travail par lot ne nécessitant pas une disponibilité élevée.
    • ANY_SINGLE_ZONE : le groupe planifie toutes les instances de VM dans une seule zone. La zone est choisie en fonction de la compatibilité matérielle, de la disponibilité actuelle des ressources et des quotas, et des réservations correspondantes. Option recommandée en association avec une stratégie d'emplacement compact des instances pour les charges de travail qui nécessitent une communication approfondie entre les VM.

Modifier la forme de distribution cible d'un groupe existant

Vous pouvez modifier la forme de distribution cible d'un MIG régional existant, mais les limites suivantes s'appliquent :

  • Si vous souhaitez définir la forme de distribution cible BALANCED, vous devez d'abord désactiver la redistribution proactive.
  • Si vous souhaitez définir la forme de distribution cible sur EVEN et que la distribution actuelle des instances est inégale, vous devez d'abord désactiver la redistribution proactive.
  • Si vous définissez la forme sur EVEN et que vous souhaitez réactiver la redistribution proactive, vous devez d'abord rééquilibrer manuellement le groupe.
  • Si vous souhaitez remplacer la forme de distribution cible par EVEN, bien que votre modèle d'instance spécifie des ressources non compatibles avec toutes les zones sélectionnées, vous devez d'abord mettre à jour le modèle d'instance du groupe vers une ressource compatible avec toutes les zones sélectionnées.

Console

  1. Dans Google Cloud Console, accédez à la page Groupes d'instances.

    Accéder à la page Groupes d'instances

  2. Dans la colonne Nom de la liste, cliquez sur le nom du groupe d'instances dont vous souhaitez modifier la forme de distribution cible.
  3. Cliquez sur Modifier pour modifier le groupe d'instances géré.
  4. Sous Forme de distribution cible, spécifiez la forme de votre choix.
  5. Cliquez sur Enregistrer pour appliquer le nouveau modèle.

gcloud

Exécutez la commande gcloud compute instance-groups managed update avec l'option --target-distribution-shape.

gcloud compute instance-groups managed update INSTANCE_GROUP_NAME \
    --target-distribution-shape SHAPE

Remplacez les éléments suivants :

  • INSTANCE_GROUP_NAME : nom du groupe d'instances.
  • SHAPE : forme de distribution cible. Il peut s'agir de l'une des valeurs suivantes :
    • even (valeur par défaut) : le groupe crée et supprime des VM pour atteindre et conserver le même nombre de VM dans les zones sélectionnées. Dans une distribution EVEN, le nombre de VM ne diffère pas de plus de 1 entre deux zones données. Option recommandée pour les charges de travail de diffusion à disponibilité élevée.
    • balanced : le groupe priorise la création de VM dans les zones où des ressources sont disponibles, tout en répartissant les VM aussi uniformément que possible entre les zones sélectionnées afin de minimiser l'impact d'une défaillance zonale. Option recommandée pour les charges de travail de diffusion ou par lot à disponibilité élevée.
    • any : le groupe choisit les zones dans lesquelles créer les instances de VM afin de respecter le nombre de VM demandé dans les limites des ressources disponibles et d'optimiser l'utilisation des réservations zonales non utilisées. Option recommandée pour les charges de travail par lot ne nécessitant pas une disponibilité élevée.
    • any-single-zone : le groupe planifie toutes les instances de VM dans une seule zone. La zone est choisie en fonction de la compatibilité matérielle, de la disponibilité actuelle des ressources et des quotas, et des réservations correspondantes. Option recommandée en association avec une stratégie d'emplacement compact des instances pour les charges de travail qui nécessitent une communication approfondie entre les VM.

REST

Appelez la méthode regionInstanceGroupManagers.patch. Dans le corps de la requête, incluez la propriété distributionPolicy et définissez son champ targetShape.

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

{
    "distributionPolicy": {
        "targetShape": "SHAPE"
    }
}

Remplacez les éléments suivants :

  • PROJECT_ID : ID du projet pour cette requête.
  • REGION : région du groupe d'instances.
  • INSTANCE_GROUP_NAME : nom du groupe d'instances.
  • SHAPE : forme de distribution cible. Il peut s'agir de l'une des valeurs suivantes :
    • EVEN (valeur par défaut) : le groupe crée et supprime des VM pour atteindre et conserver le même nombre de VM dans les zones sélectionnées. Dans une distribution EVEN, le nombre de VM ne diffère pas de plus de 1 entre deux zones données. Option recommandée pour les charges de travail de diffusion à disponibilité élevée.
    • BALANCED : le groupe priorise la création de VM dans les zones où des ressources sont disponibles, tout en répartissant les VM aussi uniformément que possible entre les zones sélectionnées afin de minimiser l'impact d'une défaillance zonale. Option recommandée pour les charges de travail de diffusion ou par lot à disponibilité élevée.
    • ANY : le groupe choisit les zones dans lesquelles créer les instances de VM afin de respecter le nombre de VM demandé dans les limites des ressources disponibles et d'optimiser l'utilisation des réservations zonales non utilisées. Option recommandée pour les charges de travail par lot ne nécessitant pas une disponibilité élevée.
    • ANY_SINGLE_ZONE : le groupe planifie toutes les instances de VM dans une seule zone. La zone est choisie en fonction de la compatibilité matérielle, de la disponibilité actuelle des ressources et des quotas, et des réservations correspondantes. Option recommandée en association avec une stratégie d'emplacement compact des instances pour les charges de travail qui nécessitent une communication approfondie entre les VM.

Afficher la règle de distribution des instances configurée

Console

  1. Dans Google Cloud Console, accédez à la page Groupes d'instances.

    Accéder à la page Groupes d'instances

    Cette page répertorie les groupes d'instances dont vous disposez,
  2. Cliquez sur le nom du groupe d'instances que vous souhaitez examiner. La page qui s'ouvre affiche les propriétés du groupe d'instances, ainsi que la liste des instances qui en font partie.
  3. Cliquez sur Details (Détails).
  4. Dans la section Emplacement, recherchez Forme de distribution cible.

gcloud

Exécutez la commande gcloud compute instance-groups managed describe.

gcloud compute instance-groups managed describe INSTANCE_GROUP_NAME \
    --region REGION

La commande renvoie des informations sur le groupe, y compris le champ distributionPolicy.targetShape :

...
distributionPolicy:
  targetShape: BALANCED
  zones:
  - zone: https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-f
  ...
name: my-group
region: https://www.googleapis.com/compute/v1/projects/my-project/regions/us-central1
...

REST

Envoyez une requête GET à la méthode regionInstanceGroupManagers.get.

GET https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME

Remplacez les éléments suivants :

  • PROJECT_ID : ID du projet pour cette requête
  • REGION : région du groupe d'instances
  • INSTANCE_GROUP_NAME : nom du groupe d'instances.

La forme de distribution cible est renvoyée dans le champ distributionPolicy.targetShape. Exemple :

{
  "name": "my-instance-group",
  "distributionPolicy": {
    "targetShape": "BALANCED",
  },
  "targetSize": 50,
  ...
}

Étape suivante