arrow_back

Configurer des équilibreurs de charge réseau et HTTP [ACE]

Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

Configurer des équilibreurs de charge réseau et HTTP [ACE]

Lab 40 minutes universal_currency_alt 5 crédits show_chart Débutant
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

Présentation

Dans cet atelier pratique, vous allez découvrir les différences entre un équilibreur de charge réseau et un équilibreur de charge HTTP, et allez apprendre à les configurer pour vos applications exécutées sur les machines virtuelles Google Compute Engine.

Dans Google Cloud Platform, les équilibreurs de charge sont de deux types. Cet atelier vous guide dans le processus de configuration de ces deux types d'équilibreurs de charge.

Nous vous invitons à éviter le copier-coller et à saisir directement les commandes, afin de mieux assimiler les concepts fondamentaux. De nombreux ateliers comportent cependant un bloc de code qui réunit les commandes à saisir. Libre à vous de les copier directement aux emplacements adéquats au cours de cet atelier.

Objectifs de l'atelier

  • Configurer un équilibreur de charge réseau

  • Configurer un équilibreur de charge HTTP(S)

  • Découvrir dans la pratique les différences entre un équilibreur de charge réseau et un équilibreur de charge HTTP

Prérequis

Une bonne connaissance des éditeurs de texte Linux standards tels que vim, emacs ou nano vous sera utile.

Configurer

Pour chaque atelier, nous vous attribuons un nouveau projet Google Cloud et un nouvel ensemble de ressources pour une durée déterminée, sans frais.

  1. Connectez-vous à Qwiklabs dans une fenêtre de navigation privée.

  2. Vérifiez le temps imparti pour l'atelier (par exemple : 01:15:00) : vous devez pouvoir le terminer dans ce délai.
    Une fois l'atelier lancé, vous ne pouvez pas le mettre en pause. Si nécessaire, vous pourrez le redémarrer, mais vous devrez tout reprendre depuis le début.

  3. Lorsque vous êtes prêt, cliquez sur Démarrer l'atelier.

  4. Notez vos identifiants pour l'atelier (Nom d'utilisateur et Mot de passe). Ils vous serviront à vous connecter à Google Cloud Console.

  5. Cliquez sur Ouvrir la console Google.

  6. Cliquez sur Utiliser un autre compte, puis copiez-collez les identifiants de cet atelier lorsque vous y êtes invité.
    Si vous utilisez d'autres identifiants, des messages d'erreur s'afficheront ou des frais seront appliqués.

  7. Acceptez les conditions d'utilisation et ignorez la page concernant les ressources de récupération des données.

Activer Google Cloud Shell

Google Cloud Shell est une machine virtuelle qui contient de nombreux outils pour les développeurs. Elle comprend un répertoire d'accueil persistant de 5 Go et s'exécute sur Google Cloud. Google Cloud Shell offre un accès en ligne de commande à vos ressources GCP.

  1. Dans la barre d'outils située en haut à droite de la console GCP, cliquez sur le bouton Open Cloud Shell (Ouvrir Cloud Shell).

    Icône Cloud Shell

  2. Cliquez sur Continue (Continuez):

    cloudshell_continue

Le provisionnement et la connexion à l'environnement ne devraient pas prendre plus de quelques minutes. Une fois connecté, vous êtes en principe authentifié et le projet est défini sur votre ID_PROJET. Exemple :

Terminal Cloud Shell

gcloud est l'outil de ligne de commande associé à Google Cloud Platform. Pré-installé sur Cloud Shell, il est également compatible avec la saisie semi-automatique via la touche de tabulation.

Vous pouvez répertorier le nom des comptes actifs à l'aide de cette commande :

gcloud auth list

Résultat :

Credentialed accounts:
 - <myaccount>@<mydomain>.com (active)

Exemple de résultat :

Credentialed accounts:
 - google1623327_student@qwiklabs.net

Pour répertorier les ID de projet, exécutez la commande suivante :

gcloud config list project

Résultat :

[core]
project = <ID_projet>

Exemple de résultat :

[core]
project = qwiklabs-gcp-44776a13dea667a6

Définir la zone et la région par défaut de toutes les ressources

Dans Cloud Shell, définissez la zone par défaut :

gcloud config set compute/zone us-central1-a

Définissez la région par défaut :

gcloud config set compute/region us-central1

Pour plus d'informations à ce sujet, consultez la documentation sur les zones et régions.

Créer plusieurs instances de serveur Web

Pour simuler un cluster de machines, créez un cluster composé de serveurs Web Nginx pour diffuser des contenus statiques en utilisant des modèles d'instances et des groupes d'instances gérés. Les modèles d'instances vous permettent de définir la configuration de chaque machine virtuelle composant le cluster (espace disque, processeur, capacité mémoire, etc.). Un groupe d'instances géré permet de créer un certain nombre d'instances de machine virtuelle, en utilisant le modèle d'instance.

Pour créer les clusters de serveurs Web Nginx, vous devez créer les éléments suivants :

  • Un script de démarrage, qui permettra à chaque instance de machine virtuelle de configurer le serveur Nginx au démarrage
  • Un modèle d'instance, qui va utiliser le script de démarrage
  • Un pool cible
  • Un groupe d'instances géré, défini à partir du modèle d'instance

