Utiliser l'autoscaling pour des applications hautement évolutives

Ce tutoriel explique comment utiliser l'autoscaling afin d'ajuster automatiquement le nombre d'instances de VM qui hébergent votre application, permettant ainsi à cette dernière d'être adaptée à différentes quantités de trafic.

Pour utiliser l'autoscaling, hébergez votre application sur un groupe d'instances géré. Un groupe d'instances géré est composé d'une collection d'instances qui exécutent toutes la même application et peuvent être gérées en tant qu'entité unique. Lorsque l'autoscaling est activé pour un groupe d'instance géré, le nombre de VM dans le groupe d'instances augmente automatiquement (scaling à la hausse) ou diminue (scaling à la baisse) en fonction de la valeur cible que vous avez spécifiée pour votre règle d'autoscaling.

Ce tutoriel inclut les étapes détaillées permettant de lancer une application Web sur un groupe d'instances géré, configurer l'autoscaling, configurer l'accès au réseau et observer l'autoscaling en simulant des pics et des baisses de trafic. En fonction de vos connaissances sur ces fonctionnalités, il vous faudra environ 20 minutes pour terminer ce tutoriel.

Objectifs

  • Lancer une application Web de démonstration sur un groupe d'instances géré.
  • Observer les effets de l'autoscaling en simulant des pics et des baisses de trafic.

Coûts

Ce tutoriel fait appel à des composants payants de GCP tels que :

  • Compute Engine

Obtenez une estimation des coûts en fonction de votre utilisation prévue à l'aide du simulateur de coût. Les nouveaux utilisateurs de GCP peuvent bénéficier d'un essai gratuit.

Avant de commencer

  1. Connectez-vous à votre compte Google.

    Si vous n'en possédez pas déjà un, vous devez en créer un.

  2. Sélectionnez ou créez un projet Google Cloud Platform.

    Accéder à la page "Gérer les ressources"

  3. Assurez-vous que la facturation est activée pour votre projet Google Cloud Platform.

    Découvrir comment activer la facturation

Architecture de l'application

L'application inclut les composants Compute Engine ci-dessous.

Lancer l'application Web

Ce tutoriel utilise une application Web stockée sur GitHub. Si vous souhaitez en savoir plus sur la mise en œuvre de l'application, consultez la documentation sur le dépôt GitHub de Google Cloud Platform.

Lancez l'application Web sur chaque VM d'un groupe d'instances géré en incluant un script de démarrage dans un modèle d'instance. Pour autoriser le trafic HTTP vers l'application Web, créez une règle de pare-feu.

Créer une règle de pare-feu

Créez une règle de pare-feu pour autoriser le trafic HTTP vers l'application Web. Procédez comme suit :

  1. Accédez à la page Pare-feu dans la console GCP.
    Accéder à la page "Pare-feu"
  2. Cliquez sur Créer une règle de pare-feu.
  3. Sous Nom, saisissez default-allow-http.
  4. Définissez Réseau sur default.
  5. Définissez Cibles sur Specified target tags.
  6. Sous Tags cibles, saisissez http-server.
  7. Définissez Filtre source sur IP ranges.
  8. Sous Plages d'adresses IP sources, saisissez 0.0.0.0/0 pour autoriser l'accès pour toutes les adresses IP.
  9. Sous Ports et protocoles, sélectionnez Protocoles et ports spécifiés.
    Puis, sélectionnez tcp et saisissez 80 pour autoriser l'accès du trafic HTTP.
  10. Cliquez sur Créer.

Créer un modèle d'instance

