Procéder à l'autoscaling de groupes d'instances

Les groupes d'instances gérés (Managed Instance Group, MIG) proposent des fonctionnalités d'autoscaling qui vous permettent d'ajouter automatiquement des instances à un groupe géré ou d'en supprimer en fonction de l'augmentation ou de la réduction de la charge. L'autoscaling permet à vos applications de gérer de façon optimale les hausses de trafic et de réduire les coûts lorsque les besoins en ressources diminuent. Vous définissez des règles d'autoscaling pour que l'autoscaler procède automatiquement aux ajustements nécessaires en fonction de la charge mesurée et des options que vous configurez.

L'autoscaling consiste à ajouter des VM à votre groupe d'instances géré lorsque la charge augmente (opération parfois appelée "scaling horizontal" ou "scaling à la hausse") et à supprimer des VM lorsque les besoins en ressources diminuent (opération appelée "scaling vertical" ou "scaling à la baisse").

Spécifications

  • L'autoscaling fonctionne uniquement avec les groupes d'instances gérés (MIG). Les groupes d'instances non gérés ne sont pas acceptés.
  • Si vous souhaitez effectuer l'autoscaling d'un groupe d'instances géré 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.
  • Vous ne pouvez pas créer des instances avec des noms spécifiques lorsque l'autoscaling est activé. Toutefois, vous pouvez activer l'autoscaler après avoir créé des instances de VM portant des noms spécifiques.
  • Vous ne pouvez pas utiliser l'autoscaling si votre groupe d'instances géré dispose d'une configuration avec état.
  • N'utilisez pas l'autoscaling Compute Engine avec des groupes d'instances gérés appartenant à Google Kubernetes Engine. Réalisez plutôt un autoscaling du cluster pour les groupes Google Kubernetes Engine.

    Si vous ne savez pas si votre groupe fait partie d'un cluster GKE, recherchez le préfixe gke dans le nom du MIG. Exemple :gke-test-1-3-default-pool-eadji9ah

  • Une règle d'autoscaling doit toujours comporter au moins un signal de scaling.

  • Un autoscaler peut prendre des décisions de scaling en fonction de plusieurs métriques, mais il ne peut gérer qu'un seul signal par type de métrique, sauf dans le cas des métriques Cloud Monitoring. Un autoscaler peut en effet gérer jusqu'à cinq signaux basés sur les métriques Monitoring. L'autoscaler calcule le nombre de machines virtuelles recommandé pour chaque signal, puis procède au scaling en fonction du signal qui s'applique au plus grand nombre de machines virtuelles du groupe.

  • L'autoscaling fonctionne indépendamment de l'autoréparation. Si vous avez configuré l'autoréparation pour votre groupe et qu'une instance est identifiée comme défaillante lors de la vérification de son état, le processus d'autoréparation tente de recréer l'instance. Cela peut entraîner une chute du nombre d'instances du groupe en-deçà du seuil d'autoscaling (minNumReplicas) que vous avez spécifié.

  • Si vous effectuez l'autoscaling d'un MIG régional, une instance peut être ajoutée dans l'une des zones et immédiatement supprimée. Cela se produit lorsque l'utilisation dans une zone déclenche un scaling horizontal, alors que l'utilisation globale dans le MIG régional ne nécessite pas l'instance supplémentaire ou que celle-ci est requise dans une zone différente.

Prérequis

L'autoscaler utilise l'agent de service de Compute Engine pour ajouter et supprimer des instances dans le groupe. Google Cloud crée automatiquement ce compte de service, ainsi que sa liaison de stratégie IAM pour le rôle d'agent de service Compute Engine, lorsque l'API Compute Engine est activée.

Si ce compte n'apparaît pas dans votre projet (par exemple, si vous l'avez supprimé), vous pouvez l'ajouter manuellement :

Console

  1. Dans Cloud Console, accédez à la page IAM.

    Accéder à IAM

  2. Cliquez sur Ajouter.

  3. Saisissez service-PROJECT_NUMBER@compute-system.iam.gserviceaccount.com.

  4. Sélectionnez le rôle "Agent de service Compute Engine".

  5. Cliquez sur Enregistrer.

gcloud

gcloud projects add-iam-policy-binding PROJECT_ID \
   --member serviceAccount:service-PROJECT_NUMBER@compute-system.iam.gserviceaccount.com \
   --role roles/compute.serviceAgent

Principes de base

L'autoscaling utilise les concepts et les services fondamentaux suivants.

Groupes d'instances gérés

L'autoscaling est une fonctionnalité des groupes d'instances gérés (MIG). Un groupe d'instances géré est un ensemble d'instances de machines virtuelles (VM) créées à partir d'un modèle d'instance commun. Un autoscaler ajoute ou supprime des instances d'un groupe d'instances géré en fonction de la règle d'autoscaling du groupe. Bien que Compute Engine dispose de groupes d'instances gérés et non gérés, seuls les groupes d'instances gérés peuvent être utilisés avec un autoscaler.

Pour comprendre les différences entre un groupe d'instances géré et un groupe d'instances non géré, consultez la page Groupes d'instances.

