Configurer un backend externe avec un NEG Internet

Ce guide s'appuie sur un exemple pour décrire les principes de base de l'utilisation d'un backend externe (parfois appelé origine personnalisée) dans un équilibreur de charge d'application externe. Un backend externe est un point de terminaison externe à Google Cloud. Lorsque vous utilisez un backend externe avec un équilibreur de charge d'application externe, vous pouvez améliorer les performances en utilisant la mise en cache Cloud CDN.

Ce guide explique comment configurer un équilibreur de charge d'application externe global avec un service de backend compatible avec Cloud CDN qui sert de proxy vers un serveur backend externe à l'adresse backend.example.com.

Dans cet exemple, l'équilibreur de charge accepte les requêtes HTTPS des clients et les transfère au backend externe en tant que requêtes HTTPS. Cet exemple suppose que le backend externe est compatible avec HTTPS.

Vous pouvez également configurer un équilibreur de charge pour qu'il accepte les requêtes HTTP ou HTTPS, et utiliser HTTPS lors de l'envoi par proxy des requêtes au backend externe.

Dans ce guide, nous partons du principe que vous avez déjà configuré un équilibreur de charge et que vous ajoutez un nouveau backend externe. Pour en savoir plus, consultez la page Configurer un équilibreur de charge d'application classique avec un groupe d'instances géré d'instances géré.

La figure 1 illustre un exemple d'architecture.

Figure 1. Cas d'utilisation typique pour les backends externes.
Figure 1 : Cas d'utilisation typique pour les backends externes.

Dans le schéma, www.example.com comporte une interface d'équilibreur de charge avec l'adresse IP 120.1.1.1. En cas de défaut de cache (miss), les requêtes utilisateur pour /cart/id/1223515 sont extraites du backend externe via HTTPS. 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.

Avant de commencer

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

Autorisations

Pour suivre ce guide, vous devez créer un groupe de points de terminaison du réseau (NEG) Internet, puis créer ou modifier un équilibreur de charge d'application 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 un backend externe

Cette section vous explique comment configurer et tester un NEG Internet.

Vue d'ensemble de la configuration

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
  • Définir le trafic utilisateur à mapper à ce service de backend en configurant le mappage d'URL de votre équilibreur de charge d'application externe
  • L'ajout à la liste d'autorisation des plages d'adresses IP nécessaires

Cet exemple crée 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 backends externes, 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.
  • Cet exemple inclut un en-tête personnalisé, qui est requis lorsque le backend externe attend une valeur particulière pour l'en-tête Host de la requête HTTP.

La configuration se présente comme suit.

Figure 2. Cloud CDN avec un backend sur site
Figure 2. Cloud CDN avec un backend sur site

Créer le point de terminaison NEG et Internet

Console

  1. Dans la console Google Cloud, 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 backend externe peut être atteint) :

    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
    

Ajouter un backend externe à un équilibreur de charge

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

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éer le service de backend et ajouter 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 d'application classique, cliquez sur Menu, puis sélectionnez Modifier.
  3. Cliquez sur Configuration du backend.
  4. Dans le menu Services de backend et buckets backend, sélectionnez Créer un service de 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 HTTPS.
  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. (Facultatif) Modifiez les paramètres du mode cache et TTL.
  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. Dans le champ 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 vous semble correct, cliquez sur Mettre à jour.

gcloud

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

    gcloud compute backend-services create images \
       --global \
       --enable-cdn \
       --cache-mode=CACHE_MODE \
       --protocol=HTTP2
    

    Définissez le mode cache en remplaçant CACHE_MODE par l'un des éléments suivants :

    • CACHE_ALL_STATIC: met automatiquement en cache le contenu statique.

    • USE_ORIGIN_HEADERS (par défaut): nécessite que l'origine définisse des en-têtes de mise en cache valides pour mettre en cache le contenu

    • FORCE_CACHE_ALL: met en cache tout le contenu, en ignorant les instructions private, no-store ou no-cache dans les en-têtes de réponse Cache-Control.

  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 au mappage d'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 les éléments suivants :

    • EXAMPLE_URL_MAP : nom de votre mappage d'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 d'accès
    • /CART/ID/1223515 : chemin d'accès
    • IMAGES : nom du nouveau service de backend avec le NEG Internet associé

Ajouter les plages d'adresses IP nécessaires à la liste d'autorisation

