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'instances géré, le nombre de VM de ce groupe augmente (scaling horizontal) ou diminue automatiquement (scaling vertical) en fonction de la valeur cible que vous spécifiez 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
Dans ce document, vous utilisez les composants facturables suivants de Google Cloud :
- Compute Engine
Obtenez une estimation des coûts en fonction de votre utilisation prévue à l'aide du simulateur de coût.
Avant de commencer
- Connectez-vous à votre compte Google Cloud. Si vous débutez sur Google Cloud, créez un compte pour évaluer les performances de nos produits en conditions réelles. Les nouveaux clients bénéficient également de 300 $ de crédits gratuits pour exécuter, tester et déployer des charges de travail.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
Architecture de l'application
L'application inclut les composants Compute Engine ci-dessous.
- Règle de pare-feu : pare-feu Google Cloud qui vous permet d'autoriser ou de refuser le trafic vers vos instances.
- Modèle d'instance : modèle utilisé pour créer chaque instance de VM dans le groupe d'instances géré.
- Groupe d'instances géré régional : groupe d'instances de VM exécutant la même application sur plusieurs zones.
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 le dépôt GoogleCloudPlatform/python-docs-samples sur GitHub.
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 :
Dans Google Cloud Console, accédez à la page Pare-feu.
Cliquez sur Créer une règle de pare-feu.
Dans le champ Nom, saisissez
default-allow-http
.Définissez le paramètre Réseau sur
default
.Pour le paramètre Cibles, sélectionnez
Specified target tags
.Dans le champ Tags cibles, saisissez
http-server
.Définissez Filtre source sur
IP ranges
.Sous Plages d'adresses IP sources, saisissez
0.0.0.0/0
pour autoriser l'accès pour toutes les adresses IP.
Sous Ports et protocoles, sélectionnez Protocoles et ports spécifiés. Ensuite, sélectionnez tcp et saisissez
80
pour autoriser l'accès du trafic HTTP.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 :
Dans Google Cloud Console, accédez à la page Modèles d'instances.
Cliquez sur Create instance template (Créer un modèle d'instance).
Dans le champ Nom, saisissez
autoscaling-web-app-template
.Sous Configuration de la machine, définissez le type de machine sur
e2-standard-2
.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.Développez la section Options avancées pour afficher les paramètres avancés.
Développez la section Gestion.
Dans le champ Automatisation, saisissez le script de démarrage suivant :
sudo apt update && sudo apt -y install git gunicorn3 python3-pip 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 VM va exécuter l'application Web au démarrage.
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 :
Dans Google Cloud Console, accédez à la page Groupes d'instances.
Cliquez sur Créer un groupe d'instances pour définir un nouveau groupe d'instances.
Sélectionnez Nouveau groupe d'instances géré (sans état).
Dans le champ Nom, saisissez
autoscaling-web-app-group
.Pour Modèle d'instance, sélectionnez
autoscaling-web-app-template
.Pour Emplacement, sélectionnez Plusieurs zones.
Dans le champ Region (Région), sélectionnez us-central1.
Pour Zones, sélectionnez les zones suivantes dans la liste déroulante :
- us-central1-b
- us-central1-c
- us-central1-f
Configurez l'autoscaling pour le groupe d'instances :
- Dans le champ Mode autoscaling, sélectionnez Activé : ajouter et supprimer des instances dans le groupe.
Définissez le nombre minimal d'instances sur
3
.Définissez le nombre maximal d'instances sur
6
.Définissez la Période d'initialisation sur
120
secondes.Sous Métriques d'autoscaling, sélectionnez Utilisation du processeur comme type de métrique. Pour en savoir plus sur les métriques d'autoscaling, consultez la page Règle d'autoscaling.
Définissez le paramètre Objectif d'utilisation du processeur sur
60
.Cliquez sur Done (OK).
Sous Autoréparation, sélectionnez Aucune vérification d'état dans la liste déroulante Vérification de l'état.
Cliquez sur Créer. Cette action vous redirige vers la page Groupes d'instances.
Pour vérifier que les instances sont en cours d'exécution, procédez comme suit :
- Sur la page Groupes d'instances de la console Google Cloud, cliquez sur
autoscaling-web-app-group
pour afficher les instances de ce groupe. Sous Adresse IP externe, cliquez sur une adresse IP pour connecter cette instance. Un nouvel onglet de navigation s'ouvre, affichant l'application Web de démonstration :
Lorsque vous avez terminé, fermez l'onglet de l'application Web de démonstration.
- Sur la page Groupes d'instances de la console Google Cloud, cliquez sur
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 réduit la taille du groupe au besoin, afin de maintenir le pourcentage d'utilisation du processeur cible à 60
%.
Pour contrôler la taille et l'utilisation moyenne du processeur de votre groupe d'instances, utilisez les graphiques d'évolution automatique dans la console Google Cloud :
- Sur la page Groupes d'instances du groupe
autoscaling-web-app-group
, cliquez sur l'onglet Surveillance. - Vous pouvez surveiller l'autoscaling à partir du graphique Taille du groupe. Le graphique affiche Instances, ce qui correspond au nombre d'instances de VM dans le groupe au fil du temps.
Facultatif : Pour surveiller la capacité avec évolutivité automatique par rapport à l'utilisation, consultez le graphique Utilisation de l'autoscaler (processeur). Le graphique affiche Utilisation, ce qui correspond à l'utilisation totale du processeur par les instances de VM du groupe, et Capacité, ce qui correspond à l'utilisation cumulée du processeur du groupe (utilisation du processeur cible multipliée par le nombre d'instances de VM).
L'autoscaling s'efforce de faire correspondre la capacité et l'utilisation en modifiant le nombre d'instances, lorsque cela est possible.
Laissez cette fenêtre ouverte.
Simuler un scaling horizontal
On parle de "scaling horizontal" 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 de sorte que l'utilisation du processeur diminue jusqu'à atteindre 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 horizontal, augmentez l'utilisation du processeur pour vos instances :
Dans Google Cloud Console, ouvrez Cloud Shell.
Cloud Shell s'ouvre au bas de la console Google Cloud. L'initialisation de la session peut prendre quelques secondes.
Créez une variable bash locale pour l'ID de projet :
export PROJECT_ID=[PROJECT_ID]
où
PROJECT_ID
correspond à l'ID du projet en cours, et est affiché sur chaque ligne dans Cloud Shell :user@cloudshell:~ ([PROJECT_ID])$
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
Ouvrez l'onglet Surveillance dans la console Google Cloud.
Après quelques minutes, l'onglet Surveillance indique que l' Utilisation du processeur a augmenté. L'autoscaling augmente alors la Capacité en augmentant le nombre d'Instances.
Notez également que six instances sont désormais répertoriées sous l'onglet Aperçu.
Gardez les deux fenêtres ouvertes.
Simuler un scaling vertical
On parle de "scaling vertical" 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 de sorte que l'utilisation du processeur augmente jusqu'à atteindre 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 vertical, réduisez l'utilisation du processeur pour vos instances :
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
Ouvrez l'onglet Surveillance dans la console Google Cloud.
Après quelques minutes, l'onglet Surveillance affiche la diminution de l'utilisation du processeur. Après la période de stabilisation, qui permet de vérifier que la charge est considérablement moins importante, l'autoscaling diminue la capacité en réduisant le nombre d'Instances :
Notez également que seulement trois instances sont répertoriées sous l'onglet Aperçu.
Fermez les deux fenêtres lorsque vous avez terminé.
Nettoyer
Une fois le tutoriel terminé, vous pouvez procéder au nettoyage des ressources que vous avez créées 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
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Supprimer des ressources spécifiques
Supprimer le groupe d'instances
- In the Google Cloud console, go to the Instance groups page.
-
Select the checkbox for
your
autoscaling-web-app-group
instance group. - To delete the instance group, click Delete.
Supprimer le modèle d'instance
Dans Google Cloud Console, accédez à la page Modèles d'instances.
Cochez la case en regard de
autoscaling-web-app-template
.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
Dans Google Cloud Console, accédez à la page Règles de pare-feu.
Cochez la case située en regard de la règle de pare-feu intitulée
default-allow-http
.Cliquez sur
Supprimer en haut de la page. Dans la nouvelle fenêtre, cliquez sur Supprimer pour confirmer la suppression.
Étapes suivantes
- Essayez un autre tutoriel
- Apprenez-en plus sur les groupes d'instances gérés.
- Apprenez-en plus sur l'autoscaling.
- Apprenez-en plus sur la conception de systèmes robustes.
- Apprenez-en plus sur la création d'applications Web évolutives et résilientes sur Google Cloud.