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 à un scaling automatique en fonction de la charge mesurée.

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 ne fonctionne qu'avec les groupes d'instances gérés (MIG) zonaux et régionaux. 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.
    • 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.
  • 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

  • Un autoscaler peut prendre des décisions de scaling en fonction de plusieurs métriques, mais il ne peut gérer qu'une seule règle par type de métrique, sauf dans le cas des métriques Cloud Monitoring. Un autoscaler peut en effet gérer jusqu'à cinq règles basées sur les métriques Monitoring. L'autoscaler calcule le nombre de machines virtuelles recommandé pour chaque règle, puis procède au scaling en fonction de la règle 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, puis 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.

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 géré. 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 l'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.

Stratégies d'autoscaling

Pour créer un autoscaler, vous devez spécifier une ou plusieurs règles d'autoscaling. Les règles d'autoscaling permettent de configurer les entrées utilisées par l'autoscaler pour déterminer comment procéder au scaling de votre groupe d'instances. Chaque règle d'autoscaling peut évoluer en fonction d'une métrique d'utilisation cible ou d'une planification spécifiée.

Cette section présente les concepts liés aux différentes catégories de règles d'autoscaling. Pour obtenir un résumé de toutes les règles, consultez la section Règles. Pour en savoir plus sur chaque règle, consultez les pages suivantes :

Métriques d'utilisation cible

Une règle d'autoscaling basée sur les métriques évolue en fonction d'une métrique qui reflète la charge et la capacité du groupe d'instances. Vous pouvez procéder au scaling de votre groupe d'instances à l'aide d'une ou plusieurs des règles suivantes :

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

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.

Intervalle entre chaque période d'autoscaling

Lorsqu'une instance est en cours d'initialisation, les informations concernant son utilisation peuvent ne pas correspondre aux circonstances normales. Par conséquent, ces informations peuvent ne pas être fiables pour les décisions de l'autoscaler. Il est donc préférable de ne pas les prendre en compte. Spécifiez un intervalle pour que vos instances puissent finir de s'initialiser avant que l'autoscaler ne commence à collecter leurs informations. 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.

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 cible recommandée est recalculée en permanence. Si vous définissez une règle d'autoscaling avec des contrôles de scaling vertical, la valeur de recommendedSize sera 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.