Créez un modèle d'instance pour lancer l'application Web de démonstration au démarrage. Procédez comme suit :

  1. Accédez à la page Modèles d'instances dans la console GCP.
    Accéder à la page "Modèles d'instance"
  2. Cliquez sur Créer un modèle d'instance.
  3. Sous Nom, saisissez autoscaling-web-app-template.
  4. Sous Configuration de la machine, définissez le type de machine sur n1-standard-1.
  5. Sous Disque de démarrage, définissez l’image sur Debian GNU/Linux 9 (stretch).
  6. Sous Pare-feu, cochez la case Autoriser le trafic HTTP. Cette action attribue le tag de mise en réseau http-server à chaque instance créée à partir de ce modèle.
  7. Cliquez sur Gestion, sécurité, disques, réseau et location unique pour afficher les paramètres avancés. Divers onglets doivent s'afficher.
  8. Sous l'onglet Gestion, recherchez Automatisation et saisissez le script de démarrage suivant :

    sudo apt-get update && sudo apt-get install git gunicorn3 python3-pip -y
    git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git
    cd python-docs-samples/compute/managed-instances/demo
    sudo pip3 install -r requirements.txt
    sudo gunicorn3 --bind 0.0.0.0:80 app:app --daemon
    

    Avec ce script, chaque instance va exécuter l'application Web au démarrage.

  9. Cliquez sur Créer.

Créer un groupe d'instances géré

Pour exécuter l'application Web, créez un groupe d'instances régional. Procédez comme suit :

  1. Accédez à la page Groupes d'instances dans la console GCP.
    Accéder à la page "Groupes d'instances"
  2. Cliquez sur Créer un groupe d'instances pour définir un nouveau groupe d'instances.
  3. Sous Nom, saisissez autoscaling-web-app-group.
  4. Sous Emplacement, sélectionnez Plusieurs zones.

  5. Sous Région, sélectionnez us-central1.

  6. Cliquez sur le menu déroulant Configurer les zones pour afficher les zones. Sélectionnez les zones suivantes :

    • us-central1-b
    • us-central1-c
    • us-central1-f
  7. Sous Modèle d'instance, sélectionnez autoscaling-web-app-template.

  8. Configurez l'autoscaling pour le groupe d'instances :

    1. Dans Autoscaling, sélectionnez Activé.
    2. Définissez Règle d'autoscaling sur Utilisation du processeur. Pour en savoir plus sur d'autres règles d'autoscaling, consultez la documentation sur les règles d'autoscaling et l'utilisation cible.

    3. Définissez l'objectif d'utilisation du processeur sur 60 %.

    4. Définissez le nombre minimal d'instances sur 3.

    5. Définissez le nombre maximal d'instances sur 6.

    6. Définissez le paramètre Intervalle entre chaque période d'autoscaling sur 120 secondes.

  9. Sous Vérification de l'état, sélectionnez Aucune vérification d'état.

  10. Cliquez sur Créer. Cette action vous redirige vers la page Groupes d'instances.

  11. Pour vérifier que les instances sont en cours d'exécution, procédez comme suit :

    1. Sur la page Groupes d'instances de la console GCP, cliquez sur autoscaling-web-app-group pour afficher les instances de ce groupe.
    2. Sous Adresses IP externes, cliquez sur une adresse IP à connecter à cette instance. Un nouvel onglet de navigation s'ouvre, affichant l'application Web de démonstration :

      Capture d'écran de l'application Web de démonstration qui répertorie les détails de l'instance et comporte des boutons d'action.

      Lorsque vous avez terminé, fermez l'onglet de navigation de l'application Web de démonstration.

Observer l'autoscaling

Pour en savoir plus sur les comportements de l'autoscaling, consultez la documentation sur la présentation des décisions d'autoscaling.

Surveiller l'autoscaling

Le groupe d'instances que vous avez créé utilise des règles d'autoscaling basées sur l'utilisation du processeur. Cela signifie que l'autoscaler augmente ou diminue le groupe au besoin, afin de maintenir le pourcentage d'utilisation du processeur cible à 60 %.