Pour découvrir comment créer un groupe d'instances géré, consultez la section Créer des MIG.

Règle d'autoscaling

Lorsque vous définissez une règle d'autoscaling pour votre groupe, vous spécifiez un ou plusieurs signaux utilisés par l'autoscaler pour redimensionner le groupe. Lorsque vous définissez plusieurs signaux dans une règle, l'autoscaler calcule le nombre recommandé de VM pour chaque signal et définit la taille recommandée de votre groupe au plus grand nombre.

Les sections suivantes fournissent un aperçu des signaux basés sur les métriques d'utilisation cible et des signaux basés sur les programmations.

Métriques d'utilisation cible

Vous pouvez procéder à un autoscaling en fonction d'une ou de plusieurs des métriques suivantes qui reflètent la charge du groupe d'instances :

  • Utilisation moyenne du processeur
  • Capacité de diffusion de l'équilibrage de charge HTTP, qui peut être basée sur l'utilisation ou le nombre de requêtes par seconde
  • Métriques Cloud Monitoring

L'autoscaler collecte en permanence les informations d'utilisation en fonction de la métrique d'utilisation sélectionnée, compare l'utilisation réelle à l'utilisation cible souhaitée et détermine s'il faut supprimer des instances (scaling vertical) du groupe ou en ajouter (scaling horizontal).

Le niveau d'utilisation cible est le niveau auquel vous souhaitez maintenir vos instances de machine virtuelle (VM). Par exemple, si vous faites évoluer vos instances en fonction de l'utilisation du processeur, vous pouvez définir votre niveau d'utilisation cible à 75 % pour que l'autoscaler maintienne l'utilisation du processeur du groupe d'instances spécifié à 75 % ou presque. Le niveau d'utilisation de chaque métrique est interprété différemment selon la règle d'autoscaling.

Pour en savoir plus sur le scaling basé sur les métriques d'utilisation cible, consultez les pages suivantes :

Programmations

Vous pouvez utiliser l'autoscaling basé sur les planifications pour allouer la capacité par rapport aux charges attendues. Vous pouvez définir jusqu'à 128 planifications de scaling par groupe d'instances. Pour chaque planification de scaling, spécifiez les éléments suivants :

  • Capacité : nombre minimal d'instances de VM requis
  • Planification : heure de début, durée et récurrence (par exemple, une fois, quotidienne, hebdomadaire ou mensuelle).

Chaque planification de scaling devient active à l'heure de début définie, pendant la durée configurée. Pendant ce temps, l'autoscaler procède au scaling du groupe, afin qu'il contienne au moins autant d'instances que le nombre défini par la planification de scaling.

Pour plus d'informations, consultez la section Scaling basé sur les planifications.

Intervalle entre chaque période d'autoscaling

L'intervalle entre chaque période d'autoscaling est également appelé période d'initialisation de l'application. Lorsqu'une application est en cours d'initialisation sur une instance, les données d'utilisation de l'instance peuvent ne pas refléter les circonstances normales. L'autoscaler utilise donc l'intervalle entre chaque période de scaling pour prendre des décisions de scaling de différentes manières :

  • Pour les décisions de scaling vertical, l'autoscaler prend en compte les données d'utilisation de toutes les instances, même celles qui sont encore dans son intervalle entre chaque période de scaling. L'autoscaler recommande de supprimer les instances si l'utilisation moyenne de toutes les instances est inférieure à l'utilisation cible.
  • Pour les décisions de scaling horizontal, l'autoscaler ignore les données d'utilisation des instances pendant l'intervalle entre chaque période de scaling.
  • Si vous activez le mode prédictif, l'intervalle indique à l'autoscaler prédictif qu'il doit anticiper davantage le scaling horizontal en prévision de la charge attendue afin que les applications soient initialisées à l'arrivée de la charge. Par exemple, si vous définissez l'intervalle sur 300 secondes, l'autoscaler prédictif crée des VM 5 minutes avant la charge prévue.

Spécifiez un intervalle pour indiquer la durée d'initialisation des applications sur votre instance. Par défaut, l'intervalle séparant les périodes d'autoscaling est de 60 secondes.

Les délais d'initialisation réels peuvent varier en fonction de plusieurs facteurs. Nous vous recommandons de tester le temps nécessaire à l'initialisation de votre application. Pour ce faire, créez une instance et mesurez la durée du processus de démarrage à partir du moment où l'instance passe à l'état RUNNING jusqu'à ce qu'elle soit prête.

Si vous définissez une période d'attente entre chaque autoscaling nettement plus longue que le temps d'initialisation d'une instance, l'autoscaler risque d'ignorer les données d'utilisation légitimes et de sous-estimer la taille requise pour le groupe. Cela peut retarder le scaling horizontal.

Période de stabilisation

Pour effectuer le scaling, l'autoscaler calcule la taille cible recommandée du groupe en fonction de la charge maximale au cours des 10 dernières minutes. On parle pour ces 10 dernières minutes de période de stabilisation.

Cette période de stabilisation permet à l'autoscaler de s'assurer que la taille recommandée pour votre groupe d'instances géré est toujours suffisante pour diffuser la charge maximale constatée au cours des 10 dernières minutes.

