Présentation des groupes de points de terminaison du réseau Internet

Un groupe de points de terminaison du réseau (NEG) Internet définit un backend externe pour un équilibreur de charge. Un backend externe est un backend hébergé en dehors de Google Cloud. Vous pouvez utiliser ce type de backend avec un équilibreur de charge HTTP(S) externe. Cela s'impose si vous souhaitez diffuser des contenus depuis un backend externe et que vous souhaitez que votre équilibreur de charge HTTP(S) externe soit utilisé comme interface.

Vous pouvez ainsi :

  • utiliser l'infrastructure périphérique de Google pour interrompre vos connexions utilisateur ;
  • diriger les connexions vers votre backend externe ;
  • utiliser Cloud CDN pour mettre en cache le contenu de votre backend externe.
  • diriger le trafic vers votre point de terminaison public via le backbone privé de Google, ce qui améliore la fiabilité et peut réduire la latence entre le client et le serveur.

Ce document traite de l'utilisation de backends externes avec des équilibreurs de charge HTTP(S) externes. Vous ne pouvez pas utiliser de backends externes avec des équilibreurs de charge HTTP(S) externes régionaux ou avec d'autres types d'équilibreurs de charge. Cependant, vous pouvez utiliser des backends externes avec Traffic Director. Pour en savoir plus, consultez la page Traffic Director avec des groupes de points de terminaison du réseau Internet.

Pour plus d'informations sur les NEG zonaux, consultez la page Présentation des groupes de points de terminaison du réseau zonaux.

Pour plus d'informations sur les NEG sans serveur, consultez la page Présentation des groupes de points de terminaison du réseau sans serveur.

Terminologie

Les termes suivants sont parfois utilisés de manière interchangeable, car leur signification est identique ou similaire :

  • backend externe : backend situé en dehors de Google Cloud et accessible sur Internet. Point de terminaison d'un NEG Internet.
  • origine personnalisée : identique à un backend externe. Dans CDN, origine est le terme standard de l'industrie désignant une instance de backend qui diffuse du contenu Web.
  • groupe de points de terminaison du réseau (NEG) Internet  : ressource d'API Google Cloud que vous utilisez pour spécifier un backend externe.
  • point de terminaison externe : identique à un backend externe.

Ce document utilise le terme backend externe, sauf si vous faites référence à la ressource d'API NEG Internet.

Présentation

Les NEG Internet sont des ressources globales qui sont hébergées au sein d'une infrastructure sur site ou fournie par des tiers.

Types de points de terminaison

Lorsque vous créez un NEG Internet, vous spécifiez le type de point de terminaison de réseau INTERNET_FQDN_PORT ou INTERNET_IP_PORT :

Adresse du point de terminaison Type Définition À quel moment l'utiliser ?
Nom d'hôte et port facultatif INTERNET_FQDN_PORT Pour l'équilibrage de charge HTTP(S) externe, un nom de domaine complet pouvant être résolu publiquement et un port facultatif, par exemple backend.example.com:443 (ports par défaut : 80 pour HTTP et 443 pour HTTPS).

Pour Traffic Director, l'ordre de résolution des noms du réseau VPC permet est utilisé pour résoudre le nom de domaine complet.
Utilisez ce point de terminaison avec l'équilibrage de charge HTTP(S) externe lorsque votre backend externe peut être résolu via un nom de domaine complet avec DNS public.

Utilisez ce point de terminaison avec Traffic Director pour envoyer du trafic vers des services externes.
Adresse IP et port facultatif INTERNET_IP_PORT Une adresse IP publique et un port facultatif, par exemple 8.8.8.8 ou 8.8.8.8:443 (ports par défaut : 80 pour HTTP et 443 pour HTTPS) N'utilisez ce point de terminaison qu'avec l'équilibrage de charge HTTP(S) externe pour spécifier une adresse IP accessible publiquement et un port auquel se connecter.

Les NEG Internet ne peuvent comporter qu'un seul point de terminaison et ne sont pas compatibles avec le type de point de terminaison GCE_VM_IP_PORT.

Les sections suivantes expliquent comment les backends externes sont utilisés avec les équilibreurs de charge HTTP(S) externes. Lorsque vous utilisez des backends externes avec Traffic Director, DNS, la vérification d'état et le routage du trafic se comportent différemment. Pour en savoir plus, consultez la page Traffic Director avec des groupes de points de terminaison du réseau Internet.

