Cloud CDN utilise les ressources de votre choix, c'est-à-dire soit l'équilibreur de charge d'application externe global, soit l'équilibreur de charge d'application classique, pour assurer le routage, la vérification de l'état et la compatibilité avec les adresses IP Anycast. Comme les équilibreurs de charge d'application externes globaux peuvent avoir plusieurs types d'instances backend (instances de VM Compute Engine, pods Google Kubernetes Engine, buckets Cloud Storage ou backends 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 d'application externe 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.
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.
Backends de l'équilibreur de charge
Un équilibreur de charge d'application 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 support standard | Types de backends |
---|---|---|
Service de backend | Dynamique (par exemple, données) |
|
Bucket de backend | Statique (par exemple, images) |
|
Avant de commencer
- Si vous utilisez HTTPS pour l'interface, créez un certificat SSL, autogéré ou géré par Google. Nous vous recommandons d'utiliser un certificat géré par Google.
- Si vous utilisez Google Cloud CLI, consultez la section Découvrir le stockage d'objets avec l'outil gcloud pour l'installer.
Console
- Dans Google Cloud Console, accédez à la page Accueil.
- À droite de Google Cloud, sélectionnez un projet dans le menu déroulant.
gcloud
gcloud config set project PROJECT_ID
Remplacez PROJECT_ID
par l'ID de votre projet Google Cloud.
Terraform
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
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 d'application 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
- Dans la console Google Cloud, ouvrez la page Buckets Cloud Storage.
- Cliquez sur Créer un bucket.
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 Cliquez sur Créer.
Notez le nom du bucket Cloud Storage que vous venez de créer en vue de l'étape suivante.
gcloud
gcloud storage buckets create gs://BUCKET_NAME --project=PROJECT_ID --default-storage-class=standard --location=us-east1 --uniform-bucket-level-access
Terraform
Pour créer un bucket, utilisez la ressource google_storage_bucket
.
Pour savoir comment appliquer ou supprimer une configuration Terraform, consultez la page Commandes Terraform de base.
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.
gcloud
Exécutez la commande suivante dans Cloud Shell. Remplacez BUCKET_NAME
par le nom unique de votre bucket Cloud Storage :
gcloud storage cp gs://gcp-external-http-lb-with-bucket/three-cats.jpg gs://BUCKET_NAME/never-fetch/
Terraform
Pour copier l'objet, utilisez local-exec
Provisioner
avec la commande gcloud storage cp
.
resource "null_resource" "upload_image" { provisioner "local-exec" { command = "gcloud storage cp gs://gcp-external-http-lb-with-bucket/three-cats.jpg gs://${google_storage_bucket.default.name}/never-fetch/ --recursive" } }
Pour importer un objet, vous pouvez également utiliser la ressource google_storage_bucket_object
.
Pour savoir comment appliquer ou supprimer une configuration Terraform, consultez la page Commandes Terraform de base.
Dans la console Google Cloud, 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. Pour réduire le risque d'exposition involontaire des données, vous devez généralement dédier des buckets Cloud Storage spécifiques aux objets publics.
Voici des alternatives à l'opération effectuée pour rendre un bucket Cloud Storage entier public:
Utilisez des dossiers gérés pour rendre une partie de votre bucket lisible publiquement.
Rendez des objets individuels lisibles publiquement. Nous vous déconseillons d'utiliser cette approche, car elle utilise un ancien système d'autorisation spécifique à Cloud Storage.
Utilisez des URL signées.
La procédure suivante permet à tous les utilisateurs d'afficher les objets de votre bucket Cloud Storage, rendant ce dernier lisible publiquement.
Console
- Dans la console Google Cloud, ouvrez la page Buckets Cloud Storage.
- Accédez au bucket et cliquez sur l'onglet Autorisations.
- Cliquez sur Ajouter des comptes principaux.
- Dans Nouveaux comptes principaux, saisissez
allUsers
. - Pour le rôle, sélectionnez Cloud Storage > Lecteur des objets de l'espace de stockage.
- Cliquez sur Enregistrer.
gcloud
gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME --member=allUsers --role=roles/storage.objectViewer
Terraform
Pour rendre votre bucket Cloud Storage public, utilisez la ressource google_storage_bucket_iam_member
.
Pour savoir comment appliquer ou supprimer une configuration Terraform, consultez la page Commandes Terraform de base.
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
- Dans Google Cloud Console, accédez à la page Adresses IP externes.
- Pour réserver une adresse IPv4, cliquez sur Réserver une adresse statique.
- Dans le champ Nom, spécifiez
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, utilisez la ressource google_compute_global_address
.
Pour savoir comment appliquer ou supprimer une configuration Terraform, consultez la page Commandes Terraform de base.
Créer l'équilibreur de charge d'application externe
Dans cette procédure, vous allez créer le bucket 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 backend, vous pouvez activer Cloud CDN.
Console
Démarrer le processus de configuration de l'équilibreur de charge d'application externe
- Dans Google Cloud Console, accédez à la page Équilibrage de charge.
- Dans la section Équilibrage de charge HTTP(S), cliquez sur Démarrer la configuration.
- Sélectionnez D'Internet vers mes VM, puis cliquez sur Continuer.
- Sous Gestion avancée du trafic, sélectionnez l'une des options suivantes :
- Pour les équilibreurs de charge d'application classiques, sélectionnez Équilibreur de charge HTTP(S) classique.
- Pour les équilibreurs de charge d'application externes globaux, sélectionnez Équilibreur de charge HTTP(S) avec gestion avancée du trafic.
- 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.
- Cliquez sur Configuration du backend.
- 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.
- 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. - Sous Bucket Cloud Storage, cliquez sur Parcourir.
- Sélectionnez le nom unique du bucket Cloud Storage que vous avez créé (
BUCKET_NAME
), puis cliquez sur Sélectionner. Cliquez sur Activer Cloud CDN.
(Facultatif) Modifiez les paramètres du mode cache et la valeur TTL.
Cliquez sur Create (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 d'accès sont les composants de configuration d'un mappage d'URL de l'équilibreur de charge d'application 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
- Cliquez sur Configuration de l'interface.
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. Cliquez sur OK.
Vérifier la configuration
- Cliquez sur Vérifier et finaliser.
- Consultez les sections Buckets backend, Règles d'hôte et de chemin d'accès et Interface.
- Cliquez sur Créer.
- Attendez jusqu'à ce 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. 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 \ --cache-mode=CACHE_MODE
Définissez le mode cache en remplaçant CACHE_MODE par l'un des éléments suivants :
CACHE_ALL_STATIC
ouUSE_ORIGIN_HEADERS
: utilise les en-têtes définis conformément aux métadonnées de contrôle de cache dans Cloud Storage. Cloud Storage fournit toujours un en-têteCache-Control
à Cloud CDN. Si aucune valeur n'est explicitement choisie, une valeur par défaut est envoyée.FORCE_CACHE_ALL
: met en cache tout le contenu, en ignorant les instructionsprivate
,no-store
ouno-cache
dans les en-têtes de réponseCache-Control
envoyés par Cloud Storage.
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
-
Pour un équilibreur de charge d'application externe global, exécutez la commande gcloud CLI avec
load-balancing-scheme=EXTERNAL_MANAGED
. Ce paramètre offre une fonctionnalité de gestion avancée du trafic. - Pour un équilibreur de charge d'application classique, utilisez
load-balancing-scheme=EXTERNAL
.
gcloud compute forwarding-rules create http-lb-forwarding-rule \ --load-balancing-scheme=LOAD_BALANCING_SCHEME \ --network-tier=PREMIUM \ --address=example-ip \ --global \ --target-http-proxy=http-lb-proxy \ --ports=80
Terraform
Configurer le backend
Pour configurer le backend, utilisez la ressource google_compute_backend_bucket
.
Configurez le mappage d'URL
Pour configurer le backend, utilisez la ressource google_compute_url_map
.
Configurer le proxy cible
Pour configurer le proxy cible, utilisez la ressource google_compute_target_http_proxy
ou la ressource google_compute_target_https_proxy
.
Configurer la règle de transfert
Pour configurer la règle de transfert, utilisez la ressource google_compute_global_forwarding_rule
.
- Pour un équilibreur de charge d'application externe global, utilisez
load_balancing_scheme="EXTERNAL_MANAGED"
. Ce paramètre offre une fonctionnalité de gestion avancée du trafic. - Pour un équilibreur de charge d'application classique, utilisez
load_balancing_scheme="EXTERNAL"
.
Pour savoir comment appliquer ou supprimer une configuration Terraform, consultez la page Commandes Terraform de base.
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
- Dans Google Cloud Console, accédez à la page Équilibrage de charge.
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 la console Google Cloud n'indique que les backends sont opérationnels.
Lorsque la console Google Cloud 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/never-fetch/three-cats.jpg
. RemplacezIP_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/never-fetch/three-cats.jpg
Vérifier que Cloud CDN fonctionne
Si vous rechargez plusieurs fois de suite la page http://IP_ADDRESS/never-fetch/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 dans la console Google Cloud en ouvrant l'explorateur de journaux et en filtrant par nom de règle de transfert.
Ouvrez l'explorateur de journaux
Logs Explorer
{ 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/never-fetch/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
- Dans Google Cloud Console, accédez à la page Équilibrage de charge.
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 la console Google Cloud n'indique que les backends sont opérationnels.
Lorsque la console Google Cloud 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/never-fetch/three-cats.jpg
. RemplacezIP_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 -D- -o /dev/null /dev/null http://IP_ADDRESS/never-fetch/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 du cache comporte un en-tête Age
supérieur à zéro.
Le contenu qui doit être actualisé avant l'écoulement de la valeur TTL peut être invalidé et extrait à nouveau de Cloud Storage.
Désactiver Cloud CDN
Console
Désactiver Cloud CDN pour un seul bucket de backend
- Dans Google Cloud Console, accédez à la page Cloud CDN.
- Sur le côté droit de la ligne concernant l'origine, cliquez sur Menu , puis sélectionnez Modifier.
- Décochez les cases des buckets de backend qui ne doivent plus utiliser Cloud CDN.
- Cliquez sur Mettre à jour.
Supprimer Cloud CDN pour tous les buckets de backend d'une origine donnée
- Dans Google Cloud Console, accédez à la page Cloud CDN.
- Sur le côté droit de la ligne concernant l'origine, cliquez sur Menu , puis sélectionnez Supprimer.
- 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
- Consultez la page Présentation de la mise en cache pour en savoir plus sur les contenus mis en cache.
- Consultez la page Fonctionnalités Ingress pour apprendre à utiliser Cloud CDN dans GKE.
- Consultez la page Afficher les journaux pour vérifier si Cloud CDN diffuse des réponses à partir d'un cache.
- Consultez la page Dépannage pour en savoir plus sur les problèmes courants et découvrir comment les corriger.
- Pour configurer des règles de filtrage et de contrôle d'accès pour votre contenu, consultez la section Règles de sécurité périphérique.