Points de contrôle
Create a group of webservers
/ 25
Create a L4 Network Load Balancer that points to the webservers
/ 35
Create a L7 HTTP(S) Load Balancer
/ 40
Configurer des équilibreurs de charge réseau et HTTP [ACE]
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.
-
Connectez-vous à Qwiklabs dans une fenêtre de navigation privée.
-
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. -
Lorsque vous êtes prêt, cliquez sur Démarrer l'atelier.
-
Notez vos identifiants pour l'atelier (Nom d'utilisateur et Mot de passe). Ils vous serviront à vous connecter à Google Cloud Console.
-
Cliquez sur Ouvrir la console Google.
-
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. -
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.
-
Dans la barre d'outils située en haut à droite de la console GCP, cliquez sur le bouton Open Cloud Shell (Ouvrir Cloud Shell).
-
Cliquez sur Continue (Continuez):
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 :
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 é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 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.
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.