Composants et spécifications d'équilibrage de charge

Vous pouvez utiliser un backend externe dans un équilibreur de charge à l'aide du niveau de service réseau Premium.

Toutefois, étant donné que chaque NEG Internet ne peut comporter qu'un seul point de terminaison, l'équilibrage de charge n'est pas réellement effectué. Cela signifie que vous ne pouvez utiliser aucun des modes d'équilibrage de charge (qui peuvent par exemple être basés sur un taux ou sur un niveau d'utilisation). L'équilibreur de charge fait uniquement office d'interface, jouant le rôle d'un proxy qui redirige le trafic vers le backend externe spécifié.

La sélection du transfert est basée sur un mappage d'URL. Pour les proxys HTTP(S) cibles, le service de backend à utiliser est déterminé via l'analyse du nom d'hôte et du chemin de la requête dans le mappage d'URL. Les équilibreurs de charge externes HTTP(S) peuvent disposer de plusieurs services de backend référencés dans le mappage d'URL.

  • Chaque équilibreur de charge HTTP(S) externe utilise sa propre règle de transfert externe mondiale pour acheminer le trafic vers l'objet de proxy cible approprié.

  • Si le mappage d'URL envoie la demande à un service de backend qui contient un NEG Internet, le service de backend dirige le trafic vers ce backend externe.

L'illustration suivante montre un équilibreur de charge HTTP(S) externe avec plusieurs types de backends, parmi lesquels figure un backend externe.

Groupes de points de terminaison du réseau Internet dans le cadre de l'équilibrage de charge (cliquez sur l'image pour l'agrandir)
Groupes de points de terminaison du réseau Internet dans le cadre de l'équilibrage de charge (cliquez sur l'image pour l'agrandir)

Service backend

Comme indiqué dans la section précédente, un NEG Internet est un type de backend compatible avec un service de backend d'un équilibreur de charge HTTP(S) externe. Il vous permet d'utiliser l'infrastructure périphérique mondiale de Google pour mettre fin aux requêtes des utilisateurs devant un backend externe.

Lorsque vous ajoutez un NEG Internet à un service de backend :

  • Le service de backend ne peut pas également utiliser des NEG ou des groupes d'instances zonaux comme backends. Tous les backends d'un service de backend doivent être du même type.

  • Vous ne pouvez ajouter qu'un seul backend NEG Internet à un même service de backend.

  • Vous ne pouvez ajouter qu'un seul point de terminaison à un NEG Internet.

  • Le service de backend ne peut pas faire référence à une vérification d'état.

  • Le schéma d'équilibrage de charge du service de backend doit être EXTERNAL, et son protocole doit être HTTP, HTTPS ou HTTP2.

  • Les fonctionnalités du service de backend sont disponibles lorsque vous utilisez un NEG Internet. Ces fonctionnalités sont les suivantes :

Vérifications d'état

Un service de backend avec un NEG Internet n'est pas compatible avec une vérification de l'état. Google Cloud ne fournit pas de vérification d'état pour les backends externes.

Si votre backend externe devient inaccessible ou si le nom d'hôte configuré (nom de domaine complet) ne peut pas être résolu, l'équilibreur de charge HTTP(S) externe renvoie une réponse HTTP 502 (passerelle incorrecte) à ses clients.

Authentification des requêtes

Pour autoriser un équilibreur de charge HTTP(S) externe à envoyer des requêtes à votre backend externe, procédez comme suit :

  • Interrogez l'enregistrement TXT DNS _cloud-eoips.googleusercontent.com à l'aide d'un outil comme dig ou nslookup. Notez les valeurs CIDR (après ip4:) et vérifiez que ces plages sont autorisées par votre pare-feu ou votre liste de contrôle d'accès (LCA) au cloud. Pour obtenir un exemple, consultez la section Ajouter les plages d'adresses IP nécessaires à la liste d'autorisation.
  • Vous pouvez définir un en-tête personnalisé pour indiquer que la requête provient d'un équilibreur de charge HTTP(S) externe Google Cloud à l'aide d'un en-tête de requête personnalisé.
    • Par exemple, vous pouvez utiliser au moins 16 octets aléatoires générés par chiffrement comme clé partagée.
  • Vous pouvez également activer Identity-Aware Proxy (IAP) et vérifier que le JWT signé de l'en-tête de la requête est signé par Google et que la revendication aud (audience) contient le numéro du projet dans lequel votre équilibreur de charge HTTP(S) externe est défini. Notez que IAP n'est pas compatible avec Cloud CDN.

Validation de la certification du serveur SSL et du SAN

Si vous utilisez HTTPS ou HTTP/2 comme protocole backend, nous vous recommandons vivement d'utiliser INTERNET_FQDN_PORT pour créer votre backend externe.

Lorsque vous créez un backend externe à l'aide de INTERNET_FQDN_PORT, l'équilibreur de charge valide le certificat de serveur SSL présenté par le backend externe et vérifie les points suivants :

  • Le certificat est signé par des autorités de certification connues.
  • Le certificat n'a pas expiré.
  • La signature du certificat est valide.
  • Le nom de domaine complet configuré correspond à l'un des noms d'objet de remplacement (SAN, Subject Alternative Name) du certificat.

Compatibilité avec l'extension SNI pour l'indication du nom du serveur SSL

L'extension SNI n'est disponible que si vous utilisez INTERNET_FQDN_PORT avec HTTPS ou HTTP/2 comme protocole backend. Dans ce cas, le nom de domaine complet configuré est envoyé sous la forme d'une extension SNI dans le message "client hello" lors du handshake SSL entre l'équilibreur de charge et le point de terminaison externe. L'extension SNI n'est pas envoyée lorsque vous configurez le point de terminaison comme INTERNET_IP_PORT, car les littéraux d'adresse IP ne sont pas autorisés dans le champ HostName d'une charge utile SNI.

Résolution de l'adresse IP pour les points de terminaison spécifiés comme noms de domaine complets

Lorsqu'un point de terminaison INTERNET_FQDN_PORT pointe sur un enregistrement DNS qui renvoie plusieurs adresses IP, l'adresse IP est résolue comme suit :

  • L'équilibreur de charge HTTP(S) externe tente de se connecter à la première adresse IP de la réponse DNS. Si cette adresse IP n'est pas accessible, l'équilibreur de charge renvoie une réponse HTTP 502 (passerelle incorrecte). Cela est vrai même si d'autres adresses IP de la réponse DNS sont disponibles.

  • L'équilibreur de charge HTTP(S) externe utilise un résolveur DNS dans la région Google Cloud qui est la plus proche de son client sur Internet. Si l'enregistrement DNS de votre point de terminaison INTERNET_FQDN_PORT renvoie différentes adresses IP en fonction de l'emplacement du client, assurez-vous que l'équilibreur de charge peut atteindre chacune de ces adresses IP.

Pour en savoir plus sur les plages d'adresses IP et les emplacements utilisés par l'infrastructure du résolveur DNS de Google, consultez la documentation sur le DNS public de Google.

Journaux

Les requêtes envoyées par proxy à un backend externe sont consignées dans Cloud Logging de la même manière que celles concernant d'autres backends d'équilibrage de charge HTTP(S). Pour en savoir plus, consultez la page Journalisation et surveillance de l'équilibrage de charge HTTP(S).

Si vous activez Cloud CDN pour un backend externe, les succès de cache sont également consignés.

Traitement des en-têtes

Lorsqu'un équilibreur de charge HTTP(S) externe envoie par proxy les requêtes adressées à un backend externe, il ajuste les en-têtes HTTP comme suit :

  • Certains en-têtes sont fusionnés. Lorsqu'il existe plusieurs instances de la même clé d'en-tête (par exemple, Via), l'équilibreur de charge combine leurs valeurs dans une même liste d'éléments séparés par des virgules correspondant à une clé d'en-tête unique. Seuls les en-têtes dont les valeurs peuvent être représentées sous la forme d'une liste d'éléments séparés par des virgules sont fusionnés. Les autres en-têtes, tels que Set-Cookie, ne sont jamais fusionnés.

  • Lorsque le protocole du service de backend est HTTP ou HTTPS, les en-têtes sont traités comme des noms propres du point de vue de l'usage des majuscules :

    • La première lettre de la clé d'en-tête et chaque lettre suivant un trait d'union (-) sont mises en majuscule afin de préserver la compatibilité avec les clients HTTP/1.1. Par exemple, user-agent est remplacé par User-Agent, et content-encoding devient Content-Encoding.

    • Certains en-têtes (tels que TE [encodage de transfert] et Accept-CH ([indications du client]) sont convertis pour correspondre à la représentation à lettres mixtes standard.

  • Certains en-têtes sont ajoutés ou des valeurs leur sont ajoutées. Les équilibreurs de charge HTTP(S) externes ajoutent ou modifient toujours certains en-têtes, tels que Via et X-Forwarded-For.

Limites

  • Vous ne pouvez pas utiliser de NEG Internet en tant que backends pour les équilibreurs de charge HTTP(S) externes régionaux.
  • Un backend externe avec un nom de domaine complet défini doit pouvoir être résolu par le DNS public de Google. Les noms qui ne peuvent pas être résolus par le système DNS public ne seront pas utilisables en tant que backend externe.
  • Un backend externe doit être une adresse IPv4 routable publiquement ou être associé à une adresse de ce type par le biais de la résolution :
    • Un backend externe ne peut pas être une adresse RFC 1918.
    • Il doit être accessible sur Internet. Le point de terminaison ne peut pas n'être accessible que via Cloud VPN ou Cloud Interconnect.
    • Si le backend externe fait référence à une API ou à un service Google, le service doit être accessible via le port TCP 80 ou 443 à l'aide du protocole HTTP, HTTPS ou HTTP/2.
  • Vous ne pouvez utiliser des NEG Internet qu'avec le niveau de service réseau Premium, qui est le niveau par défaut. Pour plus d'informations, consultez la documentation sur les niveaux de service réseau.
  • Vous devez respecter le format IP:{optional port} (adresse IP:{port facultatif}) pour le point de terminaison INTERNET_IP_PORT ou FQDN:{optional port} (nom de domaine complet:{port facultatif}) pour INTERNET_FQDN_PORT.
  • Lorsque vous utilisez un NEG avec le type de point de terminaison INTERNET_FQDN_PORT ou INTERNET_IP_PORT, vous ne pouvez ajouter qu'un seul point de terminaison au NEG. Cela signifie que lorsque vous utilisez un NEG avec un type de point de terminaison de réseau INTERNET_FQDN_PORT ou INTERNET_IP_PORT dans un backendService, vous ne pouvez pas joindre plusieurs NEG au backendService.
  • L'équilibrage de charge n'est actuellement pas disponible sur les backends externes. Les requêtes sont uniquement transmises par proxy au point de terminaison. L'infrastructure périphérique de Google interrompt vos connexions utilisateur, puis redirige les connexions vers votre backend externe.
  • Vous pouvez utiliser des NEG Internet sans que Cloud CDN soit activé. Avec cette configuration, vous ne pouvez toujours pas associer plusieurs NEG Internet au service de backend. Autrement dit, la limitation à un point de terminaison unique reste la même.
  • Aucune vérification d'état n'est effectuée pour le backend externe. Si votre backend externe devient inaccessible ou s'il est spécifié comme nom de domaine complet mais ne peut pas être résolu, Cloud CDN envoie un message 502 (passerelle incorrecte) en réponse aux requêtes des utilisateurs.
  • Lorsque vous utilisez un backend externe qui attend une valeur particulière pour l'en-tête Host de la requête HTTP, vous devez configurer le service de backend pour définir l'en-tête Host sur cette valeur attendue. Si vous ne configurez pas d'en-tête de requête personnalisé, un service de backend préserve l'en-tête Host utilisé par le client pour se connecter à l'équilibreur de charge HTTP(S) externe Google Cloud. Pour obtenir des informations générales sur les en-têtes de requête personnalisés, consultez la page Créer des en-têtes personnalisés. Pour obtenir un exemple spécifique, consultez la page Configurer un équilibreur de charge avec un backend externe.

Quota

Vous pouvez configurer autant de NEG avec points de terminaison de réseau externes que votre quota de groupes de points de terminaison de réseau existant le permet. Pour plus d'informations, consultez les sections Backends et Points de terminaison par NEG.

Tarifs

Le trafic sortant à destination d'un point de terminaison de NEG Internet (type INTERNET_FQDN_PORT ou INTERNET_IP_PORT) est facturé selon les tarifs de sortie Internet appliqués pour le niveau Premium des services réseau.

La source est basée sur l'emplacement du client et la destination sur celui de votre point de terminaison public.

Pour plus d'informations, consultez les tarifs de Cloud CDN pour les backends externes.

Étape suivante