Configurer Cloud CDN avec un bucket de 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 compatibilité pour les adresses 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 explique comment créer un équilibreur de charge HTTP(S) externe simple lorsque Cloud CDN est activé. L'exemple fait appel aux ressources suivantes :

  • Le réseau cloud privé virtuel (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 unique bucket de backend d'équilibreur de charge, qui agit comme un wrapper autour du bucket Cloud Storage

Un bucket de 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 découvrir 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 d'équilibreur de charge Type de contenu standard Types de backends
Service de 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 Google 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 du tableau suivant, en conservant toutes les autres valeurs par défaut.

    Propriété Valeur (saisissez une 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 Multirégional
    Emplacement Sélectionnez une région, telle que us (plusieurs régions aux États-Unis).
    Classe de stockage par défaut Standard
    Contrôle des accès Uniforme
  4. Cliquez sur Créer.

  5. Notez le nom du bucket Cloud Storage que vous venez de créer en vue de 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, vous allez copier un fichier graphique depuis un bucket Cloud Storage public vers votre propre bucket Cloud Storage.

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

    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 a bien été 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 du 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 aux objets publics. Pour en savoir plus, consultez la section Architecture de bucket recommandée.

Voici des 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, rendant ce dernier lisible publiquement.

Console

  1. Dans Google 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 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 Enregistrer.

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 vous pouvez faire pointer votre domaine.

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 statique.
  3. Dans le champ Nom, spécifiez 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

Dans cette procédure, vous allez créer le bucket de backend de l'équilibreur de charge, qui sert de wrapper à votre bucket Cloud Storage. Lors de la création ou de la modification d'un bucket de backend, vous pouvez activer Cloud CDN.

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. Dans le champ Nom, spécifiez http-lb puis passez à l'étape suivante.

Configurer le backend et activer Cloud CDN

Vous allez créer le bucket de backend d'équilibreur de charge, qui sert de wrapper à votre bucket Cloud Storage. Lors de la création ou de la modification d'un bucket de 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 backend et des buckets backend, puis sur Buckets de backend > Créer un bucket backend.
  3. Dans le champ Nom, spécifiez cat-backend-bucket. 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 nom unique du bucket Cloud Storage que vous avez créé (BUCKET_NAME), 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

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.

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 de 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 Frontend configuration (Configuration du frontend).
  2. Vérifiez que les options sont bien 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

    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 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 Review and finalize (Vérifier et finaliser).
  2. Consultez les sections Buckets de backend, Règles d'hôte et de chemin d'accès et Interface.
  3. Cliquez sur Create (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.

gcloud

Configurer le backend

gcloud compute backend-buckets create cat-backend-bucket \
    --gcs-bucket-name=BUCKET_NAME \
    --enable-cdn

Configurez le mappage d'URL

gcloud compute url-maps create http-lb \
    --default-backend-bucket=cat-backend-bucket

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 \
    --address=example-ip \
    --global \
    --target-http-proxy=http-lb-proxy \
    --ports=80

Envoyer du trafic vers votre bucket backend

Une fois la règle de transfert globale créée, la propagation de votre configuration peut prendre plusieurs minutes, au bout desquelles vous pouvez commencer à envoyer du trafic vers 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 de backend est opérationnel. Une coche verte doit s'afficher à côté de votre bucket de 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. Lorsque Cloud Console indique que le bucket de backend est opérationnel, vous pouvez tester votre équilibreur de charge à l'aide d'un navigateur Web en accédant à l'adresse 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 affiche 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 de suite la page http://ip-address/static/us/three-cats.jpg, vous devriez obtenir plusieurs succès de cache (hits).

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 par nom de règle de transfert.

Accéder à la visionneuse de journaux

Visionneuse de journaux

{
    insertId: "1oek5rg3l3fxj7"
    jsonPayload: {
        @type: "type.googleapis.com/google.cloud.loadbalancing.type.LoadBalancerLogEntry"
        cacheId: "SFO-fbae48ad"
        statusDetails: "response_from_cache"
    }
    httpRequest: {
        requestMethod: "GET"
        requestUrl: "http://LOAD_BALANCER_IP_ADDRESS/static/us/three-cats.jpg"
        requestSize: "577"
        status: 254
        responseSize: "157"
        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"
        remoteIp: "CLIENT_IP_ADDRESS"
        cacheHit: true
        cacheLookup: true
    }
    resource: {
        type: "http_load_balancer"
        labels: {
            zone: "global"
            url_map_name: "URL_MAP_NAME"
            forwarding_rule_name: "FORWARDING_RULE_NAME"
            target_proxy_name: "TARGET_PROXY_NAME"
            backend_service_name: ""
            project_id: "PROJECT_ID"
        }
    }
    timestamp: "2020-06-08T23:41:25.078651Z"
    severity: "INFO"
    logName: "projects/PROJECT_ID/logs/requests"
    trace: "projects/PROJECT_ID/traces/241d69833e64b3bf83fabac8c873d992"
    receiveTimestamp: "2020-06-08T23:41:25.588272510Z"
    spanId: "7b6537d3672e08e1"
}

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 de backend est opérationnel. Une coche verte doit s'afficher à côté de votre bucket de 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. Lorsque Cloud Console indique que le bucket de backend est opérationnel, vous pouvez tester votre équilibreur de charge à l'aide d'un navigateur Web en accédant à l'adresse 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 affiche 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

Le contenu est extrait de Cloud Storage, mis en cache par Cloud CDN, puis validé et extrait à nouveau lorsqu'il expire ou qu'il est supprimé du cache. Le contenu qui doit être actualisé avant l'écoulement de la valeur TTL peut être invalidé et extrait à nouveau de Cloud Storage.

Utiliser les modes cache et les valeurs TTL

Pour mettre automatiquement en cache les réponses statiques de votre origine, vous pouvez utiliser le paramètre de mode cache CACHE_ALL_STATIC (version bêta).

Pour contrôler la mise en cache de chaque réponse à l'aide des instructions du cache HTTP, configurez le mode cache pour utiliser les en-têtes d'origine (USE_ORIGIN_HEADERS). Pour en savoir plus sur les instructions de cache acceptées par Cloud CDN et sur les éléments non mis en cache par Cloud CDN, consultez les sections Contenu pouvant être mis en cache et Contenu ne pouvant pas être mis en cache.

Si votre origine ne diffuse aucun contenu dynamique par utilisateur, il peut être souhaitable de mettre en cache toutes les réponses issues de l'origine. Pour ce faire, utilisez le mode FORCE_CACHE_ALL. Ce mode met en cache toutes les réponses, quels que soient le type de contenu et les instructions de cache.

Si vous ne sélectionnez pas explicitement un mode cache lorsque vous activez Cloud CDN sur un backend, les valeurs par défaut suivantes s'appliquent :

  • Version bêta : L'API et l'outil de ligne de commande gcloud utilisent USE_ORIGIN_HEADERS par défaut si vous activez Cloud CDN sans spécifier de mode cache. Cloud Console (s'il est compatible) utilise CACHE_ALL_STATIC par défaut lorsque vous activez Cloud CDN sur un backend.

  • DG : tous les nouveaux backends pour lesquels Cloud CDN est activé utilisent CACHE_ALL_STATIC par défaut, quelle que soit la méthode de configuration (Cloud Console, API et gcloud).

Lorsque Cloud CDN est activé, les nouveaux buckets de backend se voient automatiquement attribuer par défaut le mode cache CACHE_ALL_STATIC.

  1. Activez Cloud CDN sur votre bucket de backend.
  2. Configurez le mode cache pour mettre en cache automatiquement tout le contenu statique.
  3. Définissez une valeur TTL par défaut adaptée (par exemple, un jour) pour que Cloud CDN le mette en cache.

Désactiver Cloud CDN

Console

Désactiver Cloud CDN pour un seul bucket de 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 de backend qui ne doivent plus utiliser Cloud CDN.
  4. Cliquez sur Mettre à jour.

Supprimer Cloud CDN pour tous les buckets de backend d'une origine donnée

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

Étapes suivantes