Effectuer un scaling basé sur des prédictions


Vous pouvez configurer l'autoscaling pour un groupe d'instances géré pour ajouter ou supprimer automatiquement des instances de machine virtuelle (VM) en fonction de l'augmentation ou de la diminution de charge. Toutefois, si l'initialisation de votre application prend quelques minutes ou plus, l'ajout d'instances en réponse aux modifications en temps réel risque de ne pas augmenter suffisamment vite la capacité de l'application. Par exemple, en cas d'augmentation importante de la charge (par exemple, lorsque les utilisateurs commencent à travailler le matin), certains utilisateurs risquent de subir des retards lors de l'initialisation de l'application sur de nouvelles instances.

Vous pouvez utiliser l'autoscaling prédictif afin d'améliorer les temps de réponse des applications dont les délais d'initialisation sont longs et dont les charges de travail varient de manière prévisible en fonction de cycles quotidiens ou hebdomadaires.

Lorsque vous activez l'autoscaling prédictif, Compute Engine prévoit la charge future en fonction de l'historique de votre MIG, et effectue un scaling horizontal du MIG avant la charge prévue afin que les nouvelles instances soient prêtes à être diffusées lorsque la charge arrive. Sans autoscaling prédictif, un autoscaler ne peut effectuer un scaling horizontal d'un groupe que de manière réactive, en fonction des variations de charge observées en temps réel. Lorsque l'autoscaling prédictif est activé, l'autoscaler utilise les données en temps réel ainsi que les données historiques pour couvrir la charge actuelle et prévue. Pour en savoir plus, consultez les pages Fonctionnement de l'autoscaling prédictif et Vérifier si l'autoscaling prédictif est adapté à votre charge de travail.

Avant de commencer

  • Si vous voulez utiliser les exemples de ligne de commande de ce guide, installez Google Cloud CLI ou lancez Cloud Shell.
  • Découvrez les principes de base de l'autoscaler.
  • 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 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 comme suit :

    Sélectionnez l'onglet correspondant à la façon dont vous prévoyez d'utiliser les exemples de cette page :

    Console

    Lorsque vous utilisez la console Google Cloud pour accéder aux services et aux API Google Cloud, vous n'avez pas besoin de configurer l'authentification.

    gcloud

    1. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    2. Définissez une région et une zone par défaut.

    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

Tarifs

L'autoscaling prédictif est gratuit. Toutefois, si vous activez l'autoscaling prédictif pour optimiser la disponibilité, vous payez les ressources Compute Engine utilisées par votre MIG.

Limites

  • L'autoscaling prédictif ne fonctionne qu'avec la métrique de scaling "Utilisation du processeur". Les métriques Cloud Load Balancing ou Cloud Monitoring ne sont pas compatibles.
  • Compute Engine nécessite trois jours d'historique d'autoscaling basé sur le processeur pour pouvoir générer des prédictions.
  • Les prédictions sont basées sur des modèles de charge quotidiens et hebdomadaires. Compute Engine ne prédit pas les événements mensuels, annuels ou ponctuels. Par ailleurs, il ne prédit pas les modèles de charge de moins de 10 minutes. Vous pouvez utiliser l'autoscaling basé sur les planifications pour demander davantage de capacité pour des modèles de charge ponctuels ou autres.

Charges de travail appropriées

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.

Si l'initialisation de votre service prend beaucoup de temps, vos utilisateurs peuvent observer une latence du service après un événement de scaling horizontal, lorsque les nouvelles VM sont provisionnées mais pas encore diffusées. L'autoscaling prédictif prend en compte le temps d'initialisation de votre application et effectue un scaling horizontal afin d'anticiper l'augmentation prévue de l'utilisation, ce qui permet de garantir que le nombre d'instances de diffusion disponibles est suffisant pour l'utilisation cible.

Pour vérifier comment l'autoscaling prédictif peut affecter votre groupe, consultez la section Vérifier si l'autoscaling prédictif est adapté à votre charge de travail.

Activer et désactiver l'autoscaling prédictif

Vous pouvez activer l'autoscaling prédictif lorsque vous effectuez un scaling en fonction de l'utilisation du processeur. Pour en savoir plus sur la configuration de l'autoscaling basé sur le processeur, consultez la section Scaling basé sur l'utilisation du processeur.

