Configurer Cloud CDN avec une origine externe

Ce guide utilise un exemple pour expliquer les principes fondamentaux de l'utilisation d'une origine personnalisée dans un groupe de points de terminaison du réseau Internet (NEG). Une origine personnalisée correspond à un point de terminaison Internet externe à Google Cloud. Vous pouvez utiliser un NEG Internet en tant que backend pour un équilibreur de charge HTTP(S) externe et améliorer les performances en utilisant la mise en cache Cloud CDN.

Ce guide explique comment configurer un équilibreur de charge HTTP(S) externe global à l'aide d'un service de backend équipé de Cloud CDN et agissant comme proxy vers un serveur d'origine personnalisé situé à l'adresse backend.example.com.

Dans cet exemple, l'équilibreur de charge accepte les requêtes HTTPS des clients et les transfère vers l'origine personnalisée en tant que requêtes HTTP/2. Cet exemple part du principe que l'origine est compatible avec HTTP/2.

Vous pouvez également configurer un équilibreur de charge compatible avec les requêtes HTTP ou HTTP/2, et utiliser HTTPS lors de l'envoi par proxy de requêtes à l'origine personnalisée.

La configuration d'un NEG Internet implique les opérations suivantes :

  • la définition du point de terminaison Internet d'un NEG Internet ;
  • l'ajout d'un NEG Internet en tant que backend à un service de backend ;
  • la définition du trafic utilisateur à mapper vers ce service de backend via la configuration du mappage d'URL de votre équilibreur de charge HTTP(S) externe.

Avant de commencer

Avant de suivre ce guide, familiarisez-vous avec les points suivants :

Facultatif : installation de gcloud

Si vous préférez travailler à partir de la ligne de commande, installez l'outil de ligne de commande gcloud. Pour obtenir des informations conceptuelles et d'installation sur l'outil, consultez la présentation de l'outil de ligne de commande gcloud.

Si vous n'avez pas encore utilisé l'outil de ligne de commande gcloud, commencez par exécuter la commande gcloud init pour initialiser votre répertoire gcloud.

Facultatif : créer un projet

Ces instructions nécessitent un projet. Si vous n'avez pas encore de projet, configurez-en un maintenant.

Nous recommandons aux utilisateurs disposant de l'autorisation resourcemanager.projects.create de créer un projet avant de poursuivre. La création d'un projet simplifie le nettoyage une fois que vous aurez terminé ce guide.

Autorisations

Pour suivre ce guide, vous devez créer un NEG Internet, et créer ou modifier un équilibreur de charge HTTP(S) externe dans un projet. Vous devez être propriétaire ou éditeur du projet, ou disposer des deux rôles IAM Compute Engine suivants.

Tâche Rôle requis
Créer et modifier des composants d'équilibreur de charge Administrateur réseau
Créer et modifier des NEG Administrateur d'instances Compute

Configurer un équilibreur de charge avec une origine personnalisée

Ce guide vous explique comment configurer et tester un NEG Internet.

Vue d'ensemble de la configuration

Les étapes de cette section décrivent comment configurer les éléments suivants :

  • Créer un NEG Internet et associer un point de terminaison du réseau qui définit votre point de terminaison INTERNET_IP_PORT ou INTERNET_FQDN_PORT
  • Associer ce NEG au service de backend de l'équilibreur de charge HTTP(S) externe
  • Ajouter la règle de transfert pour cet équilibreur de charge HTTP(S) externe

Voici un exemple d'architecture :

Cas d'utilisation classique pour les origines personnalisées
Cas d'utilisation classique pour les origines personnalisées

Dans le schéma, www.example.com comporte une interface d'équilibreur de charge avec l'adresse IP 120.1.1.1. En cas d'échec du cache, les requêtes utilisateur pour /cart/id/1223515 sont extraites de l'origine personnalisée via HTTP/2. Le reste du trafic entrant est dirigé soit vers le service de backend Google Cloud avec des VM Compute Engine, soit vers le bucket du backend, en fonction du mappage d'URL.

Pour configurer cet exemple, créez les ressources suivantes :

  • Une règle de transfert avec l'adresse IP 120.1.1.1, qui dirige les demandes entrantes vers un serveur proxy cible
    • Le networkTier de la règle de transfert doit être PREMIUM.
  • Le proxy cible analyse chaque requête par rapport au mappage d'URL afin de déterminer le service de backend adapté à la requête.
    • Pour les origines personnalisées, le proxy cible doit être TargetHttpProxy ou TargetHttpsProxy. Cet exemple utilise TargetHttpsProxy.
  • Le service Cloud CDN activé (facultatif) sur le service de backend permet de mettre en cache et de diffuser les réponses des caches de Cloud CDN.
  • La configuration du service de backend dirige le trafic vers un groupe de points de terminaison du réseau Internet. Ce NEG Internet contient le point de terminaison du réseau dans lequel l'équilibreur de charge HTTP(S) externe envoie le trafic en cas de défaut du cache Cloud CDN.
  • Cet exemple inclut un en-tête de requête défini par l'utilisateur, qui est obligatoire lorsque l'origine personnalisée attend une valeur particulière pour l'en-tête Host de la requête HTTP.

