Ce guide de configuration explique comment créer un équilibreur de charge HTTP(S) externe et un backend Compute Engine avec les ressources suivantes :
- Le réseau de cloud privé virtuel (VPC) par défaut
- Un groupe d'instances géré Compute Engine
- Un port nommé qui spécifie le port 80 pour le trafic backend
- Un mappage d'URL par défaut
- Une vérification de l'état du backend
- Une règle de transfert de l'interface
- Une adresse IP externe réservée
- Un certificat SSL (pour un équilibreur de charge HTTPS)
Si cet exemple ne correspond pas à votre cas d'utilisation, consultez l'une des pages suivantes :
- Pour Cloud Run, consultez la page Configurer un équilibreur de charge avec Cloud Run.
- Pour obtenir un exemple multirégional incluant la configuration d'IPv6 et de certificats SSL, consultez la page Configurer un équilibreur de charge HTTPS externe multirégional.
- Pour configurer un équilibreur de charge HTTP(S) externe régional, consultez la page Configurer un équilibreur de charge HTTP(S) externe régional.
- Si vous utilisez GKE, l'équilibreur de charge est généralement configuré par le contrôleur Ingress (contrôleur d'entrée) de Kubernetes. Pour plus d'informations, consultez la page Configurer Ingress pour l'équilibrage de charge externe.
Pour des concepts généraux, consultez la présentation de l'équilibrage de charge HTTP(S) externe.
Topologies d'équilibreur de charge
Pour un équilibreur de charge HTTPS, vous devez créer la configuration illustrée dans le schéma suivant.
Pour un équilibreur de charge HTTP, vous créez la configuration illustrée dans le schéma suivant.
La séquence d'événements illustrée dans les schémas est la suivante :
- Un client envoie une requête de contenu à l'adresse IPv4 externe définie dans la règle de transfert.
Pour un équilibreur de charge HTTPS, la règle de transfert dirige la requête vers le proxy HTTPS cible.
Pour un équilibreur de charge HTTP, la règle de transfert dirige la requête vers le proxy HTTP cible.
Le proxy cible utilise la règle du mappage d'URL pour identifier le service de backend unique qui reçoit toutes les requêtes.
L'équilibreur de charge détermine que le service de backend ne possède qu'un seul groupe d'instances et dirige la requête vers une instance de machine virtuelle (VM) de ce groupe.
La VM diffuse le contenu demandé par l'utilisateur.
Avant de commencer
Assurez-vous que votre configuration remplit les conditions préalables.
Configurer une ressource de certificat SSL
Pour un équilibreur de charge HTTPS, créez une ressource de certificat SSL, comme décrit ci-dessous :
Nous vous recommandons d'utiliser un certificat géré par Google.
Dans cet exemple, nous partons du principe que vous disposez déjà d'une ressource de certificat SSL nommée www-ssl-cert
.
Configurer les autorisations
Pour suivre la procédure de ce guide, vous devez être autorisé à créer des instances Compute Engine, des règles de pare-feu et des adresses IP réservées au sein d'un projet. Vous devez disposer d'un rôle de propriétaire ou d'éditeur de projet, ou des rôles IAM Compute Engine suivants :
Tâche | Rôle requis |
---|---|
Créer des instances | Administrateur d'instances |
Ajouter et supprimer des règles de pare-feu | Administrateur de sécurité |
Créer des composants pour l'équilibreur de charge | Administrateur réseau |
Créer un projet (facultatif) | Créateur de projet |
Pour en savoir plus, consultez les guides suivants :
- Access control (Contrôle des accès)
- Conditions IAM
Créer un groupe d'instances géré
Pour que vous puissiez configurer un équilibreur de charge avec un backend Compute Engine, vos VM doivent appartenir à un groupe d'instances. Ce guide explique comment créer un groupe d'instances géré avec des VM Linux exécutant Apache, ainsi que comment configurer l'équilibrage de charge. Un groupe d'instances géré crée chacune de ses instances gérées en utilisant les modèles d'instance que vous spécifiez.
Le groupe d'instances géré fournit des VM exécutant les serveurs de backend d'un équilibreur de charge HTTP(S) externe. À des fins de démonstration, les backends diffusent leurs propres noms d'hôte.
Avant de créer un groupe d'instances géré, créez un modèle d'instance.
Console
Dans Cloud Console, accédez à la page Modèles d'instance.
Cliquez sur Create instance template (Créer un modèle d'instance).
Dans le champ Nom, saisissez
lb-backend-template
.Assurez-vous que le disque de démarrage est défini sur une image Debian, telle que Debian GNU/Linux 9 (Stretch). Ces instructions utilisent des commandes uniquement disponibles dans Debian, comme
apt-get
.Ne configurez pas l'option Pare-feu.
Étant donné que l'équilibreur de charge HTTP(S) externe est un proxy, vous n'avez pas besoin de sélectionner Autoriser le trafic HTTPS ou Autoriser le trafic HTTP sous Pare-feu. Dans la section Configurer une règle de pare-feu, vous créez la seule règle de pare-feu nécessaire pour cet équilibreur de charge.
Sous Gestion, sécurité, disques, mise en réseau et location unique, dans l'onglet Gestion, insérez le script suivant dans le champ Script de démarrage.
#! /bin/bash sudo apt-get update sudo apt-get install apache2 -y sudo a2ensite default-ssl sudo a2enmod ssl sudo vm_hostname="$(curl -H "Metadata-Flavor:Google" \ http://169.254.169.254/computeMetadata/v1/instance/name)" sudo echo "Page served from: $vm_hostname" | \ tee /var/www/html/index.html
Dans l'onglet Réseau, ajoutez les tags réseau suivants :
allow-health-check
Cliquez sur Create (Créer).
gcloud
Créez le modèle.
gcloud compute instance-templates create TEMPLATE_NAME \ --region=us-east1 \ --network=default \ --subnet=default \ --tags=allow-health-check \ --image-family=debian-9 \ --image-project=debian-cloud \ --metadata=startup-script='#! /bin/bash sudo apt-get update sudo apt-get install apache2 -y sudo a2ensite default-ssl sudo a2enmod ssl sudo vm_hostname="$(curl -H "Metadata-Flavor:Google" \ http://169.254.169.254/computeMetadata/v1/instance/name)" sudo echo "Page served from: $vm_hostname" | \ tee /var/www/html/index.html sudo systemctl restart apache2'
Créez le groupe d'instances géré, puis sélectionnez le modèle d'instance.
Console
- Dans Google Cloud Console, accédez à la page Groupes d'instances.
- Cliquez sur Créer un groupe d'instances.
- Sur la gauche, sélectionnez Nouveau groupe d'instances géré (sans état).
- Dans le champ Nom, saisissez
lb-backend-example
. - Pour l'emplacement, sélectionnez Zone unique.
- Pour Région, sélectionnez la région de votre choix. Cet exemple utilise
us-east1
. - Pour Zone, sélectionnez us-east1-b.
- Dans la section Modèle d'instance, sélectionnez le modèle d'instance
lb-backend-template
. - Sous Mode autoscaling, sélectionnez Ne pas procéder à un autoscaling.
- Sous Nombre d'instances, saisissez
2
. - Pour créer le groupe d'instances, cliquez sur Créer.
gcloud
Créez un groupe d'instances géré basé sur ce modèle.
gcloud compute instance-groups managed create lb-backend-example \ --template=TEMPLATE_NAME --size=2 --zone=us-east1-b
Ajouter un port nommé au groupe d'instances
Pour votre groupe d'instances, définissez un service HTTP et mappez un nom de port sur le port correspondant. Le service d'équilibrage de charge transfère le trafic vers le port nommé. Pour plus d'informations, consultez la section Ports nommés.
Console
- Dans Google Cloud Console, accédez à la page Groupes d'instances.
- Cliquez sur le nom de votre groupe d'instances (dans cet exemple
lb-backend-example
). - Sur la page Présentation du groupe d'instances, cliquez sur Modifier .
- Sous Mappage des ports, cliquez sur Ajouter un port.
- Pour le nom du port, saisissez
http
. Pour le numéro de port, saisissez80
.
- Pour le nom du port, saisissez
- Cliquez sur Enregistrer.
gcloud
Exécutez la commande gcloud compute instance-groups
set-named-ports
.
gcloud compute instance-groups set-named-ports lb-backend-example \ --named-ports http:80 \ --zone us-east1-b
Configurer une règle de pare-feu
Dans cet exemple, vous créez la règle de pare-feu fw-allow-health-check
.
Il s'agit d'une règle d'entrée qui autorise le trafic provenant des systèmes de vérification d'état Google Cloud (130.211.0.0/22
et 35.191.0.0/16
). Cet exemple utilise le tag cible allow-health-check
pour identifier les VM.
Console
- Dans Google Cloud Console, accédez à la page Pare-feu.
- Cliquez sur Créer une règle de pare-feu pour créer la deuxième règle de pare-feu :
- Dans le champ Nom, saisissez
fw-allow-health-check
. - Sous Réseau, sélectionnez Par défaut.
- Sous Cibles, sélectionnez Tags cibles spécifiés.
- Dans le champ Tags cibles, saisissez
allow-health-check
. - Définissez Filtre source sur Plages IPv4.
- Définissez Plages IPv4 sources sur
130.211.0.0/22
et35.191.0.0/16
. - Dans Protocoles et ports, sélectionnez Protocoles et ports spécifiés.
- Cochez la case tcp, puis saisissez
80
pour les numéros de port. - Cliquez sur Créer.
gcloud
gcloud compute firewall-rules create fw-allow-health-check \ --network=default \ --action=allow \ --direction=ingress \ --source-ranges=130.211.0.0/22,35.191.0.0/16 \ --target-tags=allow-health-check \ --rules=tcp:80
Réserver une adresse IP externe
Maintenant que vos instances sont opérationnelles, configurez une adresse IP externe statique globale que vos clients utiliseront pour accéder à votre équilibreur de charge.
Console
- Dans Google Cloud Console, accédez à la page Adresses IP externes.
- Pour réserver une adresse IPv4, cliquez sur Réserver une adresse statique.
- Dans le champ Nom, saisissez
lb-ipv4-1
. - Définissez Niveau de service réseau sur Premium.
- Définissez Version IP sur IPv4.
- Définissez Type sur Global.
- Cliquez sur Réserver.
gcloud
gcloud compute addresses create lb-ipv4-1 \ --ip-version=IPV4 \ --network-tier=PREMIUM \ --global
Notez l'adresse IPv4 réservée :
gcloud compute addresses describe lb-ipv4-1 \ --format="get(address)" \ --global
Configurer l'équilibreur de charge
Dans cet exemple, vous utilisez le protocole HTTP ou HTTPS entre le client et l'équilibreur de charge. Pour HTTPS, vous devez disposer d'une ou de plusieurs ressources de certificat SSL pour configurer le proxy. Nous vous recommandons d'utiliser un certificat géré par Google.
Même si vous utilisez HTTPS sur l'interface, vous pouvez utiliser HTTP sur le backend. Google chiffre automatiquement le trafic entre les Google Front Ends (GFE) et vos backends qui résident dans les réseaux VPC Google Cloud.
Console
Démarrer la configuration- Dans Google Cloud Console, accédez à la page Équilibrage de charge.
Accéder à la page "Équilibrage de charge" - Dans la section Équilibrage de charge HTTP(S), cliquez sur Démarrer la configuration.
- Dans la section Web ou interne uniquement, sélectionnez D'Internet vers mes VM.
- Sous Global ou régional, sélectionnez Équilibreur de charge HTTP(S) global (classique).
- Cliquez sur Continuer.
- Dans le champ Nom de l'équilibreur de charge, saisissez une valeur telle que
web-map-https
ouweb-map-http
. -
Cliquez sur Backend configuration (Configuration du backend).
- Sous Créer ou sélectionner des services de backend et des buckets backend, sélectionnez Services de backend > Créer un service de backend.
- Ajoutez un nom pour votre service de backend (par exemple,
web-backend-service
). - Sous Protocole, sélectionnez HTTP.
- Pour le port nommé, saisissez
http
. - Dans la section Backends > Nouveau backend > Groupe d'instances, sélectionnez le groupe d'instances
lb-backend-example
. - Pour le champ Numéros de ports, saisissez
80
. - Conservez les autres paramètres par défaut.
- Sous Vérification d'état, sélectionnez Créer une vérification d'état, puis attribuez-lui un nom, tel que
http-basic-check
. - Définissez le protocole sur HTTP, puis cliquez sur Enregistrer et continuer.
- Conservez les autres paramètres par défaut.
- Cliquez sur Créer.
- Dans Règles d'hôte et de chemin d'accès, conservez les paramètres par défaut.
-
Dans Configuration de l'interface, utilisez les valeurs suivantes :
- Définissez Protocole sur HTTPS ou HTTP.
- Définissez Adresse IP sur
lb-ipv4-1
, que vous avez créé précédemment. - Assurez-vous que Port est défini sur 443 pour autoriser le trafic HTTPS ou sur 80 pour le trafic HTTP.
-
Si vous avez sélectionné HTTPS, procédez comme suit :
- Cliquez sur Certificat, puis sélectionnez votre certificat SSL principal.
-
(Facultatif) Cochez la case Activer la redirection HTTP vers HTTPS pour activer les redirections du port 80 vers le port 443.
Si vous cochez cette case, vous allez créer un équilibreur de charge HTTP partiel supplémentaire qui utilise la même adresse IP que votre équilibreur de charge HTTPS et qui redirige les requêtes HTTP entrantes vers l'interface HTTPS de votre équilibreur de charge.
Cette case ne peut être cochée que lorsque le protocole HTTPS est sélectionné et qu'une adresse IP réservée est utilisée.
- Cliquez sur OK.
- Cliquez sur Review and finalize (Vérifier et finaliser).
- Une fois la configuration de l'équilibreur de charge terminée, cliquez sur Créer.
- Attendez jusqu'à ce que l'équilibreur de charge soit créé.
Si vous avez créé un équilibreur de charge HTTPS et coché la case Activer la redirection HTTP vers HTTPS, vous verrez également un équilibreur de charge HTTP créé avec un suffixe -redirect.
- Cliquez sur le nom de l'équilibreur de charge.
- Sur l'écran Détails de l'équilibreur de charge, notez la valeur IP:Port correspondant à votre équilibreur de charge.
gcloud
- Créez une vérification d'état.
gcloud compute health-checks create http http-basic-check \ --port 80
- Créez un service de backend.
gcloud compute backend-services create web-backend-service \ --load-balancing-scheme=EXTERNAL \ --protocol=HTTP \ --port-name=http \ --health-checks=http-basic-check \ --global
- Ajoutez votre groupe d'instances en tant que backend au service de backend.
gcloud compute backend-services add-backend web-backend-service \ --instance-group=lb-backend-example \ --instance-group-zone=us-east1-b \ --global
- Pour HTTP, créez un mappage d'URL pour acheminer les requêtes entrantes vers le service de backend par défaut.
gcloud compute url-maps create web-map-http \ --default-service web-backend-service
- Pour le protocole HTTPS, créez un mappage d'URL pour acheminer les requêtes entrantes vers le service de backend par défaut.
gcloud compute url-maps create web-map-https \ --default-service web-backend-service
Configurer une interface HTTPS
Ignorez cette section pour les équilibreurs de charge HTTP.- Pour HTTPS, si vous ne l'avez pas déjà fait, créez la ressource de certificat SSL global, comme indiqué dans les articles suivants :
- Pour HTTPS, créez un proxy HTTPS cible pour acheminer les requêtes vers votre mappage d'URL. Le proxy est la partie de l'équilibreur de charge qui contient le certificat SSL pour un équilibreur de charge HTTPS. Vous chargez donc également votre certificat à cette étape.
gcloud compute target-https-proxies create https-lb-proxy \ --url-map=web-map-https \ --ssl-certificates=www-ssl-cert
- Pour HTTPS, créez une règle de transfert globale pour acheminer les requêtes entrantes vers le proxy.
gcloud compute forwarding-rules create https-content-rule \ --load-balancing-scheme=EXTERNAL \ --network-tier=PREMIUM \ --address=lb-ipv4-1 \ --global \ --target-https-proxy=https-lb-proxy \ --ports=443
Configurer une interface HTTP
Ignorez cette section pour les équilibreurs de charge HTTPS.
- Pour HTTP, créez un proxy HTTP cible qui va acheminer les requêtes vers votre mappage d'URL.
gcloud compute target-http-proxies create http-lb-proxy \ --url-map=web-map-http
- Pour HTTP, créez une règle de transfert globale pour acheminer les requêtes entrantes vers le proxy.
gcloud compute forwarding-rules create http-content-rule \ --load-balancing-scheme=EXTERNAL \ --address=lb-ipv4-1 \ --global \ --target-http-proxy=http-lb-proxy \ --ports=80
Connecter un domaine à votre équilibreur de charge
Une fois l'équilibreur de charge créé, notez l'adresse IP associée à celui-ci (par exemple, 30.90.80.100
). Pour faire pointer votre domaine vers votre équilibreur de charge, créez un enregistrement A
à l'aide de votre service d'enregistrement de domaine. Si vous avez ajouté plusieurs domaines à votre certificat SSL, vous devez ajouter un enregistrement A
à chacun d'eux, tous pointant vers l'adresse IP de l'équilibreur de charge. Par exemple, pour créer des enregistrements A
pour www.example.com
et example.com
, procédez comme suit :
NAME TYPE DATA www A 30.90.80.100 @ A 30.90.80.100
Si vous utilisez Google Domains, consultez la page d'aide Google Domains pour obtenir plus d'informations.
Tester le trafic envoyé à vos instances
Maintenant que le service d'équilibrage de charge est en cours d'exécution, vous pouvez envoyer le trafic vers la règle de transfert et observer la répartition du trafic entre les différentes instances.
Console
Dans Google Cloud Console, accédez à la page Équilibrage de charge.
- Cliquez sur l'équilibreur de charge que vous venez de créer.
- Dans la section Backend, vérifiez que les VM sont opérationnelles. La colonne Opérationnelles doit indiquer que les deux VM sont opérationnelles (
2/2
). Si ce n'est pas le cas, commencez par actualiser la page. Il peut s'écouler quelques instants avant que Cloud Console n'indique que les VM sont opérationnelles. Si les backends ne semblent toujours pas opérationnels au bout de quelques minutes, vérifiez la configuration du pare-feu et le tag réseau attribué à vos VM de backend. - Pour HTTPS, si vous utilisez un certificat géré par Google, vérifiez que l'état de votre ressource de certificat est ACTIVE. Pour plus d'informations, consultez la section État d'une ressource de certificat SSL géré par Google.
- Une fois que Cloud Console indique que les instances backend sont opérationnelles, vous pouvez tester votre équilibreur de charge à l'aide d'un navigateur Web en accédant à
https://IP_ADDRESS
(ouhttp://IP_ADDRESS
). RemplacezIP_ADDRESS
par l'adresse IP de l'équilibreur de charge. - Si vous avez utilisé un certificat autosigné pour les tests HTTPS, votre navigateur affiche un avertissement. Vous devez explicitement lui indiquer d'accepter un certificat autosigné.
- Votre navigateur doit afficher une page dont le contenu indique le nom de l'instance ayant diffusé la page, ainsi que sa zone (par exemple,
Page served from: lb-backend-example-xxxx
). Si ce n'est pas le cas, vérifiez les paramètres de configuration décrits dans ce guide.
gcloud
gcloud compute addresses describe lb-ipv4-1 \ --format="get(address)" \ --global
Au bout de quelques minutes, vous pouvez effectuer un test en exécutant la commande curl
suivante.
curl http://IP_ADDRESS
-OU-
curl https://HOSTNAME
Étape suivante
- Pour configurer une redirection HTTP vers HTTPS pour votre équilibreur de charge HTTP(S) externe, consultez la page Configurer une redirection HTTP vers HTTPS pour l'équilibrage de charge HTTP(S) externe
- Pour obtenir un exemple complexe d'équilibrage de charge interrégional basé sur le contenu avec IPv6, consultez la page Créer un équilibreur de charge HTTPS.
- Nettoyez la configuration de l'équilibreur de charge.
- Pour activer IAP, consultez la section Activer IAP sur l'équilibreur de charge HTTP(S) externe.
- Pour utiliser un module Terraform, consultez la section Exemples de modules Terraform pour les équilibreurs de charge HTTP(S) externes.