Si votre MIG n'a pas d'historique d'autoscaler, il peut s'écouler trois jours avant que l'algorithme prédictif affecte l'autoscaler. Pendant ce temps, le scaling du groupe est basé sur des données en temps réel uniquement. Après trois jours, le groupe commence à évoluer à l'aide des prédictions. Au fur et à mesure de la collecte de la charge historique, l'autoscaler prédictif comprend mieux vos modèles de charge et ses prévisions s'améliorent. Compute Engine utilise jusqu'à trois semaines d'historique de charge de votre MIG pour alimenter le modèle de machine learning.

Console

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

    Accéder à la page "Groupes d'instances"

  2. Dans la liste, cliquez sur le nom d'un MIG existant pour ouvrir la page de présentation du groupe.

  3. Cliquez sur Modifier.

  4. Si aucune configuration d'autoscaling n'existe, cliquez sur Configurer l'autoscaling sous Autoscaling.

  5. Sous Mode autoscaling, sélectionnez Activé : ajouter et supprimer des instances au groupe pour activer l'autoscaling.

  6. Spécifiez le nombre minimal et maximal d'instances que l'autoscaler doit créer dans ce groupe.

  7. Dans la section Règles d'autoscaling, si une métrique d'utilisation du processeur n'existe pas encore, ajoutez-en une :

    1. Cliquez sur Ajouter une métrique.
    2. Sous Type de métrique, sélectionnez Utilisation du processeur.
    3. Saisissez l'utilisation du processeur cible souhaitée. Cette valeur est traitée comme un pourcentage. Par exemple, pour une utilisation du processeur à 75 %, saisissez 75.
    4. Sous Autoscaling prédictif, sélectionnez Optimiser pour la disponibilité pour activer l'autoscaling prédictif.
      • Si vous souhaitez désactiver l'algorithme prédictif et utiliser uniquement l'autoscaler en temps réel, vous pouvez également sélectionner Désactivé.
    5. Cliquez sur OK.
  8. Sous Période d'initialisation, spécifiez le temps nécessaire à l'initialisation de votre application sur une nouvelle instance. Ce paramètre indique à l'autoscaler prédictif qu'il doit effectuer un scaling horizontal plus important en prévision de la charge attendue afin que les applications soient initialisées à l'arrivée de la charge.

  9. Cliquez sur Enregistrer.

gcloud

Lorsque vous définissez ou mettez à jour l'autoscaler d'un MIG, incluez l'option --cpu-utilization-predictive-method avec l'une des valeurs suivantes :

  • optimize-availability : pour activer l'algorithme prédictif
  • none (valeur par défaut) : pour désactiver l'algorithme prédictif

Si l'autoscaling basé sur le processeur n'est pas encore activé pour le groupe, vous devez l'activer. Vous pouvez utiliser la commande set-autoscaling pour configurer entièrement la règle d'autoscaling d'un groupe. Par exemple, la commande suivante montre comment configurer l'autoscaling avec les paramètres suivants:

  • Autoscaling prédictif activé.
  • Utilisation du processeur ciblée à 75 %
  • Nombre maximal d'instances défini sur 20
  • Une période d'initialisation (--cool-down-period) définie sur cinq minutes. Ce paramètre indique à l'autoscaler prédictif qu'il doit effectuer un scaling horizontal 5 minutes avant l'arrivée de la charge attendue afin que les applications soient initialisées à l'arrivée de la charge.
gcloud compute instance-groups managed set-autoscaling MIG_NAME \
  --cpu-utilization-predictive-method optimize-availability \
  --target-cpu-utilization 0.75 \
  --max-num-replicas 20 \
  --cool-down-period 300

Si l'autoscaling basé sur le processeur est déjà activé pour le groupe, utilisez la commande update-autoscaling pour activer l'algorithme prédictif :

gcloud compute instance-groups managed update-autoscaling MIG_NAME \
  --cpu-utilization-predictive-method=optimize-availability

REST

Lorsque vous créez ou mettez à jour un autoscaler, incluez le champ predictiveMethod dans le corps de la requête avec l'une des valeurs suivantes :

  • OPTIMIZE_AVAILABILITY : pour activer l'algorithme prédictif
  • NONE (valeur par défaut) : pour désactiver l'algorithme prédictif

Si le groupe ne dispose d'aucune configuration d'autoscaling, procédez comme suit :

Si le groupe dispose déjà d'une configuration d'autoscaling, procédez comme suit :