Pour autoriser un équilibreur de charge d'application externe à envoyer des requêtes à votre NEG Internet, vous devez interroger l'enregistrement TXT DNS _cloud-eoips.googleusercontent.com à l'aide d'un outil tel que dig ou nslookup.

Par exemple, exécutez la commande dig suivante :

dig TXT _cloud-eoips.googleusercontent.com | grep -Eo 'ip4:[^ ]+' | cut -d':' -f2

Le résultat contient deux plages d'adresses IP, comme suit :

34.96.0.0/20
34.127.192.0/18

Notez les plages d'adresses IP et assurez-vous qu'elles sont autorisées par votre pare-feu ou votre liste de contrôle d'accès (LCA) au cloud.

Pour en savoir plus, consultez la section Authentifier les requêtes.

Connecter un domaine à votre équilibreur de charge

Une fois l'équilibreur de charge créé, notez l'adresse IP associée à celui-ci (par exemple, 30.90.80.100). Pour faire pointer votre domaine vers votre équilibreur de charge, créez un enregistrement A à l'aide de votre service d'enregistrement de domaine. Si vous avez ajouté plusieurs domaines à votre certificat SSL, vous devez ajouter un enregistrement A à chacun d'eux, tous pointant vers l'adresse IP de l'équilibreur de charge. Par exemple, pour créer des enregistrements A pour www.example.com et example.com, utilisez le code suivant :

NAME                  TYPE     DATA
www                   A        30.90.80.100
@                     A        30.90.80.100

Si vous utilisez Cloud DNS comme fournisseur DNS, consultez la section Ajouter, modifier et supprimer des enregistrements.

Tester l'équilibreur de charge d'application externe

Maintenant que vous avez configuré votre équilibreur de charge, vous pouvez commencer à envoyer du trafic vers son adresse IP. Si vous avez configuré un domaine, vous pouvez également envoyer du trafic vers le nom de domaine. Toutefois, la propagation DNS peut prendre un certain temps. Vous pouvez donc commencer à utiliser l'adresse IP à des fins de test.

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

    Accéder à la page "Équilibrage de charge"

  2. Cliquez sur l'équilibreur de charge que vous venez de créer.

  3. Notez l'adresse IP de l'équilibreur de charge.

  4. Si vous avez créé un équilibreur de charge HTTP, vous pouvez le tester à l'aide d'un navigateur Web à l'adresse http://IP_ADDRESS. Remplacez IP_ADDRESS par l'adresse IP de l'équilibreur de charge. Vous devriez être redirigé vers la page d'accueil du service helloworld.

    Si vous avez créé un équilibreur de charge HTTPS, vous pouvez le tester à l'aide d'un navigateur Web à l'adresse https://IP_ADDRESS. Remplacez IP_ADDRESS par l'adresse IP de l'équilibreur de charge. Vous devriez être redirigé vers la page d'accueil du service helloworld.

    Si cela ne fonctionne pas et que vous utilisez un certificat géré par Google, vérifiez que l'état de votre ressource de certificat est ACTIF. Pour plus d'informations, consultez la section État des ressources de certificat SSL géré par Google.

    Vous pouvez également utiliser curl depuis l'interface de ligne de commande de votre machine locale. Remplacez IP_ADDRESS par l'adresse IPv4 de l'équilibreur de charge.

    Si vous utilisez un certificat géré par Google, testez le domaine qui pointe vers l'adresse IP de l'équilibreur de charge. Exemple :

    curl -s 'https://www.example.com:443' --resolve www.example.com:443:IP_ADDRESS
    

  5. Facultatif : Si vous utilisez un domaine personnalisé, vous devrez peut-être attendre la propagation des paramètres DNS mis à jour. Testez ensuite votre domaine (par exemple, backend.example.com) dans le navigateur Web.

    Pour obtenir de l'aide concernant le dépannage, consultez la section Résoudre les problèmes liés aux backends externes et aux NEG Internet.

Désactiver Cloud CDN

Console

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

    Accédez à la page "Équilibrage de charge".

  2. Cliquez sur le nom de l'équilibreur de charge que vous souhaitez modifier.

  3. Cliquez sur Modifier ().

  4. Cliquez sur Configuration du backend.

  5. Pour le service de backend avec le backend NEG Internet, cliquez sur Modifier.

  6. Décochez la case Activer Cloud CDN.

  7. Pour vérifier vos modifications, cliquez sur Vérification et finalisation, puis sur Mettre à jour.

gcloud

gcloud compute backend-services update BACKEND_SERVICE_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