Ce document explique comment créer un équilibreur de charge HTTP(S) 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.
Pour obtenir des conseils détaillés sur cette tâche directement dans la console Google Cloud, cliquez sur Visite guidée :
La procédure décrite dans les sections suivantes, est la même que si vous cliquez sur Visite guidée.
Buckets Cloud Storage en tant que backends de l'équilibreur de charge
Un équilibreur de charge HTTP(S) 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 exploitez les utilitaires gcloud
ou gsutil
, vous pouvez les installer tous les deux en suivant les instructions du guide de démarrage rapide sur l'utilisation de l'outil gsutil.
Définir un projet par défaut
Console
- Connectez-vous à votre compte Google Cloud. Si vous débutez sur Google Cloud, créez un compte pour évaluer les performances de nos produits en conditions réelles. Les nouveaux clients bénéficient également de 300 $ de crédits gratuits pour exécuter, tester et déployer des charges de travail.
-
Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.
-
Assurez-vous que la facturation est activée pour votre projet Cloud. Découvrez comment vérifier si la facturation est activée sur un projet.
-
Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.
-
Assurez-vous que la facturation est activée pour votre projet Cloud. Découvrez comment vérifier si la facturation est activée sur un projet.
gcloud/gsutil
gcloud config set project PROJECT_ID
ou
gsutil config set project PROJECT_ID
Remplacez PROJECT_ID par le projet que vous utilisez dans le cadre de ce guide.
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 du Navigateur Cloud Storage.
Cliquez sur Create bucket (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 Create (Créer).
Cliquez sur Navigateur pour revenir au navigateur 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/gsutil
gsutil mb -p PROJECT_ID -c standard -l europe-north1 -b on gs://BUCKET_1_NAME
gsutil mb -p PROJECT_ID -c standard -l us-east1 -b on gs://BUCKET_2_NAME
Remplacez BUCKET_1_NAME et BUCKET_2_NAME par les noms des buckets que vous souhaitez créer.
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.
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 :
gsutil cp gs://gcp-external-http-lb-with-bucket/three-cats.jpg gs://BUCKET_1_NAME/never-fetch/
gsutil cp gs://gcp-external-http-lb-with-bucket/two-dogs.jpg gs://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. Pour en savoir plus, consultez la section Architecture de bucket recommandée.
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 du Navigateur 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 Sélectionnez un rôle, cliquez sur Cloud Storage > Lecteur des objets Storage.
Cliquez sur Enregistrer.
Cliquez sur Autoriser l'accès public.
gcloud/gsutil
Pour autoriser tous les utilisateurs à afficher des objets dans vos buckets, exécutez les commandes suivantes :
gsutil iam ch allUsers:objectViewer gs://BUCKET_1_NAME
gsutil iam ch allUsers:objectViewer gs://BUCKET_2_NAME
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
Accédez à la page Adresses IP externes de Google Cloud Console.
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/gsutil
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
Créer un équilibreur de charge HTTP(S) 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
Accédez à la page Équilibrage de charge dans Google Cloud Console.
- Cliquez sur Create load balancer (Créer un équilibreur de charge).
- Dans la section Équilibrage de charge HTTP(S), cliquez sur Démarrer la configuration.
- Sous Web ou interne uniquement, sélectionnez D'Internet vers mes VM ou mes services sans serveur.
- Sous Global ou régional, sélectionnez Équilibreur de charge HTTP(S) global (classique).
- Cliquez sur Continuer.
Configurer le backend
Dans le champ Nom, saisissez
http-lb
.Cliquez sur 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 Create (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 les règles d'hôte et de chemin d'accès
Les règles d'hôte et les outils de mise en correspondance des chemins sont les composants de configuration d'un mappage d'URL de l'équilibreur de charge HTTP(S) externe. Pour configurer les règles de cet exemple, procédez comme suit :
Cliquez sur Règles d'hôte et de chemin d'accès.
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 :
Valeur 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 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 Sélectionnez un certificat ou créez-en un. (Facultatif) Activer la redirection HTTP vers HTTPS Cochez cette case pour activer les redirections du port 80 vers le port 443. 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/gsutil
Configurer le backend
gcloud compute backend-buckets create dogs \
--gcs-bucket-name=BUCKET_1_NAME
gcloud compute backend-buckets create cats \
--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 \
--url-map=http-lb
Configurer la règle de transfert
gcloud compute forwarding-rules create http-lb-forwarding-rule \
--load-balancing-scheme=EXTERNAL \
--network-tier=PREMIUM \
--address=example-ip \
--global \
--target-http-proxy=http-lb-proxy \
--ports=80
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
Dans un navigateur Web, accédez aux adresses suivantes pour tester votre équilibreur de charge, en remplaçant IP_ADDRESS par l'adresse IP de l'équilibreur de charge :
http://IP_ADDRESS/love-to-fetch/two-dogs.jpg
http://IP_ADDRESS/never-fetch/three-cats.jpg
Si vous avez configuré un équilibreur de charge HTTP, assurez-vous que votre navigateur ne redirige pas automatiquement les requêtes vers HTTPS.
gcloud/gsutil
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
Limites
- Les buckets backend ne sont compatibles qu'avec les équilibreurs de charge HTTP(S) externes globaux et les équilibreurs de charge HTTP(S) externes globaux (classiques). Ils ne sont pas compatibles avec les équilibreurs de charge HTTP(S) externes régionaux ou avec aucun un autre type d'équilibreur de charge.
Les buckets backend ne sont pas compatibles avec Identity-Aware Proxy.
Étape suivante
Utiliser des exemples de modules Terraform pour les équilibreurs de charge HTTP(S) externes.