Réparer une VM dans une autre zone

Ce document explique comment autoriser un groupe d'instances géré (MIG) régional à réparer une instance de machine virtuelle (VM) dans une autre zone lorsque le MIG ne peut pas réparer la VM dans sa zone d'origine. Pour en savoir plus sur les réparations dans un MIG, consultez À propos de la réparation des VM pour la haute disponibilité.

Lorsque vous créez un MIG régional, vous sélectionnez une ou plusieurs zones dans lesquelles le MIG distribue ses VM. Par défaut, si une VM du MIG échoue, le MIG tente de la réparer dans sa zone d'origine. Vous pouvez également autoriser le MIG à réparer cette VM dans l'une des autres zones sélectionnées. Cela peut être utile si le MIG ne peut pas réparer la VM dans sa zone d'origine. Le MIG choisit la zone alternative en fonction de la capacité et du quota disponibles.

Limites

Lorsque vous configurez un MIG régional pour réparer une VM dans une autre zone, les limites suivantes s'appliquent :

Avant de commencer

  • Si ce n'est pas déjà fait, configurez l'authentification. L'authentification permet 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 en sélectionnant l'une des options suivantes :

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    1. Installez la Google Cloud CLI. Une fois que la Google Cloud CLI est installée, initialisez-la en exécutant la commande suivante :

      gcloud init

      Si vous utilisez un fournisseur d'identité (IdP) externe, vous devez d'abord vous connecter à la gcloud CLI avec votre identité fédérée.

    2. Set a default region and zone.

    Terraform

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

      Installez la Google Cloud CLI.

      Si vous utilisez un fournisseur d'identité (IdP) externe, vous devez d'abord vous connecter à la gcloud CLI avec votre identité fédérée.

      If you're using a local shell, then create local authentication credentials for your user account:

      gcloud auth application-default login

      You don't need to do this if you're using Cloud Shell.

      If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.

    Pour en savoir plus, consultez la section Set up authentication for a local development environment.

    REST

    Pour utiliser les exemples API REST de cette page dans un environnement de développement local, vous devez utiliser les identifiants que vous fournissez à la gcloud CLI.

      Installez la Google Cloud CLI.

      Si vous utilisez un fournisseur d'identité (IdP) externe, vous devez d'abord vous connecter à la gcloud CLI avec votre identité fédérée.

    Pour en savoir plus, consultez la section S'authentifier pour utiliser REST dans la documentation sur l'authentification Google Cloud .

Autoriser les réparations dans une autre zone

Pour autoriser un MIG à réparer une VM dans une autre zone, sélectionnez l'une des options suivantes :

Console

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

    Accéder à la page Groupes d'instances

  2. Si vous disposez déjà d'un MIG, procédez comme suit :

    1. Cliquez sur le nom du MIG.
    2. Cliquez sur Modifier.
  3. Si vous ne disposez pas encore d'un MIG, procédez comme suit :

    1. Cliquez sur Créer un groupe d'instances.
    2. Saisissez un nom.
    3. Sélectionnez un modèle d'instance.
    4. Dans la section Emplacement, sélectionnez Plusieurs zones, puis une région et des zones.
    5. Dans le menu déroulant Forme de distribution cible, sélectionnez Équilibrée ou Toutes.

      • Si vous sélectionnez Équilibré, dans la boîte de dialogue qui s'affiche, cliquez sur Désactiver la redistribution des instances.

      • Si vous souhaitez sélectionner l'option Toute, vous devez d'abord supprimer la configuration de l'autoscaling. Pour supprimer l'autoscaling, dans le menu déroulant Mode d'autoscaling, cliquez sur Supprimer la configuration de l'autoscaling.

  4. Dans la section Cycle de vie de l'instance de VM, assurez-vous que les champs suivants sont définis comme suit :

    1. La liste Action par défaut en cas d'échec est définie sur Réparer l'instance.

    2. L'option Mises à jour lors de la réparation des instances de VM est définie sur Mettre à jour la configuration de l'instance.

    3. Dans la section Modifier la zone lors de la réparation de l'instance de VM, cochez la case Autoriser la réparation des VM dans une autre zone.

  5. Pour les autres paramètres, vous pouvez utiliser les valeurs par défaut ou modifier les champs.

  6. Une fois terminé, cliquez sur Enregistrer pour un MIG existant ou sur Créer pour un nouveau MIG.

gcloud

Pour configurer un MIG existant afin qu'il répare les VM dans une autre zone, utilisez la commande bêta update :

gcloud beta compute instance-groups managed update MIG_NAME \
    --on-repair-allow-changing-zone=YES \
    --force-update-on-repair \
    --region=REGION

Pour créer un MIG capable de réparer des VM dans une autre zone, utilisez la commande bêta create :

gcloud beta compute instance-groups managed create MIG_NAME \
    --template=INSTANCE_TEMPLATE_URL \
    --size=SIZE \
    --zones=ZONES \
    --target-distribution-shape=SHAPE \
    --instance-redistribution-type=none \
    --on-repair-allow-changing-zone=YES \
    --force-update-on-repair