Si l'autoscaling basé sur le processeur n'est pas encore activé pour le groupe, vous devez l'activer.

Par exemple, la requête suivante corrige une ressource d'autoscaler existante afin d'activer l'autoscaling basé sur le processeur avec les paramètres suivants :

  • Autoscaling prédictif activé.
  • Utilisation du processeur ciblée à 75 %
  • Nombre maximal d'instances défini sur 20
  • Une période d'initialisation (coolDownPeriodSec) définie sur cinq minutes. Ce paramètre indique à l'autoscaler prédictif qu'il doit effectuer un scaling horizontal 5 minutes avant l'arrivée de la charge attendue afin que les applications soient initialisées à l'arrivée de la charge.
PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/autoscalers/

{
  "name": "AUTOSCALER_NAME",
  "target": "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/MIG_NAME",
  "autoscalingPolicy": {
    "cpuUtilization": {
       "utilizationTarget": 0.75,
       "predictiveMethod": "OPTIMIZE_AVAILABILITY"
     },
    "maxNumReplicas": 20,
    "coolDownPeriodSec": 300
  }
}

Vérifier si l'autoscaler prédictif est activé

Pour afficher la configuration d'autoscaling actuelle d'un MIG, consultez la section Obtenir les propriétés d'un MIG.

Configurer l'autoscaling prédictif

Pour savoir comment configurer l'utilisation cible, le nombre minimal et maximal d'instances et la période d'initialisation, consultez la section Scaling basé sur l'utilisation du processeur. Lorsque vous configurez ces options, l'autoscaler prédictif s'efforce de maintenir toutes les instances au niveau d'utilisation cible que vous avez défini, dans les limites minimale et maximale du groupe, de la même façon qu'un autoscaler en temps réel.

Utilisez le paramètre de période d'initialisation pour prendre en compte le temps nécessaire à l'initialisation de votre application. Cela permet à l'autoscaler d'anticiper l'augmentation prévue de la charge, car il sait combien de temps à l'avance il doit démarrer de nouvelles instances afin que votre application soit prête à les diffuser à l'arrivée de la charge.

Vérifier si l'autoscaling prédictif est adapté à votre charge de travail

Pour voir si l'autoscaling prédictif peut améliorer la disponibilité de votre application, vous pouvez comparer les performances de la configuration actuelle d'autoscaling basée sur les processeurs de votre groupe avec l'autoscaling prédictif. Vous n'avez pas besoin d'activer l'autoscaling prédictif pour effectuer la comparaison.

Pour en savoir plus sur les charges de travail adaptées à l'autoscaling prédictif, consultez la section Charges de travail adaptées.

Vérifier les surcharges

Votre MIG avec autoscaling est surchargé lorsque son utilisation de processeur moyenne dépasse votre cible. Pour vérifier si la configuration de l'autoscaling a entraîné la surcharge des VM au cours des sept derniers jours, et pour vérifier si l'autoscaling prédictif peut permettre de réduire les surcharges, procédez comme suit :

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

    Accéder à la page "Groupes d'instances"

  2. Cliquez sur un MIG existant pour lequel l'autoscaling basé sur le processeur est configuré. La page de présentation du groupe s'affiche.

  3. Cliquez sur Modifier.

  4. Dans la section Autoscaling, sous Métriques d'autoscaling, développez la section Utilisation du processeur puis cliquez sur Vérifier si l'autoscaling prédictif peut optimiser la disponibilité.

  5. Sur la base des données des sept derniers jours, le tableau indique le nombre de VM utilisées par jour et le nombre de VM surchargées chaque jour pour les lignes suivantes :

    • Configuration d'autoscaling actuelle : affiche les performances de l'autoscaler en fonction de sa configuration au cours des sept derniers jours.
    • Avec l'autoscaling prédictif défini sur "Optimiser pour la disponibilité" : affiche les performances de l'autoscaler avec l'autoscaling prédictif activé au cours des sept derniers jours.

Vous pouvez utiliser le "nombre de VM utilisées par jour" pour représenter les coûts. Par exemple, pour réduire le nombre quotidien de VM surchargées, l'autoscaler prédictif peut créer des VM plus tôt et les exécuter plus longtemps, ce qui génère des frais supplémentaires.

Surveiller et simuler un autoscaling prédictif

