Configurer Cloud CDN avec un bucket backend

Cloud CDN utilise les équilibreurs de charge HTTP(S) externes de Google Cloud pour fournir un routage, une vérification de l'état et une assistance pour IP Anycast. Comme les équilibreurs de charge HTTP(S) externes globaux peuvent avoir plusieurs types d'instances backend (instances de VM Compute Engine, pods Google Kubernetes Engine, buckets Cloud Storage ou origines externes en dehors de Google Cloud), vous pouvez choisir les backends (origines) pour lesquels activer Cloud CDN.

Ce guide de configuration vous explique comment créer un équilibreur de charge HTTP(S) externe simple avec Cloud CDN activé. L'exemple utilise les ressources suivantes :

  • Le réseau de cloud privé virtuel (Virtual Private Cloud, VPC) par défaut
  • Un mappage d'URL par défaut
  • Une adresse IP externe réservée
  • Un bucket Cloud Storage en tant que backend
  • Un bucket backend d'équilibreur de charge unique qui fait office de wrapper autour du bucket Cloud Storage

Un bucket backend est compatible avec les éléments suivants :

  • Buckets Cloud Storage de n'importe quelle classe de stockage, y compris des buckets multirégionaux
  • Stratégies Cloud CDN pour la mise en cache de contenu à la périphérie mondiale de Google

Pour en savoir plus sur le fonctionnement de Cloud CDN, consultez la présentation de Cloud CDN.

Backends de l'é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 des services spécifiés. Le tableau suivant récapitule les types de backends dans lesquels vous pouvez héberger du contenu et des services.

Configuration du backend de l'équilibreur de charge Type de contenu standard Types de backends
Service backend Dynamique (par exemple, données)
  • Groupes d'instances non gérés
  • Groupes d'instances gérés
  • Groupes de points de terminaison du réseau internes à Google Cloud
  • Groupes de points de terminaison du réseau externes à Google Cloud
Bucket de backend Statique (par exemple, images)
  • Buckets Cloud Storage (décrits sur cette page)

Avant de commencer

Créer un bucket Cloud Storage

Si vous disposez d'un bucket Cloud Storage existant qui n'est pas déjà attribué à un équilibreur de charge, vous pouvez passer à l'étape suivante.

Lorsque vous créez un bucket Cloud Storage à utiliser comme backend pour un équilibreur de charge HTTP(S) externe avec Cloud CDN, 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 Storage

  2. Cliquez sur Créer un bucket.
  3. Spécifiez les valeurs des champs de la table suivante, en conservant toutes les autres valeurs par défaut.

    Valeur 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 invitant à en saisir un autre s'affiche.
    Type d'emplacement Multi-region (Multirégional)
    Zone Sélectionnez une région, telle que us (plusieurs régions aux États-Unis).
    Default storage class Standard
    Contrôle des accès Uniform
  4. Cliquez sur Créer.

  5. Notez le nom du bucket Cloud Storage nouvellement créé pour l'étape suivante.

gsutil

gsutil mb -p PROJECT_ID -c standard -l us-east1 -b on gs://BUCKET_NAME

Copier un fichier graphique dans votre bucket Cloud Storage

Pour pouvoir tester la configuration, copiez un fichier graphique d'un bucket Cloud Storage public dans votre propre bucket Cloud Storage.

  1. Exécutez la commande suivante dans Cloud Shell. Remplacez BUCKET_NAME par le nom de votre bucket Cloud Storage unique :

    gsutil cp gs://gcp-external-http-lb-with-bucket/three-cats.jpg gs://BUCKET_NAME/static/us/
    
  2. Dans Cloud Console, cliquez sur Actualiser pour vérifier que le fichier graphique est copié.

Rendre votre bucket Cloud Storage public

Cet exemple rend votre bucket Cloud Storage lisible publiquement. Il s'agit de l'approche recommandée pour le contenu public. Avec ce paramètre, tous les internautes peuvent afficher et répertorier vos objets et leurs métadonnées, à l'exception des LCA. Il est recommandé de dédier des buckets Cloud Storage spécifiques à des objets publics. Pour en savoir plus, consultez la section Architecture de bucket recommandée.

Voici les alternatives à l'opération effectuée pour rendre vos buckets Cloud Storage publics :

La procédure suivante permet à tous les utilisateurs d'afficher les objets de votre bucket Cloud Storage, ce qui rend le bucket lisible publiquement.

Console

  1. Dans Cloud Console, ouvrez le navigateur Cloud Storage.

    Ouvrir le navigateur Storage

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

gsutil

gsutil iam ch allUsers:objectViewer gs://BUCKET_NAME

Réserver une adresse IP externe

Maintenant que votre bucket Cloud Storage est opérationnel, 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. Dans 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 statique.
  3. Attribuez un Nom à example-ip.
  4. Définissez le Niveau de service réseau sur Premium.
  5. Définissez Version IP sur IPv4.
  6. Définissez le Type à la valeur Global.
  7. 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(S) externe

Si vous souhaitez créer un équilibreur de charge HTTPS, vous devez disposer d'une ressource de certificat SSL que vous pouvez ajouter à l'interface de l'équilibreur de charge. Pour en savoir plus, consultez la page Présentation des certificats SSL.

Console

Démarrer le processus de configuration de l'équilibreur de charge HTTP(S) externe

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

    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, puis cliquez sur Continuer.
  4. Définissez Nom sur http-lb, puis passez à l'étape suivante.

Configurer le backend et activer Cloud CDN