Toujours dans Cloud Shell, créez un script de démarrage qui sera utilisé par chaque instance de machine virtuelle. Ce script permet de configurer le serveur Nginx au démarrage :

cat << EOF > startup.sh
#! /bin/bash
apt-get update
apt-get install -y nginx
service nginx start
sed -i -- 's/nginx/Google Cloud Platform - '"\$HOSTNAME"'/' /var/www/html/index.nginx-debian.html
EOF

Créez un modèle d'instance, qui utilise le script de démarrage :

gcloud compute instance-templates create nginx-template \
         --metadata-from-file startup-script=startup.sh

(Résultat)

Created [...].
NAME           MACHINE_TYPE  PREEMPTIBLE CREATION_TIMESTAMP
nginx-template n1-standard-1             2015-11-09T08:44:59.007-08:00

Créez à présent un pool cible. Celui-ci permet de disposer d'un point d'accès unique pour l'ensemble des instances d'un groupe. Il sera en outre indispensable pour procéder ensuite à l'équilibrage de charge.

gcloud compute target-pools create nginx-pool

(Résultat)

Created [...].
NAME       REGION       SESSION_AFFINITY BACKUP HEALTH_CHECKS
nginx-pool us-central1

Créez un groupe d'instances géré, défini à partir du modèle d'instance :

gcloud compute instance-groups managed create nginx-group \
         --base-instance-name nginx \
         --size 2 \
         --template nginx-template \
         --target-pool nginx-pool

(Résultat)

Created [...].
NAME         LOCATION       SCOPE  BASE_INSTANCE_NAME  SIZE  TARGET_SIZE  INSTANCE_TEMPLATE  AUTOSCALED
nginx-group  us-central1-a  zone   nginx               0     2            nginx-template     no

Cette opération crée deux instances de machines virtuelles, dont le nom commence par nginx-. Elle peut nécessiter quelques minutes.

Listez les instances Compute Engine ; toutes les instances créées devraient s'afficher.

gcloud compute instances list

(Résultat)

NAME       ZONE           MACHINE_TYPE  PREEMPTIBLE INTERNAL_IP EXTERNAL_IP    STATUS
nginx-7wvi us-central1-a n1-standard-1             10.240.X.X  X.X.X.X           RUNNING
nginx-9mwd us-central1-a n1-standard-1             10.240.X.X  X.X.X.X           RUNNING

Configurons à présent le pare-feu, de sorte que vous puissiez vous connecter aux machines sur le port 80, via les adresses EXTERNAL_IP :

gcloud compute firewall-rules create www-firewall --allow tcp:80

Vous devriez pouvoir vous connecter à chacune des instances via son adresse IP externe, en saisissant le résultat de la commande précédente, soit http://EXTERNAL_IP/.

Vérifiez votre progression dans l'atelier. Cliquez sur Vérifier ma progression ci-dessous pour vérifier que vous avez bien créé un groupe de serveurs Web.

Créer un groupe de serveurs Web

Créer un équilibreur de charge réseau

L'équilibrage des charges réseau vous permet d'équilibrer la charge de vos systèmes en fonction des données du protocole IP entrant, telles que l'adresse, le numéro de port et le type de protocole. Vous disposez également d'options qui ne sont pas disponibles avec l'équilibrage de charge HTTP(S). Vous pouvez par exemple équilibrer d'autres protocoles basés sur les protocoles TCP/UDP, tels que le SMTP. Et si les caractéristiques concernant la connexion TCP présentent de l'intérêt pour votre application, sachez que contrairement à l'équilibrage de charge HTTP(S), l'équilibrage de charge réseau permet d'inspecter les paquets.

Créons à présent un équilibreur de charge L4, qui va cibler notre groupe d'instances :

gcloud compute forwarding-rules create nginx-lb \
         --region us-central1 \
         --ports=80 \
         --target-pool nginx-pool

(Résultat)