Vous pouvez visualiser l'historique de la taille de votre groupe à l'aide de Cloud Monitoring. Le graphique de surveillance montre comment votre configuration d'autoscaling a fait évoluer votre groupe au fil du temps. Il montre également comment l'autoscaling prédictif effectuerait le scaling de votre groupe s'il était activé.

Pour les groupes pour lesquels l'autoscaling prédictif est désactivé, vous pouvez utiliser cet outil pour simuler l'autoscaling prédictif avant de l'activer.

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

    Accéder à la page "Groupes d'instances"

  2. Cliquez sur un MIG existant pour lequel l'autoscaling basé sur le processeur est configuré. La page de présentation du groupe s'affiche.

  3. Cliquez sur Monitoring (Surveillance) pour afficher les graphiques associés au groupe.

  4. Dans le premier graphique, cliquez sur son titre et sélectionnez Autoscaling prédictif. Cette vue indique la taille réelle du groupe ainsi que sa taille prédite.

  5. Vous pouvez sélectionner une période différente pour voir plus d'historique, ou effectuer un zoom avant sur une période pendant laquelle la demande a augmenté pour voir l'impact de l'autoscaling prédictif sur la taille du groupe avant l'arrivée de la charge prévue.

Fonctionnement de l'autoscaling prédictif

L'autoscaler prédictif prédit votre métrique de scaling en fonction des tendances historiques de la métrique. Les prévisions sont recalculées toutes les deux ou trois minutes, ce qui permet à l'autoscaler d'adapter rapidement ses prévisions aux dernières variations de charge en date. L'autoscaler prédictif a besoin d'au minimum trois jours d'historique pour déterminer un modèle d'utilisation de service représentatif avant de pouvoir fournir des prédictions. Compute Engine utilise jusqu'à trois semaines d'historique de charge de votre MIG pour alimenter le modèle de machine learning.

L'autoscaler prédictif calcule le nombre de VM nécessaires pour atteindre votre utilisation cible en fonction de nombreux facteurs, dont les suivants :

  • Valeur future prévue de la métrique de scaling
  • La valeur actuelle de la métrique de scaling
  • Confiance dans les tendances passées, y compris la variabilité passée de la métrique de scaling
  • Période d'initialisation de l'application configurée, également appelée période d'initialisation

Sur la base de ces facteurs, l'autoscaler prédictif effectue un scaling horizontal de votre groupe en fonction de la demande attendue.

Comparatif des VM de diffusion avec ou sans autoscaling prédictif.

Figure 1 : Comparatif des VM de diffusion avec ou sans autoscaling prédictif.

Dans la figure 1, la ligne bleue représente une demande croissante pour les VM. La ligne noire indique la réponse de l'autoscaler : d'autres VM sont ajoutées. Toutefois, pour les applications dont les délais d'initialisation sont longs, la ligne grise indique que les VM ajoutées ont besoin d'un délai supplémentaire pour pouvoir effectuer la diffusion, ce qui peut entraîner un nombre de VM de diffusion insuffisant pour répondre à la demande. Lorsque l'autoscaling prédictif est activé, l'augmentation attendue de la demande et le long délai d'initialisation de l'application sont pris en compte : l'autoscaler répond en ajoutant des VM plus tôt afin qu'il y ait un nombre suffisant de VM de diffusion. Vous pouvez configurer combien de temps à l'avance de nouvelles instances doivent être ajoutés en définissant une période d'initialisation.

Données d'utilisation en temps réel

L'autoscaler prédictif ne peut pas déterminer un modèle pour toutes les évolutions futures de l'utilisation en fonction des données de l'historique. Il fonctionne donc aussi parfaitement avec les données en temps réel. Par exemple, un événement d'actualité inattendu peut contribuer à un pic d'utilisation qui n'aurait pas pu être prévu uniquement en fonction de l'historique. Pour gérer ces modifications imprévisibles de la charge, l'autoscaler prédictif répond comme suit:

  • Il adapte ses prédictions : les prédictions sont recalculées en permanence, en quelques minutes, et elles s'ajustent en conséquence pour intégrer les données les plus récentes. Le moment exact où un nouveau modèle est ajusté dépend, entre autres, de la reproductibilité de ce nouveau modèle et de l'importance de la différence entre le nouveau modèle et les prédictions antérieures.
  • Il utilise des données en temps réel: le nombre d'instances recommandé par l'autoscaler, basé sur les valeurs en temps réel de la métrique, est toujours suffisant pour atteindre l'objectif d'utilisation du groupe. Si la valeur actuelle d'un signal en temps réel est supérieure à la prédiction, la valeur actuelle du signal est prioritaire sur la prédiction. Par conséquent, les MIG pour lesquels l'autoscaling prédictif est activé ont toujours plus de disponibilité que les MIG qui ne l'ont pas.