Remplacez les éléments suivants :

  • MIG_NAME : nom du MIG.
  • INSTANCE_TEMPLATE_URL : URL du modèle d'instance que vous souhaitez utiliser pour créer des VM dans le MIG. L'URL peut contenir l'ID ou le nom du modèle d'instance. Spécifiez une des valeurs suivantes :
    • Pour un modèle d'instance régional : projects/PROJECT_ID/regions/REGION/instanceTemplates/INSTANCE_TEMPLATE_ID
    • Pour un modèle d'instance global : INSTANCE_TEMPLATE_ID
  • SIZE : taille cible du MIG.
  • ZONES : liste des zones d'une région dans lesquelles vous souhaitez créer les VM du MIG.
  • SHAPE : forme de distribution cible. Cette valeur peut être balanced ou any.
  • REGION : région où se trouve le MIG.

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 capable de réparer une VM dans une autre zone, utilisez la ressource google_compute_region_instance_group_manager.

resource "google_compute_region_instance_group_manager" "default" {
  provider           = google-beta
  name               = "example-rmig"
  base_instance_name = "example-rmig-instance"
  region             = "us-central1"

  target_size                      = 3
  distribution_policy_target_shape = "BALANCED"

  version {
    instance_template = google_compute_instance_template.default.id
  }

  instance_lifecycle_policy {
    default_action_on_failure = "REPAIR"
    force_update_on_repair    = "YES"
    on_repair {
      allow_changing_zone = "YES"
    }
  }

  update_policy {
    instance_redistribution_type = "NONE"
    type                         = "OPPORTUNISTIC"
    minimal_action               = "REPLACE"
    max_surge_fixed              = 0
    max_unavailable_fixed        = 6
  }
}

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

REST

Pour configurer un MIG existant afin qu'il répare les VM dans une autre zone, utilisez la méthode bêta regionInstanceGroupManagers.patch :

PATCH https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/MIG_NAME
{
    "instanceLifecyclePolicy": {
      "onRepair": {
        "allowChangingZone": "YES"
      },
      "forceUpdateOnRepair": "YES"
    }
}

Pour créer un MIG capable de réparer des VM dans une autre zone, utilisez la méthode bêta regionInstanceGroupManagers.insert :

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

{
  "name": "MIG_NAME",
  "instanceTemplate": "INSTANCE_TEMPLATE_URL",
  "targetSize": SIZE,
  "distributionPolicy": {
    "targetShape": "SHAPE"
  }
  "updatePolicy": {
    "instanceRedistributionType": none
  }
  "instanceLifecyclePolicy": {
    "forceUpdateOnRepair": "YES",
    "onRepair": {
      "allowChangingZone": "YES"
    }
  }
}

Remplacez les éléments suivants :

  • PROJECT_ID : ID de votre projet.
  • REGION : région où se trouve le MIG.
  • MIG_NAME : nom du MIG.
  • INSTANCE_TEMPLATE_URL : URL du modèle d'instance que vous souhaitez utiliser pour créer des VM dans le MIG. L'URL peut contenir l'ID ou le nom du modèle d'instance. Spécifiez une des valeurs suivantes :
    • Pour un modèle d'instance régional : projects/PROJECT_ID/regions/REGION/instanceTemplates/INSTANCE_TEMPLATE_ID
    • Pour un modèle d'instance global : INSTANCE_TEMPLATE_ID
  • SIZE : taille cible du MIG.
  • SHAPE : forme de distribution cible. Cette valeur peut être BALANCED ou ANY.

Interdire les réparations dans une autre zone

Si vous avez configuré un MIG pour réparer une VM dans une autre zone, vous pouvez rétablir le paramètre par défaut selon lequel le MIG répare la VM dans la zone d'origine.

Pour interdire les réparations dans une autre zone, sélectionnez l'une des options suivantes :

Console

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

    Accéder à la page Groupes d'instances

  2. Cliquez sur le nom du MIG.

  3. Cliquez sur Modifier.

  4. Accédez à la section Cycle de vie des instances de VM.

  5. Dans la section Modifier la zone lors de la réparation de l'instance de VM, décochez la case Autoriser la réparation des VM dans une autre zone.

  6. Cliquez sur Enregistrer.

gcloud

Pour interdire les réparations dans une autre zone, utilisez la commande bêta update :

gcloud beta compute instance-groups managed update MIG_NAME \
    --on-repair-allow-changing-zone=NO \
    --region=REGION

Remplacez les éléments suivants :

  • MIG_NAME : nom du MIG.
  • REGION : région où se trouve le MIG.

REST

Pour interdire les réparations dans une autre zone, utilisez la méthode bêta regionInstanceGroupManagers.patch :

PATCH https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/MIG_NAME
{
    "instanceLifecyclePolicy": {
      "onRepair": {
        "allowChangingZone": "NO"
      }
    }
}

Remplacez les éléments suivants :

  • PROJECT_ID : ID de votre projet.
  • REGION : région où se trouve le MIG.
  • MIG_NAME : nom du MIG.

Étapes suivantes