Procéder à l'autoscaling d'un service Web à l'échelle mondiale sur Compute Engine


Ce tutoriel explique comment configurer un service Web disponible dans le monde entier avec des groupes d'instances gérés Compute Engine régionaux, qui définissent un scaling automatique pour offrir la capacité requise. Vous pouvez utiliser les techniques qu'il décrit pour mettre en œuvre sur Compute Engine votre projet évolutif et distribué à l'échelle mondiale.

Objectifs

  • Déployer plusieurs groupes d'instances gérés Compute Engine régionaux en activant l'autoscaling
  • Créer un équilibreur de charge interrégional
  • Générer du trafic de test à partir de différentes régions du monde
  • Utiliser la console Google Cloud pour voir comment l'équilibreur de charge achemine les requêtes et comment les groupes d'instances s'adaptent automatiquement à l'évolution de la demande.

Coûts

Ce tutoriel fait appel à des composants facturables de Google Cloud, dont :

  • Compute Engine

Avant de commencer

  1. Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.

    Accéder au sélecteur de projet

  2. Vérifiez que la facturation est activée pour votre projet Google Cloud.

  3. Activez l'API Compute Engine

    Activer l'API

Architecture de l'application

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

  1. Modèle d'instance : modèle utilisé pour créer chaque instance des groupes d'instances.
  2. Groupes d'instances : plusieurs groupes d'instances qui s'adaptent automatiquement en fonction du trafic entrant.
  3. Équilibreur de charge : équilibreur de charge HTTP qui répartit le trafic entre les groupes d'instances.
  4. Instances : plusieurs instances de test qui permettent de générer du trafic de test à partir de différentes régions du monde.

Schéma de l'architecture système montrant un équilibreur de charge avec plusieurs groupes d'instances régionaux

Configurer le service Web

Créer les groupes d'instances