Deux graphiques illustrent la manière dont les prédictions s'adaptent à l'utilisation réelle du processeur.

Figure 2. Deux graphiques illustrent la manière dont les prédictions s'adaptent à l'utilisation réelle du processeur.

Dans la figure 2, la ligne jaune en pointillé indique la prédiction à t1. Cependant, l'utilisation réelle du processeur, comme indiqué par la ligne bleue continue, est différente de celle prédite. Sur le graphique de gauche, l'utilisation réelle du processeur est plus élevée que prévu. Sur le graphique de droite, l'utilisation réelle du processeur est inférieure à celle prévue. La ligne bleue en pointillés affiche la prédiction ajustée.

Pics courts et imprévisibles

Les pics courts imprévisibles sont traités en temps réel. L'autoscaler crée au moins autant d'instances que nécessaire pour maintenir l'utilisation à la cible configurée, en fonction de la valeur réelle actuelle de la métrique. Cependant, ces instances ne sont pas créées à l'avance, comme illustré dans la figure suivante.

Un pic court et imprévisible empêche l'autoscaler de réagir en temps réel.

Figure 3. Un pic court et imprévisible empêche l'autoscaler de réagir en temps réel.

Dans la figure 3, la ligne bleue continue indique l'utilisation réelle du processeur. Un pic inattendu d'utilisation du processeur n'a pas pu être prédit. Étant donné que l'autoscaler surveille toujours les données en temps réel, il ajoute des instances pour gérer les pics. La ligne noire continue illustre l'ajout réactif de VM de l'autoscaler en réponse au pic. La ligne grise fixe indique le nombre de VM de diffusion. La ligne grise est en retard par rapport à la ligne noire en raison du temps d'initialisation de l'application. Dans ce scénario, le groupe est temporairement surchargé.

Baisses soudaines

Un autre type de changement imprévisible d'utilisation est une baisse soudaine, par exemple, une baisse due à une défaillance de une partie de la pile d'application. Dans ce cas, le nombre d'instances suit initialement la prévision. Cependant, au fil du temps, la prévision s'ajuste à l'utilisation inférieure aux prévisions, ce qui entraîne un scaling vertical. La chronologie exacte de cet ajustement dépend de nombreux facteurs, tels que la fréquence de ce type de changement dans le passé, la durée de la baisse et la profondeur de la baisse.

Une baisse soudaine entraîne une modification des prévisions de l'autoscaler prédictif.

Figure 4. Une baisse soudaine entraîne une modification des prévisions de l'autoscaler prédictif.

Dans la figure 4, la ligne jaune en pointillé indique la prédiction à t1. Toutefois, l'utilisation réelle du processeur, comme indiquée par la ligne bleue pleine, est inférieure à celle prédite. La ligne bleue en pointillé indique la prédiction mise à jour, qui a été ajustée automatiquement après avoir observé l'utilisation inférieure à la prévision. L'autoscaler supprime les instances conformément à la période de stabilisation standard.

Données de l'historique

L'autoscaler prédictif a besoin d'au moins trois jours de charge historique pour commencer les prévisions. Si vous disposez d'un nouveau MIG sans données historiques, Compute Engine adapte votre groupe de manière réactive à l'aide de données en temps réel jusqu'à ce que suffisamment de données historiques soient disponibles. Au bout de trois jours, à mesure que Compute Engine collecte des données d'utilisation supplémentaires, les prédictions s'améliorent.

Si vous mettez à jour votre application en créant un MIG et en supprimant l'ancien (par exemple, dans le cadre d'un déploiement bleu-vert), votre nouveau MIG a besoin de trois jours de données d'historique pour que l'autoscaling prédictif puisse commencer à générer des prévisions. Si vous souhaitez conserver l'historique de charge des MIG afin que les prévisions puissent être lancées immédiatement lorsque vous créez un MIG, contactez-nous afin que nous vous expliquions comment rejoindre un aperçu privé.

Étape suivante