Créer le point de terminaison NEG et Internet

Console

  1. Dans Google Cloud Console, accédez à la page Groupes de points de terminaison du réseau.

    Accéder à la page "Groupes de points de terminaison du réseau"

  2. Cliquez sur Créer un groupe de points de terminaison du réseau.
  3. Saisissez le nom du groupe de points de terminaison du réseau : example-fqdn-neg
  4. Pour le type de groupe de points de terminaison du réseau, sélectionnez Groupe de points de terminaison du réseau Internet.
  5. Pour le port par défaut, saisissez 443.
  6. Pour le nouveau point de terminaison du réseau, sélectionnez Nom de domaine complet et port.
  7. Comme nom de domaine complet, saisissez backend.example.com.
  8. Pour le type de port, sélectionnez Par défaut et vérifiez que le numéro de port est 443.
  9. Cliquez sur Créer.

gcloud

  1. Créez un NEG Internet et définissez --network-endpoint-type sur internet-fqdn-port (le nom d'hôte et le port où votre origine peut être atteinte) :

    gcloud compute network-endpoint-groups create example-fqdn-neg \
        --network-endpoint-type="internet-fqdn-port" --global
    
  2. Ajoutez votre point de terminaison au NEG. Si aucun port n'est spécifié, le port est défini par défaut sur 80 (HTTP) ou 443 (HTTPS, HTTP/2) en fonction du protocole configuré dans le service de backend. Veillez à inclure l'option --global.

    gcloud compute network-endpoint-groups update example-fqdn-neg \
        --add-endpoint="fqdn=backend.example.com,port=443" \
        --global
    
  3. Répertoriez les NEG Internet créés :

    gcloud compute network-endpoint-groups list --global
    

    Résultat :

    NAME                LOCATION   ENDPOINT_TYPE        SIZE
    example-fqdn-neg    global     INTERNET_FQDN_PORT   1
    

  4. Répertoriez le point de terminaison dans ce NEG :

    gcloud compute network-endpoint-groups list-network-endpoints example-fqdn-neg \
        --global
    

    Résultat :

    INSTANCE   IP_ADDRESS   PORT   FQDN
                                   backend.example.com
    

Utiliser un équilibreur de charge existant

L'exemple suivant met à jour un équilibreur de charge existant.

Si vous ne disposez pas encore d'un équilibreur de charge HTTP(S) externe, ignorez cette section et accédez à celle intitulée Utiliser un nouvel équilibreur de charge.

Dans l'équilibreur de charge existant, le service par défaut est un service Google Cloud. L'exemple modifie le mappage d'URL existant en lui ajoutant un outil de mise en correspondance des chemins d'accès, qui envoie toutes les demandes de cart/id/1223515 au service de backend images associé au NEG Internet.

Console

Créez le service de backend et ajoutez le NEG Internet.

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

    Accéder à la page Équilibrage de charge

  2. Pour ajouter le service de backend à un équilibreur de charge existant, sélectionnez votre équilibreur de charge HTTP(S) externe, cliquez sur Menu , puis sélectionnez Modifier.
  3. Cliquez sur Configuration du backend.
  4. Dans le menu déroulant Créer ou sélectionner des services backend et des buckets backend, sélectionnez Services backend > Créer un service backend.
  5. Définissez le nom du service de backend sur images.
  6. Pour le type de backend, sélectionnez Groupe de points de terminaison du réseau Internet.
  7. Sélectionnez le protocole que vous souhaitez utiliser depuis l'équilibreur de charge vers le NEG Internet. Pour cet exemple, sélectionnez HTTP/2.
  8. Sous Nouveau backend > Groupe de points de terminaison du réseau Internet, sélectionnez example-fqdn-neg, puis cliquez sur Terminé.
  9. Sélectionnez Activer Cloud CDN.
  10. Conservez les paramètres du mode cache et la valeur TTL par défaut.
  11. Dans Configurations avancées, sous En-têtes de requêtes personnalisés, cliquez sur Ajouter un en-tête.
    1. Dans le champ Nom de l'en-tête, saisissez Host.
    2. Pour la valeur d'en-tête, saisissez backend.example.com.
  12. Cliquez sur Créer.
  13. Laissez la fenêtre ouverte pour continuer.

Associer le service de backend à un mappage d'URL existant

  1. Cliquez sur Règles d'hôte et de chemin d'accès.
  2. La ou les premières lignes incluent des services Google Cloud dans la colonne de droite, et l'une d'entre elles contient déjà la règle par défaut Any unmatched (default) pour les hôtes et les chemins d'accès.
  3. Dans la colonne de droite, assurez-vous qu'il existe une ligne dont la propriété images est sélectionnée. Si ce n'est pas le cas, cliquez sur Ajouter une règle d'hôte et de chemin d'accès, puis sélectionnez images. Remplissez les autres champs comme suit :
    1. Dans le champ Hôtes, saisissez *.
    2. Sous Chemins d'accès, saisissez /cart/id/1223515.

Vérifier et finaliser

  1. Cliquez sur Vérifier et finaliser.
  2. Comparez vos paramètres à ce que vous aviez l'intention de créer.
  3. Si tout semble correct, cliquez sur Créer pour créer votre équilibreur de charge HTTP(S) externe.

gcloud

  1. Créez un service de backend pour le NEG :

    gcloud compute backend-services create images \
       --global \
       --enable-cdn \
       --protocol=HTTP2
    
  2. Configurez le service de backend pour ajouter l'en-tête de requête personnalisé Host: backend.example.com à la requête :

    gcloud compute backend-services update images \
       --custom-request-header "Host: backend.example.com" --global
    
  3. Ajoutez le NEG Internet au service de backend à l'aide de la commande backend-services add-backend :

    gcloud compute backend-services add-backend images \
      --network-endpoint-group "example-fqdn-neg" \
      --global-network-endpoint-group \
      --global
    
  4. Associez le nouveau service de backend à l'URL de l'équilibreur de charge en créant une règle de correspondance pour diriger les requêtes vers ce backend.

    gcloud compute url-maps add-path-matcher EXAMPLE_URL_MAP \
      --default-service=GCP_SERVICE_EXAMPLE \
      --path-matcher-name=CUSTOM_ORIGIN_PATH_MATCHER_EXAMPLE \
      --backend-service-path-rules=/CART/ID/1223515=IMAGES
    

    Remplacez l'élément suivant :

    • EXAMPLE_URL_MAP : nom de votre mappage URL existant
    • GCP_SERVICE_EXAMPLE : nom d'un service de backend par défaut
    • CUSTOM_ORIGIN_PATH_MATCHER_EXAMPLE : nom de cette nouvelle règle de chemin
    • /CART/ID/1223515 : chemin d'accès
    • IMAGES : nom du nouveau service de backend avec le NEG Internet associé

Utiliser un nouvel équilibreur de charge

L'exemple suivant crée un équilibreur de charge HTTP(S) externe qui utilise votre NEG Internet comme service par défaut (tous les hôtes et tous les chemins d'accès).