Console

  1. Créez un réseau pour les groupes d'instances.

    1. Dans Google Cloud Console, accédez à la page Réseaux VPC.

      Accéder aux réseaux VPC

    2. Cliquez sur Créer un réseau VPC.

    3. Définissez le paramètre Nom sur fortressnet.

    4. Définissez le paramètre Mode de création du sous-réseau sur Automatique.

    5. Cliquez sur Créer en bas de la page.

  2. Créez une règle de pare-feu pour le réseau. Cette règle autorisera toutes les requêtes HTTP envoyées à vos instances.

    1. Dans Google Cloud Console, accédez à la page Règles de pare-feu.

      Accéder aux règles de pare-feu

    2. Cliquez sur Create Firewall Rule (Créer une règle de pare-feu).

    3. Définissez le paramètre Nom sur fortressnet-allow-http.

    4. Pour Réseau, sélectionnez fortressnet.

    5. Pour Cibles, sélectionnez All instances in the network.

    6. Définissez le paramètre Plages IPv4 sources sur 0.0.0.0/0.

    7. Dans le champ Protocoles et ports, sélectionnez Protocoles et ports spécifiés, puis cochez la case tcp et saisissez 80.

    8. Cliquez sur Créer.

  3. Créez un modèle d'instance. Incluez un script de démarrage qui lance un serveur Web Apache simple sur chaque instance.

    1. Dans Google Cloud Console, accédez à la page Modèles d'instances.

      Accéder à la page Modèles d'instances

    2. Cliquez sur Create instance template (Créer un modèle d'instance).

    3. Définissez le paramètre Nom sur fort-template.

    4. Dans le champ Configuration de la machine, sélectionnez e2-micro (2 processeurs virtuels, 1 Go de mémoire).

    5. Dans la section Options avancées, développez Mise en réseau, puis procédez comme suit :

      1. Dans la section Interfaces réseau, développez une interface réseau pour la modifier.
      2. Pour Réseau, sélectionnez fortressnet.
    6. Dans la section Gestion, sous Automatisation, saisissez le script de démarrage suivant :

      apt update && apt -y install apache2
      

    7. Cliquez sur Créer.

  4. Créez plusieurs groupes d'instances gérés régionaux à l'aide du modèle d'instance. Configurez l'autoscaling pour chaque groupe d'instances.

    1. Dans Google Cloud Console, accédez à la page Groupes d'instances.

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

    2. Cliquez sur Créer un groupe d'instances pour créer un nouveau groupe d'instances géré.

    3. Sélectionnez Nouveau groupe d'instances géré (sans état).

    4. Définissez le paramètre Nom sur us-central1-pool.

    5. Pour Modèle d'instance, sélectionnez fort-template.

    6. Pour Emplacement, sélectionnez Plusieurs zones.

    7. Pour Région, sélectionnez us-central1. Pour Zones, laissez les valeurs prédéfinies sélectionnées.

    8. Dans le champ Mode autoscaling, sélectionnez Activé : ajouter et supprimer des instances dans le groupe.

    9. Définissez le paramètre Nombre minimal d'instances sur 1.

    10. Définissez le paramètre Nombre maximal d'instances sur 5.

    11. Dans le champ Signaux d'autoscaling, modifiez la sélection par défaut (utilisation du processeur) et définissez le type de signal sur Utilisation de l'équilibrage de charge HTTP.

    12. Définissez Objectif d'utilisation de l'équilibrage de charge HTTP sur 80.

    13. Cliquez sur OK.

    14. Cliquez sur Créer. Une boîte de dialogue affiche le message que vous devez également attribuer au groupe d'instances à un service de backend d'un équilibreur de charge HTTP.

    15. Dans la boîte de dialogue de confirmation, cliquez sur Confirmer. Vous pouvez configurer l'équilibreur de charge après avoir créé tous les groupes d'instances.

    16. Répétez ces étapes pour créer deux autres groupes d'instances, en apportant les modifications suivantes :

      • Créez un groupe en définissant le paramètre Nom sur europe-west1-pool et le paramètre Région sur europe-west1.
      • Créez un groupe en définissant le paramètre Nom sur asia-east1-pool et le paramètre Région sur asia-east1.
  5. (Facultatif) Vérifiez que les instances sont opérationnelles et diffusent le trafic HTTP. Testez l'adresse IP externe d'une ou de plusieurs instances. Vous devrez peut-être patienter une minute pour que le processus de démarrage des instances se termine.

    1. Dans Google Cloud Console, accédez à la page Instances de VM.

      Accéder à la page "Instances de VM"

    2. Vérifiez qu'une coche verte est présente dans la colonne État de chaque instance en cours d'exécution à côté du nom du groupe d'instances.

    3. Copiez l'adresse IP externe d'une instance et collez-la dans un navigateur Web.

    La page Web par défaut Apache2 Debian doit s'afficher.

    Si la procédure semble ne pas fonctionner, patientez quelques instants.

gcloud

  1. Créez un réseau pour les groupes d'instances.

    gcloud compute networks create fortressnet --subnet-mode auto
    
  2. Créez une règle de pare-feu pour le réseau. Cette règle autorisera toutes les requêtes HTTP envoyées à vos instances.

    gcloud compute firewall-rules create fortressnet-allow-http \
        --network fortressnet \
        --allow tcp:80
    
  3. Créez un modèle d'instance. Incluez un script de démarrage qui lance un serveur Web Apache simple sur chaque instance.

    gcloud compute instance-templates create fort-template \
        --machine-type e2-micro \
        --network fortressnet \
        --metadata startup-script='apt update && apt -y install apache2'
    
  4. Créez plusieurs groupes d'instances gérés régionaux à l'aide du modèle d'instance. Configurez l'autoscaling pour chaque groupe d'instances.

    gcloud compute instance-groups managed create us-central1-pool \
        --region us-central1 \
        --template fort-template \
        --size 1
    gcloud compute instance-groups managed set-autoscaling us-central1-pool \
        --region us-central1 \
        --min-num-replicas 1 \
        --max-num-replicas 5 \
        --scale-based-on-load-balancing \
        --target-load-balancing-utilization .8
    
    gcloud compute instance-groups managed create europe-west1-pool \
        --region europe-west1 \
        --template fort-template \
        --size 1
    gcloud compute instance-groups managed set-autoscaling europe-west1-pool \
        --region europe-west1 \
        --min-num-replicas 1 \
        --max-num-replicas 5 \
        --scale-based-on-load-balancing \
        --target-load-balancing-utilization .8
    
    gcloud compute instance-groups managed create asia-east1-pool \
        --region asia-east1 \
        --template fort-template \
        --size 1
    gcloud compute instance-groups managed set-autoscaling asia-east1-pool \
        --region asia-east1 \
        --min-num-replicas 1 \
        --max-num-replicas 5 \
        --scale-based-on-load-balancing \
        --target-load-balancing-utilization .8
    
  5. (Facultatif) Vérifiez que les instances sont opérationnelles et diffusent le trafic HTTP. Testez l'adresse IP externe d'une ou de plusieurs instances. Vous devrez peut-être patienter une minute pour que le processus de démarrage des instances se termine.

    1. Répertoriez vos instances.

      gcloud compute instances list
      

    2. Vérifiez dans la colonne STATUS que l'état des instances est RUNNING.

    3. Vérifiez le fonctionnement d'une instance en interrogeant son adresse IP dans la colonne EXTERNAL_IP.

      curl http://EXTERNAL_IP | head
      

    Un texte HTML incluant la ligne suivante doit s'afficher : <title>Apache2 Debian Default Page: It works</title>.

    Si la procédure semble ne pas fonctionner, patientez quelques instants.

Configurer l'équilibreur de charge

L'équilibreur de charge répartit les requêtes des clients entre vos différents backends.

Console

Démarrer la configuration de l'équilibreur de charge

  1. Dans Google Cloud Console, accédez à la page Équilibrage de charge.

    Accéder à la page "Équilibrage de charge"

  2. Cliquez sur Créer un équilibreur de charge.

  3. Sous Équilibreur de charge d'application (HTTP/S), cliquez sur Démarrer la configuration.

  4. Définissez le paramètre Nom sur fortressnet-balancer.

Configuration du backend

  1. Sur la page Créer un équilibreur de charge d'application externe global, cliquez sur Configuration du backend.
  2. Dans le menu déroulant Créer ou sélectionner des services backend et des buckets backend, sélectionnez Services backend, puis Créer un service backend. La boîte de dialogue Créer un service de backend s'affiche.
  3. Définissez le paramètre Nom du service de backend sur fortressnet-backend-service.
  4. Dans la boîte de dialogue Nouveau backend, définissez le paramètre Groupe d'instances sur asia-east1-pool.
  5. Pour Mode d'équilibrage, sélectionnez Fréquence.
  6. Définissez le paramètre Nombre maximal de RPS sur 100 RPS par instance.
  7. Cliquez sur OK.
  8. Cliquez sur Add backend (Ajouter le backend).
  9. Dans la boîte de dialogue Nouveau backend, définissez le paramètre Groupe d'instances sur europe-west1-pool.
  10. Pour Mode d'équilibrage, sélectionnez Fréquence.
  11. Définissez le paramètre Nombre maximal de RPS sur 100 RPS par instance.
  12. Cliquez sur OK.
  13. Cliquez sur Add backend (Ajouter le backend).
  14. Dans la boîte de dialogue Nouveau backend, définissez le paramètre Groupe d'instances sur us-central1-pool.
  15. Pour Mode d'équilibrage, sélectionnez Fréquence.
  16. Définissez le paramètre Nombre maximal de RPS sur 100 RPS par instance.
  17. Cliquez sur OK.
  18. Sous Vérification d'état, sélectionnez Créer une vérification d'état.
  19. Définissez le paramètre Nom sur http-basic-check.
  20. Pour Protocole, sélectionnez HTTP.
  21. Définissez le paramètre Port sur 80.
  22. Cliquez sur Enregistrer et continuer.
  23. Cliquez sur Create (Créer).

Règles d'hôte et de chemin d'accès

  1. Dans le panneau de gauche de la page Créer un équilibreur de charge d'application externe global, cliquez sur Règles d'hôte et de chemin d'accès.
    Pour cet exemple, il n'est pas nécessaire de configurer des règles d'hôte ou de chemin d'accès, car tout le trafic sera acheminé en fonction de la règle par défaut. Nous pouvons donc accepter les valeurs par défaut.

Configuration de l'interface

  1. Dans le panneau de gauche de la page Créer un équilibreur de charge d'application externe global, cliquez sur Configuration du frontend.
  2. Pour Nom, définissez fortressnet-http-rule.
  3. Pour Version IP, sélectionnez IPv4.
  4. Pour Adresse IP, sélectionnez Créer une adresse IP.
  5. Dans la boîte de dialogue Réserver une nouvelle adresse IP statique, définissez le paramètre Nom sur fortressnet-ip.
  6. Cliquez sur Réserver et patientez quelques instants.
  7. Cliquez sur OK en bas de la boîte de dialogue Nouveaux IP et port frontend.
  8. Cliquez sur Ajouter une adresse IP et un port frontend.
  9. Définissez le paramètre Nom sur fortressnet-http-ipv6-rule.
  10. Pour Version IP, sélectionnez IPv6.
  11. Pour Adresse IP, sélectionnez Créer une adresse IP.
  12. Dans la boîte de dialogue, définissez le paramètre Nom sur fortressnet-ipv6.
  13. Cliquez sur Réserver et patientez quelques instants.
  14. Cliquez sur OK en bas de la boîte de dialogue Nouveaux IP et port frontend.

Vérifier et finaliser

  1. Dans le panneau de gauche de la page Créer un équilibreur de charge d'application externe global, cliquez sur Vérification et finalisation.
  2. Comparez vos paramètres à ce que vous aviez l'intention de créer.
  3. Si les paramètres sont corrects, cliquez sur Créer en bas du panneau de gauche. Vous êtes renvoyé à l'écran "Équilibrage de charge". Une fois que l'équilibreur de charge est créé, une coche verte s'affiche à côté de celui-ci pour indiquer qu'il est en cours d'exécution.

gcloud

Configurer le backend

  1. Créez une vérification d'état de base. Elle vous permettra de vérifier si un backend d'équilibreur de charge répond aux requêtes HTTP.

    gcloud compute health-checks create http http-basic-check
    
  2. Créez un service de backend à l'échelle mondiale. Il recevra le trafic HTTP provenant de l'équilibreur de charge.

    gcloud compute backend-services create fortressnet-backend-service \
        --protocol HTTP \
        --health-checks http-basic-check \
        --global
    
  3. Ajoutez les groupes d'instances en tant que backends régionaux du service de backend. Cette configuration répartira le trafic entre les backends en fonction d'un nombre maximal de requêtes par seconde (RPS) par instance.

    gcloud compute backend-services add-backend fortressnet-backend-service \
        --balancing-mode RATE \
        --max-rate-per-instance 100 \
        --instance-group us-central1-pool \
        --instance-group-region us-central1 \
        --global
    gcloud compute backend-services add-backend fortressnet-backend-service \
        --balancing-mode RATE \
        --max-rate-per-instance 100 \
        --instance-group europe-west1-pool \
        --instance-group-region europe-west1 \
        --global
    gcloud compute backend-services add-backend fortressnet-backend-service \
        --balancing-mode RATE \
        --max-rate-per-instance 100 \
        --instance-group asia-east1-pool \
        --instance-group-region asia-east1 \
        --global
    

Règles d'hôte et de chemin d'accès

  1. Définissez un mappage d'URL. Ce type de mappage permet d'acheminer des URL distinctes vers des services de backend différents. Comme nous ne disposons que d'un seul service de backend, nous allons le définir comme service par défaut pour toutes les URL.

    gcloud compute url-maps create fortressnet-balancer \
        --default-service fortressnet-backend-service
    
  2. Créez une route de proxy HTTP. Cette route accepte les requêtes HTTP et les achemine en fonction de votre mappage d'URL. Dans ce cas, toutes les requêtes seront envoyées à votre service de backend unique.

    gcloud compute target-http-proxies create fortressnet-http-proxy \
        --url-map fortressnet-balancer
    

Configuration du frontend

  1. Créez deux adresses IP externes statiques globales : une pour IPV4 et une pour IPV6. Il s'agira des adresses IP externes globales de l'équilibreur de charge.

    gcloud compute addresses create fortressnet-ip \
        --ip-version IPV4 \
        --network-tier=PREMIUM \
        --global
    gcloud compute addresses create fortressnet-ipv6 \
        --ip-version IPV6 \
        --network-tier=PREMIUM \
        --global
    
  2. Recherchez les adresses IP externes de l'équilibreur de charge.

    gcloud compute addresses list
    
  3. Créez des règles de transfert globales pour les adresses IP externes. Elles transmettront les requêtes HTTP IPv4 et IPv6 à votre proxy HTTP.

    gcloud compute forwarding-rules create fortressnet-http-rule \
        --load-balancing-scheme=EXTERNAL \
        --network-tier=PREMIUM \
        --global \
        --target-http-proxy fortressnet-http-proxy \
        --ports 80 \
        --address LOAD_BALANCER_IP_ADDRESS
    
    gcloud compute forwarding-rules create fortressnet-http-ipv6-rule \
        --load-balancing-scheme=EXTERNAL \
        --network-tier=PREMIUM \
        --global \
        --target-http-proxy fortressnet-http-proxy \
        --ports 80 \
        --address LOAD_BALANCER_IPV6_ADDRESS
    

(Facultatif) Vérifiez que l'équilibreur de charge fonctionne. Vous devrez peut-être patienter quelques minutes.

Console

  1. Dans la console Google Cloud, accédez à la page Équilibrage de charge.

    Accéder à la page "Équilibrage de charge"

  2. Attendez qu'une coche verte apparaisse à côté de fortressnet-balancer dans la colonne Backends.

  3. Cliquez sur fortressnet-balancer.

  4. Sous Frontend, copiez l'adresse IPv4 figurant dans la colonne IP:Port. (Les adresses IPv4 respectent le format suivant : www.xxx.yyy.zzz. Il est inutile d'ajouter le numéro de port :nn à la fin de l'adresse.) Si la section Frontend est manquante, patientez quelques instants, puis actualisez la page Web.

  5. Indiquez l'adresse IP dans un navigateur Web.

La page Web par défaut Apache2 Debian doit s'afficher.

Si une page Web "Erreur 404 (page introuvable)" est renvoyée, patientez encore quelques minutes.

gcloud

  1. Recherchez les adresses IP externes de l'équilibreur de charge.

    gcloud compute addresses list
    
  2. Interrogez l'adresse IPv4. (Les adresses IPv4 respectent le format suivant : www.xxx.yyy.zzz.)

    curl http://LOAD_BALANCER_IP_ADDRESS | head
    

Un texte HTML incluant la ligne suivante doit s'afficher : <title>Apache2 Debian Default Page: It works</title>.

Si <title>Error 404 (Not Found)!!1</title> s'affiche, patientez encore quelques minutes.

Bonne pratique : créez un pare-feu sécurisé pour n'autoriser que le trafic interne provenant de l'équilibreur de charge et de la vérification de l'état. Supprimez ensuite le pare-feu d'origine qui autorisait toutes les requêtes HTTP. Cela empêche les clients externes d'accéder à des instances individuelles.

Console

  1. Créez un pare-feu n'autorisant que le trafic provenant de l'équilibreur de charge et de la vérification d'état.

    1. Dans Google Cloud Console, accédez à la page Règles de pare-feu.

      Accéder aux règles de pare-feu

    2. Cliquez sur Create Firewall Rule (Créer une règle de pare-feu).

    3. Définissez le paramètre Nom sur fortressnet-allow-load-balancer.

    4. Pour Réseau, sélectionnez fortressnet.

    5. Pour Cibles, sélectionnez All instances in the network.

    6. Pour Plages d'adresses IP sources, saisissez 130.211.0.0/22, puis appuyez sur la touche Entrée. Ensuite, saisissez 35.191.0.0/16, puis appuyez de nouveau sur Entrée.

    7. Sous Protocoles et ports, sélectionnez tcp et saisissez 80.

    8. Cliquez sur Créer.

  2. Supprimez l'ancien pare-feu autorisant tout le trafic.

    1. Cochez la case située à côté de fortressnet-allow-http.
    2. Cliquez sur Supprimer en haut de la page.
    3. Dans la boîte de dialogue, cliquez sur Supprimer.

gcloud

  1. Créez un pare-feu n'autorisant que le trafic provenant de l'équilibreur de charge et de la vérification d'état.

    gcloud compute firewall-rules create fortressnet-allow-load-balancer \
        --network fortressnet \
        --source-ranges 130.211.0.0/22,35.191.0.0/16 \
        --allow tcp:80
    
  2. Supprimez l'ancien pare-feu autorisant tout le trafic.

    gcloud compute firewall-rules delete fortressnet-allow-http -q
    

(Facultatif) Vérifier que l'autoscaling et l'équilibrage de charge fonctionnent

Générer du trafic de test

Supposons que ce soit le matin en Europe et que votre service Web enregistre tout à coup un pic de trafic. Générez simultanément un grand nombre de requêtes de clients en provenance d'Europe.

Console

  1. Créez une instance équipée de l'outil de test de charge Siege.

    1. Accédez à la page Créer une instance dans Google Cloud Console.

      Accéder à la page Créer une instance

    2. Dans le champ Nom, spécifiez europe-loadtest.

    3. Dans le champ Région, sélectionnez europe-west1.

    4. Pour les paramètres avancés, développez la section Réseau, disques, sécurité, gestion, location unique et procédez comme suit :

      1. Développez la section Gestion.
      2. Dans le champ Automatisation, saisissez le script de démarrage suivant :
        apt -y install siege
        
    5. Pour créer la VM, cliquez sur Créer.

  2. Obtenez l'adresse IPv4 de l'équilibreur de charge.

    1. Dans Google Cloud Console, accédez à la page Équilibrage de charge.

      Accéder à la page "Équilibrage de charge"

    2. Cliquez sur fortressnet-balancer.

    3. Sous Frontend, copiez l'adresse IPv4 figurant dans la colonne IP:Port. (Les adresses IPv4 respectent le format suivant : www.xxx.yyy.zzz.)

  3. Connectez-vous via SSH à l'instance de test de charge.

    1. Dans Google Cloud Console, accédez à la page Instances de VM.

      Accéder à la page "Instances de VM"

    2. Attendez qu'une coche verte apparaisse à côté de l'instance europe-loadtest dans la colonne Nom.

    3. Cliquez sur SSH pour europe-loadtest dans la colonne Connexion.

  4. Démarrez Siege. Ciblez l'adresse IPv4 de l'équilibreur de charge.

    siege -c150 http://LOAD_BALANCER_IP_ADDRESS
    

gcloud

  1. Créez une instance équipée de l'outil de test de charge Siege.

    gcloud compute instances create europe-loadtest \
        --network default \
        --zone europe-west1-c \
        --metadata startup-script='apt -y install siege'
    
  2. Obtenez l'adresse IPv4 de l'équilibreur de charge.

    gcloud compute addresses list
    
  3. Démarrez une nouvelle session d'interface système où la commande gcloud est disponible.

    1. Dans la nouvelle session d'interface système, connectez-vous via SSH à l'instance de test de charge.

      gcloud compute ssh --zone europe-west1-c europe-loadtest
      
    2. Démarrez Siege. Ciblez l'adresse IPv4 de l'équilibreur de charge.

      siege -c150 http://LOAD_BALANCER_IP_ADDRESS
      

Une fois la commande siege exécutée, un résultat semblable au suivant doit s'afficher : The server is now under siege...

[alert] Zip encoding disabled; siege requires zlib support to enable it
** SIEGE 4.0.2
** Preparing 150 concurrent users for battle.
The server is now under siege...

Surveiller l'équilibrage de charge et l'autoscaling

  1. Dans Google Cloud Console, accédez à la page Équilibrage de charge.

    Accéder à la page "Équilibrage de charge"

  2. Cliquez sur l'équilibreur de charge nommé fortressnet-balancer.

  3. Cliquez sur l'onglet Surveillance.

  4. Dans la liste déroulante Backend, sélectionnez fortressnet-backend-service.

L'affichage d'une quantité suffisante de données peut prendre jusqu'à dix minutes. Un écran semblable au suivant doit bientôt apparaître :

Écran de surveillance de la console Google Cloud montrant que les requêtes en provenance d'Europe sont réparties de manière égale entre les trois backends

Que se passe-t-il dans ce scénario ?

  1. Le test de charge commence à envoyer une grande quantité de trafic à la fois. Au départ, l'équilibreur de charge répartit les requêtes de manière égale entre les trois backends. Le nombre de requêtes dépasse rapidement les limites de l'autoscaling et peut même amener vos serveurs à renvoyer des erreurs Backend 5xx errors qui s'affichent sur l'écran de surveillance. L'autoscaler démarre des instances supplémentaires selon les besoins.

  2. L'autoscaling s'adapte aux besoins de capacité. Pour réduire la latence des requêtes, les équilibreurs de charge Compute Engine tentent d'acheminer ces dernières vers le backend le plus proche du client. Dans ce cas, étant donné que le trafic de test de charge provient d'Europe, l'équilibreur de charge préfère acheminer davantage de requêtes vers le backend situé en Europe. Par conséquent, l'autoscaling peut démarrer d'autres instances dans ce backend pour qu'il traite une plus grande partie des requêtes.

Générer du trafic de test à un autre endroit

Supposons que votre service Web devienne également très populaire en Asie et qu'un pic de trafic survienne l'après-midi. Générez un grand nombre de requêtes en provenance d'Asie.

Console

  1. Créez une autre instance équipée de l'outil de test de charge Siege.

    1. Dans Google Cloud Console, accédez à la page Instances de VM.

      Accéder à la page "Instances de VM"

    2. Cliquez sur Créer une instance.

    3. Définissez le paramètre Nom sur asia-loadtest.

    4. Dans le champ Région, sélectionnez asia-east1.

    5. Cliquez sur la section Mise en réseau, disques, sécurité, gestion, location unique pour afficher les paramètres avancés.

    6. Cliquez sur l'onglet Gestion.

    7. Sous Automatisation, saisissez le script de démarrage suivant :

      apt -y install siege
      

    8. Cliquez sur Créer en bas de la page.

  2. Obtenez l'adresse IP de l'équilibreur de charge.

    1. Dans Google Cloud Console, accédez à la page Équilibrage de charge.

      Accéder à la page "Équilibrage de charge"

    2. Cliquez sur fortressnet-balancer.

    3. Sous Frontend, copiez l'adresse IPv4 figurant dans la colonne IP:Port. (Les adresses IPv4 respectent le format suivant : www.xxx.yyy.zzz.)

  3. Connectez-vous via SSH à l'instance de test de charge.

    1. Attendez qu'une coche verte apparaisse à côté de l'instance asia-loadtest dans la colonne Nom.
    2. Cliquez sur SSH pour asia-loadtest dans la colonne Connexion.
  4. Démarrez Siege. Ciblez l'adresse IPv4 de l'équilibreur de charge.

    siege -c150 http://LOAD_BALANCER_IP_ADDRESS
    

gcloud

  1. Dans votre session d'interface système d'origine, créez une autre instance équipée de l'outil de test de charge Siege.

    gcloud compute instances create asia-loadtest \
        --network default \
        --zone asia-east1-c \
        --metadata startup-script='apt -y install siege'
    
  2. Obtenez l'adresse IPv4 de l'équilibreur de charge.

    gcloud compute addresses list
    
  3. Démarrez une nouvelle session d'interface système où la commande gcloud est disponible.

    1. Dans la nouvelle session d'interface système, connectez-vous via SSH à l'instance de test de charge.

      gcloud compute ssh --zone asia-east1-c asia-loadtest
      
    2. Démarrez Siege. Ciblez l'adresse IPv4 de l'équilibreur de charge.

      siege -c150 http://LOAD_BALANCER_IP_ADDRESS
      

Là encore, un résultat semblable au suivant doit s'afficher : The server is now under siege...

[alert] Zip encoding disabled; siege requires zlib support to enable it
** SIEGE 4.0.2
** Preparing 150 concurrent users for battle.
The server is now under siege...

Surveiller l'équilibrage de charge et l'autoscaling

Revenez à l'écran de surveillance de l'équilibrage de charge, comme expliqué précédemment. L'affichage d'une quantité suffisante de nouvelles données peut prendre jusqu'à dix minutes. Un écran semblable au suivant doit bientôt apparaître :

Écran de surveillance de la console Google Cloud montrant que les requêtes en provenance d'Europe et d'Asie sont réparties entre les trois backends

Que se passe-t-il dans ce scénario ?

  1. Là encore, le test de charge envoie un grand nombre de requêtes à la fois. Au départ, l'équilibreur de charge répartit les requêtes de manière égale entre les trois backends. Étant donné que le nombre de requêtes dépasse les limites de l'autoscaling, l'autoscaler démarre des instances supplémentaires selon les besoins.

  2. L'autoscaling s'adapte aux nouveaux besoins de capacité. L'équilibreur de charge préfère toujours acheminer les requêtes vers les backends disponibles les plus proches. Par conséquent, le backend situé en Asie reçoit des requêtes provenant principalement d'Asie, tandis que celui situé en Europe reçoit des requêtes provenant principalement d'Europe. Le backend situé aux États-Unis reçoit tout le trafic restant.

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.

Supprimer le projet

Le moyen le plus simple d'empêcher la facturation est de supprimer le projet que vous avez créé pour ce tutoriel.

Pour supprimer le projet :

  1. Dans la console Google Cloud, accédez à la page Gérer les ressources.

    Accéder à la page Gérer les ressources

  2. Dans la liste des projets, sélectionnez le projet 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 instances

Pour supprimer une instance Compute Engine, procédez comme suit :

  1. Dans la console Google Cloud, accédez à la page Instances de VM.

    Accéder à la page Instances de VM

  2. Cochez la case correspondant à instance que vous souhaitez supprimer.
  3. Pour supprimer l'instance, cliquez sur Autres actions , cliquez sur Supprimer, puis suivez les instructions.

Étape suivante