Créer et gérer des MIG régionaux

Ce document décrit les procédures spécifiques à la création et à la gestion de groupes d'instances gérés (MIG) régionaux. Pour obtenir des informations générales sur la création de MIG, consultez la page Créer des groupes d'instances gérés.

Un MIG régional répartit vos instances sur plusieurs zones d'une région, ce qui augmente la résilience de vos charges de travail basées sur les MIG. L'utilisation de plusieurs zones vous protège des cas extrêmes où toutes les instances d'une même zone échouent.

Pour plus d'informations sur les MIG régionaux, y compris sur la raison de leur choix, leurs options de configuration supplémentaires et les différences avec les MIG zonaux, consultez la présentation sur les MIG régionaux.

Avant de commencer

Limites

  • Avec un MIG régional, vous pouvez créer jusqu'à 2 000 VM dans une région, avec un maximum de 1 000 VM par zone. Avec un MIG zonal, vous pouvez créer jusqu'à 1 000 VM. Si vous en avez besoin d'un plus grand nombre, contactez l'assistance.
  • Lors de la mise à jour d'un MIG, vous pouvez spécifier jusqu'à 1 000 VM dans une même requête.
  • Si vous souhaitez un MIG avec état, vérifiez les limites des MIG avec état.

  • Vous devez sélectionner les zones associées à un MIG régional lors de sa création. Une fois que vous avez choisi des zones spécifiques lors de la création, vous ne pouvez plus les modifier ni les mettre à jour. Toutefois, vous pouvez définir la forme de distribution cible d'un MIG pour spécifier la distribution de ses instances gérées dans les zones que vous avez sélectionnées.

  • Si vous souhaitez utiliser l'équilibrage de charge avec un MIG régional, les limites suivantes s'appliquent :

    • Vous ne pouvez pas utiliser le mode d'équilibrage maxRate.
    • Si vous utilisez un schéma d'équilibrage de charge HTTP(S) avec un MIG régional, vous devez choisir le mode d'équilibrage maxRatePerInstance ou maxUtilization.
  • Si vous souhaitez effectuer l'autoscaling d'un MIG régional, les limites suivantes s'appliquent :

    • Vous devez définir la forme de distribution cible du groupe sur EVEN.
    • Pour effectuer un scaling vertical et horizontal, vous devez activer la redistribution proactive des instances. Si vous définissez le mode de l'autoscaler pour qu'il n'effectue que le scaling horizontal, vous n'avez pas besoin d'activer la distribution proactive des instances.
    • Si vous souhaitez configurer l'autoscaling basé sur les métriques Cloud Monitoring pour un MIG régional, les limites suivantes s'appliquent :

      • Vous ne pouvez pas utiliser de métriques par groupe.
      • Vous ne pouvez pas appliquer de filtres aux métriques par instance.

Créer un MIG régional

Utilisez Cloud Console, l'outil gcloud ou l'API Compute Engine.

Si la capacité de chaque zone est insuffisante pour prendre en charge les VM du groupe, Compute Engine crée autant de VM que possible, puis tente de créer les VM restantes lorsqu'une capacité supplémentaire devient disponible.

Par défaut, si vous ne spécifiez pas explicitement des zones individuelles dans votre requête, Compute Engine choisit automatiquement trois zones dans lesquelles créer des VM. Si vous devez créer des VM dans un nombre de zones différent de trois, ou si vous souhaitez sélectionner les zones utilisées, vous pouvez fournir une liste des zones dans votre requête. Pour en savoir plus, consultez la section Sélection de zones.

Par défaut, les instances sont réparties uniformément dans les zones sélectionnées. Si vous souhaitez utiliser des ressources zonales avec votre MIG régional, telles que des GPU spécifiques, des disques persistants zonaux existants ou des réservations zonales, vous pouvez définir la forme de distribution du MIG pour créer des instances dans les zones contenant ces ressources.

