Configurer un équilibreur de charge avec des buckets backend

Les buckets backend vous permettent d'utiliser des buckets Google Cloud Storage avec l'équilibrage de charge HTTP(S).

Utiliser un bucket Cloud Storage comme backend d'un équilibreur de charge

Un équilibreur de charge HTTP(S) externe utilise un mappage d'URL pour diriger le trafic provenant d'URL spécifiées vers un service de backend ou un bucket backend. Voici un cas d'utilisation courant :

  • Envoyer des requêtes de contenu dynamique (des données, par exemple) à un service de backend.
  • Envoyer des requêtes de contenu statique (des images, par exemple) vers un bucket backend.

Dans le diagramme suivant, l'équilibreur de charge envoie du trafic avec le chemin d'accès /static/eu/ vers un bucket Cloud Storage, dans la région europe-north. Toutes les autres requêtes sont distribuées vers un bucket Cloud Storage, dans la région us-east.

Distribuer le trafic vers Cloud Storage (cliquez pour agrandir)
Distribuer le trafic vers Cloud Storage (cliquez pour agrandir)

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 /static/eu sont envoyées au bucket Cloud Storage europe-north, et toutes les autres requêtes sont envoyées au bucket Cloud Storage us-east.

Avant de commencer

Assurez-vous que votre configuration remplit les conditions préalables.

Définir un projet par défaut

  1. 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.
  2. Définissez un projet par défaut.

    Console

    a. Accédez à la page d'accueil dans Google Cloud Console.
    Accéder à la page d'accueil Google Cloud

    b. À droite de Google Cloud, sélectionnez un projet dans le menu déroulant.

    gcloud ou gsutil

     gcloud config set project [PROJECT_ID]
    

    ou

     gsutil config set project [PROJECT_ID]
    
    • [PROJECT_ID] : projet que vous utiliserez dans le cadre de ce guide

Permissions

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 de tous les 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 :

Préparer des buckets et du contenu 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

Si vous disposez d'un bucket Cloud Storage existant, vous pouvez passer à l'étape suivante.

Lorsque vous créez un bucket à utiliser comme backend pour un équilibrage de charge HTTP(S), 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 Cloud Console, ouvrez le navigateur Cloud Storage :
    Ouvrir le navigateur Cloud Storage
  2. Cliquez sur Créer un bucket.
  3. Spécifiez les valeurs des champs suivants, en conservant toutes les autres valeurs par défaut :

    Propriété Valeur (saisissez la valeur ou sélectionnez une option spécifiée)
    Nom Saisissez un nom unique pour chaque bucket. Si le nom que vous saisissez n'est pas unique, un message vous invite à en renseigner un autre.
    Type d'emplacement Pour cet exemple, sélectionnez Région. Pour les déploiements de production, nous recommandons les buckets multirégionaux.
    Zone Pour un bucket, sélectionnez us-east1.
    Pour l'autre bucket, sélectionnez europe-north1.
    Classe de stockage par défaut Norme
    Contrôle des accès Uniforme
  4. Cliquez sur Créer.

  5. Notez les noms des nouveaux buckets Cloud Storage créés pour l'étape suivante : BUCKET_1_NAME et BUCKET_2_NAME.

gsutil

gsutil mb -p PROJECT_ID -c standard -l us-east1 -b on gs://BUCKET_1_NAME
gsutil mb -p PROJECT_ID -c standard -l europe-north1 -b on gs://BUCKET_2_NAME

Copier des fichiers graphiques vers vos buckets Cloud Storage

Pour tester la configuration, copiez les fichiers graphiques d'un bucket Cloud Storage public vers vos propres buckets Cloud Storage.

  1. Exécutez la commande suivante dans Cloud Shell, en remplaçant les variables de nom des 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/static/us/
    
    gsutil cp gs://gcp-external-http-lb-with-bucket/two-dogs.jpg gs://BUCKET_2_NAME/static/eu/
    
  2. Dans Cloud Console, cliquez sur Actualiser le bucket pour vérifier que le fichier graphique est copié.

Rendre les buckets Cloud Storage publics

Rendez les buckets Cloud Storage lisibles publiquement. Avec ce réglage, tout internaute peut afficher vos objets et leurs métadonnées, à l'exclusion des LCA. Tous les internautes peuvent également répertorier les objets de vos buckets. 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

Accordez à tous les utilisateurs un accès pour afficher les objets dans le bucket. Répétez cette procédure pour chaque bucket.

  1. Dans Cloud Console, ouvrez le navigateur Cloud Storage :
    Ouvrir le navigateur Cloud Storage
  2. Accédez au bucket et cliquez sur l'onglet Autorisations.
  3. Cliquez et sélectionnez Ajouter des membres.
  4. Dans Nouveaux membres, saisissez allUsers.
  5. Pour le rôle, sélectionnez Stockage > Lecteur des objets de l'espace de stockage.
  6. Cliquez sur Enregistrer.

gsutil

gsutil iam ch allUsers:objectViewer gs://BUCKET_1_NAME
gsutil iam ch allUsers:objectViewer gs://BUCKET_2_NAME

Réserver une adresse IP externe

