Accélérer le scaling horizontal avec des VM suspendues et arrêtées


Ce document explique le fonctionnement du pool de veille des instances de machine virtuelle (VM) suspendues et arrêtées, et comment l'utiliser pour accélérer l'extension d'un groupe d'instances géré (MIG).

Avant de commencer

  • Consultez la page d'introduction sur les VM suspendues et arrêtées dans un MIG.
  • 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 Google Cloud services et aux API. 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. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    2. Set a default region and zone.
    3. 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. Install the Google Cloud CLI.
      2. To initialize the gcloud CLI, run the following command:

        gcloud init
      3. 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.

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

      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

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

Utiliser l'API MIG pour l'autoscaling

Nous vous recommandons d'utiliser l'autoscaler Compute Engine pour l'ajustement automatique de votre MIG. Toutefois, si pour une raison quelconque vous préférez utiliser un autre autoscaler, utilisez les points de terminaison de l'API MIG pour gérer les VM suspendues et arrêtées.

Avec l'API MIG, vous pouvez connecter votre autoscaler, par exemple l'autoscaler GKE, et utiliser le pool de VM de réserve pour un scaling out plus rapide.

Choisir entre les pools suspendus et arrêtés

Le choix entre les pools suspendus et arrêtés dépend de votre cas d'utilisation spécifique. Pour des performances optimales, vous devez tester différents types de pools de veille pour vos scénarios d'extension afin de déterminer celui qui répond le mieux à vos besoins. Différentes charges de travail peuvent afficher un délai de diffusion plus court avec différentes options. Dans certains cas, le processus de copie de l'état de la mémoire de l'espace de stockage vers la VM peut prendre plus de temps que le redémarrage de la VM ou la création d'une VM.

Pour trouver la meilleure approche, commencez par suivre ces consignes:

  • Utilisez des VM suspendues si vos VM nécessitent une initialisation de la mémoire fastidieuse, car les VM suspendues conservent l'état de la mémoire. Assurez-vous que votre application peut être suspendue et reprise. Conserver l'état de la mémoire nécessite un espace de stockage supplémentaire et peut entraîner des coûts supplémentaires.
  • Utilisez des VM arrêtées si l'initialisation de votre VM se concentre principalement sur l'initialisation des données stockées sur les disques persistants.

Modifier la stratégie de veille dans un MIG

Cette section explique comment définir le délai initial et définir le mode du pool de secours pour le scaling horizontal du pool.

Console

  1. Dans la console Google Cloud, 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 stratégie de veille.

  3. Cliquez sur Modifier pour modifier le groupe d'instances géré.

  4. Cliquez sur Afficher la configuration avancée.

  5. Dans la section Pool de veille, sous Mode, sélectionnez Évolutivité.

  6. Dans le champ Délai initial, saisissez le nombre de secondes pendant lesquelles le MIG doit attendre avant de suspendre ou d'arrêter une VM. Le délai initial laisse le temps au script d'initialisation de préparer votre VM à l'extension rapide.

  7. Cliquez sur Enregistrer.

gcloud

Utilisez la commande instance-groups managed update et spécifiez le mode de fonctionnement et le délai initial.

gcloud compute instance-groups managed update MIG_NAME \
  --standby-policy-mode=scale-out-pool \
  --standby-policy-initial-delay=DELAY \
  [--region=REGION | --zone=ZONE]

Remplacez les éléments suivants :

  • MIG_NAME : nom du MIG.
  • DELAY: nombre de secondes d'attente avant que le MIG ne suspende ou arrête une VM. Le délai initial laisse le temps au script d'initialisation de préparer votre VM à l'extension rapide.
  • REGION : pour un MIG régional, région où se trouve le MIG.
  • ZONE : pour un MIG zonal, zone où se trouve le MIG.

Terraform

L'exemple suivant crée un MIG zonal avec une règle de veille. Utilisez le bloc standby_policy pour définir un délai initial et définir le mode sur SCALE_OUT_POOL.

L'exemple utilise la ressource google_compute_instance_group_manager. Pour un MIG régional, utilisez la ressource google_compute_region_instance_group_manager.