Created [https://www.googleapis.com/compute/v1/projects/...].

Affichons toutes les règles de transfert Google Compute Engine de votre projet.

gcloud compute forwarding-rules list

(Résultat)

NAME     REGION       IP_ADDRESS     IP_PROTOCOL TARGET
nginx-lb us-central1 X.X.X.X        TCP         us-central1/targetPools/nginx-pool

Vous pouvez à présent accéder à l'équilibreur de charge en saisissant dans votre navigateur http://IP_ADDRESS/, où IP_ADDRESS désigne l'adresse renvoyée par la commande précédente.

Vérifiez votre progression dans l'atelier. Cliquez sur Vérifier ma progression pour vérifier que vous avez bien créé un équilibreur de charge réseau L4 qui cible les serveurs Web.

Créer un équilibreur de charge réseau L4 qui cible les serveurs Web

Créer un équilibreur de charge HTTP(S)

L'équilibrage de charge HTTP(S) permet d'effectuer un équilibrage global des requêtes HTTP(S) destinées à vos instances. Vous pouvez configurer des règles d'URL, qui vont rediriger certaines URL vers un ensemble d'instances donné. Les requêtes sont toujours redirigées vers le groupe d'instances le plus proche de l'utilisateur, sous réserve de compatibilité et de capacité suffisante. En cas de capacité insuffisante, la requête est transmise au groupe le plus proche présentant la capacité nécessaire.

Commençons par créer une vérification de l'état. Celle-ci consiste à vérifier que l'instance répond bien au trafic HTTP ou HTTPS :

gcloud compute http-health-checks create http-basic-check

(Résultat)

Created [https://www.googleapis.com/compute/v1/projects/...].
NAME             HOST PORT REQUEST_PATH
http-basic-check      80   /

Définissons un service HTTP et mappons un nom de port sur le port correspondant au groupe d'instances. Le service d'équilibrage de charge peut désormais transférer le trafic vers le port nommé :

gcloud compute instance-groups managed \
       set-named-ports nginx-group \
       --named-ports http:80

(Résultat)

Updated [https://www.googleapis.com/compute/v1/projects/...].

Créons un service de backend :

gcloud compute backend-services create nginx-backend \
      --protocol HTTP --http-health-checks http-basic-check --global

(Résultat)

Created [https://www.googleapis.com/compute/v1/projects/...].
NAME          BACKENDS PROTOCOL
nginx-backend          HTTP

Ajoutons le groupe d'instances au service de backend :

gcloud compute backend-services add-backend nginx-backend \
    --instance-group nginx-group \
    --instance-group-zone us-central1-a \
    --global

(Résultat)

Updated [https://www.googleapis.com/compute/v1/projects/...].

Créez un mappage d'URL par défaut qui redirige toutes les requêtes entrantes vers vos instances :

gcloud compute url-maps create web-map \
    --default-service nginx-backend

(Résultat)

Created [https://www.googleapis.com/compute/v1/projects/...].
NAME    DEFAULT_SERVICE
Web-map nginx-backend

Créons un serveur proxy HTTP cible, qui va rediriger les requêtes vers votre mappage d'URL :

gcloud compute target-http-proxies create http-lb-proxy \
    --url-map web-map

(Résultat)

Created [https://www.googleapis.com/compute/v1/projects/...].
NAME          URL_MAP
http-lb-proxy web-map

Créons une règle de transfert globale, qui va traiter et rediriger les requêtes entrantes. Une règle de transfert envoie le trafic vers un serveur proxy HTTP ou HTTPS spécifique, en fonction de l'adresse IP, du protocole IP et du numéro de port spécifié. À noter qu'une règle de transfert globale ne permet pas de spécifier plusieurs numéros de port.

gcloud compute forwarding-rules create http-content-rule \
        --global \
        --target-http-proxy http-lb-proxy \
        --ports 80

(Résultat)

Created [https://www.googleapis.com/compute/v1/projects/...].

La diffusion de votre configuration peut nécessiter plusieurs minutes, une fois la règle de transfert globale créée.

gcloud compute forwarding-rules list

(Résultat)

NAME              REGION IP_ADDRESS    IP_PROTOCOL TARGET
http-content-rule        X.X.X.X       TCP         http-lb-proxy
nginx-lb   us-central1  X.X.X.X       TCP         us-central1/....

Notez l'adresse IP de la règle de transfert http-content-rule.

Vous devriez pouvoir y accéder en saisissant dans votre navigateur http://IP_ADDRESS/. L'opération peut prendre entre trois et cinq minutes. Si vous ne parvenez pas à vous connecter, attendez une minute, puis actualisez le navigateur.

Vérifiez votre progression dans l'atelier. Cliquez sur Vérifier ma progression ci-dessous pour vérifier que vous avez bien créé un équilibreur de charge HTTP(S) L7.

Créer un équilibreur de charge HTTP(S) L7

Tester vos connaissances

Testez vos connaissances sur Google Cloud Platform en répondant à notre quiz. (Sélectionnez plusieurs réponses, le cas échéant.)

Terminer l'atelier

Une fois l'atelier terminé, cliquez sur Terminer l'atelier. Google Cloud Skills Boost supprime les ressources que vous avez utilisées, puis efface le compte.

Si vous le souhaitez, vous pouvez noter l'atelier. Sélectionnez un nombre d'étoiles, saisissez un commentaire, puis cliquez sur Envoyer.

Le nombre d'étoiles correspond à votre degré de satisfaction :

  • 1 étoile = très insatisfait(e)
  • 2 étoiles = insatisfait(e)
  • 3 étoiles = ni insatisfait(e), ni satisfait(e)
  • 4 étoiles = satisfait(e)
  • 5 étoiles = très satisfait(e)

Si vous ne souhaitez pas donner votre avis, vous pouvez fermer la boîte de dialogue.

Pour soumettre des commentaires, suggestions ou corrections, veuillez accéder à l'onglet Assistance.

Copyright 2020 Google LLC Tous droits réservés. Google et le logo Google sont des marques de Google LLC. Tous les autres noms d'entreprises et de produits peuvent être des marques des entreprises auxquelles ils sont associés.