Puisque vous créez un MIG régional, gardez à l'esprit que certaines ressources, comme les disques persistants existants, sont zonales. Si vous spécifiez dans votre modèle d'instance des ressources zonales telles que des disques persistants existants, ces disques doivent être présents dans toutes les zones sélectionnées pour pouvoir être associés aux VM créées par ce MIG régional.

La redistribution proactive des instances est activée par défaut. Si vous devez gérer manuellement le nombre de VM dans chaque zone, vous pouvez désactiver la redistribution proactive des instances. Si vous désactivez la redistribution proactive des instances et que vous souhaitez utiliser l'autoscaling, vous devez limiter l'autoscaler pour qu'il ne procède qu'au scaling horizontal.

Console

  1. Dans 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. Sous Emplacement, sélectionnez Plusieurs zones.
  5. Sélectionnez une région.
  6. Si vous souhaitez choisir des zones spécifiques, cliquez sur Configurer des zones pour sélectionner les zones à utiliser.
  7. Sous Forme de distribution cible, sélectionnez Égale. Si vous souhaitez sélectionner une autre forme, consultez la section Définir une règle de distribution des instances entre les zones.
  8. Si vous souhaitez désactiver la redistribution proactive des instances
    1. Assurez-vous que le mode d'autoscaling est défini sur Ne pas procéder à un autoscaling.
    2. Définissez la redistribution des instances sur Désactivé.
  9. Choisissez un modèle d'instance pour le groupe d'instances ou créez-en un.
  10. Indiquez le nombre de VM pour ce groupe. Pensez à provisionner suffisamment de VM pour prendre en charge votre application en cas de défaillance d'une zone.
  11. Terminez le processus de création de MIG.

gcloud

Tous les MIG requièrent un modèle d'instance. Commencez par créer un modèle d'instance si vous n'en avez pas. Par exemple, la commande suivante crée un modèle d'instance de base doté des propriétés par défaut :

gcloud compute instance-templates create example-template

Exécutez ensuite la commande instance-groups managed create avec l'option --region. Par exemple, la commande suivante crée un groupe d'instances géré régional dans trois zones de la région us-east1 :

gcloud compute instance-groups managed create example-rmig \
    --template example-template  \
    --size 30 \
    --region us-east1

Si vous souhaitez sélectionner des zones spécifiques que le groupe doit utiliser, ajoutez l'option --zones :

gcloud compute instance-groups managed create example-rmig \
    --template example-template \
    --size 30 \
    --zones us-east1-b,us-east1-c

Si vous souhaitez désactiver la redistribution proactive des instances, définissez l'option --instance-redistribution-type sur NONE. Vous ne pouvez pas désactiver la redistribution proactive des instances si l'autoscaling est activé.

gcloud compute instance-groups managed create example-rmig \
    --template example-template \
    --size 30 \
    --instance-redistribution-type NONE \
    --region us-east1

API

Tous les MIG requièrent un modèle d'instance. Commencez par créer un modèle d'instance si vous n'en avez pas.

Ensuite, envoyez une requête POST à la méthode regionInstanceGroupManagers.insert. Dans le corps de la requête, spécifiez le nom du groupe, sa taille et l'URL du modèle d'instance. Vous pouvez éventuellement spécifier d'autres champs, tels que le nom de base pour les instances du groupe.

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

{
  "baseInstanceName": "BASE_INSTANCE_NAME",
  "instanceTemplate": "global/instanceTemplates/INSTANCE_TEMPLATE_NAME",
  "name": "INSTANCE_GROUP_NAME",
  "targetSize": "TARGET_SIZE"
}