Maintenant que vos buckets sont opérationnels, configurez une adresse IP externe statique globale que vos clients utiliseront pour accéder à votre équilibreur de charge.

Cette étape est facultative mais recommandée, car une adresse IP externe statique fournit une adresse unique vers laquelle pointer votre domaine.

Console

  1. Accédez à la page Adresses IP externes de Google Cloud Console.
    Accéder à la page Adresses IP externes
  2. Cliquez sur Réserver une adresse statique pour réserver une adresse IPv4.
  3. Attribuez un Nom à example-ip.
  4. Définissez le niveau réseau à la valeur Premium.
  5. Définissez Version IP sur IPv4.
  6. Définissez le Type à la valeur Global.
  7. Cliquez sur Réserver.
  8. Assurez-vous que le paramètre Type est bien défini sur Global.
  9. 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

Créer l'équilibreur de charge HTTP avec les buckets backend

Si vous souhaitez 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.

  1. Accédez à la page "Équilibrage de charge" dans Google Cloud Console.
    Accéder à la page "Équilibrage de charge"
  2. Dans la section Équilibrage de charge HTTP(S), cliquez sur Démarrer la configuration.
  3. Sélectionnez D'Internet vers mes VM.
  4. Pour Nom, définissez http-lb.

Configurer le backend

  1. Cliquez sur Configuration du backend.
  2. Dans la section Services de backend et buckets backend, cliquez sur Créer ou sélectionner des services de backend et des buckets backend > Services de backend > Créer un service de backend.
  3. Définissez le paramètre Nom sur backend-bucket1.
  4. Cliquez sur Parcourir sous Bucket Cloud Storage.
  5. Sélectionnez votre bucket BUCKET_1_NAME, puis cliquez sur Sélectionner.
  6. Cliquez sur Créer.

Répétez cette étape pour créer backend-bucket2, puis accédez à BUCKET_2_NAME.

Configurer des règles d'hôte et des outils de mise en correspondance des chemins

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.

  1. Cliquez sur Règles d'hôte et de chemin d'accès.
  2. Pour backend-bucket1, vous ne pouvez pas modifier les hôtes et les chemins par défaut. Cela signifie que toutes les requêtes sans correspondance sont distribuées vers backend-bucket1.
  3. Pour backend-bucket2, saisissez * dans le champ Hôtes.
  4. Pour backend-bucket2, saisissez /static/eu/* dans le champ Chemins d'accès.

    Hôtes Chemins d'accès Backend
    Sans correspondance (par défaut) Sans correspondance (par défaut) backend-bucket1
    * /static/eu/* backend-bucket2

Configurer l'interface

  1. Cliquez sur Configuration du frontend.
  2. Vérifiez que les options suivantes sont configurées avec les valeurs suivantes :

    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

    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.
  3. Cliquez sur OK.

Vérifier la configuration

  1. Cliquez sur Vérification et finalisation.
  2. Examinez les buckets backend, les règles d'hôte et de chemin d'accès, ainsi que l'interface.
  3. Cliquez sur Créer.
  4. Attendez jusqu'à ce que l'équilibreur de charge soit créé.
  5. Cliquez sur le nom de l'équilibreur de charge (http-lb).
  6. Notez l'adresse IP de l'équilibreur de charge pour la prochaine tâche. Elle est désignée par l'élément IP_ADDRESS.

Envoyer du trafic vers votre bucket backend

Maintenant que vous avez configuré votre équilibreur de charge, vous pouvez commencer à envoyer du trafic vers son adresse IP.

Console

  1. Accédez à la page Équilibrage de charge dans Google Cloud Console.
    Accéder à la page "Équilibrage de charge"
  2. Cliquez sur http-lb pour développer l'équilibreur de charge que vous venez de créer.
  3. Dans la section Backend, vérifiez que les buckets backend sont opérationnels. Une coche verte doit s'afficher à côté de vos buckets backend. Si ce n'est pas le cas, commencez par actualiser la page. Il peut s'écouler quelques instants avant que Cloud Console n'indique que les backends sont opérationnels.
  4. Une fois que Cloud Console indique que les buckets backend sont opérationnels, vous pouvez tester votre équilibreur de charge à l'aide d'un navigateur Web en accédant aux adresses https://IP_ADDRESS/static/eu/two-dogs.jpg et https://IP_ADDRESS/static/us/three-cats.jpg, où IP_ADDRESS représente l'adresse IP de l'équilibreur de charge. Votre navigateur doit afficher les pages dont le contenu indique les fichiers graphiques.

    • http://IP_ADDRESS/static/eu/two-dogs.jpg
    • http://IP_ADDRESS/static/us/three-cats.jpg

gcloud

Utilisez la commande curl pour tester la réponse à partir de l'URL. Remplacez IP_ADDRESS par l'adresse IPv4 de l'équilibreur de charge :

curl http://IP_ADDRESS/static/eu/two-dogs.jpg
curl http://IP_ADDRESS/static/us/three-cats.jpg

Limites

  • Les buckets backend ne sont compatibles qu'avec les équilibreurs de charge HTTP(S) externes.
  • Les buckets backend ne sont pas compatibles avec Identity-Aware Proxy.

Étape suivante