Ce document explique comment migrer les ressources d'infrastructure de l'équilibreur de charge d'application classique vers l'infrastructure de l'équilibreur de charge d'application externe global.
Avant de commencer
Assurez-vous que votre configuration remplit les conditions préalables suivantes.
Définir un projet par défaut
Console
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
gcloud
gcloud config set project PROJECT_ID
Remplacez PROJECT_ID
par le projet que vous utilisez dans le cadre de ce guide.
Autorisations
Pour suivre ce document, vous devez disposer des autorisations nécessaires à la création d'instances de machine virtuelle (VM) Compute Engine, de règles de pare-feu, d'adresses IP réservées et de buckets Cloud Storage dans un projet Google Cloud. Vous devez être propriétaire ou éditeur du projet, ou disposer des rôles IAM Compute Engine suivants:
Tâche | Rôle requis |
---|---|
Créer des instances | Rôle d'administrateur d'instances Compute (bêta) (roles/compute.instanceAdmin )
|
Ajouter et supprimer des règles de pare-feu | Rôle d'administrateur de sécurité de Compute (roles/compute.securityAdmin )
|
Créer des composants pour l'équilibreur de charge | Rôle d'administrateur de réseaux Compute (roles/compute.networkAdmin )
|
Créer un projet (facultatif) | Rôle Créateur de projet (roles/resourcemanager.projectCreator )
|
Créer des buckets Cloud Storage | Rôle d'administrateur des objets de l'espace de stockage (roles/storage.objectAdmin )
|
Pour en savoir plus, consultez les guides suivants :
- Gérer le contrôle des accès pour Cloud Load Balancing avec IAM
- Conditions IAM pour les règles de transfert
Créer des ressources d'équilibreur de charge d'application classique
Dans ce document, vous allez créer les ressources d'équilibreur de charge d'application classiques suivantes, puis les migrer vers l'infrastructure d'équilibreur de charge d'application externe global.
- Groupe d'instances géré avec des VM.
- Un bucket Cloud Storage.
- Un équilibreur de charge d'application classique HTTP avec le groupe d'instances géré et le bucket Cloud Storage comme backends.
Créer un groupe d'instances géré
Cette section explique comment créer un groupe d'instances géré avec des VM Linux sur lesquelles Apache est en cours d'exécution. Un groupe d'instances géré crée chacune de ses instances gérées en fonction des modèles d'instance que vous spécifiez.
Créer un modèle d'instance
Console
Dans la console Google Cloud, accédez à 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
.Pour Région, sélectionnez
REGION
.Dans la section Disque de démarrage, assurez-vous que l'image du disque de démarrage est définie 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, puis dans le champ Tags réseau, saisissez
allow-health-check
.Cliquez sur Gestion, puis 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.
gcloud
Exécutez la commande gcloud compute instance-templates create
pour créer le modèle.
gcloud compute instance-templates create lb-backend-template \ --region=REGION \ --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éer le groupe d'instances géré
Console
Dans la console Google Cloud, accédez à la page Groupes d'instances.
Cliquez sur Créer un groupe d'instances.
Sélectionnez Nouveau groupe d'instances géré (sans état).
Dans le champ Nom, saisissez
lb-backend-example
.Dans Modèle d'instance, sélectionnez le modèle d'instance
lb-backend-template
.Pour l'emplacement, sélectionnez Zone unique.
Pour Région, sélectionnez
REGION
.Pour Zone, sélectionnez
ZONE
.Dans le champ Mode autoscaling, sélectionnez Activé : ajouter et supprimer des instances dans le groupe.
Définissez les valeurs
2
pour les paramètres Nombre minimal d'instances et Nombre maximal d'instances.Dans la section Mappage de port, cliquez sur Ajouter un port.
Pour le nom du port, saisissez
http
. Pour le numéro de port, saisissez80
.Cliquez sur Créer.
gcloud
Exécutez la commande gcloud compute instance-groups managed create
pour créer le groupe d'instances géré basé sur le modèle.
gcloud compute instance-groups managed create lb-backend-example \ --template=lb-backend-template \ --size=2 --zone=ZONE
Exécutez la commande suivante pour ajouter un port nommé au groupe d'instances:
gcloud compute instance-groups set-named-ports lb-backend-example \ --named-ports http:80 \ --zone ZONE
Configurer une règle de pare-feu
Dans cette section, vous allez créer la règle de pare-feu fw-allow-health-check
et utiliser le tag cible allow-health-check
pour identifier les VM. 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
).
Console
Dans la console Google Cloud, accédez à la page Règles d'administration.
Cliquez sur Créer une règle de pare-feu.
Dans le champ Nom, saisissez
fw-allow-health-check
.Pour Réseau, sélectionnez default.
Pour Cibles, sélectionnez Specified target tags (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 la section Protocoles et ports, sélectionnez Protocoles et ports spécifiés.
Cochez la case TCP, puis saisissez
80
pour le numéro de port.Cliquez sur Créer.
gcloud
Exécutez la commande gcloud compute firewall-rules create
pour créer la règle de pare-feu.
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
Créer un bucket Cloud Storage
Dans cette section, vous allez créer un bucket Cloud Storage auquel l'équilibreur de charge pourra accéder. Pour les déploiements de production, nous vous recommandons de choisir un bucket multirégional, qui réplique automatiquement les objets sur plusieurs régions Google Cloud. Cela peut améliorer la disponibilité de votre contenu et augmenter la tolérance aux pannes au sein de votre application.
Console
Dans la console Google Cloud, accédez à la page Buckets Cloud Storage.
Cliquez sur Créer.
Dans le champ Nommer votre bucket, saisissez
storage-backend-bucket
, puis cliquez sur Continuer.Cliquez sur Choisir où stocker vos données.
Définissez Type d'emplacement sur Région, puis spécifiez
REGION
.Cliquez sur Créer.
Facultatif: Si la boîte de dialogue "L'accès public sera bloqué" s'affiche, décochez la case Appliquer la protection contre l'accès public sur ce bucket, puis cliquez sur Confirmer.
gcloud
Exécutez la commande gcloud storage buckets create
pour créer le bucket:
gcloud storage buckets create gs://storage-backend-bucket \ --default-storage-class=standard \ --location=REGION --uniform-bucket-level-access
Transférer du contenu vers vos buckets Cloud Storage
Pour tester le bucket après avoir créé l'équilibreur de charge, copiez le fichier d'image suivant d'un bucket Cloud Storage public vers votre propre bucket Cloud Storage.
gcloud
Cliquez sur
Activer Cloud Shell.Exécutez les commandes suivantes dans Cloud Shell :
gcloud storage cp gs://gcp-external-http-lb-with-bucket/three-cats.jpg gs://storage-backend-bucket/never-fetch/
Dans la console Google Cloud, cliquez sur Actualiser sur la page d'informations du bucket pour vérifier que le fichier a bien été copié.
Rendre votre bucket Cloud Storage lisible publiquement
Lorsque vous rendez un bucket Cloud Storage lisible publiquement, tous les internautes peuvent lister et afficher ses objets, ainsi que consulter ses métadonnées (à l'exception des LCA). N'incluez pas d'informations sensibles dans vos buckets publics.
Pour réduire la probabilité d'exposition accidentelle d'informations sensibles, ne stockez pas les objets publics et les données sensibles dans le même bucket.
Console
Pour autoriser tous les utilisateurs à afficher les objets de vos buckets, procédez comme suit :
Dans la console Google Cloud, accédez à la page Buckets Cloud Storage.
Cliquez sur le nom
storage-backend-bucket
, puis sur l'onglet Autorisations.Cliquez sur Accorder l'accès.
Dans le champ Nouveaux comptes principaux, saisissez
allUsers
.Dans le champ Sélectionnez un rôle, cliquez sur Cloud Storage > Lecteur des objets Storage.
Cliquez sur Enregistrer.
Cliquez sur Autoriser l'accès public.
gcloud
Exécutez la commande gcloud storage buckets add-iam-policy-binding
pour autoriser tous les utilisateurs à afficher les objets de vos buckets:
gcloud storage buckets add-iam-policy-binding gs://storage-backend-bucket \ --member=allUsers \ --role=roles/storage.objectViewer
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 IP statique externe.
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
Pour réserver une adresse IP externe, exécutez la commande suivante:
gcloud compute addresses create lb-ipv4-1 \ --ip-version=IPV4 \ --network-tier=PREMIUM \ --global
Pour noter l'adresse IPv4 réservée, exécutez la commande suivante:
gcloud compute addresses describe lb-ipv4-1 \ --format="get(address)" \ --global
Configurer l'équilibreur de charge d'application classique
Dans cette section, vous utilisez le protocole HTTP (interface) entre le client et l'équilibreur de charge.
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 à l'échelle mondiale, puis cliquez sur Suivant.
- Pour Génération de l'équilibreur de charge, sélectionnez Équilibreur de charge d'application classique, puis cliquez sur Suivant.
- Cliquez sur Configurer.
Configuration de base
- Dans le champ Nom de l'équilibreur de charge, saisissez
web-map-http
. - Cliquez sur Configuration du frontend, configurez les champs suivants, puis cliquez sur OK.
- Protocole: HTTP
- Version IP : IPv4
- Adresse IP:
lb-ipv4-1
- Port :
443
- Cliquez sur Configuration du backend.
- Dans Services de backend et buckets backend, cliquez sur Créer un service de backend, puis procédez comme suit :
- Configurez les champs suivants :
- Nom :
web-backend-service
- Protocole : HTTP
- Port nommé: http
- Nom :
- Dans la section Backends > Nouveau backend, configurez les champs suivants, puis cliquez sur OK.
- Groupe d'instances: lb-backend-example
- Numéros de ports :
80
- Pour Vérification d'état, cliquez sur Créer une vérification d'état, spécifiez les champs suivants, puis cliquez sur Enregistrer.
- Nom :
http-basic-check
- Protocole : HTTP
- Nom :
- Dans la section Journalisation, cochez la case Activer la journalisation.
- Cliquez sur Créer.
- Configurez les champs suivants :
- Cliquez sur OK.
- Dans Services de backend et buckets backend, cliquez sur Créer un bucket backend, configurez les champs suivants, puis cliquez sur Créer.
- Nom du bucket de backend:
cats
- Bucket Cloud Storage:
storage-backend-bucket
- Nom du bucket de backend:
- Cliquez sur OK.
- Cliquez sur Règles d'hôte et de chemin d'accès.
- Pour
cats
, saisissez*
dans le champ Hôte 2 et/never-fetch/*
dans le champ Chemin 2. - Cliquez sur Vérifier et finaliser.
- Vérifiez les paramètres de configuration de votre équilibreur de charge.
- Cliquez sur Créer.
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 \ --enable-logging \ --logging-sample-rate=1.0 \ --enable-cdn \ --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=ZONE \ --global
Ajoutez un bucket backend.
gcloud compute backend-buckets create cats \ --gcs-bucket-name=storage-backend-bucket
Créez un mappage d'URL pour acheminer les requêtes entrantes vers le service de backend et le bucket backend.
gcloud compute url-maps create web-map-http \ --default-service web-backend-service
gcloud compute url-maps add-path-matcher web-map-http \ --path-matcher-name=cats-path-matcher \ --default-backend-bucket=cats \ --new-hosts="*" \ --backend-bucket-path-rules="/never-fetch/*=cats"
Créez un proxy HTTP cible pour acheminer les requêtes vers les mappages 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.
gcloud compute forwarding-rules create web-map-http-forwarding-rule \ --load-balancing-scheme=EXTERNAL \ --address=lb-ipv4-1 \ --global \ --target-http-proxy=http-lb-proxy \ --ports=80
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
web-map-http
.Dans la section Interface, notez l'adresse IP:Port de l'équilibreur de charge.
Pour tester l'instance backend, saisissez
http://IP_ADDRESS
dans la barre d'adresse du navigateur Web.Votre navigateur affiche 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
).Pour tester le bucket backend, saisissez
http://IP_ADDRESS/never-fetch/three-cats.jpg
dans la barre d'adresse du navigateur Web.Votre navigateur affiche l'image.
Migrer des ressources d'équilibreur de charge d'application classique
Dans cette section, vous allez migrer le service de backend, le bucket backend et la règle de transfert vers l'infrastructure de l'équilibreur de charge d'application externe global.
Migrer le service de backend
Préparez le service de backend pour la migration.
gcloud beta compute backend-services update web-backend-service \ --external-managed-migration-state=PREPARE \ --global
Patientez un certain temps (environ six minutes).
Envoyez un peu de trafic (10%, par exemple) au service de backend.
gcloud beta compute backend-services update web-backend-service \ --external-managed-migration-state=TEST_BY_PERCENTAGE \ --external-managed-migration-testing-percentage=10 \ --global
Patientez un certain temps (environ six minutes).
Une fois la ressource prête, elle envoie 10% des requêtes à l'infrastructure de l'équilibreur de charge d'application externe global et 90% des requêtes à l'infrastructure de l'équilibreur de charge d'application classique.
Accédez au service de backend.
Saisissez
http://IP_ADDRESS
dans la barre d'adresse du navigateur Web. Si le messagePage served from: lb-backend-example-xxxx
s'affiche, exécutez la commande suivante pour augmenter le pourcentage.gcloud beta compute backend-services update web-backend-service \ --external-managed-migration-state=TEST_BY_PERCENTAGE \ --external-managed-migration-testing-percentage=50 \ --global
Répétez le processus jusqu'à atteindre 100%.
Facultatif: Vérifiez les journaux du service de backend.
Effectuez le test et envoyez tout le trafic vers le service de backend.
gcloud beta compute backend-services update web-backend-service \ --external-managed-migration-state=TEST_ALL_TRAFFIC \ --global
Facultatif: Vérifiez les journaux du service de backend.
Définissez le schéma du service de backend sur
EXTERNAL_MANAGED
.gcloud beta compute backend-services update web-backend-service \ --load-balancing-scheme=EXTERNAL_MANAGED \ --global
Attendez un certain temps (environ six minutes) pour que le service de backend soit entièrement migré vers l'infrastructure de l'équilibreur de charge d'application externe global.
Facultatif: Vérifiez les journaux du service de backend. Vous constatez que le schéma d'équilibrage de charge est
EXTERNAL_MANAGED
.
Migrer le bucket backend
Préparez le bucket backend pour la migration.
gcloud beta compute forwarding-rules update web-map-http-forwarding-rule \ --external-managed-backend-bucket-migration-state=PREPARE \ --global
Patientez un certain temps (environ six minutes).
Envoyez du trafic (10%, par exemple) au bucket backend.
gcloud beta compute forwarding-rules update web-map-http-forwarding-rule \ --external-managed-backend-bucket-migration-state=TEST_BY_PERCENTAGE \ --external-managed-backend-bucket-migration-testing-percentage=10 \ --global
Patientez un certain temps (environ six minutes).
Une fois la ressource prête, elle envoie 10% des requêtes à l'infrastructure de l'équilibreur de charge d'application externe global et 90% des requêtes à l'infrastructure de l'équilibreur de charge d'application classique.
Accédez au bucket backend.
Saisissez
http://IP_ADDRESS/never-fetch/three-cats.jpg
dans la barre d'adresse du navigateur Web. Si l'image des chats s'affiche, exécutez la commande suivante pour augmenter le pourcentage. Répétez le processus jusqu'à atteindre 100%.gcloud beta compute forwarding-rules update web-map-http-forwarding-rule \ --external-managed-backend-bucket-migration-state=TEST_BY_PERCENTAGE \ --external-managed-backend-bucket-migration-testing-percentage=50 \ --global
Facultatif: Vérifiez les journaux du bucket backend.
Effectuez le test et envoyez tout le trafic vers le bucket backend.
gcloud beta compute forwarding-rules update web-map-http-forwarding-rule \ --external-managed-backend-bucket-migration-state=TEST_ALL_TRAFFIC \ --global
Facultatif: Vérifiez les journaux du bucket backend.
Migrer la règle de transfert
Définissez le schéma de la règle de transfert sur
EXTERNAL_MANAGED
.gcloud beta compute forwarding-rules update web-map-http-forwarding-rule \ --load-balancing-scheme=EXTERNAL_MANAGED \ --global
Attendez un certain temps (environ six minutes) pour que la règle de transfert soit entièrement migrée vers l'infrastructure de l'équilibreur de charge d'application externe global.
(Facultatif) Vérifiez les journaux de la règle de transfert. Vous constatez que le schéma d'équilibrage de charge est
EXTERNAL_MANAGED
.