Remplacez les éléments suivants :

  • PROJECT_ID : ID du projet pour cette requête.
  • REGION : région du groupe.
  • BASE_INSTANCE_NAME : nom d'instance pour chaque instance de VM créée au sein du groupe. Par exemple, le nom d'instance de base example-instance permettrait la création d'instances portant des noms du type example-instance-[RANDOM_STRING], où [RANDOM_STRING] est une chaîne aléatoire générée par le serveur.
  • INSTANCE_TEMPLATE_NAME : modèle d'instance à utiliser.
  • INSTANCE_GROUP_NAME : nom du MIG.
  • TARGET_SIZE : nombre cible de VM pour le groupe.

Si vous souhaitez sélectionner des zones spécifiques, ou si vous créez des VM dans une région comportant un nombre de zones différent de trois, incluez la propriété distributionPolicy dans votre requête et fournissez la liste des zones. Remplacez ZONE par le nom d'une zone dans laquelle créer des VM.

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

{
  "baseInstanceName": "BASE_INSTANCE_NAME",
  "instanceTemplate": "global/instanceTemplates/INSTANCE_TEMPLATE_NAME",
  "name": "INSTANCE_GROUP_NAME",
  "targetSize": "TARGET_SIZE",
  "distributionPolicy": {
     "zones": [
       {"zone": "zones/ZONE"},
       {"zone": "zones/ZONE"}
      ]
   }
}

Par exemple, la requête qui suit permet de créer un MIG régional nommé example-rmig et comportant 10 instances gérées réparties sur les zones us-east1-b et us-east1-c :

POST https://compute.googleapis.com/compute/v1/projects/myproject/regions/us-east1/instanceGroupManagers

{
  "instanceTemplate": "global/instanceTemplates/example-instance",
  "name": "example-rmig",
  "targetSize": 10,
  "distributionPolicy": {
      "zones": [
        {"zone": "zones/us-east1-b"},
        {"zone": "zones/us-east1-c"}
      ]
   }
}

Utiliser des instances gérées dans un MIG régional

Si vous devez agir sur des instances gérées spécifiques dans un MIG, par exemple pour créer ou supprimer des instances portant des noms spécifiques, le processus est le même pour les MIG régionaux et zonaux. Consultez la page Utiliser des instances gérées.

Obtenir des informations sur les MIG régionaux et les instances gérées

Si vous souhaitez obtenir des informations sur votre MIG, par exemple pour afficher sa configuration ou inspecter son état, ou encore sur les instances gérées d'un MIG, la procédure est la même pour les MIG régionaux et zonaux. Pour en savoir plus, consultez la page Obtenir des informations sur les MIG et les instances gérées.

Mettre à jour un groupe d'instances géré régional

Vous pouvez appliquer un nouveau modèle d'instance à un groupe d'instances géré régional à l'aide de la fonctionnalité de mise à jour. Pour plus d'informations, consultez la page Mettre à jour un MIG régional.

Si vous souhaitez ajouter ou supprimer des instances dans un MIG, consultez la page Utiliser des instances gérées.

Si vous souhaitez utiliser ou mettre à jour des fonctionnalités de MIG, consultez la documentation sur l'autoréparation, l'équilibrage de charge, l'autoscaling, la mise à jour automatique et les charges de travail avec état.

Vous ne pouvez pas sélectionner différentes zones pour le MIG après sa création. Toutefois, vous pouvez mettre à jour la forme cible du MIG pour modifier la manière dont le groupe distribue ses instances gérées dans les zones sélectionnées.

Définir une règle de distribution des instances entre les zones

Vous pouvez définir la forme de distribution cible d'un MIG régional sur l'une des options suivantes :

  • EVEN (ÉGALE) par défaut : le groupe planifie la création et la suppression d'instances de VM pour atteindre et conserver un nombre équitable d'instances gérées dans les zones sélectionnées. La distribution est équitable si le nombre d'instances gérées ne diffère pas plus de 1 entre deux zones. Option recommandée pour les charges de travail de diffusion à disponibilité élevée.

  • BALANCED (ÉQUILIBRÉE) : le groupe privilégie l'acquisition de ressources. De ce fait, il planifie des VM dans les zones où des ressources sont disponibles, tout en les répartissant aussi équitablement que possible dans les zones sélectionnées afin de minimiser l'impact des défaillances zonales. Option recommandée pour les charges de travail de diffusion ou par lot à disponibilité élevée qui ne nécessitent pas d'autoscaling.

  • ANY (TOUTE) : 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 haute disponibilité.