Pour surveiller la taille et l'utilisation moyenne du processeur de votre groupe d'instances, utilisez les graphiques d'autoscaling dans la console GCP.

  1. Sur la page Groupes d'instances du groupe autoscaling-web-app-group, cliquez sur l'onglet Surveillance.
  2. Pour surveiller l'utilisation du processeur et l'autoscaling, sélectionnez Taille adaptée automatiquement dans le menu déroulant de gauche et sélectionnez Processeur dans le menu déroulant de droite.

    Cette action entraîne l'affichage de deux graphiques :

    • Le graphique du haut affiche la taille, qui correspond au nombre d'instances comprises dans le groupe d'instances.
    • Le graphique du bas affiche l'utilisation, qui correspond à l'utilisation moyenne du processeur du groupe d'instances et la capacité, qui correspond à l'utilisation cible cumulée du processeur du groupe d'instances.

    L'autoscaling s'efforce de faire correspondre la capacité et l'utilisation en changeant la taille, lorsque cela est possible.

Laissez cette fenêtre ouverte.

Simuler un scaling à la hausse (scaling horizontal)

On parle de "scaling à la hausse" lorsque l'utilisation moyenne du processeur du groupe d'instances est considérablement plus grande que la valeur cible. Pendant cette opération, l'autoscaler augmente progressivement la taille du groupe d'instances jusqu'à ce que l'utilisation du processeur diminue à hauteur de la valeur cible d'utilisation du processeur ou jusqu'à ce que la taille du groupe d'instances soit égale au nombre maximal d'instances, qui a été défini sur 6.

Pour déclencher un scaling à la hausse, augmentez l'utilisation du processeur pour vos instances.

  1. Ouvrez un terminal à l'aide de Cloud Shell, accessible à partir de la console GCP.

    Ouvrir Cloud Shell

    Cloud Shell s'ouvre au bas de la console GCP. L'initialisation de la session peut prendre quelques secondes.

  2. Créez une variable bash locale pour l'ID de projet :

    export PROJECT_ID=[PROJECT_ID]
    

    PROJECT_ID correspond à l'ID du projet en cours, et est affiché sur chaque ligne dans Cloud Shell :

    user@cloudshell:~ ([PROJECT_ID])$
    
  3. Exécutez le script bash ci-dessous. Ce script entraîne une augmentation de charge de l'application Web de démonstration, ce qui entraîne l'augmentation de l'utilisation du processeur. Après quelques minutes, l'utilisation du processeur dépasse la valeur cible ce qui déclenche l'augmentation de la taille du groupe d'instances par l'autoscaling.

    export MACHINES=$(gcloud --project=$PROJECT_ID compute instances list --format="csv(name,networkInterfaces[0].accessConfigs[0].natIP)" | grep "autoscaling-web-app-group")
    for i in $MACHINES;
    do
      NAME=$(echo "$i" | cut -f1 -d,)
      IP=$(echo "$i" | cut -f2 -d,)
      echo "Simulating high load for instance $NAME"
      curl -q -s "http://$IP/startLoad" >/dev/null --retry 2
    done
    
  4. Ouvrez l'onglet Surveillance dans la console GCP.

    Après quelques minutes, l'onglet Surveillance affiche une augmentation de l'utilisation du processeur, ce qui déclenche l'augmentation de la capacité par l'autoscaling en augmentant la taille du groupe d'instances :

    La surveillance montre que l'utilisation du processeur a augmenté. Peu après, le groupe est passé de trois instances à six instances.

    Notez également que six instances sont désormais répertoriées sous l'onglet Membres.

Gardez les deux fenêtres ouvertes.

Simuler un scaling à la baisse (scaling horizontal)

On parle de "scaling à la baisse" lorsque l'utilisation moyenne du processeur du groupe d'instances est considérablement plus faible que la valeur cible. Pendant cette opération, l'autoscaler diminue progressivement la taille du groupe d'instances jusqu'à ce que l'utilisation du processeur augmente à hauteur de l'utilisation cible du processeur ou jusqu'à ce que la taille du groupe d'instances soit égale au nombre minimal d'instances, qui a été défini sur 3.