resource "google_compute_instance_group_manager" "default" {
  name               = "standby-mig"
  base_instance_name = "test"
  target_size        = 3
  zone               = "us-central1-f"

  version {
    instance_template = google_compute_instance_template.default.id
    name              = "primary"
  }
  standby_policy {
    initial_delay_sec = 50
    mode              = "SCALE_OUT_POOL"
  }
}

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

REST

Utilisez la méthode instanceGroupManager.patch et spécifiez le mode d'opération et le délai initial dans le corps de la requête. Pour les MIG régionaux, utilisez la méthode regionInstanceGroupManager.patch.

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/MIG_NAME

{
// ...
"standbyPolicy": {
  "mode": "SCALE_OUT_POOL",
  "initialDelaySec": DELAY
}
// ...
}

Remplacez les éléments suivants :

  • PROJECT_ID : par l'ID du projet.
  • ZONE: pour un MIG zonal, zone où se trouve le MIG.
    • Pour un MIG régional, remplacez zones/ZONE par regions/REGION et spécifiez la région du MIG.
  • MIG_NAME : nom du MIG.
  • DELAY: nombre de secondes d'attente avant que le MIG ne suspende ou arrête une VM. Le délai initial laisse le temps au script d'initialisation de préparer votre VM à l'extension rapide.

Redimensionner le pool de secours dans un MIG

Cette section explique comment redimensionner les pools de secours des VM suspendues et arrêtées dans un MIG.

Console

  1. Dans la console Google Cloud, 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 dans lequel vous souhaitez modifier les tailles de pool de secours.

  3. Cliquez sur Modifier pour modifier le groupe d'instances géré.

  4. Cliquez sur Afficher la configuration avancée.

  5. Dans la section Pool de secours, saisissez les nouvelles tailles dans les champs VM suspendues et VM arrêtées.

  6. Cliquez sur Enregistrer.

gcloud

Exécutez la commande instance-groups managed update avec les options --suspended-size et --stopped-size.

gcloud compute instance-groups managed update MIG_NAME \
--suspended-size=SUSPENDED_SIZE \
--stopped-size=STOPPED_SIZE \
[--region=REGION | --zone=ZONE]

Remplacez les éléments suivants :

  • MIG_NAME : nom du MIG dans lequel suspendre une instance.
  • SUSPENDED_SIZE: nombre de VM suspendues que le MIG doit maintenir à un moment donné.
  • STOPPED_SIZE: nombre de VM arrêtées que le MIG doit maintenir à un moment donné.
  • REGION : pour un MIG régional, région où se trouve le MIG.
  • ZONE : pour un MIG zonal, zone où se trouve le MIG.

Terraform

L'exemple suivant crée un MIG zonal avec des tailles cibles pour les VM suspendues et arrêtées. Pour définir les tailles cibles, utilisez les arguments target_suspended_size et target_stopped_size.

L'exemple utilise la ressource google_compute_instance_group_manager. Pour un MIG régional, utilisez la ressource google_compute_region_instance_group_manager.

resource "google_compute_instance_group_manager" "default" {
  name                  = "standby-mig"
  base_instance_name    = "test"
  target_size           = 1
  target_suspended_size = 1
  target_stopped_size   = 2
  zone                  = "us-central1-f"

  version {
    instance_template = google_compute_instance_template.default.id
    name              = "primary"
  }
  standby_policy {
    initial_delay_sec = 50
    mode              = "SCALE_OUT_POOL"
  }
}

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

REST

Utilisez la méthode instanceGroupManager.patch et spécifiez les tailles des pools de VM suspendues et arrêtées dans le corps de la requête. Pour les MIG régionaux, utilisez la méthode regionInstanceGroupManager.patch.

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/MIG_NAME

{
// ...
"targetSuspendedSize": SUSPENDED_SIZE,
"targetStoppedSize": STOPPED_SIZE
// ...
}

Remplacez les éléments suivants :

  • PROJECT_ID : l'ID du projet pour la requête.
  • ZONE : pour un MIG zonal, zone où se trouve le MIG.
    • Pour un MIG régional, remplacez zones/ZONE par regions/REGION et spécifiez la région du MIG.
  • MIG_NAME : nom du MIG dans lequel arrêter une instance.
  • SUSPENDED_SIZE: nombre de VM suspendues que le MIG doit maintenir à un moment donné.
  • STOPPED_SIZE: nombre de VM arrêtées que le MIG doit maintenir à un moment donné.

Étape suivante