Pour vous aider à faire votre choix, consultez le tableau de comparaison, les cas d'utilisation et le fonctionnement des formes de distribution.

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

Limites

  • Si vous définissez la forme de distribution cible sur BALANCED, vous devez désactiver la redistribution proactive.
  • Si vous définissez la forme de distribution cible sur BALANCED ou ANY, les limites suivantes s'appliquent :
    • L'autoscaling n'est pas disponible. Vous pouvez définir la taille du MIG ou ajouter des instances.
    • 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.

Créer un groupe avec une forme de distribution cible

Utilisez Cloud Console, l'outil gcloud ou l'API Compute Engine.

Console

  1. Dans 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. Sous Emplacement, sélectionnez Plusieurs zones.
  5. Sélectionnez une région.
  6. Si vous souhaitez choisir des zones spécifiques, cliquez sur Configurer des zones pour sélectionner les zones à utiliser.
  7. Choisissez une forme de distribution cible.
    1. Si vous souhaitez sélectionner l'option Toute ou Équilibrée, cliquez sur Supprimer la configuration de l'autoscaling dans la section Autoscaling.
    2. Si vous souhaitez sélectionner l'option Équilibrée, ne sélectionnez pas Activer la redistribution des instances dans la section Redistribution des instances.
    3. Dans la section Forme de distribution cible, sélectionnez une forme.
  8. Choisissez un modèle d'instance pour le groupe d'instances ou créez-en un.
  9. 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.
  10. Terminez le processus de création de MIG.

gcloud

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