Pour déclencher un scaling à la baisse, réduisez l'utilisation du processeur pour vos instances :

  1. Exécutez le script bash ci-dessous. Ce script entraîne une diminution de charge de l'application Web de démonstration, ce qui entraîne une diminution de l'utilisation du processeur. Après quelques minutes, l'utilisation du processeur devient inférieure à la valeur cible, entraînant la diminution de la taille du groupe d'instances par l'autoscaler.

    export MACHINES=$(gcloud --project=$PROJECT_ID compute instances list --format="csv(name,networkInterfaces[0].accessConfigs[0].natIP)" | grep "autoscaling-web-app-group")
    for i in $MACHINES;
    do
      NAME=$(echo "$i" | cut -f1 -d,)
      IP=$(echo "$i" | cut -f2 -d,)
      echo "Simulating low load for instance $NAME"
      curl -q -s "http://$IP/stopLoad" >/dev/null --retry 2
    done
    
  2. Ouvrez l'onglet Surveillance dans la console GCP.

    Après quelques minutes, l'onglet Surveillance affiche la diminution de l'utilisation du processeur. Après une période de stabilisation de 10 minutes, qui permet de vérifier que la charge est considérablement moins importante, l'autoscaling diminue la capacité en réduisant la taille du groupe d'instances :

    La surveillance montre que l'utilisation du processeur a diminué.Après environ 10 minutes, le groupe passe de six instances à trois instances.

    Notez également que seulement trois instances sont répertoriées sous l'onglet Membres.

Fermez les deux fenêtres lorsque vous avez terminé.

Effectuer un nettoyage

Une fois que vous avez terminé le tutoriel d'autoscaling, vous pouvez procéder au nettoyage des ressources que vous avez créées sur GCP afin qu'elles ne soient plus comptabilisées dans votre quota et qu'elles ne vous soient plus facturées. Dans les sections suivantes, nous allons voir comment supprimer ou désactiver ces ressources.

Si vous avez créé un projet distinct pour ce tutoriel, supprimez-le entièrement. Ou bien, si le projet contient des ressources que vous souhaitez conserver, ne supprimez que les ressources créées spécifiquement pour ce tutoriel.

Supprimer le projet

  1. Dans la console GCP, accédez à la page "Projets".

    Accéder à la page Projets

  2. Dans la liste des projets, sélectionnez celui que vous souhaitez supprimer, puis cliquez sur Supprimer.
  3. Dans la boîte de dialogue, saisissez l'ID du projet, puis cliquez sur Arrêter pour supprimer le projet.

Supprimer des ressources spécifiques

Supprimer le groupe d'instances

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

    Accéder à la page Groupes d'instances

  2. Cochez la case à côté de votre groupe d'instances autoscaling-web-app-group.
  3. Cliquez sur le bouton Supprimer en haut de la page pour supprimer le groupe d'instances.

Supprimer le modèle d'instance

  1. Accédez à la page Modèles d'instances dans la console GCP.

    Accéder à la page "Modèles d'instance"

  2. Cochez la case en regard de autoscaling-web-app-template.

  3. Cliquez sur Supprimer en haut de la page. Dans la nouvelle fenêtre, cliquez sur Supprimer pour confirmer la suppression.

Supprimer la règle de pare-feu

  1. Accédez à la page Règles de pare-feu dans la console GCP.

    Accéder à la page "Règles de pare-feu"

  2. Cochez la case en regard de la règle de pare-feu nommée default-allow-http.

  3. Cliquez sur Supprimer en haut de la page. Dans la nouvelle fenêtre, cliquez sur Supprimer pour confirmer la suppression.

Étapes suivantes

Cette page vous a-t-elle été utile ? Évaluez-la :

Envoyer des commentaires concernant…

Documentation Compute Engine