Cette page comprend deux exemples pour l'équilibreur de charge d'application classique :
- Configurer un routage basé sur les paramètres de requête
- Configurer un routage basé sur un en-tête HTTP
Pour configurer la gestion du trafic pour l'équilibreur de charge d'application externe global et l'équilibreur de charge d'application externe régional, consultez les pages suivantes :
- Configurer la gestion du trafic pour un équilibreur de charge d'application externe global
- Configurer la gestion du trafic pour un équilibreur de charge d'application externe régional
Avant de commencer
- Consultez la présentation de la gestion du trafic pour les équilibreurs de charge d'application externes.
- Familiarisez-vous avec l'API sur les mappages d'URL.
Configurer un routage basé sur les paramètres de requête
Cet exemple montre comment utiliser des paramètres de requête pour effectuer des tests A/B en fonction de la chaîne de requête.
Ajouter deux groupes d'instances backend
Pour que le routage soit utile, vous devez disposer de plusieurs backends.
Pour configurer deux backends, vos VM doivent appartenir à deux groupes d'instances. Ce guide explique comment créer des groupes d'instances gérés avec des VM Linux exécutant Apache, ainsi que comment configurer l'équilibrage de charge.
Les groupes d'instances gérés fournissent des machines virtuelles exécutant les serveurs de backend d'un équilibreur de charge HTTP externe. À des fins de démonstration, les backends diffusent leurs propres noms d'hôte.
Pour plus de simplicité, les backends se trouvent dans la même région. Si vous souhaitez une configuration multirégionale, vous devez configurer un modèle d'instance pour la deuxième région.
Console
Créez un modèle d'instance. Dans la console Google Cloud, 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
lb-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 le champ suivant :
- Pour Tags réseau, saisissez
allow-health-check
.
- 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é. Accédez à la page Groupes d'instances de la console Google Cloud.
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
first-example-ig
. - 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 Nombre maximal d'instances, saisissez
2
. - Sous Mode autoscaling, sélectionnez
Off:do not autoscale
. - Cliquez sur Créer.
Créez un autre groupe d'instances géré comme celui-ci. Nommez le deuxième élément second-example-ig
et basez-le sur le modèle lb-backend-template
.
gcloud
Créez un modèle d'instance.
gcloud compute instance-templates create lb-backend-template \ --region=us-east1 \ --network=default \ --subnet=default \ --tags=allow-health-check \ --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é basé sur ce modèle.
gcloud compute instance-groups managed create first-example-ig \ --template=lb-backend-template --size=2 --zone=us-east1-b
Créez un groupe d'instances géré basé sur ce modèle.
gcloud compute instance-groups managed create second-example-ig \ --template=lb-backend-template --size=2 --zone=us-east1-c
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 la console Google Cloud, accédez à la page Règles d'administration.
Accéder à la page "Stratégies de pare-feu" - Cliquez sur Créer une règle de pare-feu pour créer la deuxième règle de pare-feu :
- Saisissez le nom
fw-allow-health-check
. - Sous Réseau, sélectionnez
Default
. - 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
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
- Accédez à la page "Adresses IP externes" de la console Google Cloud.
Accéder à la page Adresses IP externes - Cliquez sur Réserver une adresse statique pour réserver une adresse IPv4.
- Attribuez un Nom à
lb-ipv4-1
. - Définissez le niveau de réseau sur Standard.
- Définissez la Version IP sur IPv4.
- Définissez le Type sur Global.
- Cliquez sur Réserver.
- Assurez-vous que le paramètre Type est bien défini 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 des backends d'équilibreur de charge
Console
La console Google Cloud n'est actuellement pas compatible avec la configuration du routage basé sur les en-têtes et sur les paramètres. Utilisez plutôt gcloud
ou l'API.
gcloud
- Créez une vérification d'état.
gcloud compute health-checks create http http-basic-check \ --port 80
- Créez le premier service de backend.
-
Pour un équilibreur de charge d'application externe global, exécutez la commande gcloud CLI avec
load-balancing-scheme=EXTERNAL_MANAGED
. Ce paramètre offre une fonctionnalité de gestion avancée du trafic. - Pour un équilibreur de charge d'application classique, utilisez
load-balancing-scheme=EXTERNAL
.
gcloud compute backend-services create service-a \ --load-balancing-scheme=LOAD_BALANCING_SCHEME \ --global-health-checks \ --protocol HTTP \ --health-checks http-basic-check \ --global
-
Pour un équilibreur de charge d'application externe global, exécutez la commande gcloud CLI avec
- Créez le deuxième service de backend.
gcloud compute backend-services create service-b \ --load-balancing-scheme=LOAD_BALANCING_SCHEME \ --global-health-checks \ --protocol HTTP \ --health-checks http-basic-check \ --global
- Ajoutez votre premier groupe d'instances en tant que backend au premier service de backend.
gcloud compute backend-services add-backend service-a \ --balancing-mode=UTILIZATION \ --max-utilization=0.8 \ --capacity-scaler=1 \ --instance-group=first-example-ig \ --instance-group-zone=us-east1-b \ --global
- Ajoutez votre deuxième groupe d'instances en tant que backend au deuxième service de backend.
gcloud compute backend-services add-backend service-b \ --balancing-mode=UTILIZATION \ --max-utilization=0.8 \ --capacity-scaler=1 \ --instance-group=second-example-ig \ --instance-group-zone=us-east1-c \ --global
Créer le mappage d'URL
Console
La console Google Cloud n'est actuellement pas compatible avec la configuration du routage basé sur les en-têtes et sur les paramètres. Utilisez plutôt gcloud
ou l'API.
gcloud
Créez un fichier YAML
/tmp/web-map-http.yaml
. RemplacezPROJECT_ID
par l'ID de votre projet.defaultService: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/service-a hostRules: - hosts: - '*' pathMatcher: path-matcher-1 name: web-map-http pathMatchers: - defaultService: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/service-a name: path-matcher-1 routeRules: - matchRules: - prefixMatch: / queryParameterMatches: - name: ABTest exactMatch: A priority: 0 service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/service-a - matchRules: - prefixMatch: / queryParameterMatches: - name: ABTest exactMatch: B priority: 1 service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/service-b selfLink: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/urlMaps/web-map-http tests: - description: Test routing for query ABTest with A host: example.com path: /?ABTest=A service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/service-a expectedOutputUrl: http://example.com/?ABTest=A - description: Test routing for query ABTest with B host: example.com path: /?ABTest=B service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/service-b expectedOutputUrl: http://example.com/?ABTest=B
Validez le mappage d'URL.
gcloud compute url-maps validate --source /tmp/web-map-http.yaml
Si les tests réussissent et que le résultat de la commande est positif, enregistrez les modifications dans le mappage d'URL.
Mettez à jour le mappage d'URL.
gcloud compute url-maps import web-map-http \ --source /tmp/web-map-http.yaml \ --global
Créer le proxy cible et la règle de transfert
Console
La console Google Cloud n'est actuellement pas compatible avec la configuration du routage basé sur les en-têtes et sur les paramètres. Utilisez plutôt gcloud
ou l'API.
gcloud
- Créez un proxy HTTP cible pour acheminer les requêtes vers votre mappage d'URL :
gcloud compute target-http-proxies create http-lb-proxy \ --url-map web-map-http
- Créez une règle de transfert globale pour acheminer les requêtes entrantes vers le proxy.
-
Pour un équilibreur de charge d'application externe global, exécutez la commande gcloud CLI avec
load-balancing-scheme=EXTERNAL_MANAGED
. Ce paramètre offre une fonctionnalité de gestion avancée du trafic. - Pour un équilibreur de charge d'application classique, utilisez
load-balancing-scheme=EXTERNAL
.
gcloud compute forwarding-rules create http-content-rule \ --load-balancing-scheme=LOAD_BALANCING_SCHEME \ --network-tier=PREMIUM \ --address=lb-ipv4-1 \ --global \ --target-http-proxy=http-lb-proxy \ --ports=80
-
Pour un équilibreur de charge d'application externe global, exécutez la commande gcloud CLI avec
Tests
Notez l'adresse IPv4 réservée :
gcloud compute addresses describe lb-ipv4-1 \ --format="get(address)" \ --global
Testez cette configuration en exécutant :
curl http://IP_ADDRESS?ABTest=A
curl http://IP_ADDRESS?ABTest=B
Dans un navigateur, ouvrez http://IP_ADDRESS?ABTest=A
et http://IP_ADDRESS?ABTest=B
.
Configurer un routage basé sur un en-tête HTTP
Cet exemple montre comment ajouter et supprimer des en-têtes HTTP pour effectuer un routage intelligent.
Avant de commencer
Vous pouvez utiliser un équilibreur de charge d'application externe existant ou en créer un.
Vous pouvez utiliser cette fonctionnalité avec n'importe quel type de backend compatible. Cet exemple suppose que vous utilisez des VM dans un groupe d'instances.
Pour configurer un équilibreur de charge simple, consultez l'exemple basé sur les paramètres de requête ci-dessus.
Mettre le mappage d'URL à jour
Console
La console Google Cloud n'est actuellement pas compatible avec la configuration du routage basé sur les en-têtes et sur les paramètres. Utilisez plutôt gcloud
ou l'API.
gcloud
Cet exemple montre comment utiliser des en-têtes de requêtes HTTP pour effectuer des tests A/B en fonction des valeurs des en-têtes HTTP de la requête.
Créez un fichier YAML
/tmp/web-map-http.yaml
. RemplacezPROJECT_ID
par l'ID de votre projet.defaultService: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/service-a kind: compute#urlMap name: web-map-http hostRules: - hosts: - '*' pathMatcher: path-matcher-1 pathMatchers: - defaultService: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/service-a name: path-matcher-1 routeRules: - matchRules: - prefixMatch: / headerMatches: - headerName: ABTest exactMatch: A priority: 0 service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/service-a - matchRules: - prefixMatch: / headerMatches: - headerName: ABTest exactMatch: B priority: 1 service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/service-b tests: - description: Test routing for query ABTest with A host: example.com path: / headers: - name: ABTest value: A service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/service-a - description: Test routing for query ABTest with B host: example.com path: / headers: - name: ABTest value: B service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/service-b
Validez le mappage d'URL.
gcloud compute url-maps validate --source /tmp/web-map-http.yaml
Si les tests réussissent et que le résultat de la commande est positif, enregistrez les modifications dans le mappage d'URL.
Mettez à jour le mappage d'URL.
gcloud compute url-maps import web-map-http \ --source /tmp/web-map-http.yaml \ --global
Tests
À l'aide de l'adresse IPv4 de l'équilibreur de charge associé, testez cette configuration en exécutant la commande suivante :
curl http://IP_ADDRESS -H "ABTest: A"
curl http://IP_ADDRESS -H "ABTest: B"