Si vous disposez déjà d'un équilibreur de charge HTTP(S) externe que vous souhaitez modifier, ignorez cette section et accédez à celle intitulée Utiliser un équilibreur de charge existant.

Console

Créez le service de backend et ajoutez le NEG Internet.

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

    Accéder à la page Équilibrage de charge

  2. Cliquez sur Créer un équilibreur de charge.
  3. Dans la section Équilibrage de charge HTTP(S), cliquez sur Démarrer la configuration.
  4. Sélectionnez D'Internet vers mes VM.
  5. Saisissez un nom pour le nouvel équilibreur de charge. Ce nom devient le nom de votre nouveau mappage d'URL. Pour cet exemple, appelez-le example-url-map.
  6. Cliquez sur Configuration du backend.
  7. Dans le menu déroulant Créer ou sélectionner des services backend et des buckets backend, sélectionnez Services backend > Créer un service backend.
  8. Définissez le nom du service de backend sur images.
  9. Pour le type de backend, sélectionnez Groupe de points de terminaison du réseau Internet.
  10. Sélectionnez le protocole que vous souhaitez utiliser depuis l'équilibreur de charge vers le NEG Internet. Pour cet exemple, sélectionnez HTTP/2.
  11. Sous Nouveau backend > Groupe de points de terminaison du réseau Internet, sélectionnez example-fqdn-neg, puis cliquez sur Terminé.
  12. Sélectionnez Activer Cloud CDN.
  13. Dans Configurations avancées, sous En-têtes de requêtes personnalisés, cliquez sur Ajouter un en-tête.
    1. Dans le champ Nom de l'en-tête, saisissez Host.
    2. Pour la valeur d'en-tête, saisissez backend.example.com.
  14. Cliquez sur Créer.
  15. Laissez la fenêtre ouverte pour continuer.

Associer le service de backend à un nouveau mappage d'URL

  1. Cliquez sur Règles d'hôte et de chemin d'accès.
  2. Dans la colonne de droite, assurez-vous qu'il existe une ligne dont la propriété images est sélectionnée. Les deux premières colonnes contiennent déjà la règle par défaut Any unmatched (default).
  3. Laissez la fenêtre ouverte pour continuer.