Créez le bucket backend de l'équilibreur de charge, qui servira de wrapper pour votre bucket Cloud Storage. Lorsque vous créez ou modifiez un bucket backend, vous pouvez activer Cloud CDN.

  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, puis sur Services de backend > Créer un service de backend.
  3. Définissez le paramètre Nom sur backend-bucket1. Ce nom n'a pas besoin d'être unique et peut être différent du nom du bucket Cloud Storage réel.
  4. Sous Bucket Cloud Storage, cliquez sur Parcourir.
  5. Sélectionnez le fichier BUCKET_NAME unique Cloud Storage que vous avez créé, puis cliquez sur Sélectionner.
  6. Cliquez sur Activer Cloud CDN.

  7. Cliquez sur Créer.

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

Dans la section Règles d'hôte et de chemin d'accès, vous pouvez conserver les paramètres par défaut.

Pour obtenir un exemple de configuration personnalisée, consultez la page Ajouter des buckets backend à des équilibreurs de charge.

Pour en savoir plus sur les règles d'hôte et les outils de mise en correspondance de chemins d'accès, consultez la page Présentation des mappages d'URL.

Configurer l'interface

  1. Cliquez sur Configuration du frontend.
  2. Vérifiez que les options du tableau suivant 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.

    Valeur Valeur (saisissez une valeur ou sélectionnez une option spécifiée)
    Protocole HTTPS
    Niveau de service réseau Premium
    Version IP IPv4
    Adresse IP example-ip
    Port 443
    Certificat Sélectionnez un certificat ou créez-en un
  3. Cliquez sur OK.

Vérifier la configuration

  1. Cliquez sur Vérifier et finaliser.
  2. Consultez les sections Buckets backend, Règles d'hôte et de chemin d'accès et 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

Une fois les règles de transfert globales créées, la propagation de votre configuration peut prendre plusieurs minutes. Après quelques minutes, vous pouvez commencer à envoyer du trafic à l'adresse IP de l'équilibreur de charge.

Console

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

    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.

    Dans la section Backend, vérifiez que le bucket backend est opérationnel. 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.

  3. Une fois que Cloud Console indique que le bucket backend est opérationnel, vous pouvez tester votre équilibreur de charge à l'aide d'un navigateur Web en accédant à http://IP_ADDRESS/static/us/three-cats.jpg. Remplacez IP_ADDRESS par l'adresse IP de l'équilibreur de charge. Votre navigateur doit afficher une page dont le contenu indique le fichier graphique.

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.

Notez l'adresse IPv4 réservée :

gcloud compute addresses describe example-ip \
    --format="get(address)" \
    --global

Envoyez une requête curl :

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

Vérifier que Cloud CDN fonctionne

Si vous rechargez plusieurs fois la page http://ip-address/static/us/three-cats.jpg, vous devriez voir plusieurs succès de cache.

L'entrée de journal suivante montre un succès de cache. Vous pouvez afficher les succès de cache en ouvrant la visionneuse de journaux dans Google Cloud Console et en filtrant le nom de la règle de transfert.

Ouvrir la visionneuse de journaux

Lecteur de journaux

2020-06-08 16:41:30.078 PDT
GET
304
157 B
null
Chrome 83
http://LOAD_BALANCER_IP_ADDRESS/static/us/three-cats.jpg

CLIENT_IP_ADDRESS - "GET http://LOAD_BALANCER_IP_ADDRESS/static/us/three-cats.jpg" 304 157 "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36" Expand all | Collapse all{ httpRequest: { cacheHit: true cacheLookup: true remoteIp: "CLIENT_IP_ADDRESS" requestMethod: "GET" requestSize: "577" requestUrl: "http://LOAD_BALANCER_IP_ADDRESS/static/us/three-cats.jpg" responseSize: "157" status: 304 userAgent: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36" } insertId: "1oek5rg3l3fxj7" jsonPayload: { @type: "type.googleapis.com/google.cloud.loadbalancing.type.LoadBalancerLogEntry" cacheId: "SFO-fbae48ad" statusDetails: "response_from_cache" } logName: "projects/PROJECT_ID/logs/requests" receiveTimestamp: "2020-06-08T23:41:30.588272510Z" resource: { labels: { backend_service_name: "" forwarding_rule_name: "http-lb-forwarding-rule" project_id: "PROJECT_ID" target_proxy_name: "http-lb-target-proxy" url_map_name: "http-lb" zone: "global" } type: "http_load_balancer" } severity: "INFO" spanId: "7b6537d3672e08e1" timestamp: "2020-06-08T23:41:30.078651Z" trace: "projects/PROJECT_ID/traces/241d69833e64b3bf83fabac8c873d992" }

Désactiver Cloud CDN

Console

Désactiver Cloud CDN pour un seul bucket backend

  1. Dans Google Cloud Console, accédez à la page Cloud CDN.

    Accéder à la page Cloud CDN

  2. Sur le côté droit de la ligne concernant l'origine, cliquez sur Menu , puis sélectionnez Modifier.
  3. Décochez les cases des buckets backend qui ne doivent plus utiliser Cloud CDN.
  4. Cliquez sur Mettre à jour.

Supprimer Cloud CDN pour tous les buckets backend d'une origine

  1. Dans Cloud Console, accédez à la page Cloud DLP.

    Accéder à la page Cloud CDN

  2. Sur le côté droit de la ligne concernant l'origine, cliquez sur Menu , puis sélectionnez Supprimer.
  3. Cliquez sur Supprimer pour confirmer votre choix.

gcloud

gcloud compute backend-buckets update BACKEND_BUCKET_NAME \
    --no-enable-cdn

La désactivation de Cloud CDN n'invalide pas et ne purge pas les caches. Si vous désactivez puis réactivez Cloud CDN, tout ou partie du contenu mis en cache peut rester en cache. Pour empêcher les caches d'utiliser un contenu, vous devez invalider ce contenu.

Étape suivante