Cette période de stabilisation de 10 minutes peut être perçue comme un délai de scaling, mais il s'agit en réalité d'une fonction d'autoscaling intégrée. Le délai permet de vérifier que la nouvelle taille du groupe est suffisante pour gérer la charge maximale des 10 dernières minutes.

Mode autoscaling

Si vous devez procéder à une investigation ou configurer votre groupe sans que les opérations de l'autoscaler n'interfèrent avec le groupe, vous pouvez désactiver ou restreindre les activités d'autoscaling temporairement. La configuration de l'autoscaler est conservée même lorsqu'il est désactivé ou qu'une restriction est appliquée. Ensuite, toutes les activités d'autoscaling reprennent lorsque vous le réactivez ou que vous levez la restriction.

Autoscaling prédictif

Si vous activez l'autoscaling prédictif pour optimiser la disponibilité de votre groupe d'instances géré, l'autoscaler prédit la charge future en fonction des données de l'historique et procède au scaling horizontal d'un MIG avant la charge prévue afin que les nouvelles instances soient prêtes à diffuser à l'arrivée de la charge.

L'autoscaling prédictif fonctionne mieux si votre charge de travail répond aux critères suivants :

  • L'initialisation de votre application prend beaucoup de temps (si vous configurez par exemple un intervalle entre chaque période d'autoscaling de plus de deux minutes).
  • Votre charge de travail varie de manière prévisible en fonction de cycles quotidiens ou hebdomadaires.

Pour plus d'informations, consultez la section Utiliser l'autoscaling prédictif.

Contrôles de scaling vertical

Si l'initialisation de vos charges de travail prend plusieurs minutes (par exemple à cause de tâches d'installation de longue durée), vous pouvez configurer les contrôles de scaling pour réduire le risque de latence des réponses et de panne dû à des événements de scaling vertical brusques. Plus précisément, si vous prévoyez la survenue de pics de charge peu après les baisses de charge, vous pouvez limiter le taux de scaling vertical pour empêcher l'autoscaling de supprimer plus d'instances de VM d'un groupe d'instances géré que votre charge de travail ne peut tolérer.

Ainsi, vous n'avez pas à configurer les contrôles de scaling vertical si votre application s'initialise suffisamment rapidement pour détecter les pics de charge lors du scaling horizontal.

Pour configurer des contrôles de scaling vertical, définissez les propriétés suivantes dans votre règle d'autoscaling.

  • Réduction maximale autorisée. Nombre d'instances de VM que votre charge de travail peut se permettre de perdre (par rapport à sa taille maximale) pendant la fenêtre temporelle de fin spécifiée. Définissez ce paramètre pour limiter le scaling vertical de votre groupe de façon à pouvoir continuer de diffuser le pic de charge attendu jusqu'à ce que d'autres instances se joignent à la diffusion. Plus la valeur que vous définissez pour la réduction maximale autorisée est basse, plus il faut de temps pour effectuer le scaling du groupe.

  • Fenêtre temporelle de fin. Historique dans lequel l'autoscaler surveille la taille maximale nécessaire à votre charge de travail. L'autoscaler ne réduit pas le nombre d'instances en dessous de la valeur de réduction maximale autorisée déduite de la taille maximale enregistrée au cours de cette période. Vous pouvez vous servir de ce paramètre pour définir la durée d'attente de l'autoscaler avant de supprimer des instances, tel que défini par la réduction maximale autorisée. Avec une fenêtre temporelle plus longue, l'autoscaler prend en compte davantage de pics dans l'historique, faisant que le scaling vertical s'effectue de manière plus prudente et plus stable.

Pour en savoir plus, consultez les pages Configurer des contrôles de scaling vertical et Comprendre les décisions de l'autoscaler.

La taille de groupe recommandée correspond au nombre de VM recommandé par l'autoscaler que le groupe d'instances géré devrait maintenir, calculé en fonction des pics de charge maximale constatés au cours des 10 dernières minutes. Ces 10 dernières minutes constituent ce que l'on appelle la "période de stabilisation" . La taille recommandée est recalculée en permanence. Si vous définissez une règle d'autoscaling avec des contrôles de scaling vertical, la taille recommandée sera alors limitée par les contrôles de scaling vertical.

Tarifs

La configuration d'une règle d'autoscaling est gratuite. L'autoscaler ajoute ou supprime dynamiquement des instances de VM. Ainsi, seules les ressources utilisées par votre groupe d'instances géré sont facturées. Vous pouvez contrôler le coût des ressources en configurant le nombre minimal et maximal d'instances dans la règle d'autoscaling. Pour plus d'informations sur la tarification de Compute Engine, consultez la page Tarifs.

Étape suivante

  1. Découvrez comment créer un groupe d'instances géré si vous n'en disposez pas.
  2. Créez un autoscaler qui effectue le scaling en fonction des éléments suivants :

  3. Gérez votre autoscaler, par exemple pour obtenir des informations le concernant, configurer des contrôles de scaling vertical ou y appliquer des restrictions temporaires.