Ce document explique comment créer un équilibreur de charge d'application externe afin d'acheminer les requêtes de contenu statique vers des buckets Cloud Storage. Une fois que vous avez configuré un équilibreur de charge avec des buckets backend, les requêtes vers les chemins d'URL commençant par /love-to-fetch
sont envoyées au bucket Cloud Storage us-east1
, et toutes les autres requêtes sont envoyées au bucket Cloud Storage europe-north1
, quelle que soit la région de l'utilisateur.
Si vos backends diffusent du contenu dynamique via HTTP(S), envisagez d'utiliser des services de backend au lieu de buckets backend.
Si vous êtes déjà un utilisateur de l'équilibreur de charge d'application classique, assurez-vous de consulter la section Présentation de la migration lorsque vous planifiez un nouveau déploiement avec l'équilibreur de charge d'application externe mondial.Buckets Cloud Storage en tant que backends de l'équilibreur de charge
Un équilibreur de charge d'application externe utilise un mappage d'URL pour diriger le trafic provenant de chemins d'URL spécifiées vers vos backends.
Dans le diagramme suivant, l'équilibreur de charge envoie du trafic avec le chemin d'accès /love-to-fetch/
vers un bucket Cloud Storage, dans la région us-east1
. Toutes les autres requêtes sont distribuées vers un bucket Cloud Storage, dans la région europe-north1
.
Par défaut, Cloud Storage utilise le même cache que Cloud CDN. Si vous activez Cloud CDN sur le bucket backend, vous pouvez utiliser les contrôles Cloud CDN sur votre contenu.
Les contrôles Cloud CDN incluent, par exemple, les modes cache, les URL signées et l'invalidation. Cloud CDN vous permet également de mettre en cache du contenu volumineux (> 10 Mo). Si vous n'activez pas Cloud CDN sur votre bucket backend, vous ne pouvez utiliser que les en-têtes Cache-Control
d'origine pour contrôler la mise en cache du contenu plus petit, tel que défini par les métadonnées Cloud Storage.
Avant de commencer
Assurez-vous que votre configuration remplit les conditions préalables suivantes. Si vous utilisez l'utilitaire gcloud storage
, vous pouvez l'installer en suivant les instructions de la section Découvrir le stockage d'objets avec l'outil gcloud.
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.
Terraform
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Autorisations
Pour suivre ce guide, vous devez créer des buckets Cloud Storage et un équilibreur de charge dans un projet. 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 composants pour l'équilibreur de charge | Administrateur réseau |
Créer des buckets Cloud Storage | Administrateur des objets Storage |
Pour en savoir plus, consultez les guides suivants :
- Access control (Contrôle des accès)
- Conditions IAM
Configurer une ressource de certificat SSL
Pour un équilibreur de charge HTTPS, créez une ressource de certificat SSL, comme décrit dans la documentation ci-dessous :
Nous vous recommandons d'utiliser un certificat géré par Google.
Dans cet exemple, nous partons du principe que vous disposez déjà d'une ressource de certificat SSL nommée www-ssl-cert
.
Préparer votre contenu et vos buckets Cloud Storage
Le processus de préparation des buckets Cloud Storage est le suivant :
Créez les buckets.
Copiez le contenu dans les buckets.
Fournissez un accès public aux buckets.
Créer des buckets Cloud Storage
Dans cet exemple, vous allez créer deux buckets Cloud Storage auxquels 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.
Notez les noms des buckets Cloud Storage que vous créez, car vous les utiliserez ultérieurement. Dans ce guide, ils sont appelés BUCKET_1_NAME et BUCKET_2_NAME.
Console
Dans la console Google Cloud, accédez à la page Buckets Cloud Storage.
Cliquez sur Créer un bucket.
Dans le champ Nommer votre bucket, saisissez un nom unique qui respecte les consignes de dénomination.
Cliquez sur Choisir où stocker vos données.
Définissez le Type d'emplacement sur Région.
Définissez le champ Emplacement sur europe-north1. Il s'agit de BUCKET_1_NAME dans ce guide.
Cliquez sur Créer.
Cliquez sur Buckets pour revenir à la page des buckets Cloud Storage. Suivez ces instructions pour créer un second bucket, mais définissez le champ Emplacement sur us-east1. Il s'agit de BUCKET_2_NAME dans ce guide.
gcloud
gcloud storage buckets create gs://BUCKET_1_NAME --project=PROJECT_ID --default-storage-class=standard --location=europe-north1 --uniform-bucket-level-access
gcloud storage buckets create gs://BUCKET_2_NAME --project=PROJECT_ID --default-storage-class=standard --location=us-east1 --uniform-bucket-level-access
Remplacez BUCKET_1_NAME
et BUCKET_2_NAME
par les noms des buckets que vous souhaitez créer.
Terraform
Pour créer les buckets, utilisez la ressource google_storage_bucket
.
Pour savoir comment appliquer ou supprimer une configuration Terraform, consultez la page Commandes Terraform de base.
Transférer du contenu vers vos buckets Cloud Storage
Pour pouvoir tester la configuration ultérieurement, copiez les images suivantes d'un bucket Cloud Storage public dans vos propres buckets Cloud Storage.
gcloud
Cliquez sur
Activer Cloud Shell.Exécutez les commandes suivantes dans Cloud Shell, en remplaçant les variables de nom de buckets par les noms de vos buckets Cloud Storage :
gcloud storage cp gs://gcp-external-http-lb-with-bucket/three-cats.jpg gs://BUCKET_1_NAME/never-fetch/
gcloud storage cp gs://gcp-external-http-lb-with-bucket/two-dogs.jpg gs://BUCKET_2_NAME/love-to-fetch/
Terraform
Pour copier des éléments dans le bucket, vous pouvez utiliser la ressource google_storage_bucket_object
.
Vous pouvez également utiliser la ressource null_resource
.
resource "null_resource" "upload_cat_image" { provisioner "local-exec" { command = "gcloud storage cp gs://gcp-external-http-lb-with-bucket/three-cats.jpg gs://${google_storage_bucket.bucket_1.name}/never-fetch/" } } resource "null_resource" "upload_dog_image" { provisioner "local-exec" { command = "gcloud storage cp gs://gcp-external-http-lb-with-bucket/two-dogs.jpg gs://${google_storage_bucket.bucket_2.name}/love-to-fetch/" } }
Dans la console Google Cloud, cliquez sur Actualiser sur la page d'informations de chaque bucket pour vérifier que le fichier a bien été copié.
Rendre vos buckets Cloud Storage lisibles publiquement
Lorsque vous rendez les buckets Cloud Storage lisibles publiquement, tous les internautes peuvent répertorier et afficher leurs objets, ainsi que consulter leurs métadonnées (à l'exclusion 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 des objets dans vos buckets, répétez la procédure suivante pour chaque bucket :
Dans la console Google Cloud, accédez à la page Buckets Cloud Storage.
Cliquez sur le nom du bucket, puis sur l'onglet Autorisations.
Cliquez sur Ajouter.
Dans le champ Nouveaux comptes principaux, saisissez
allUsers
.Dans le champ Sélectionner un rôle, sélectionnez Cloud Storage > Lecteur des objets de l'espace de stockage.
Cliquez sur Enregistrer.
Cliquez sur Autoriser l'accès public.
gcloud
Pour autoriser tous les utilisateurs à afficher des objets dans vos buckets, exécutez les commandes suivantes :
gcloud storage buckets add-iam-policy-binding gs://BUCKET_1_NAME --member=allUsers --role=roles/storage.objectViewer
gcloud storage buckets add-iam-policy-binding gs://BUCKET_2_NAME --member=allUsers --role=roles/storage.objectViewer
Terraform
Pour autoriser tous les utilisateurs à afficher les objets de vos buckets, utilisez la ressource google_storage_bucket_iam_member
et spécifiez le membre allUsers
.
Réserver une adresse IP externe
Une fois que vous avez configuré vos buckets Cloud Storage, vous pouvez réserver une adresse IP externe statique globale que votre audience utilisera pour atteindre votre équilibreur de charge.
Cette étape est facultative mais recommandée, car une adresse IP externe statique fournit une adresse unique vers laquelle vous pouvez faire pointer votre domaine.
Console
Dans Google Cloud Console, accédez à la page Adresses IP externes.
Cliquez sur Réserver une adresse statique.
Dans le champ Nom, saisissez
example-ip
.Définissez le Niveau de service réseau sur Premium.
Définissez Version IP sur IPv4.
Définissez le Type sur Global.
Cliquez sur Réserver.
gcloud
gcloud compute addresses create example-ip \ --network-tier=PREMIUM \ --ip-version=IPV4 \ --global
Notez l'adresse IPv4 réservée :
gcloud compute addresses describe example-ip \ --format="get(address)" \ --global
Terraform
Pour réserver une adresse IP externe, utilisez la ressource google_compute_global_address
.
Créer un équilibreur de charge d'application externe avec des buckets backend
Ces instructions concernent la création d'un équilibreur de charge HTTP ou HTTPS. Pour créer un équilibreur de charge HTTPS, vous devez ajouter une ressource de certificat SSL à l'interface de l'équilibreur de charge. Pour en savoir plus, consultez la page Présentation des certificats SSL.
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 externe global, puis cliquez sur Suivant.
- Cliquez sur Configurer.
Configuration de base
- Dans le champ Nom, saisissez
http-lb
.
Configurer le backend
Cliquez sur Backend configuration (Configuration du backend).
Cliquez sur le champ Services de backend et buckets backend, puis sur Créer un bucket backend.
Dans le champ Nom du bucket backend, saisissez
cats
.Dans le champ Bucket Cloud Storage, cliquez sur Parcourir.
Sélectionnez BUCKET_1_NAME, puis cliquez sur Sélectionner. La création du bucket backend
cats
en fait d'abord le bucket par défaut, où toutes les requêtes de trafic sans correspondance sont dirigées. Vous ne pouvez pas modifier les règles de redirection d'un bucket backend par défaut dans l'équilibreur de charge.Cliquez sur Créer.
Suivez la même procédure pour créer un bucket backend nommé
dogs
, puis sélectionnez BUCKET_2_NAME.Cliquez sur OK.
Configurer des règles de routage
Les règles de routage déterminent la manière dont le trafic est dirigé. Pour configurer le routage, vous devez configurer des règles d'hôte et des outils de mise en correspondance des chemins, qui sont des composants de configuration d'un mappage d'URL de l'équilibreur de charge d'application externe. Pour configurer les règles de cet exemple, procédez comme suit :
- Cliquez sur Règles de routage.
- Pour
dogs
, saisissez*
dans le champ Hôtes et/love-to-fetch/*
dans le champ Chemins d'accès.
Configurer l'interface
Cliquez sur Frontend configuration (Configuration du frontend).
Vérifiez que les options suivantes sont configurées avec ces valeurs :
Propriété Valeur (saisissez une valeur ou sélectionnez une option spécifiée) Protocole HTTP Niveau de service réseau Premium Version IP IPv4 Adresse IP example-ip Port 80 Facultatif: délai d'expiration du message keepalive HTTP Saisissez une valeur de délai avant expiration comprise entre 5 et 1 200 secondes. La valeur par défaut est de 610 secondes. Si vous souhaitez créer un équilibreur de charge HTTPS au lieu d'un équilibreur de charge HTTP, vous devez disposer d'un certificat SSL (
gcloud compute ssl-certificates list
) et remplir les champs comme suit.Propriété Valeur (saisissez une valeur ou sélectionnez une option spécifiée) Protocole HTTP(S) Niveau de service réseau Premium Version IP IPv4 Adresse IP example-ip Port 443 Facultatif: délai d'expiration du message keepalive HTTP Saisissez une valeur de délai avant expiration comprise entre 5 et 1 200 secondes. La valeur par défaut est de 610 secondes. Certificat Sélectionnez le certificat www-ssl-cert
que vous avez créé dans la section Configurer une ressource de certificat SSL ou créez-en un.Facultatif : Activer la redirection HTTP vers HTTPS Cochez cette case pour activer les redirections. Cochez cette case pour créer un équilibreur de charge HTTP partiel supplémentaire qui utilise la même adresse IP que votre équilibreur de charge HTTPS et redirige les requêtes HTTP vers l'interface HTTPS de votre équilibreur de charge.
Cette case ne peut être cochée que lorsque le protocole HTTPS est sélectionné et qu'une adresse IP réservée est utilisée.
Cliquez sur OK.
Vérifier la configuration
Cliquez sur Review and finalize (Vérifier et finaliser).
Examinez l'interface, les règles d'hôte et de chemin d'accès, ainsi que les buckets backend.
Cliquez sur Create (Créer), puis attendez que l'équilibreur de charge soit créé.
Cliquez sur le nom de l'équilibreur de charge (http-lb).
Notez l'adresse IP de l'équilibreur de charge pour la prochaine tâche. Dans ce guide, elle est appelée IP_ADDRESS.
gcloud
Configurer le backend
gcloud compute backend-buckets create cats \ --gcs-bucket-name=BUCKET_1_NAME
gcloud compute backend-buckets create dogs \ --gcs-bucket-name=BUCKET_2_NAME
Configurez le mappage d'URL
gcloud compute url-maps create http-lb \ --default-backend-bucket=cats
gcloud compute url-maps add-path-matcher http-lb \ --path-matcher-name=path-matcher-2 \ --new-hosts=* \ --backend-bucket-path-rules="/love-to-fetch/*=dogs" \ --default-backend-bucket=cats
Configurer le proxy cible
gcloud compute target-http-proxies create http-lb-proxy \ --http-keep-alive-timeout-sec=HTTP_KEEP_ALIVE_TIMEOUT_SEC \ --url-map=http-lb
Remplacez HTTP_KEEP_ALIVE_TIMEOUT_SEC
par la valeur du délai d'expiration du message keepalive HTTP client de 5 à 1 200 secondes. La valeur par défaut est de 610 secondes. Ce champ est facultatif.
Configurer la règle de transfert
gcloud compute forwarding-rules create http-lb-forwarding-rule \ --load-balancing-scheme=EXTERNAL_MANAGED \ --network-tier=PREMIUM \ --address=example-ip \ --global \ --target-http-proxy=http-lb-proxy \ --ports=80
Terraform
Pour créer l'équilibreur de charge, utilisez les ressources Terraform suivantes.
Configurer le backend
Pour créer le backend, utilisez la ressource google_compute_backend_bucket
.
Configurez le mappage d'URL
Pour créer le mappage d'URL, utilisez la ressource google_compute_url_map
.
Configurer le proxy cible
Pour créer le proxy HTTP cible, utilisez la ressource google_compute_target_http_proxy
.
Configurer la règle de transfert
Pour créer la règle de transfert, utilisez la ressource google_compute_global_forwarding_rule
.
REMARQUE : Pour passer le mode à l'équilibreur de charge d'application classique, définissez l'attribut load_balancing_scheme
sur "EXTERNAL"
au lieu de "EXTERNAL_MANAGED"
.
Pour savoir comment appliquer ou supprimer une configuration Terraform, consultez la page Commandes Terraform de base.
Envoyer du trafic vers votre équilibreur de charge
Quelques minutes après avoir configuré votre équilibreur de charge, vous pouvez commencer à envoyer du trafic vers son adresse IP.
Console
La console Google Cloud n'est pas compatible.
gcloud
Utilisez la commande curl
pour tester la réponse à partir des URL suivantes. Remplacez IP_ADDRESS
par l'adresse IPv4 de l'équilibreur de charge :
curl http://IP_ADDRESS/love-to-fetch/two-dogs.jpg
curl http://IP_ADDRESS/never-fetch/three-cats.jpg
Configuration supplémentaire
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.
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 \ --global
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_HTTPS_PROXY_NAME \ --http-keep-alive-timeout-sec=HTTP_KEEP_ALIVE_TIMEOUT_SEC \ --global
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.
Limites
- Les buckets backend ne sont compatibles qu'avec les équilibreurs de charge d'application externes mondiaux et les équilibreurs de charge d'application classiques. Ils ne sont pas compatibles avec les équilibreurs de charge d'application externes régionaux ni avec aucun autre type d'équilibreur de charge.
- Les buckets backend ne sont pas compatibles avec Identity-Aware Proxy.
- Pour l'équilibreur de charge d'application externe mondial, l'équilibrage de charge est réparti sur deux niveaux.