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 MIG lorsque la charge augmente (scaling horizontal) et à en supprimer lorsque le nombre de VM nécessaires diminue (scaling vertical).

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 la console Google Cloud, accédez à la page IAM.

    Accéder à IAM

  2. Cliquez sur Accorder l'accès.

  3. Dans le champ Nouvelles entités principales, 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.

Une règle d'autoscaling doit toujours comporter au moins un signal de scaling. Lorsque vous activez l'autoscaling dans un MIG, l'autoscaler ajoute par défaut un signal d'utilisation du processeur. Vous pouvez modifier ce signal par défaut, ou supprimer et ajouter d'autres signaux dans la règle.

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
  • 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.

Période d'initialisation

La période d'initialisation, anciennement appelée "intervalle entre chaque autoscaling", correspond à la durée nécessaire à l'initialisation des applications sur vos instances de VM. 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 la période d'initialisation pour prendre des décisions de scaling des manières suivantes :

  • 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 en période d'initialisation. 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 qui sont encore en période d'initialisation.
  • Si vous activez le mode prédictif, la période d'initialisation 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 la période d'initialisation sur 300 secondes, l'autoscaler prédictif crée des VM 5 minutes avant la charge prévue.

Par défaut, la période d'initialisation 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 valeur de période d'initialisation qui est nettement plus longue que le temps d'initialisation d'une instance, votre autoscaler pourrait ignorer les données d'utilisation légitimes et sous-estimer la taille requise pour le groupe. Cela peut retarder le scaling horizontal.

Période de stabilisation

Les signaux d'autoscaling tels que l'utilisation du processeur ne sont pas très stables et peuvent changer rapidement. Au fur et à mesure que la charge augmente et diminue, l'autoscaler doit stabiliser le signal pour éviter la suppression et la création continues de la VM. L'autoscaler stabilise un signal en conservant une capacité de VM suffisante afin de diffuser la charge maximale qui est observée pendant la période de stabilisation.

La période de stabilisation est égale à 10 minutes ou à la période d'initialisation que vous avez définie, selon la durée la plus longue. La période de stabilisation n'est utilisée que pour les décisions de scaling vertical lorsque l'autoscaler doit supprimer des VM.

Lorsque la charge diminue, l'autoscaler ne supprime pas immédiatement les VM. L'autoscaler continue de surveiller la capacité nécessaire pendant la période de stabilisation et ne supprime les VM que lorsque la capacité est suffisante pour répondre à la charge maximale. Cela peut être retardé, mais il s'agit d'une fonction d'autoscaling intégrée.

Si l'initialisation de votre application prend plus de 10 minutes sur une nouvelle VM, l'autoscaler utilise la période d'initialisation au lieu des 10 minutes de stabilisation par défaut pour attendre que la VM puisse être supprimée. Cela garantit que la décision de suppression de la VM par l'autoscaler prend en compte le temps nécessaire à la restauration de la capacité de diffusion.

Lorsque la charge augmente, l'autoscaler n'utilise pas la période de stabilisation et crée immédiatement autant de VM que nécessaire pour répondre à la demande.

Autoscaling mode

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 une période d'initialisation de plus de deux minutes).
  • Votre charge de travail varie de manière prévisible en fonction de cycles quotidiens ou hebdomadaires.

Pour en savoir plus, consultez la page Scaling basé sur les prédictions.

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.

Limites

Que se passe-t-il pendant l'autoréparation ?

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 MIG tente de recréer l'instance. Lorsqu'une instance est recréée par le MIG, le nombre d'instances en cours d'exécution dans le groupe peut être inférieur au minimum spécifié pour le groupe (autoscalingPolicy.minNumReplicas).

Tarification

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.

Étapes suivantes

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

  4. 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.