gcloud beta compute instance-groups managed create INSTANCE_GROUP_NAME \
    --template TEMPLATE \
    --size SIZE \
    [--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.
  • ZONES (facultatif) : liste des zones de la région dans lesquelles vous souhaitez déployer les instances de VM.
  • SHAPE : forme de distribution cible. Il peut s'agir de l'une des valeurs suivantes :
    • EVEN (ÉGALE) par défaut : le groupe planifie la création et la suppression d'instances de VM pour atteindre et conserver un nombre équitable d'instances gérées dans les zones sélectionnées. La distribution est équitable si le nombre d'instances gérées ne diffère pas plus de 1 entre deux zones. Option recommandée pour les charges de travail de diffusion à disponibilité élevée.
    • BALANCED (ÉQUILIBRÉE) : le groupe privilégie l'acquisition de ressources. De ce fait, il planifie des VM dans les zones où des ressources sont disponibles, tout en les répartissant aussi équitablement que possible dans les zones sélectionnées afin de minimiser l'impact des défaillances zonales. Option recommandée pour les charges de travail de diffusion ou par lot à disponibilité élevée qui ne nécessitent pas d'autoscaling.
    • ANY (TOUTE) : le groupe choisit les zones dans lesquelles créer les instances de VM afin de respecter le nombre de VM demandé dans les limites de capacité disponible 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 haute disponibilité.

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 beta 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

API

Appelez la méthode regionInstanceGroupManagers.insert. Dans le corps de la requête, incluez la propriété "distributionPolicy" et définissez son champ "targetShape".. In the request body, include theproperty, and set its

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

{
    "instanceTemplate": "global/instanceTemplates/TEMPLATE",
    "targetSize": SIZE,
    "distributionPolicy": {
        "zones": [
            {"zone": "zones/ZONE"},
            {"zone": "zones/ZONE"}
        ],
        "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.
  • SHAPE : forme de distribution cible. Il peut s'agir de l'une des valeurs suivantes :
    • EVEN (ÉGALE) par défaut : le groupe planifie la création et la suppression d'instances de VM pour atteindre et conserver un nombre équitable d'instances gérées dans les zones sélectionnées. La distribution est équitable si le nombre d'instances gérées ne diffère pas plus de 1 entre deux zones. Option recommandée pour les charges de travail de diffusion à disponibilité élevée.
    • BALANCED (ÉQUILIBRÉE) : le groupe privilégie l'acquisition de ressources. De ce fait, il planifie des VM dans les zones où des ressources sont disponibles, tout en les répartissant aussi équitablement que possible dans les zones sélectionnées afin de minimiser l'impact des défaillances zonales. Option recommandée pour les charges de travail de diffusion ou par lot à disponibilité élevée qui ne nécessitent pas d'autoscaling.
    • ANY (TOUTE) : le groupe choisit les zones dans lesquelles créer les instances de VM afin de respecter le nombre de VM demandé dans les limites de capacité disponible 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 haute disponibilité.

Modifier la forme de distribution cible d'un groupe existant

Vous pouvez modifier la forme de destination 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 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 EVEN et que vous souhaitez réactiver la redistribution proactive, vous devez d'abord rééquilibrer manuellement le groupe.

Console

  1. Dans 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 le groupe 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 beta compute instance-groups managed update avec l'option --target-distribution-shape.

gcloud beta 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 (ÉGALE) par défaut : le groupe planifie la création et la suppression d'instances de VM pour atteindre et conserver un nombre équitable d'instances gérées dans les zones sélectionnées. La distribution est équitable si le nombre d'instances gérées ne diffère pas plus de 1 entre deux zones. Option recommandée pour les charges de travail de diffusion à disponibilité élevée.
    • BALANCED (ÉQUILIBRÉE) : le groupe privilégie l'acquisition de ressources. De ce fait, il planifie des VM dans les zones où des ressources sont disponibles, tout en les répartissant aussi équitablement que possible dans les zones sélectionnées afin de minimiser l'impact des défaillances zonales. Option recommandée pour les charges de travail de diffusion ou par lot à disponibilité élevée qui ne nécessitent pas d'autoscaling.
    • ANY (TOUTE) : le groupe choisit les zones dans lesquelles créer les instances de VM afin de respecter le nombre de VM demandé dans les limites de capacité disponible 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 haute disponibilité.

API

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/beta/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 (ÉGALE) par défaut : le groupe planifie la création et la suppression d'instances de VM pour atteindre et conserver un nombre équitable d'instances gérées dans les zones sélectionnées. La distribution est équitable si le nombre d'instances gérées ne diffère pas plus de 1 entre deux zones. Option recommandée pour les charges de travail de diffusion à disponibilité élevée.
    • BALANCED (ÉQUILIBRÉE) : le groupe privilégie l'acquisition de ressources. De ce fait, il planifie des VM dans les zones où des ressources sont disponibles, tout en les répartissant aussi équitablement que possible dans les zones sélectionnées afin de minimiser l'impact des défaillances zonales. Option recommandée pour les charges de travail de diffusion ou par lot à disponibilité élevée qui ne nécessitent pas d'autoscaling.
    • ANY (TOUTE) : le groupe choisit les zones dans lesquelles créer les instances de VM afin de respecter le nombre de VM demandé dans les limites de capacité disponible 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 haute disponibilité.

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 Détails, puis recherchez la section Forme de distribution cible.

gcloud

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

gcloud beta 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
...

API

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

GET https://www.googleapis.com/compute/beta/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,
  ...
}

Désactiver et réactiver la redistribution proactive des instances

La redistribution proactive des instances conserve un nombre de VM équitable dans les zones sélectionnées de la région. Cette configuration maximise la disponibilité de votre application en cas de défaillance de la zone.

La redistribution proactive des instances est activée par défaut pour les MIG régionaux, mais vous pouvez la désactiver pour les MIG sans autoscaling. Lorsque la redistribution proactive des instances est désactivée, le groupe ne tente pas de redistribuer les VM de manière proactive entre les zones. Ceci est utile si vous devez :

  • supprimer manuellement ou abandonner des instances gérées du groupe sans affecter les autres VM en cours d'exécution ;
  • supprimer automatiquement une VM de nœud de calcul par lot à la fin de l'exécution de la tâche sans affecter les autres nœuds de calcul ;
  • protéger les VM d'une suppression automatique inattendue due à la redistribution proactive en utilisant des applications avec état.

Utilisez Cloud Console, l'outil gcloud ou l'API Compute Engine pour créer un MIG régional avec désactivation de la redistribution proactive des instances, ou pour activer ou désactiver la redistribution proactive des instances pour un groupe existant.

Créer un groupe avec la redistribution proactive des instances désactivée

Console

  1. Dans 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. Sous Emplacement, sélectionnez Plusieurs zones.
  4. Sélectionnez une région.
  5. Si vous souhaitez choisir des zones spécifiques, cliquez sur Configurer des zones pour sélectionner les zones à utiliser.
  6. Pour désactiver la redistribution proactive des instances :
    1. Assurez-vous que le mode d'autoscaling est défini sur Ne pas procéder à un autoscaling.
    2. Définissez la redistribution des instances sur Désactivé.
  7. Choisissez un modèle d'instance pour le groupe ou créez-en un.
  8. Indiquez le nombre de VM pour ce groupe. Pensez à provisionner suffisamment de VM pour prendre en charge votre application en cas de défaillance d'une zone.
  9. Terminez le processus de création de MIG.

gcloud

Pour créer un MIG régional sans redistribution proactive des instances, utilisez la commande gcloud compute instance-groups managed create avec l'option --instance-redistribution-type définie sur NONE.

gcloud compute instance-groups managed create INSTANCE_GROUP_NAME \
    --template INSTANCE_TEMPLATE_NAME \
    --size TARGET_SIZE \
    --zones ZONES \
    --instance-redistribution-type NONE

Remplacez les éléments suivants :

  • INSTANCE_GROUP_NAME : nom du MIG
  • INSTANCE_TEMPLATE_NAME : nom du modèle d'instance à utiliser pour le groupe
  • TARGET_SIZE : taille cible du groupe
  • ZONES : liste des zones d'une région unique dans lesquelles vous souhaitez déployer les VM.

Exemple :

gcloud compute instance-groups managed create example-rmig \
    --template example-template \
    --size 30 \
    --zones us-east1-b,us-east1-c \
    --instance-redistribution-type NONE

API

Pour créer un MIG régional sans autoscaling ni redistribution proactive des instances, envoyez une requête POST à la méthode regionInstanceGroupManagers.insert. Dans le corps de la requête, incluez la propriété updatePolicy et définissez son champ instanceRedistributionType sur NONE.

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

{
    "name": "INSTANCE_GROUP_NAME",
    "instanceTemplate": "global/instanceTemplates/INSTANCE_TEMPLATE_NAME",
    "targetSize": "TARGET_SIZE",
    "distributionPolicy": {
        "zones": [
            {"zone": "zones/ZONE"},
            {"zone": "zones/ZONE"}
        ]
    },
    "updatePolicy": {
        "instanceRedistributionType": "NONE"
    }
}

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 MIG
  • INSTANCE_TEMPLATE_NAME : nom du modèle d'instance à utiliser pour le groupe
  • TARGET_SIZE : taille cible du groupe d'instances
  • ZONE : nom d'une zone de la région unique dans laquelle vous souhaitez déployer les VM.

Désactiver la redistribution proactive des instances

Avant de pouvoir désactiver la redistribution proactive des instances, vous devez définir le mode de l'autoscaler de sorte à désactiver l'autoscaling ou à le limiter uniquement au scaling horizontal.

Console

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

    Accéder à la page Groupes d'instances

  2. Sélectionnez le MIG à mettre à jour, puis cliquez sur Modifier le groupe.
  3. Si l'autoscaling a été configuré, assurez-vous que le mode d'autoscaling est défini sur Ne pas procéder à un autoscaling.
  4. Désactivez la redistribution automatique en définissant le paramètre Redistribution des instances sur Désactivé.
  5. Cliquez sur Enregistrer.

gcloud

Si vous souhaitez désactiver la redistribution proactive des instances pour un MIG régional sans autoscaling, exécutez la commande compute instance-groups managed update avec l'option --instance-redistribution-type définie sur NONE.

gcloud compute instance-groups managed update INSTANCE_GROUP_NAME \
    --instance-redistribution-type NONE \
    --region REGION

Remplacez les éléments suivants :

  • INSTANCE_GROUP_NAME : nom du MIG
  • REGION : région du groupe d'instances

API

Pour désactiver la redistribution proactive des instances pour un MIG régional sans autoscaling, envoyez une requête PATCH à la méthode regionInstanceGroupManagers.patch. Dans le corps de la requête, incluez la propriété updatePolicy et définissez son champ instanceRedistributionType sur NONE.

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

{
    "updatePolicy": {
         "instanceRedistributionType": "NONE"
    }
}

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 d'un MIG sans autoscaling

Activer la distribution proactive des instances

Pour activer la distribution proactive des instances, exécutez une commande semblable à celle utilisée pour désactiver la redistribution proactive des instances, mais définissez le type de redistribution des instances sur PROACTIVE.

Si vous avez supprimé ou abandonné manuellement certaines instances gérées, entraînant une répartition inégale des VM au sein de la région, vous devez rééquilibrer manuellement le groupe avant de pouvoir réactiver la redistribution proactive des instances. Il ne doit pas y avoir plus d'une VM de différence entre deux zones.

Un MIG régional n'autorise pas l'activation de la redistribution proactive des instances tant que les VM ne sont pas réparties de manière homogène entre les zones (c'est-à-dire tant qu'il existe une différence d'au moins deux VM entre deux zones). Cela permet d'éviter une suppression automatique involontaire des VM dans les zones contenant davantage de VM, ce qui serait l'option utilisée pour obtenir une répartition régulière.

Rééquilibrage manuel d'un MIG régional

Un MIG n'est pas équilibré si la différence du nombre de VM entre deux zones est de deux VM ou plus. Un MIG peut ne plus équilibrer si vous désactivez la redistribution proactive des instances, puis que vous supprimez ou abandonnez des instances pour provoquer une distribution inégale entre les zones.

Vous pouvez procéder manuellement à une distribution égale des instances entre les zones en supprimant les VM des zones comportant le plus d'instances, ou en redimensionnant pour ajouter des instances dans les zones comportant moins de VM jusqu'à ce que la distribution soit uniforme.

Lorsque vous redimensionnez un MIG pour lequel la redistribution proactive des instances est désactivée, le groupe continue de converger de manière opportuniste vers l'équilibre, en traitant chaque opération de redimensionnement comme une opportunité d'équilibrer le groupe :

  • Lorsque le groupe augmente, il tente toujours d'ajouter des VM aux zones comportant le plus petit nombre de VM.
  • Lorsque le groupe diminue, il supprime toujours les VM des zones comportant le plus grand nombre de VM.
Exemple de redimensionnement manuel d'un groupe pour obtenir une redistribution uniforme

Simuler une défaillance de zone pour un MIG régional

Pour vérifier que votre MIG régional est suffisamment surprovisionné pour survivre à une défaillance de zone, vous pouvez utiliser l'exemple suivant qui simule une défaillance zonale.

Ce script arrête et démarre Apache dans le cadre de son scénario par défaut. Si cela ne convient pas pour votre application, remplacez les commandes d'arrêt et de démarrage d'Apache par votre propre scénario de défaillance et de récupération.

  1. Déployez ce script et exécutez-le en continu sur chaque VM du groupe. Pour ce faire, vous pouvez ajouter le script au modèle d'instance, ou l'inclure dans une image personnalisée et utiliser cette image dans le modèle d'instance.

    #!/usr/bin/env bash
    
    # Copyright 2016 Google Inc. All Rights Reserved.
    #
    # Licensed under the Apache License, Version 2.0 (the "License");
    # you may not use this file except in compliance with the License.
    # You may obtain a copy of the License at
    #
    #     http://www.apache.org/licenses/LICENSE-2.0
    #
    # Unless required by applicable law or agreed to in writing, software
    # distributed under the License is distributed on an "AS IS" BASIS,
    # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    # See the License for the specific language governing permissions and
    # limitations under the License.
    
    set -o nounset
    set -o errexit
    set -o pipefail
    
    function GetMetadata() {
      curl -s "$1" -H "Metadata-Flavor: Google"
    }
    
    PROJECT_METADATA_URL="http://metadata.google.internal/computeMetadata/v1/project/attributes"
    INSTANCE_METADATA_URL="http://metadata.google.internal/computeMetadata/v1/instance"
    ZONE=$(GetMetadata "$INSTANCE_METADATA_URL/zone" | cut -d '/' -f 4)
    INSTANCE_NAME=$(hostname)
    
    # We keep track of the state to make sure failure and recovery is triggered only once.
    STATE="healthy"
    while true; do
      if [[ "$ZONE" = "$(GetMetadata $PROJECT_METADATA_URL/failed_zone)" ]] && \
         [[ "$INSTANCE_NAME" = *"$(GetMetadata $PROJECT_METADATA_URL/failed_instance_names)"* ]]; then
        if [[ "$STATE" = "healthy" ]]; then
          STATE="failure"
          # Do something to simulate failure here.
          echo "STARTING A FAILURE"
          /etc/init.d/apache2 stop
        fi
      else
        if [[ "$STATE" = "failure" ]] ; then
          STATE="healthy"
          # Do something to recover here.
          echo "RECOVERING FROM FAILURE"
          /etc/init.d/apache2 start
        fi
      fi
      sleep 5
    done
    
    
  2. Simulez une défaillance de zone en définissant ces deux champs de métadonnées de projet :

    • failed_zone : définit la zone dans laquelle vous souhaitez simuler la panne (limite la défaillance à une seule zone).
    • failed_instance_names : choisissez les VM à déconnecter d'après leur nom (afin de limiter la défaillance aux seules VM dont le nom contient cette chaîne).

    Vous pouvez définir ces métadonnées à l'aide de l'outil gcloud. Par exemple, la commande suivante définit une défaillance sur la zone europe-west1-b et affectant les VM dont le nom commence par base-instance-name :

    gcloud compute project-info add-metadata --metadata failed_zone='europe-west1-b',failed_instance_names='base-instance-name-'
  3. Après avoir simulé la panne, lancez la récupération en supprimant les clés de métadonnées :

    gcloud compute project-info remove-metadata --keys failed_zone,failed_instance_names

Voici quelques exemples des scénarios de défaillance que vous pouvez exécuter à l'aide de ce script :

  • Arrêtez complètement votre application pour voir comment le MIG réagit.
  • Faites en sorte que vos VM renvoient un état "non opérationnel" lors des vérifications de l'état effectuées par l'équilibreur de charge.
  • Reconfigurez iptables de manière à bloquer une partie du trafic à destination ou en provenance de la VM.
  • Arrêtez les VM. Par défaut, celles-ci sont recréées peu de temps après par le MIG régional, mais leur nouvelle incarnation s'arrêtera dès l'exécution du script et aussi longtemps que les valeurs de métadonnées resteront définies. Vous obtenez ainsi une boucle de plantage.

Étapes suivantes