Ajouter l'interface

  1. Cliquez sur Configuration du frontend.
  2. Dans le champ Nom, saisissez example-forwarding-rule.
  3. Comme Protocole, sélectionnez HTTPS.
  4. Cliquez sur la liste déroulante Certificat.
    1. Si vous possédez déjà une ressource de certificat SSL autogérée que vous souhaitez utiliser comme certificat SSL principal, sélectionnez-la dans le menu déroulant.
    2. Sinon, sélectionnez Créer un certificat.
    3. Sélectionnez Importer mon certificat ou Créer un certificat géré par Google.
    4. Si vous avez choisi Importer mon certificat, procédez comme suit :
      1. Spécifiez un nom pour example-ssl.
      2. Dans les champs correspondants, importez respectivement votre Certificat de clé publique (fichier .crt), votre Chaîne de certificats (fichier .csr) et votre Clé privée (fichier .key).
      3. Cliquez sur Créer.
    5. Si vous sélectionnez Créer un certificat géré par Google, sous Domaines, saisissez un domaine, puis cliquez sur Créer.
  5. Pour ajouter des ressources de certificat en plus de la ressource de certificat SSL principale, procédez comme suit :
    1. Cliquez sur Certificats supplémentaires > Ajouter un certificat.
    2. Sélectionnez un certificat dans la liste Certificats ou cliquez sur Créer un certificat, puis suivez les instructions précédentes.
  6. Cliquez sur OK.
  7. Laissez la fenêtre ouverte pour continuer.

Vérifier et finaliser

  1. Cliquez sur Vérifier et finaliser.
  2. Comparez vos paramètres à ce que vous aviez l'intention de créer.
  3. Si tout semble correct, cliquez sur Créer pour créer votre équilibreur de charge HTTP(S) externe.

gcloud

  1. Créez un service de backend pour le NEG :

    gcloud compute backend-services create images \
       --global \
       --enable-cdn \
       --protocol=HTTP2
    
  2. Configurez le service de backend pour ajouter l'en-tête de requête personnalisé Host: backend.example.com à la requête :

    gcloud compute backend-services update images \
       --custom-request-header "Host: backend.example.com" --global
    
  3. Ajoutez le NEG Internet au service de backend à l'aide de la commande backend-services add-backend :

    gcloud compute backend-services add-backend images \
      --network-endpoint-group "example-fqdn-neg" \
      --global-network-endpoint-group \
      --global
    
  4. Créez un mappage d'URL qui spécifie le service de backend comme valeur de --default-service :

    gcloud compute url-maps create example-url-map \
       --default-service images \
       --global
    
  5. Créez une ressource de certificat.

    1. Créez une ressource de certificat SSL autogérée :

      gcloud compute ssl-certificates create example-ssl \
        --certificate CRT_FILE_PATH \
        --private-key KEY_FILE_PATH
      
    2. Créer une ressource de certificat SSL géré par Google

      gcloud beta compute ssl-certificates create example-ssl \
      --domains DOMAIN
      
  6. Créez un proxy HTTPS cible, en associant le mappage d'URL et le certificat SSL :

    gcloud compute target-https-proxies create example-target-https-proxy \
      --url-map=example-url-map \
      --ssl-certificates=example-ssl \
      --global
    
  7. Créez une règle de transfert globale, qui configure une adresse IP anycast globale. L'équilibreur de charge écoute l'adresse IP anycast sur les ports configurés. Les clients peuvent se connecter au backend via le réseau Google Cloud.

    gcloud compute forwarding-rules create example-forwarding-rule \
       --ip-protocol=TCP \
       --ports=443 \
       --global \
       --target-https-proxy=example-target-https-proxy
    

Test

Récupérez l'adresse IP de votre règle de transfert et utilisez votre navigateur ou un outil de ligne de commande (par exemple, curl) pour vous y connecter.

gcloud compute forwarding-rules list

Pour obtenir de l'aide sur la résolution des problèmes, consultez la section Résoudre les problèmes liés à l'origine personnalisée et aux NEG Internet.

Utiliser les modes cache

Si vous avez configuré Cloud CDN pour récupérer et mettre en cache le contenu d'une origine en dehors de Google Cloud, la mise à jour du bucket de stockage d'une application ou d'un objet pour envoyer des en-têtes de mise en cache valides peut s'avérer difficile.

Cela s'applique également aux cas où votre serveur d'origine définit des en-têtes de mise en cache de manière incohérente, des valeurs TTL trop courtes ou trop longues, ou encore des instructions de cache non valides (par exemple, à partir d'une ancienne application).

Vous pouvez configurer Cloud CDN pour mettre en cache l'ensemble du contenu depuis cette origine et remplacer les valeurs TTL définies par l'origine en procédant comme suit :

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).

Étape suivante