Migrer des ressources d'un équilibreur de charge d'application externe classique vers un équilibreur de charge d'application externe global

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

  1. 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.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  5. 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 :

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

  1. Dans la console Google Cloud, accédez à la page Modèles d'instances.

    Accéder à la page Modèles d'instances

  2. Cliquez sur Create instance template (Créer un modèle d'instance).

  3. Dans le champ Nom, saisissez lb-backend-template.

  4. Pour Région, sélectionnez REGION.

  5. 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.

  6. Cliquez sur Options avancées.

  7. Cliquez sur Mise en réseau, puis dans le champ Tags réseau, saisissez allow-health-check.

  8. 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
    
  9. 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

  1. Dans la console Google Cloud, accédez à la page Groupes d'instances.

    Accéder à la page "Groupes d'instances"

  2. Cliquez sur Créer un groupe d'instances.

  3. Sélectionnez Nouveau groupe d'instances géré (sans état).

  4. Dans le champ Nom, saisissez lb-backend-example.

  5. Dans Modèle d'instance, sélectionnez le modèle d'instance lb-backend-template.

  6. Pour l'emplacement, sélectionnez Zone unique.

  7. Pour Région, sélectionnez REGION.

  8. Pour Zone, sélectionnez ZONE.

  9. 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.

  10. Dans la section Mappage de port, cliquez sur Ajouter un port.

  11. Pour le nom du port, saisissez http. Pour le numéro de port, saisissez 80.

  12. 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

  1. Dans la console Google Cloud, accédez à la page Règles d'administration.

    Accéder à la page "Stratégies de pare-feu"

  2. Cliquez sur Créer une règle de pare-feu.

  3. Dans le champ Nom, saisissez fw-allow-health-check.

  4. Pour Réseau, sélectionnez default.

  5. Pour Cibles, sélectionnez Specified target tags (Tags cibles spécifiés).

  6. Dans le champ Tags cibles, saisissez allow-health-check.

  7. Définissez Filtre source sur Plages IPv4.

  8. Définissez Plages IPv4 sources sur 130.211.0.0/22 et 35.191.0.0/16.

  9. Dans la section Protocoles et ports, sélectionnez Protocoles et ports spécifiés.

  10. Cochez la case TCP, puis saisissez 80 pour le numéro de port.

  11. 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

  1. Dans la console Google Cloud, accédez à la page Buckets Cloud Storage.

    Accéder à Buckets Cloud Storage

  2. Cliquez sur Créer.

  3. Dans le champ Nommer votre bucket, saisissez storage-backend-bucket, puis cliquez sur Continuer.

  4. Cliquez sur Choisir où stocker vos données.

  5. Définissez Type d'emplacement sur Région, puis spécifiez REGION.

  6. Cliquez sur Créer.

  7. 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

  1. Cliquez sur Activer Cloud Shell.

  2. 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 :

  1. Dans la console Google Cloud, accédez à la page Buckets Cloud Storage.

    Accéder à Buckets Cloud Storage

  2. Cliquez sur le nom storage-backend-bucket, puis sur l'onglet Autorisations.

  3. Cliquez sur Accorder l'accès.

  4. Dans le champ Nouveaux comptes principaux, saisissez allUsers.

  5. Dans le champ Sélectionnez un rôle, cliquez sur Cloud Storage > Lecteur des objets Storage.

  6. Cliquez sur Enregistrer.

  7. 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

  1. Dans Google Cloud Console, accédez à la page Adresses IP externes.

    Accéder à la page "Adresses IP externes"

  2. Pour réserver une adresse IPv4, cliquez sur Réserver une adresse IP statique externe.

  3. Dans le champ Nom, saisissez lb-ipv4-1.

  4. Définissez Niveau de service réseau sur Premium.

  5. Définissez Version IP sur IPv4.

  6. Définissez Type sur Global.

  7. 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

  1. Dans Google Cloud Console, accédez à la page Équilibrage de charge.

    Accéder à la page "Équilibrage de charge"

  2. Cliquez sur Créer un équilibreur de charge.
  3. Dans le champ Type d'équilibreur de charge, sélectionnez Équilibreur de charge d'application (HTTP/HTTPS), puis cliquez sur Suivant.
  4. Pour Public ou interne, sélectionnez Public (externe), puis cliquez sur Suivant.
  5. 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.
  6. Pour Génération de l'équilibreur de charge, sélectionnez Équilibreur de charge d'application classique, puis cliquez sur Suivant.
  7. Cliquez sur Configurer.

Configuration de base

  1. Dans le champ Nom de l'équilibreur de charge, saisissez web-map-http.
  2. 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
  3. Cliquez sur Configuration du backend.
  4. Dans Services de backend et buckets backend, cliquez sur Créer un service de backend, puis procédez comme suit :
    1. Configurez les champs suivants :
      • Nom : web-backend-service
      • Protocole : HTTP
      • Port nommé: http
    2. 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
    3. 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
    4. Dans la section Journalisation, cochez la case Activer la journalisation.
    5. Cliquez sur Créer.
  5. Cliquez sur OK.
  6. 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
  7. Cliquez sur OK.
  8. Cliquez sur Règles d'hôte et de chemin d'accès.
  9. Pour cats, saisissez * dans le champ Hôte 2 et /never-fetch/* dans le champ Chemin 2.
  10. Cliquez sur Vérifier et finaliser.
  11. Vérifiez les paramètres de configuration de votre équilibreur de charge.
  12. Cliquez sur Créer.

gcloud

  1. Créez une vérification d'état.

    gcloud compute health-checks create http http-basic-check \
        --port 80
    
  2. 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
    
  3. 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
    
  4. Ajoutez un bucket backend.

    gcloud compute backend-buckets create cats \
        --gcs-bucket-name=storage-backend-bucket
    
  5. 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"
    
  6. 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
    
  7. 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

  1. Dans Google Cloud Console, accédez à la page Équilibrage de charge.

    Accéder à la page "Équilibrage de charge"

  2. Cliquez sur web-map-http.

  3. Dans la section Interface, notez l'adresse IP:Port de l'équilibreur de charge.

  4. 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).

  5. 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

  1. 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).

  2. 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.

  3. Accédez au service de backend.

    Saisissez http://IP_ADDRESS dans la barre d'adresse du navigateur Web. Si le message Page 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%.

  4. Facultatif: Vérifiez les journaux du service de backend.

  5. 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
    
  6. Facultatif: Vérifiez les journaux du service de backend.

  7. 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.

  8. 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

  1. 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).

  2. 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.

  3. 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
    
  4. Facultatif: Vérifiez les journaux du bucket backend.

  5. 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
    
  6. Facultatif: Vérifiez les journaux du bucket backend.

Migrer la règle de transfert

  1. 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.

  2. (Facultatif) Vérifiez les journaux de la règle de transfert. Vous constatez que le schéma d'équilibrage de charge est EXTERNAL_MANAGED.

Étape suivante