Ce document fournit des instructions de configuration d'un équilibreur de charge d'application externe régional pour vos services exécutés sur des VM Compute Engine.
Étant donné que les équilibreurs de charge d'application externes régionaux vous permettent de créer des équilibreurs de charge dans des régions spécifiques, ils sont souvent utilisés pour les charges de travail qui présentent des exigences de conformité juridictionnelle. Les charges de travail nécessitant un accès au trafic sortant de niveau de réseau Standard constituent un autre cas d'utilisation courant des équilibreurs de charge d'application externes régionaux, car les équilibreurs de charge d'application externes régionaux sont compatibles avec les niveaux de service réseau Premium et Standard.
Avant de suivre ce guide, familiarisez-vous avec les points suivants :
- Présentation de l'équilibreur de charge d'application externe
- Présentation des règles de pare-feu VPC
Autorisations
Pour suivre ce guide, vous devez savoir comment créer des instances et modifier un réseau dans un projet. Vous devez être propriétaire ou éditeur du projet, ou disposer de tous les rôles IAM Compute Engine suivants :
Tâche | Rôle requis |
---|---|
Créer des réseaux, des sous-réseaux et des composants de l'équilibreur de charge | Administrateur réseau |
Ajouter et supprimer des règles de pare-feu | Administrateur de sécurité |
Créer des instances | Administrateur d'instances |
Pour en savoir plus, consultez les guides suivants :
- Access control (Contrôle des accès)
- Conditions IAM
Vue d'ensemble de la configuration
Vous pouvez configurer un équilibreur de charge d'application externe régional, comme décrit dans le flux de configuration de haut niveau suivant. Les étapes numérotées font référence aux numéros du diagramme.
Comme le montre le schéma, cet exemple crée un équilibreur de charge d'application externe régional dans un réseau VPC dans la région us-west1
, avec un service de backend et deux groupes d'instances backend.
Le schéma montre les éléments suivants :
Un réseau VPC avec deux sous-réseaux :
Un sous-réseau est utilisé pour les backends (groupes d'instances). Sa plage d'adresses IP principale est
10.1.2.0/24
.Un sous-réseau est un sous-réseau proxy uniquement dans la région
us-west1
. Vous devez créer un sous-réseau proxy réservé dans chaque région du réseau VPC dans lequel vous utilisez des équilibreurs de charge d'application externes régionaux. Le sous-réseau proxy réservé de la région est partagé entre tous les équilibreurs de charge régionaux de la région. Les adresses sources des paquets envoyés depuis les équilibreurs de charge vers les backends de votre service sont attribuées à partir du sous-réseau proxy réservé. Dans cet exemple, le sous-réseau proxy réservé de la région possède la plage d'adresses IP principale10.129.0.0/23
, qui est la taille de sous-réseau recommandée. Pour en savoir plus, consultez la section Sous-réseaux proxy réservés.
Une règle de pare-feu qui autorise les flux de trafic de sous-réseau proxy réservé dans votre réseau. Cela signifie ajouter une règle qui autorise le trafic sur le port TCP
80
,443
et8080
à partir de10.129.0.0/23
(la plage du sous-réseau proxy réservé dans cet exemple). Une autre règle de pare-feu pour les vérifications de l'état.Instances backend.
Groupes d'instances :
- Groupes d'instances gérés ou non gérés pour les déploiements de VM Compute Engine
- NEG pour les déploiements GKE
Dans chaque zone, vous pouvez combiner différents types de groupes de backend en fonction des exigences de votre déploiement.
Une vérification d'état régionale indiquant la disponibilité de vos backends.
Un service de backend régional surveillant l'utilisation et l'état des backends.
Un mappage d'URL régional qui analyse l'URL des requêtes et les transfère à des services de backend spécifiques en fonction de l'hôte et du chemin d'accès de l'URL de la requête.
Un proxy HTTP ou HTTPS régional cible qui reçoit la requête de l'utilisateur et la transfère au mappage d'URL. Pour le protocole HTTPS, configurez une ressource de certificat SSL régional. Le proxy cible peut utiliser le certificat SSL ou le certificat du gestionnaire de certificats pour déchiffrer le trafic SSL si vous configurez l'équilibrage de charge HTTPS. Le proxy cible peut transférer le trafic vers vos instances à l'aide du protocole HTTP ou HTTPS.
Une règle de transfert, qui possède l'adresse IP externe de votre équilibreur de charge, pour transmettre chaque requête entrante au proxy cible.
L'adresse IP externe associée à la règle de transfert est réservée à l'aide de la commande
gcloud compute addresses create
, comme décrit dans la section Réserver l'adresse IP de l'équilibreur de charge.
Configurer le réseau et les sous-réseaux
Vous avez besoin d'un réseau VPC avec deux sous-réseaux : un pour les backends de l'équilibreur de charge et l'autre pour les proxys de l'équilibreur de charge. Les équilibreurs de charge d'application externes régionaux sont régionaux. Le trafic au sein du réseau VPC est acheminé vers l'équilibreur de charge si la source du trafic se trouve dans un sous-réseau dans la même région que l'équilibreur de charge.
Cet exemple utilise le réseau VPC, la région et les sous-réseaux suivants :
Réseau : le réseau est un réseau VPC en mode personnalisé nommé
lb-network
.Sous-réseau pour les backends : un sous-réseau nommé
backend-subnet
dans la régionus-west1
utilise10.1.2.0/24
pour sa plage d'adresses IP principale.Sous-réseau pour les proxys : un sous-réseau nommé
proxy-only-subnet
dans la régionus-west1
utilise10.129.0.0/23
pour sa plage d'adresses IP principale.
Configurer le réseau et le sous-réseau pour les backends
Console
Dans la console Google Cloud, accédez à la page Réseaux VPC.
Cliquez sur Créer un réseau VPC.
Dans le champ Nom, saisissez
lb-network
.Dans la section Sous-réseaux :
- Définissez le Mode de création du sous-réseau sur Personnalisé.
- Dans la section Nouveau sous-réseau, saisissez les informations suivantes :
- Nom :
backend-subnet
- Région :
us-west1
- Plage d'adresses IP :
10.1.2.0/24
- Nom :
- Cliquez sur OK.
Cliquez sur Créer.
gcloud
Créez le réseau VPC personnalisé à l'aide de la commande
gcloud compute networks create
:gcloud compute networks create lb-network --subnet-mode=custom
Créez un sous-réseau dans le réseau
lb-network
de la régionus-west1
à l'aide de la commandegcloud compute networks subnets create
:gcloud compute networks subnets create backend-subnet \ --network=lb-network \ --range=10.1.2.0/24 \ --region=us-west1
Terraform
Pour créer le réseau VPC, utilisez la ressource google_compute_network
.
Pour créer le sous-réseau VPC dans le réseau lb-network
, utilisez la ressource google_compute_subnetwork
.
API
Envoyez une requête
POST
à la méthodenetworks.insert
, en remplaçant PROJECT_ID par votre ID de projet.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks { "routingConfig": { "routingMode": "REGIONAL" }, "name": "lb-network", "autoCreateSubnetworks": false }
Envoyez une requête
POST
à la méthodesubnetworks.insert
, en remplaçant PROJECT_ID par votre ID de projet.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks { "name": "backend-subnet", "network": "projects/PROJECT_ID/global/networks/lb-network", "ipCidrRange": "10.1.2.0/24", "region": "projects/PROJECT_ID/regions/us-west1", }
Configurer le sous-réseau proxy réservé
Un sous-réseau proxy réservé fournit un ensemble d'adresses IP utilisées par Google pour exécuter des proxys Envoy en votre nom. Les proxys interrompent les connexions du client et créent de nouvelles connexions vers les backends.
Ce sous-réseau proxy réservé est utilisé par tous les équilibreurs de charge régionaux basés sur Envoy dans la même région du réseau VPC lb-network
. Il ne peut y avoir qu'un seul sous-réseau proxy réservé actif par région et par réseau.
Console
Si vous utilisez la console Google Cloud, vous pouvez créer le sous-réseau proxy réservé ultérieurement sur la page Équilibrage de charge.
Si vous souhaitez créer le sous-réseau proxy réservé maintenant, procédez comme suit :
Dans la console Google Cloud, accédez à la page Réseaux VPC.
Cliquez sur le nom du réseau VPC partagé :
lb-network
.Cliquez sur Ajouter un sous-réseau.
Dans le champ Nom, saisissez
proxy-only-subnet
.Pour Région, sélectionnez
us-west1
.Définissez le champ Objectif sur Proxy géré régional.
Dans Plage d'adresses IP, saisissez
10.129.0.0/23
.Cliquez sur Ajouter.
gcloud
Créez le sous-réseau proxy réservé à l'aide de la commande gcloud compute networks subnets
create
.
gcloud compute networks subnets create proxy-only-subnet \ --purpose=REGIONAL_MANAGED_PROXY \ --role=ACTIVE \ --region=us-west1 \ --network=lb-network \ --range=10.129.0.0/23
Terraform
Pour créer le sous-réseau proxy réservé VPC dans le réseau lb-network
, utilisez la ressource google_compute_subnetwork
.
API
Créez le sous-réseau proxy réservé avec la méthode subnetworks.insert
, en remplaçant PROJECT_ID par votre ID de projet.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks { "name": "proxy-only-subnet", "ipCidrRange": "10.129.0.0/23", "network": "projects/PROJECT_ID/global/networks/lb-network", "region": "projects/PROJECT_ID/regions/us-west1", "purpose": "REGIONAL_MANAGED_PROXY", "role": "ACTIVE" }
Configurer des règles de pare-feu
Cet exemple utilise les règles de pare-feu suivantes :
fw-allow-health-check
: règle d'entrée applicable aux instances faisant l'objet d'un équilibrage de charge, qui autorise tout le trafic TCP issu des systèmes de vérification d'état Google Cloud (dans130.211.0.0/22
et35.191.0.0/16
). Cet exemple utilise le tag cibleload-balanced-backend
pour identifier les VM auxquelles la règle de pare-feu s'applique.fw-allow-proxies
: règle d'entrée applicable aux instances faisant l'objet d'un équilibrage de charge, qui autorise le trafic TCP sur les ports80
,443
et8080
à partir des proxys gérés de l'équilibreur de charge d'application externe régional. Cet exemple utilise le tag cibleload-balanced-backend
pour identifier les VM auxquelles la règle de pare-feu s'applique.
Sans ces règles de pare-feu, la règle d'entrée interdite par défaut bloque le trafic entrant vers les instances backend.
Les tags cibles définissent les instances backend. Sans les tags cibles, les règles de pare-feu s'appliquent à toutes les instances backend du réseau VPC. Lorsque vous créez les VM de backend, veillez à inclure les tags cibles spécifiés, comme décrit dans la section Créer un groupe d'instances géré.
Console
Dans la console Google Cloud, accédez à la page Règles d'administration.
Cliquez sur Créer une règle de pare-feu pour créer la règle autorisant les vérifications d'état Google Cloud :
- Nom :
fw-allow-health-check
- Réseau :
lb-network
- Sens du trafic : entrée
- Action en cas de correspondance : autoriser
- Cibles : Tags cibles spécifiés
- Tags cibles :
load-balanced-backend
- Filtre source : Plages IPv4
- Plages IPv4 sources :
130.211.0.0/22
et35.191.0.0/16
- Protocoles et ports :
- Choisissez Protocoles et ports spécifiés.
- Cochez la case TCP, puis saisissez
80
pour le numéro de port.
Nous vous recommandons de limiter cette règle aux seuls protocoles et ports qui correspondent à ceux utilisés par votre vérification de l'état. Si vous utiliseztcp:80
pour le protocole et le port, Google Cloud peut contacter vos VM via HTTP sur le port80
, mais pas via HTTPS sur le port443
.
- Nom :
Cliquez sur Créer.
Cliquez sur Créer une règle de pare-feu pour créer la règle autorisant les serveurs proxy de l'équilibreur de charge à se connecter aux backends :
- Nom :
fw-allow-proxies
- Réseau :
lb-network
- Sens du trafic : entrée
- Action en cas de correspondance : autoriser
- Cibles : Tags cibles spécifiés
- Tags cibles :
load-balanced-backend
- Filtre source : Plages IPv4
- Plages IPv4 sources :
10.129.0.0/23
- Protocoles et ports :
- Choisissez Protocoles et ports spécifiés.
- Cochez la case TCP, puis saisissez
80, 443, 8080
pour les numéros de port.
- Nom :
Cliquez sur Créer.
gcloud
Créez la règle
fw-allow-health-check
pour autoriser les vérifications d'état Google Cloud. Cet exemple autorise tout le trafic TCP provenant des tests de vérification d'état. Toutefois, vous pouvez configurer un ensemble de ports plus restreint en fonction de vos besoins.gcloud compute firewall-rules create fw-allow-health-check \ --network=lb-network \ --action=allow \ --direction=ingress \ --source-ranges=130.211.0.0/22,35.191.0.0/16 \ --target-tags=load-balanced-backend \ --rules=tcp
Créez la règle
fw-allow-proxies
pour autoriser les proxys de l'équilibreur de charge d'application externe régional à se connecter à vos backends. Définissezsource-ranges
sur les plages allouées de votre sous-réseau proxy réservé, par exemple10.129.0.0/23
.gcloud compute firewall-rules create fw-allow-proxies \ --network=lb-network \ --action=allow \ --direction=ingress \ --source-ranges=source-range \ --target-tags=load-balanced-backend \ --rules=tcp:80,tcp:443,tcp:8080
Terraform
Pour créer les règles de pare-feu, utilisez la ressource google_compute_firewall
.
API
Créez la règle de pare-feu fw-allow-health-check
en envoyant une requête POST
à la méthode firewalls.insert
, en remplaçant PROJECT_ID par l'ID de votre projet.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewalls { "name": "fw-allow-health-check", "network": "projects/PROJECT-ID/global/networks/lb-network", "sourceRanges": [ "130.211.0.0/22", "35.191.0.0/16" ], "targetTags": [ "load-balanced-backend" ], "allowed": [ { "IPProtocol": "tcp" } ], "direction": "INGRESS" }
Créez la règle de pare-feu fw-allow-proxies
pour autoriser le trafic TCP dans le sous-réseau proxy pour la méthode firewalls.insert
, en remplaçant PROJECT_ID par l'ID de votre projet.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewalls { "name": "fw-allow-proxies", "network": "projects/PROJECT_ID/global/networks/lb-network", "sourceRanges": [ "10.129.0.0/23" ], "targetTags": [ "load-balanced-backend" ], "allowed": [ { "IPProtocol": "tcp", "ports": [ "80" ] }, { "IPProtocol": "tcp", "ports": [ "443" ] }, { "IPProtocol": "tcp", "ports": [ "8080" ] } ], "direction": "INGRESS" }
Configurer un équilibreur de charge d'application externe régional avec un service basé sur une VM
Cette section présente la configuration requise pour les services exécutés sur des VM Compute Engine. Les VM clientes se connectent à l'adresse IP et au port que vous configurez dans la règle de transfert. Lorsque vos applications clientes envoient du trafic vers cette adresse IP et ce port, leurs requêtes sont transférées vers vos VM de backend en fonction du mappage d'URL de l'équilibreur de charge d'application externe régional.
L'exemple de cette page crée explicitement une adresse IP externe réservée pour la règle de transfert de l'équilibreur de charge d'application externe régional au lieu d'autoriser l'allocation d'une adresse IP externe éphémère. Nous vous recommandons de réserver les adresses IP pour les règles de transfert.
Créer un backend de groupe d'instances géré
Cette section explique comment créer un modèle et un groupe d'instances géré. Le groupe d'instances géré fournit des instances de VM exécutant les serveurs de backend d'un exemple d'équilibreur de charge d'application externe régional. Le trafic des clients fait l'objet d'un équilibrage de charge par rapport à ces serveurs de backend. À des fins de démonstration, les backends diffusent leurs propres noms d'hôte.
Console
Créez un modèle d'instance. Dans Google Cloud Console, accédez à la page Modèles d'instances.
Accéder à la page Modèles d'instances
- Cliquez sur Create instance template (Créer un modèle d'instance).
- Dans le champ Nom, saisissez
l7-xlb-backend-template
. - Assurez-vous que le disque de démarrage est défini sur une image Debian, telle que Debian GNU/Linux 12 (bookworm). Ces instructions utilisent des commandes uniquement disponibles dans Debian, comme
apt-get
. - Cliquez sur Options avancées.
- Cliquez sur Mise en réseau et configurez les champs suivants :
- Pour Tags réseau, saisissez
load-balanced-backend
. - Pour Interfaces réseau, sélectionnez l'option suivante :
- Réseau :
lb-network
- Sous-réseau :
backend-subnet
- Réseau :
- Pour Tags réseau, saisissez
Cliquez sur Gestion. Saisissez le script suivant dans le champ Script de démarrage.
#! /bin/bash apt-get update apt-get install apache2 -y a2ensite default-ssl a2enmod ssl vm_hostname="$(curl -H "Metadata-Flavor:Google" \ http://metadata.google.internal/computeMetadata/v1/instance/name)" echo "Page served from: $vm_hostname" | \ tee /var/www/html/index.html systemctl restart apache2
Cliquez sur Créer.
Créez un groupe d'instances géré. Dans Google Cloud Console, accédez à la page Groupes d'instances.
Accéder à la page "Groupes d'instances"
- Cliquez sur Créer un groupe d'instances.
- Sélectionnez Nouveau groupe d'instances géré (sans état). Pour plus d'informations, consultez la page Groupes d'instances gérés (MIG) sans état ou avec état.
- Dans le champ Nom, saisissez
l7-xlb-backend-example
. - Pour Emplacement, sélectionnez Zone unique.
- Pour Région, sélectionnez
us-west1
. - Pour Zone, sélectionnez
us-west1-a
. - Pour Modèle d'instance, sélectionnez
l7-xlb-backend-template
. Dans le champ Mode autoscaling, sélectionnez Activé : ajouter et supprimer des instances dans le groupe.
Définissez le paramètre Nombre minimal d'instances sur
2
et le paramètre Nombre maximal d'instances sur2
ou plus.Cliquez sur Créer.
gcloud
Les instructions gcloud
de ce guide supposent que vous utilisez Cloud Shell ou un autre environnement avec bash installé.
Créez un modèle d'instance de VM avec le serveur HTTP à l'aide de la commande
gcloud compute instance-templates create
.gcloud compute instance-templates create l7-xlb-backend-template \ --region=us-west1 \ --network=lb-network \ --subnet=backend-subnet \ --tags=load-balanced-backend \ --image-family=debian-12 \ --image-project=debian-cloud \ --metadata=startup-script='#! /bin/bash apt-get update apt-get install apache2 -y a2ensite default-ssl a2enmod ssl vm_hostname="$(curl -H "Metadata-Flavor:Google" \ http://metadata.google.internal/computeMetadata/v1/instance/name)" echo "Page served from: $vm_hostname" | \ tee /var/www/html/index.html systemctl restart apache2'
Créez un groupe d'instances géré dans la zone à l'aide de la commande
gcloud compute instance-groups managed create
.gcloud compute instance-groups managed create l7-xlb-backend-example \ --zone=us-west1-a \ --size=2 \ --template=l7-xlb-backend-template
Terraform
Pour créer le modèle d'instance, utilisez la ressource google_compute_instance_template
.
Pour créer le groupe d'instances géré, utilisez la ressource google_compute_instance_group_manager
.
API
Créez le modèle d'instance avec la méthode
instanceTemplates.insert
, en remplaçantPROJECT_ID
par votre ID de projet.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates { "name":"l7-xlb-backend-template", "properties": { "machineType":"e2-standard-2", "tags": { "items":[ "load-balanced-backend" ] }, "metadata": { "kind":"compute#metadata", "items":[ { "key":"startup-script", "value":"#! /bin/bash\napt-get update\napt-get install apache2 -y\na2ensite default-ssl\na2enmod ssl\nvm_hostname=\"$(curl -H \"Metadata-Flavor:Google\" \\\nhttp://metadata.google.internal/computeMetadata/v1/instance/name)\"\necho \"Page served from: $vm_hostname\" | \\\ntee /var/www/html/index.html\nsystemctl restart apache2" } ] }, "networkInterfaces":[ { "network":"projects/PROJECT_ID/global/networks/lb-network", "subnetwork":"regions/us-west1/subnetworks/backend-subnet", "accessConfigs":[ { "type":"ONE_TO_ONE_NAT" } ] } ], "disks": [ { "index":0, "boot":true, "initializeParams": { "sourceImage":"projects/debian-cloud/global/images/family/debian-12" }, "autoDelete":true } ] } }
Créez un groupe d'instances géré dans chaque zone à l'aide de la méthode
instanceGroupManagers.insert
, en remplaçantPROJECT_ID
par l'ID de votre projet.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/{zone}/instanceGroupManagers { "name": "l7-xlb-backend-example", "zone": "projects/PROJECT_ID/zones/us-west1-a", "instanceTemplate": "projects/PROJECT_ID/global/instanceTemplates/l7-xlb-backend-template", "baseInstanceName": "l7-xlb-backend-example", "targetSize": 2 }
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 de backend de l'équilibreur de charge transfère le trafic vers le port nommé.
Console
Dans la console Google Cloud, accédez à la page Groupes d'instances.
Cliquez sur le nom de votre groupe d'instances (dans cet exemple
l7-xlb-backend-example
).Sur la page Présentation du groupe d'instances, cliquez sur Modifier
.Cliquez sur Préciser le mappage des noms des ports.
Cliquez sur Ajouter un élément.
Pour le nom du port, saisissez
http
. Pour le numéro de port, saisissez80
.Cliquez sur Enregistrer.
gcloud
Exécutez la commande gcloud compute instance-groups
set-named-ports
.
gcloud compute instance-groups set-named-ports l7-xlb-backend-example \ --named-ports http:80 \ --zone us-west1-a
Terraform
L'attribut named_port
est inclus dans l'exemple de groupe d'instances géré.
Réserver l'adresse IP de l'équilibreur de charge
Réservez une adresse IP statique pour l'équilibreur de charge.
Console
Dans la console Google Cloud, accédez à la page Réserver une adresse statique.
Choisissez un Nom pour la nouvelle adresse.
Définissez le Niveau de service réseau sur Standard.
Pour Version IP, sélectionnez IPv4. Les adresses IPv6 ne peuvent être que globales et ne peuvent être utilisées qu'avec les équilibreurs de charge globaux.
Pour le Type, sélectionnez Régional.
Pour le paramètre Région, sélectionnez us-west1.
Laissez l'option Associé à définie sur Aucun. Une fois l'équilibreur de charge créé, cette adresse IP sera associée à la règle de transfert de l'équilibreur de charge.
Cliquez sur Réserver pour réserver l'adresse IP.
gcloud
Pour réserver une adresse IP externe statique à l'aide de
gcloud compute
, utilisez la commandecompute addresses create
.gcloud compute addresses create ADDRESS_NAME \ --region=us-west1 \ --network-tier=STANDARD
Remplacez les éléments suivants :
ADDRESS_NAME
: nom que vous souhaitez donner à cette adresse.REGION
: région dans laquelle vous souhaitez réserver cette adresse. Cette région doit être la même que celle de l'équilibreur de charge. Toutes les adresses IP régionales sontIPv4
.
Utilisez la commande
compute addresses describe
pour afficher le résultat :gcloud compute addresses describe ADDRESS_NAME
Terraform
Pour réserver l'adresse IP, utilisez la ressource google_compute_address
.
Pour savoir comment appliquer ou supprimer une configuration Terraform, consultez la page Commandes Terraform de base.
API
Pour créer une adresse IPv4 régionale, appelez la méthode addresses.insert
régionale :
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/addresses
Le corps de votre requête doit contenir les éléments suivants :
{ "name": "ADDRESS_NAME" "networkTier": "STANDARD" "region": "us-west1" }
Remplacez les éléments suivants :
ADDRESS_NAME
: nom de l'adresseREGION
: nom de la région pour cette requête.PROJECT_ID
: ID du projet pour cette requête
Configurer l'équilibreur de charge
Cet exemple vous explique comment créer les ressources suivantes pour l'équilibreur de charge d'application externe régional :
- Vérification d'état HTTP
- Un service de backend avec un groupe d'instances géré en tant que backend
- Un mappage d'URL
- Veillez à faire référence à un mappage d'URL régional si une région est définie pour le proxy HTTP(S) cible. Un mappage d'URL régional achemine les requêtes vers un service de backend régional en fonction des règles que vous définissez pour l'hôte et le chemin d'une URL entrante. Un mappage d'URL régional peut être référencé par une règle de proxy cible régionale de la même région uniquement.
- Un certificat SSL (pour HTTPS)
- Proxy cible
- Règle de transfert
Disponibilité du proxy
Parfois, les régions Google Cloud ne disposent pas d'une capacité de proxy suffisante pour un nouvel équilibreur de charge. Dans ce cas, la console Google Cloud fournit un message d'avertissement de disponibilité du proxy lors de la création de votre équilibreur de charge. Pour résoudre ce problème, vous pouvez effectuer l'une des opérations suivantes :
- Sélectionnez une autre région pour votre équilibreur de charge. Cette option peut être pratique si vous avez des backends dans une autre région.
- Sélectionnez un réseau VPC comportant déjà un sous-réseau proxy réservé alloué.
Attendez que le problème de capacité soit résolu.
Console
Démarrer la configuration
Dans Google Cloud Console, accédez à la page Équilibrage de charge.
- Cliquez sur Créer un équilibreur de charge.
- Dans le champ Type d'équilibreur de charge, sélectionnez Équilibreur de charge d'application (HTTP/HTTPS), puis cliquez sur Suivant.
- Pour Public ou interne, sélectionnez Public (externe), puis cliquez sur Suivant.
- Pour Déploiement mondial ou dans une seule région, sélectionnez Recommandé pour les charges de travail régionales, puis cliquez sur Suivant.
- Cliquez sur Configurer.
Configuration de base
- Pour le nom de l'équilibreur de charge, saisissez
regional-l7-xlb
. - Pour Région, sélectionnez
us-west1
. - Pour Réseau, sélectionnez
lb-network
.
Réserver un sous-réseau proxy réservé
Pour un équilibreur de charge d'application externe régional, réservez un sous-réseau proxy réservé :
- Cliquez sur Réserver un sous-réseau.
- Dans le champ Nom, saisissez
proxy-only-subnet
. - Dans Plage d'adresses IP, saisissez
10.129.0.0/23
. - Cliquez sur Ajouter.
Configurer l'interface
Pour HTTP :
- Cliquez sur Configuration de l'interface.
- Pour Nom, définissez
l7-xlb-forwarding-rule
. - Définissez le paramètre Protocole sur
HTTP
. - Définissez Niveau de service réseau sur Standard.
- Définissez le paramètre Port sur
80
. - Sélectionnez l'Adresse IP que vous avez créée dans la section Réserver l'adresse IP de l'équilibreur de charge.
- Cliquez sur OK.
Pour HTTPS :
- Cliquez sur Configuration de l'interface.
- Dans le champ Nom, saisissez
l7-xlb-forwarding-rule
. - Dans le champ Protocole, sélectionnez
HTTPS (includes HTTP/2)
. - Définissez Niveau de service réseau sur Standard.
- Assurez-vous que le Port est défini sur la valeur
443
. - Sélectionnez l'Adresse IP que vous avez créée dans la section Réserver l'adresse IP de l'équilibreur de charge.
- Dans la liste Paramètres, procédez comme suit :
- Si vous possédez déjà une ressource de certificat SSL autogéré Compute Engine, sélectionnez le certificat SSL principal.
- Cliquez sur Créer un certificat.
- Dans le champ Nom, saisissez
l7-xlb-cert
. - Dans les champs appropriés, importez vos fichiers au format PEM :
- Certificat
- Clé privée
- Cliquez sur Créer.
- Dans le champ Nom, saisissez
- Facultatif : Pour ajouter des certificats en plus du certificat SSL principal :
- Cliquez sur Ajouter un certificat.
- Si vous disposez déjà d'un certificat, sélectionnez-le dans la liste Certificats.
- Facultatif : Cliquez sur Créer un certificat et suivez les instructions indiquées à l'étape précédente.
Sélectionnez une règle SSL dans la liste Règle SSL. Si vous souhaitez créer une règle SSL, procédez comme suit:
- Dans la liste Règle SSL, sélectionnez Créer une règle.
- Donnez un nom à la règle SSL.
- Sélectionnez une Version minimale de TLS. La valeur par défaut est TLS 1.0.
- Sélectionnez l'un des profils gérés par Google préconfigurés ou un profil personnalisé qui vous permet de sélectionner des fonctionnalités SSL individuellement. Les Fonctionnalités activées et les Fonctionnalités désactivées s'affichent.
- Cliquez sur Enregistrer.
Si vous n'avez pas créé de règle SSL, une règle SSL Google Cloud par défaut est appliquée.
Cliquez sur OK.
Configurer le service de backend
- Cliquez sur Configuration du backend.
- Dans le menu Créer ou sélectionner des services de backend, sélectionnez Créer un service backend.
- Définissez le nom du service de backend sur
l7-xlb-backend-service
. - Pour Protocole, sélectionnez HTTP.
- Pour le Port nommé, saisissez
http
. - Définissez Type de backend sur Groupe d'instances.
- Dans la section Nouveau backend :
- Définissez le paramètre Groupe d'instances sur
l7-xlb-backend-example
. - Définissez le paramètre Numéros de ports sur
80
. - Définissez le Mode d'équilibrage sur Utilisation.
- Cliquez sur OK.
- Définissez le paramètre Groupe d'instances sur
- Dans la section Vérification d'état, cliquez sur Créer une vérification d'état.
- Pour Nom, définissez
l7-xlb-basic-check
. - Définissez le paramètre Protocole sur
HTTP
. - Définissez le paramètre Port sur
80
. - Cliquez sur Save (Enregistrer).
- Pour Nom, définissez
- Cliquez sur Créer.
Configurer les règles de routage
- Cliquez sur Règles de routage.
- Sous Mode, sélectionnez Règle d'hôte et de chemin d'accès simple.
- Assurez-vous que
l7-xlb-backend-service
est le seul service de backend pour tous les hôtes et chemins sans correspondance.
Vérifier la configuration
- Cliquez sur Vérifier et finaliser.
- Vérifiez les paramètres de configuration de votre équilibreur de charge.
- Facultatif : cliquez sur Code équivalent pour afficher la requête API REST qui sera utilisée pour créer l'équilibreur de charge.
- Cliquez sur Créer.
gcloud
Définissez la vérification d'état HTTP à l'aide de la commande
gcloud compute health-checks create http
.gcloud compute health-checks create http l7-xlb-basic-check \ --region=us-west1 \ --request-path='/' \ --use-serving-port
Définissez le service de backend avec la commande
gcloud compute backend-services create
.gcloud compute backend-services create l7-xlb-backend-service \ --load-balancing-scheme=EXTERNAL_MANAGED \ --protocol=HTTP \ --port-name=http \ --health-checks=l7-xlb-basic-check \ --health-checks-region=us-west1 \ --region=us-west1
Ajoutez des backends au service de backend à l'aide de la commande
gcloud compute backend-services add-backend
.gcloud compute backend-services add-backend l7-xlb-backend-service \ --balancing-mode=UTILIZATION \ --instance-group=l7-xlb-backend-example \ --instance-group-zone=us-west1-a \ --region=us-west1
Créez le mappage d'URL à l'aide de la commande
gcloud compute url-maps create
.gcloud compute url-maps create regional-l7-xlb-map \ --default-service=l7-xlb-backend-service \ --region=us-west1
Créez le proxy cible.
Pour HTTP :
Pour un équilibreur de charge HTTP, créez le proxy cible à l'aide de la commande
gcloud compute target-http-proxies create
.gcloud compute target-http-proxies create l7-xlb-proxy \ --url-map=regional-l7-xlb-map \ --url-map-region=us-west1 \ --region=us-west1
Pour HTTPS :
Vous pouvez créer des certificats Compute Engine ou via le gestionnaire de certificats. Utilisez l'une des méthodes suivantes pour créer des certificats à l'aide du gestionnaire de certificats :
- Certificats régionaux autogérés. Pour en savoir plus sur la création et l'utilisation de certificats autogérés régionaux, consultez la page Déployer un certificat régional autogéré. Les mappages de certificats ne sont pas acceptés.
Certificats régionaux gérés par Google. Les mappages de certificats ne sont pas acceptés.
Les types de certificats régionaux gérés par Google suivants sont compatibles avec le gestionnaire de certificats :
- Certificats régionaux gérés par Google avec une autorisation DNS par projet. Pour en savoir plus, consultez la page Déployer un certificat régional géré par Google.
- Certificats régionaux gérés par Google (privés) avec Certificate Authority Service. Pour en savoir plus, consultez la page Déployer un certificat régional géré par Google avec le service d'autorité de certification.
Attribuez vos chemins de fichiers à des noms de variables.
export LB_CERT=path to PEM-formatted file
export LB_PRIVATE_KEY=path to PEM-formatted file
Créez un certificat SSL régional à l'aide de la commande
gcloud compute ssl-certificates create
.gcloud compute ssl-certificates create l7-xlb-cert \ --certificate=$LB_CERT \ --private-key=$LB_PRIVATE_KEY \ --region=us-west1
Utilisez le certificat SSL régional pour créer le proxy cible à l'aide de la commande
gcloud compute target-https-proxies create
.gcloud compute target-https-proxies create l7-xlb-proxy \ --url-map=regional-l7-xlb-map \ --region=us-west1 \ --ssl-certificates=l7-xlb-cert
Créez la règle de transfert.
Pour HTTP :
Utilisez la commande
gcloud compute forwarding-rules create
avec les options appropriées.gcloud compute forwarding-rules create l7-xlb-forwarding-rule \ --load-balancing-scheme=EXTERNAL_MANAGED \ --network-tier=STANDARD \ --network=lb-network \ --address=ADDRESS_NAME \ --ports=80 \ --region=us-west1 \ --target-http-proxy=l7-xlb-proxy \ --target-http-proxy-region=us-west1
Pour HTTPS :
Créez la règle de transfert à l'aide de la commande
gcloud compute forwarding-rules create
avec les options appropriées.gcloud compute forwarding-rules create l7-xlb-forwarding-rule \ --load-balancing-scheme=EXTERNAL_MANAGED \ --network-tier=STANDARD \ --network=lb-network \ --address=ADDRESS_NAME \ --ports=443 \ --region=us-west1 \ --target-https-proxy=l7-xlb-proxy \ --target-https-proxy-region=us-west1
Après avoir créé des certificats, associez-les directement au proxy cible.
Terraform
Pour créer la vérification d'état, utilisez la ressource google_compute_region_health_check
.
Pour créer le service de backend, utilisez la ressource google_compute_region_backend_service
.
Pour créer le mappage d'URL, utilisez la ressource google_compute_region_url_map
.
Pour créer le proxy HTTP cible, utilisez la ressource google_compute_region_target_http_proxy
.
Pour créer la règle de transfert, utilisez la ressource google_compute_forwarding_rule
.
Pour savoir comment appliquer ou supprimer une configuration Terraform, consultez la page Commandes Terraform de base.
API
Créez la vérification de l'état en envoyant une requête POST
à la méthode regionHealthChecks.insert
, en remplaçant PROJECT_ID
par l'ID de votre projet.
POST https://compute.googleapis.com/compute/v1/projects/<var>PROJECT_ID</var>/regions/{region}/healthChecks
{
"name": "l7-xlb-basic-check",
"type": "HTTP",
"httpHealthCheck": {
"portSpecification": "USE_SERVING_PORT"
}
}
Créez le service de backend régional en envoyant une requête POST
à la méthode regionBackendServices.insert
, en remplaçant PROJECT_ID
par l'ID de votre projet.
POST https://compute.googleapis.com/compute/v1/projects/<var>PROJECT_ID</var>/regions/us-west1/backendServices
{
"name": "l7-xlb-backend-service",
"backends": [
{
"group": "projects/<var>PROJECT_ID</var>/zones/us-west1-a/instanceGroups/l7-xlb-backend-example",
"balancingMode": "UTILIZATION"
}
],
"healthChecks": [
"projects/<var>PROJECT_ID</var>/regions/us-west1/healthChecks/l7-xlb-basic-check"
],
"loadBalancingScheme": "EXTERNAL_MANAGED"
}
Créez le mappage d'URL en envoyant une requête POST
à la méthode regionUrlMaps.insert
, en remplaçant PROJECT_ID
par l'ID de votre projet.
POST https://compute.googleapis.com/compute/v1/projects/<var>PROJECT_ID</var>/regions/us-west1/urlMaps
{
"name": "regional-l7-xlb-map",
"defaultService": "projects/<var>PROJECT_ID</var>/regions/us-west1/backendServices/l7-xlb-backend-service"
}
Créez le proxy HTTP cible en envoyant une requête POST
à la méthode regionTargetHttpProxies.insert
, en remplaçant PROJECT_ID
par l'ID de votre projet.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/targetHttpProxy { "name": "l7-xlb-proxy", "urlMap": "projects/PROJECT_ID/global/urlMaps/regional-l7-xlb-map", "region": "us-west1" }
Créez la règle de transfert en envoyant une requête POST
à la méthode forwardingRules.insert
, en remplaçant PROJECT_ID
par l'ID de votre projet.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/forwardingRules { "name": "l7-xlb-forwarding-rule", "IPAddress": "10.1.2.99", "IPProtocol": "TCP", "portRange": "80-80", "target": "projects/PROJECT_ID/regions/us-west1/targetHttpProxies/l7-xlb-proxy", "loadBalancingScheme": "EXTERNAL_MANAGED", "network": "projects/PROJECT_ID/global/networks/lb-network", "networkTier": "STANDARD", }
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
, utilisez le code suivant :
NAME TYPE DATA www A 30.90.80.100 @ A 30.90.80.100
Si vous utilisez Cloud DNS comme fournisseur DNS, consultez la section Ajouter, modifier et supprimer des enregistrements.
Tester l'équilibreur de charge
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.
- Sélectionnez 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 la console Google Cloud 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. - Une fois que la console Google Cloud 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
Notez l'adresse IPv4 réservée :
gcloud beta compute addresses describe ADDRESS_NAME \ --format="get(address)" \ --region="us-west1"
Vous pouvez tester votre équilibreur de charge à l'aide d'un navigateur Web en accédant à https://IP_ADDRESS
(ou http://IP_ADDRESS
). Remplacez IP_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 contenant un minimum d'informations sur l'instance backend. Si votre navigateur n'affiche pas cette page, examinez les paramètres de configuration de ce guide.
Options de configuration supplémentaires
Cette section développe l'exemple de configuration et propose d'autres options de configuration. Toutes les tâches décrites ici sont facultatives. Vous pouvez les exécuter dans n'importe quel ordre.
Activer l'affinité de session
Ces procédures vous montrent comment mettre à jour un service de backend pour l'exemple d'équilibreur de charge d'application externe régional afin que le service de backend utilise l'affinité basée sur les cookies générés, l'affinité de champ d'en-tête ou l'affinité de cookie HTTP.
Lorsque l'affinité basée sur les cookies générés est activée, l'équilibreur de charge émet un cookie lors de la première requête. Pour chaque requête suivante présentant le même cookie, l'équilibreur de charge dirige celle-ci vers les mêmes VM ou points de terminaison backend. Pour les équilibreurs de charge d'application externes régionaux, ce cookie est nommé GCILB
.
Lorsque l'affinité du champ d'en-tête est activée, l'équilibreur de charge achemine les requêtes vers les VM ou les points de terminaison de backend dans un NEG en fonction de la valeur de l'en-tête HTTP nommé dans l'option --custom-request-header
. L'affinité du champ d'en-tête n'est valide que si la stratégie de localité d'équilibrage de charge est RING_HASH
ou MAGLEV
et que le hachage cohérent du service de backend spécifie le nom de l'en-tête HTTP.
Lorsque l'affinité basée sur les cookies HTTP est activée, l'équilibreur de charge achemine les requêtes vers les VM ou les points de terminaison de backend dans un NEG, en fonction d'un cookie HTTP nommé dans l'option HTTP_COOKIE
avec l'option --affinity-cookie-ttl
facultative. Si le client ne fournit pas le cookie dans sa requête HTTP, le proxy génère le cookie et le renvoie au client dans un en-tête Set-Cookie
. L'affinité basée sur les cookies HTTP n'est valide que si la règle de localité d'équilibrage de charge est RING_HASH
ou MAGLEV
et que le hachage cohérent du service de backend spécifie le cookie HTTP.
Console
Pour activer ou modifier l'affinité de session pour un service de backend :
Dans Google Cloud Console, accédez à la page Équilibrage de charge.
Sélectionnez l'équilibreur de charge que vous venez de créer.
Cliquez sur Backends.
Cliquez sur l7-xlb-backend-service (le nom du service de backend que vous avez créé pour cet exemple) et cliquez sur Modifier.
Sur la page Détails du service backend, cliquez sur Configuration avancée.
Sous Affinité de session, sélectionnez le type d'affinité de session souhaité dans le menu.
Cliquez sur Mettre à jour.
gcloud
Utilisez les commandes suivantes pour mettre à jour le service de backend l7-xlb-backend-service
vers différents types d'affinité de session:
gcloud compute backend-services update l7-xlb-backend-service \ --session-affinity=GENERATED_COOKIE | HEADER_FIELD | HTTP_COOKIE | CLIENT_IP --region=us-west1
API
Pour définir l'affinité de session, envoyez une requête PATCH
à la méthode regionBackendServices/patch
.
PATCH https://compute.googleapis.com/compute/v1/projects/<var>PROJECT_ID</var>/regions/us-west1/regionBackendServices/l7-xlb-backend-service
{
"sessionAffinity": <var>"GENERATED_COOKIE" | "HEADER_FIELD" | "HTTP_COOKIE" | "CLIENT_IP"</var>
}
Mettre à jour le délai d'expiration du message keepalive HTTP client
L'équilibreur de charge créé lors des étapes précédentes a été configuré avec une valeur par défaut pour le délai d'expiration du message keepalive HTTP du client.Pour mettre à jour le délai d'expiration du message HTTP du client, suivez les instructions ci-dessous.
Console
Dans la console Google Cloud, accédez à la page Équilibrage de charge.
- Cliquez sur le nom de l'équilibreur de charge que vous souhaitez modifier.
- Cliquez sur Modifier ( ).
- Cliquez sur Configuration de l'interface.
- Développez Fonctionnalités avancées. Dans le champ Délai avant expiration du message keepalive HTTP, saisissez une valeur de délai avant expiration.
- Cliquez sur Mettre à jour.
- Pour vérifier vos modifications, cliquez sur Vérification et finalisation, puis sur Mettre à jour.
gcloud
Pour un équilibreur de charge HTTP, mettez à jour le proxy HTTP cible à l'aide de la commande gcloud compute target-http-proxies update
.
gcloud compute target-http-proxies update TARGET_HTTP_PROXY_NAME \ --http-keep-alive-timeout-sec=HTTP_KEEP_ALIVE_TIMEOUT_SEC \ --region=REGION
Pour un équilibreur de charge HTTPS, mettez à jour le proxy HTTPS cible à l'aide de la commande gcloud compute target-https-proxies update
.
gcloud compute target-https-proxies update TARGET_HTTP_PROXY_NAME \ --http-keep-alive-timeout-sec=HTTP_KEEP_ALIVE_TIMEOUT_SEC \ --region REGION
Remplacez les éléments suivants :
TARGET_HTTP_PROXY_NAME
: nom du proxy HTTP cible.TARGET_HTTPS_PROXY_NAME
: nom du proxy HTTPS cible.HTTP_KEEP_ALIVE_TIMEOUT_SEC
: valeur du délai avant expiration du message keepalive HTTP comprise entre 5 et 600 secondes.
Activer IAP sur l'équilibreur de charge d'application externe
Vous pouvez configurer IAP pour l'activer ou le désactiver (par défaut). Si cette option est activée, vous devez fournir des valeurs pour oauth2-client-id
et oauth2-client-secret
.
Pour activer IAP, mettez à jour le service de backend afin d'inclure l'indicateur --iap=enabled
avec oauth2-client-id
et oauth2-client-secret
.
Vous pouvez également activer l'IAP pour une ressource Compute Engine à l'aide de la console Google Cloud, de la gcloud CLI ou de l'API.
Étape suivante
- Convertir l'équilibreur de charge d'application en IPv6
- Présentation de la gestion du trafic pour les équilibreurs de charge d'application externes régionaux
- Sous-réseaux proxy réservés
- Utiliser des certificats SSL autogérés
- Nettoyez la configuration de l'équilibreur de charge.