Ce document présente les concepts que vous devez maîtriser pour configurer un équilibreur de charge d'application externe.
Un équilibreur de charge d'application externe est un équilibreur de charge de couche 7 basé sur un proxy qui vous permet d'exécuter et de faire évoluer vos services derrière une seule adresse IP externe. Un équilibreur de charge d'application externe répartit le trafic HTTP et HTTPS entre les backends hébergés sur diverses plates-formesGoogle Cloud (telles que Compute Engine, Google Kubernetes Engine (GKE) et Cloud Storage), ainsi que les backends externes connectés à Internet ou via une connectivité hybride. Pour en savoir plus, consultez la section Présentation de l'équilibreur de charge d'application : cas d'utilisation.
Modes de fonctionnement
Vous pouvez configurer un équilibreur de charge d'application externe dans les modes suivants :
- Équilibreur de charge d'application externe mondial. Il s'agit d'un équilibreur de charge global mis en œuvre en tant que service géré sur Google Front End (GFE). Il utilise le proxy Envoy Open Source pour prendre en charge des fonctionnalités avancées de gestion du trafic telles que la mise en miroir du trafic, la répartition du trafic en fonction du poids et les transformations d'en-tête basées sur les requêtes ou les réponses.
- Équilibreur de charge d'application classique. Il s'agit de l'équilibreur de charge d'application externe classique qui est global au niveau Premium, mais qui peut être configuré pour être régional au niveau Standard. Cet équilibreur de charge est mis en œuvre sur les serveurs GFE (Google Front End). Les GFE sont distribués dans le monde entier et fonctionnent conjointement grâce au réseau mondial et au plan de contrôle de Google.
- Équilibreur de charge d'application externe régional. Il s'agit d'un équilibreur de charge régional mis en œuvre en tant que service géré sur le proxy Envoy Open Source. Il comprend des fonctionnalités avancées de gestion du trafic telles que la mise en miroir du trafic, la répartition du trafic en fonction d'une pondération et les transformations d'en-tête basées sur les requêtes ou les réponses.
Mode d'équilibreur de charge | Cas d'utilisation recommandés | Capacités |
---|---|---|
Équilibreur de charge d'application externe global | Utilisez cet équilibreur de charge pour les charges de travail HTTP(S) externes avec des utilisateurs ou des services de backend dans plusieurs régions. |
|
Équilibreur de charge d'application classique | Cet équilibreur de charge est global au niveau Premium. Dans le niveau de service réseau Premium, cet équilibreur de charge offre un équilibrage de charge multirégional, tente de diriger le trafic vers le backend opérationnel le plus proche dont la capacité est suffisante, et termine le trafic HTTP(S) le plus près possible de vos utilisateurs. Pour en savoir plus sur le processus de distribution des requêtes, consultez la section Distribution du trafic. Dans le niveau de service réseau standard, cet équilibreur de charge ne peut distribuer le trafic qu'aux backends d'une seule région. |
|
Équilibreur de charge d'application externe régional | Cet équilibreur de charge contient de nombreuses fonctionnalités de l'équilibreur de charge d'application classique existant, ainsi que des fonctionnalités supplémentaires de gestion avancée du trafic. Utilisez cet équilibreur de charge si vous souhaitez diffuser du contenu à partir d'une seule géolocalisation (par exemple, pour respecter les réglementations de conformité). Cet équilibreur de charge peut être configuré en niveau Premium ou Standard. |
|
Identifier le mode
Console
Dans la console Google Cloud , accédez à la page Équilibrage de charge.
Dans l'onglet Équilibreurs de charge, le type, le protocole et la région de l'équilibreur de charge sont affichés. Si la région est vide, l'équilibreur de charge est global. Le tableau suivant récapitule comment identifier le mode de l'équilibreur de charge.
Mode d'équilibreur de charge | Type d'équilibreur de charge | Type d'accès | Région |
---|---|---|---|
Équilibreur de charge d'application externe global | Application | Externe | |
Équilibreur de charge d'application classique | Application (classique) | Externe | |
Équilibreur de charge d'application externe régional | Application | Externe | Spécifie une région |
gcloud
Pour déterminer le mode d'un équilibreur de charge, exécutez la commande suivante :
gcloud compute forwarding-rules describe FORWARDING_RULE_NAME
Dans le résultat de la commande, vérifiez le schéma d'équilibrage de charge, la région et le niveau de réseau. Le tableau suivant récapitule comment identifier le mode de l'équilibreur de charge.
Mode d'équilibreur de charge | Schéma d'équilibrage de charge | Règle de transfert | Niveau de réseau |
---|---|---|---|
Équilibreur de charge d'application externe global | EXTERNAL_MANAGED | Mondial | Premium |
Équilibreur de charge d'application classique | EXTERNAL | Mondial | Standard ou Premium |
Équilibreur de charge d'application externe régional | EXTERNAL_MANAGED | Spécifie une région | Standard ou Premium |
Architecture
Les ressources suivantes sont requises pour déployer un équilibreur de charge d'application externe :
Pour les équilibreurs de charge d'application externes régionaux, un sous-réseau proxy réservé est utilisé pour envoyer des connexions depuis l'équilibreur de charge vers les backends.
Une règle de transfert externe spécifie une adresse IP externe, un port et un proxy HTTP(S) cible mondial. Les clients utilisent l'adresse IP et le port pour se connecter à l'équilibreur de charge.
Un proxy HTTP(S) cible reçoit une requête du client. Le proxy HTTP(S) évalue la requête à l'aide du mappage d'URL pour prendre des décisions d'acheminement du trafic. Le proxy peut également authentifier les communications avec des certificats SSL.
- Pour l'équilibrage de charge HTTPS, le proxy HTTPS cible prouve son identité aux clients à l'aide de certificats SSL. Un proxy HTTP(S) cible accepte un nombre limité de certificats SSL.
Le proxy HTTP(S) exploite un mappage d'URL pour déterminer le routage en fonction d'attributs HTTP (chemin de requête, cookies ou en-têtes, par exemple). En s'appuyant sur le routage choisi, le proxy transmet les requêtes des clients à des services de backend ou des buckets backend spécifiques. Le mappage d'URL peut spécifier des actions supplémentaires, telles que l'envoi de redirections à des clients.
Un service de backend répartit les requêtes entre les backends opérationnels. Les équilibreurs de charge d'application externes globaux sont également compatibles avec les buckets backend. Un ou plusieurs backends doivent être connectés au service de backend ou au bucket backend.
Une vérification d'état surveille régulièrement la disponibilité de vos backends. Cela réduit le risque que des requêtes soient envoyées à des backends ne pouvant pas les traiter.
Règles de pare-feu pour que vos backends acceptent les vérifications d'état. Les équilibreurs de charge d'application externes régionaux nécessitent une règle de pare-feu supplémentaire pour autoriser le trafic provenant du sous-réseau proxy réservé à atteindre les backends.
- Monde
Ce schéma montre les composants d'un déploiement de l'équilibreur de charge d'application externe global. Cette architecture s'applique à la fois à l'équilibreur de charge d'applications externe global et à l'équilibreur de charge d'application classique au niveau Premium.
Composants de l'équilibreur de charge d'application externe global (cliquez pour agrandir).
- Régional
Ce schéma montre les composants d'un déploiement d'équilibreur de charge d'application externe régional.
Composants de l'équilibreur de charge d'application externe régional (cliquez pour agrandir).
Sous-réseau proxy réservé
Les sous-réseaux proxy réservés ne sont requis que pour les équilibreurs de charge d'application externes régionaux.
Le sous-réseau proxy réservé fournit un ensemble d'adresses IP utilisées par Google pour exécuter des proxys Envoy en votre nom. Vous devez créer un sous-réseau proxy réservé dans chaque région du réseau VPC dans lequel vous utilisez des équilibreurs de charge d'application externes régionaux.
L'option --purpose
pour ce sous-réseau proxy réservé est définie sur REGIONAL_MANAGED_PROXY
. Tous les équilibreurs de charge régionaux basés sur Envoy situés dans la même région et sur le même réseau VPC partagent un pool de proxys Envoy du même sous-réseau proxy réservé. En outre :
- Les sous-réseaux proxy réservés ne sont utilisés que pour les proxys Envoy, et non pour vos backends.
- Les VM de backend ou les points de terminaison de tous les équilibreurs de charge d'application externes régionaux d'une région et d'un réseau VPC reçoivent les connexions du sous-réseau proxy réservé.
- L'adresse IP de l'équilibreur de charge d'application externe régional n'est pas située dans le sous-réseau proxy réservé. L'adresse IP de l'équilibreur de charge est définie par sa règle de transfert gérée en externe et décrite ci-dessous.
Si vous avez déjà créé un sous-réseau proxy réservé avec --purpose=INTERNAL_HTTPS_LOAD_BALANCER
, migrez l'objectif du sous-réseau vers REGIONAL_MANAGED_PROXY
avant de pouvoir créer d'autres équilibreurs de charge basés sur Envoy dans la même région du réseau VPC.
Règles de transfert et adresses IP
Les règles de transfert permettent d'acheminer le trafic par adresse IP, port et protocole vers une configuration d'équilibrage de charge comprenant un proxy cible et un ou plusieurs services de backend.
Spécification de l'adresse IP. Chaque règle de transfert fournit une adresse IP unique que vous pouvez utiliser dans les enregistrements DNS relatifs à votre application. Aucun équilibrage de charge DNS n'est requis. Vous pouvez soit spécifier une adresse IP qui sera utilisée par le service, soit laisser Cloud Load Balancing en attribuer une.
Spécification du port Chaque règle de transfert d'un équilibreur de charge d'application peut référencer un port unique compris entre 1 et 65 535. Pour accepter plusieurs ports, vous devez configurer plusieurs règles de transfert. Vous pouvez configurer plusieurs règles de transfert pour utiliser la même adresse IP externe (VIP) et référencer le même proxy HTTP(S) cible tant que la combinaison globale de l'adresse IP, du port et du protocole sont uniques pour chaque règle de transfert. Vous pouvez ainsi utiliser un seul équilibreur de charge avec un mappage d'URL partagé en tant que proxy pour plusieurs applications.
Le type de règle de transfert, d'adresse IP et de schéma d'équilibrage de charge utilisé par les équilibreurs de charge d'application externes dépend du mode de l'équilibreur de charge et du niveau de service réseau de l'équilibreur de charge.
Mode d'équilibreur de charge | Niveau de service réseau | Règle de transfert, adresse IP et schéma d'équilibrage de charge | Routage depuis Internet vers l'interface de l'équilibreur de charge |
---|---|---|---|
Équilibreur de charge d'application externe global | Niveau Premium |
Règle de transfert externe globale Schéma d'équilibrage de charge : |
Requêtes acheminées vers le GFE le plus proche du client sur Internet. |
Équilibreur de charge d'application classique | Niveau Premium |
Règle de transfert externe globale Schéma d'équilibrage de charge : |
Requêtes acheminées vers le GFE le plus proche du client sur Internet. |
Niveau Standard |
Règle de transfert externe régionale Schéma d'équilibrage de charge : |
Requêtes acheminées vers un GFE dans la région de l'équilibreur de charge | |
Équilibreur de charge d'application externe régional | Niveau Premium ou niveau Standard |
Règle de transfert externe régionale Schéma d'équilibrage de charge : |
Les requêtes atteignent Google Cloud au PoP le plus proche du client. Les requêtes sont ensuite acheminées sur le backbone premium de Google Cloudjusqu'à ce qu'elles atteignent les proxys Envoy de la même région que l'équilibreur de charge. |
EXTERNAL_MANAGED
à des règles de transfert EXTERNAL
. Toutefois, les services de backend EXTERNAL
ne peuvent pas être associés à des règles de transfert EXTERNAL_MANAGED
.
Pour profiter des nouvelles fonctionnalités disponibles uniquement avec l'équilibreur de charge d'application externe mondial, nous vous recommandons de migrer vos ressources EXTERNAL
existantes vers EXTERNAL_MANAGED
en suivant la procédure de migration décrite dans Migrer des ressources de l'équilibreur de charge d'application classique vers l'équilibreur de charge d'application externe mondial.
Pour obtenir la liste complète des protocoles compatibles avec les règles de transfert d'équilibreur de charge d'application externe dans chaque mode, consultez la page Fonctionnalités de l'équilibreur de charge.
Règles de transfert et réseaux VPC
Cette section décrit comment les règles de transfert utilisées par les équilibreurs de charge d'application externes sont associées aux réseaux VPC.
Mode d'équilibreur de charge | Association de réseaux VPC |
---|---|
Équilibreur de charge d'application externe global, Équilibreur de charge d'application classique |
Aucun réseau VPC associé. La règle de transfert utilise toujours une adresse IP qui se trouve en dehors du réseau VPC. Par conséquent, la règle de transfert n'est associée à aucun réseau VPC. |
Équilibreur de charge d'application externe régional | Le réseau VPC de la règle de transfert est celui dans lequel le sous-réseau proxy réservé a été créé. Vous spécifiez le réseau lorsque vous créez la règle de transfert. Selon que vous utilisez une adresse IPv4 ou une plage d'adresses IPv6, un réseau VPC explicite ou implicite est toujours associé à la règle de transfert.
|
Proxy cibles
Les proxys cibles interrompent les connexions HTTP(S) des clients. Une ou plusieurs règles de transfert dirigent le trafic vers le proxy cible, qui consulte le mappage d'URL pour déterminer comment acheminer le trafic vers les backends.
Ne vous attendez pas à ce que le proxy préserve la casse des noms dans les en-têtes de requête ou de réponse. Par exemple, un en-tête de réponse Server: Apache/1.0
peut se présenter sous la forme server: Apache/1.0
au niveau du client.
Le tableau suivant spécifie le type de proxy cible requis par les équilibreurs de charge d'application externes.
Mode d'équilibreur de charge | Types de proxys cibles | En-têtes ajoutés par les proxys | En-têtes personnalisés compatibles |
---|---|---|---|
Équilibreur de charge d'application externe global | HTTP mondial, HTTPS mondial |
Les proxys définissent les en-têtes de requête et de réponse HTTP comme suit :
Les proxys définissent également l'en-tête |
Configuré sur le service de backend ou le bucket backend.
Non compatible avec Cloud CDN |
Équilibreur de charge d'application classique | HTTP mondial, HTTPS mondial |
Les proxys définissent les en-têtes de requête et de réponse HTTP comme suit :
Les proxys définissent également l'en-tête |
Configuré sur le service de backend ou le bucket backend. |
Équilibreur de charge d'application externe régional | HTTP régional, HTTPS régional |
|
Configuré dans le mappage d'URL |
En plus des en-têtes ajoutés par le proxy cible, l'équilibreur de charge ajuste certains autres en-têtes HTTP comme suit :
Pour l'équilibreur de charge d'application externe global, les en-têtes de requête et de réponse peuvent être convertis en minuscules.
La seule exception à cette règle s'applique lorsque vous utilisez des backends NEG Internet globaux avec HTTP/1.1. Pour en savoir plus sur le traitement des en-têtes HTTP/1.1 avec les NEG Internet globaux, consultez la présentation des NEG Internet.
Pour l'équilibreur de charge d'application classique, les en-têtes de requête et de réponse sont convertis en minuscules, sauf lorsque vous utilisez HTTP/1.1. Avec HTTP/1.1, les en-têtes sont traités comme des noms propres. 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é parUser-Agent
, etcontent-encoding
devientContent-Encoding
.
- 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 queSet-Cookie
, ne sont jamais fusionnés.
En-tête d'hôte
Lorsque l'équilibreur de charge effectue la requête HTTP, il conserve l'en-tête d'hôte de la requête d'origine.
En-tête "X-Forwarded-For"
L'équilibreur de charge ajoute deux adresses IP à l'en-tête X-Forwarded-For
, séparées par une seule virgule, dans l'ordre suivant :
- Adresse IP du client qui se connecte à l'équilibreur de charge
- Adresse IP de la règle de transfert de l'équilibreur de charge
Si la requête entrante n'inclut pas d'en-tête X-Forwarded-For
, l'en-tête obtenu est le suivant :
X-Forwarded-For: <client-ip>,<load-balancer-ip>
Si la requête entrante inclut déjà un en-tête X-Forwarded-For
, l'équilibreur de charge ajoute ses valeurs à l'en-tête existant :
X-Forwarded-For: <existing-value>,<client-ip>,<load-balancer-ip>
Supprimer les valeurs d'en-tête existantes à l'aide d'un en-tête de requête personnalisé
Il est possible de supprimer les valeurs d'en-tête existantes à l'aide d'en-têtes de requêtes personnalisés sur le service de backend. L'exemple suivant utilise l'indicateur --custom-request-header
pour recréer l'en-tête X-Forwarded-For
à l'aide des variables client_ip_address
et server_ip_address
. Cette configuration remplace l'en-tête X-Forwarded-For
entrant par l'adresse IP du client et de l'équilibreur de charge uniquement.
--custom-request-header=x-forwarded-for:{client_ip_address},{server_ip_address}
Comment le logiciel de proxy inverse de backend peut modifier l'en-tête X-Forwarded-For
Si les backends de votre équilibreur de charge exécutent un logiciel de proxy inverse HTTP, le logiciel peut ajouter l'une des adresses IP suivantes (ou les deux) à la fin de l'en-tête X-Forwarded-For
:
Adresse IP du GFE connecté au backend. Les adresses IP GFE se trouvent dans les plages
130.211.0.0/22
et35.191.0.0/16
.L'adresse IP du système backend lui-même.
Par conséquent, un système en amont peut voir un en-tête X-Forwarded-For
structuré comme suit :
<existing-value>,<client-ip>,<load-balancer-ip>,<GFE-ip>,<backend-ip>
Compatibilité avec Cloud Trace
Le traçage n'est pas compatible avec les équilibreurs de charge d'application. Les équilibreurs de charge d'application globaux et classiques ajoutent l'en-tête X-Cloud-Trace-Context
s'il n'est pas présent. L'équilibreur de charge d'application externe régional n'ajoute pas cet en-tête. Si l'en-tête X-Cloud-Trace-Context
est déjà présent, il passe par les équilibreurs de charge sans être modifié. Toutefois, aucune trace ni aucune étendue n'est exportée par l'équilibreur de charge.
Mappages d'URL
Les mappages d'URL définissent des correspondances de motifs pour l'acheminement de requêtes vers les services de backend adéquats en fonction de l'URL de la requête. Le mappage d'URL vous permet de répartir votre trafic en examinant les composants d'URL pour envoyer des requêtes à différents ensembles de backends. Un service par défaut est défini pour gérer toute requête qui ne correspond pas à une règle d'hôte ou à une règle de correspondance de chemin donnée.
Dans certains cas, comme celui décrit dans l'exemple d'équilibrage de charge multirégional, vous pouvez choisir de ne définir aucune règle d'URL et de vous appuyer seulement sur le service par défaut.
Les mappages d'URL sont compatibles avec plusieurs fonctionnalités de gestion avancée du trafic, telles que l'orientation du trafic basée sur l'en-tête, la répartition du trafic en fonction d'une pondération et la mise en miroir des requêtes. Pour en savoir plus, consultez les ressources suivantes :
- Présentation de la gestion du trafic pour les équilibreurs de charge d'application externes mondiaux
Le tableau suivant spécifie le type de mappage d'URL requis par les équilibreurs de charge d'application externes dans chaque mode.
Mode d'équilibreur de charge | Type de mappage d'URL |
---|---|
Équilibreur de charge d'application externe global | Global |
Équilibreur de charge d'application classique | Global (avec uniquement un sous-ensemble de fonctionnalités compatibles) |
Équilibreur de charge d'application externe régional | Regional (Régional) |
Certificats SSL
Les équilibreurs de charge d'application externes utilisant des proxys HTTPS cibles nécessitent des clés privées et des certificats SSL dans la configuration de l'équilibreur de charge.
Google Cloud propose deux méthodes de configuration pour l'attribution de clés privées et de certificats SSL aux proxys HTTPS cibles : les certificats SSL Compute Engine et le gestionnaire de certificats. Pour obtenir une description de chaque configuration, consultez la section Méthodes de configuration des certificats dans la présentation des certificats SSL.
Google Cloud fournit deux types de certificats : les certificats autogérés et les certificats gérés par Google. Pour obtenir une description de chaque type, consultez la section Types de certificats dans la présentation des certificats SSL.
Le type d'équilibreur de charge d'application externe (global, régional ou classique) détermine les méthodes de configuration et les types de certificats compatibles. Pour en savoir plus, consultez Certificats et équilibreurs de charge dans la présentation des certificats SSL. Google Cloud
Règles SSL
Les règles SSL spécifient l'ensemble des fonctionnalités SSL utilisées par les équilibreurs de charge Google Cloud lors de la négociation SSL avec les clients.
Par défaut, l'équilibrage de charge HTTPS utilise un ensemble de fonctionnalités SSL offrant une bonne sécurité et une compatibilité étendue. Certaines applications requièrent davantage de contrôle sur les versions SSL et les algorithmes de chiffrement utilisés pour les connexions HTTPS ou SSL. Vous pouvez définir une règle SSL pour spécifier l'ensemble des fonctionnalités SSL utilisées par votre équilibreur de charge lors de la négociation SSL avec les clients. En outre, vous pouvez appliquer cette règle SSL à votre proxy HTTPS cible.
Le tableau suivant spécifie la compatibilité des règles SSL avec les équilibreurs de charge dans chaque mode.
Mode d'équilibreur de charge | Règles SSL compatibles |
---|---|
Équilibreur de charge d'application externe global | |
Équilibreur de charge d'application classique | |
Équilibreur de charge d'application externe régional |
Services de backend
Un service de backend fournit des informations de configuration à l'équilibreur de charge afin qu'il puisse diriger les requêtes vers ses backends (par exemple, des groupes d'instances Compute Engine ou des groupes de points de terminaison du réseau (NEG)). Pour en savoir plus sur les services de backend, consultez la présentation des services de backend.
Pour obtenir un exemple de configuration d'un équilibreur de charge avec un service de backend et un backend Compute Engine, consultez la page Configurer un équilibreur de charge d'application externe avec un backend Compute Engine.
Champ d'application du service de backend
Le tableau suivant indique la ressource et le champ d'application du service de backend utilisés par les équilibreurs de charge d'application externes :
Mode d'équilibreur de charge | Ressources du service de backend |
---|---|
Équilibreur de charge d'application externe global |
backendServices (global) |
Équilibreur de charge d'application classique |
backendServices (global) |
Équilibreur de charge d'application externe régional |
regionBackendServices (régional) |
Protocole de communication avec les backends
Les services de backend pour les équilibreurs de charge d'application doivent utiliser l'un des protocoles suivants pour envoyer des requêtes aux backends :
- HTTP, qui utilise HTTP/1.1 et aucun protocole TLS
- HTTPS, qui utilise HTTP/1.1 et TLS
- HTTP/2, qui utilise HTTP/2 et TLS (HTTP/2 sans chiffrement n'est pas accepté)
- H2C, qui utilise HTTP/2 sur TCP. Le protocole TLS n'est pas requis. H2C n'est pas compatible avec les équilibreurs de charge d'application classiques.
L'équilibreur de charge n'utilise que le protocole de service de backend que vous spécifiez pour communiquer avec ses backends. S'il ne parvient pas à communiquer avec les backends à l'aide du protocole de service de backend spécifié, l'équilibreur de charge ne recourt pas à un autre protocole.
Le protocole du service de backend ne doit pas nécessairement correspondre au protocole utilisé par les clients pour communiquer avec l'équilibreur de charge. Par exemple, les clients peuvent envoyer des requêtes à l'équilibreur de charge à l'aide du protocole HTTP/2, mais l'équilibreur de charge peut communiquer avec les backends à l'aide du protocole HTTP/1.1 (HTTP ou HTTPS).
Buckets backend
Les buckets backend dirigent le trafic entrant vers des buckets Cloud Storage. Pour obtenir un exemple d'ajout d'un bucket à un équilibreur de charge d'application externe, consultez la page Configurer un équilibreur de charge avec des buckets backend. Pour obtenir des informations générales sur Cloud Storage, consultez Qu'est-ce que Cloud Storage ?
Backends
Le tableau suivant spécifie les backends et les fonctionnalités associées compatibles avec les équilibreurs de charge d'application externes dans chaque mode.
Mode d'équilibreur de charge |
Backends compatibles sur un service de backend1 | Compatible avec les buckets backend | Compatible avec Cloud Armor | Compatible avec Cloud CDN2 | Compatible avec IAP2 | Compatible avec les extensions de service | |||||
---|---|---|---|---|---|---|---|---|---|---|---|
Groupes d'instances3 | NEG zonaux4 | NEG Internet | NEG sans serveur | NEG hybrides | NEG Private Service Connect | ||||||
Équilibreur de charge d'application externe global | |||||||||||
Équilibreur de charge d'application classique | Niveau Premium |
|
|||||||||
Équilibreur de charge d'application externe régional |
1 Les backends d'un service de backend doivent être du même type : tous des groupes d'instances ou tous du même type de NEG. Une exception à cette règle est que les NEG zonaux GCE_VM_IP_PORT
et les NEG hybrides peuvent être utilisés sur le même service de backend pour prendre en charge une
architecture hybride.
2 IAP et Cloud CDN ne sont pas compatibles entre eux. Ils ne peuvent pas être activés sur le même service de backend.
3 Les combinaisons de groupes d'instances non gérés zonaux, de groupes d'instances gérés zonaux et de groupes d'instances gérés régionaux sont acceptées sur le même service de backend. Lorsque vous utilisez l'autoscaling pour un groupe d'instances géré qui sert de backend pour au moins deux services de backend, configurez la règle d'autoscaling du groupe d'instances de sorte qu'elle utilise plusieurs signaux.
4 Les NEG zonaux doivent utiliser des points de terminaison GCE_VM_IP_PORT
.
Backends et réseaux VPC
Les restrictions concernant l'emplacement des backends dépendent du type d'équilibreur de charge.
Pour les backends d'équilibreur de charge d'application externe global :
Les instances de backend (pour les backends de groupe d'instances) et les points de terminaison de backend (pour les backends NEG) peuvent être situés dans n'importe quel réseau VPC de la même organisation. Les différents réseaux VPC n'ont pas besoin d'être connectés via l'appairage de réseaux VPC, car les systèmes GFE communiquent directement avec les backends dans leurs réseaux VPC respectifs.
Les buckets Cloud Storage ne sont pas associés à un réseau VPC. Ils peuvent se trouver dans n'importe quel projet de la même organisation.
Les équilibreurs de charge d'application externes globaux sont également compatibles avec les environnements VPC partagés, qui vous permettent de partager des réseaux VPC et leurs ressources associées entre plusieurs projets. Toutefois, pour les équilibreurs de charge d'application externes globaux, vous n'avez pas besoin de configurer un VPC partagé pour pouvoir référencer des services de backend ou des buckets de backend provenant d'autres projets de votre organisation.
Pour les backends d'équilibreur de charge d'application classique, les règles suivantes s'appliquent :
Toutes les instances backend des backends de groupe d'instances et tous les points de terminaison backend des backends NEG doivent être situés dans le même projet. Toutefois, un backend de groupe d'instances ou un NEG peut utiliser un autre réseau VPC dans ce projet. Les différents réseaux VPC n'ont pas besoin d'être connectés via l'appairage de réseaux VPC, car les systèmes GFE communiquent directement avec les backends dans leurs réseaux VPC respectifs.
Les buckets Cloud Storage ne sont pas associés à un réseau VPC. Toutefois, elles doivent se trouver dans le même projet que l'équilibreur de charge.
Pour les backends d'équilibreur de charge d'application externes régionaux :
Pour les groupes d'instances, les NEG zonaux et les NEG de connectivité hybride, tous les backends doivent être situés dans le même projet et la même région que le service de backend. Toutefois, un équilibreur de charge peut référencer un backend qui utilise un autre réseau VPC dans le même projet que le service de backend. La connectivité entre le réseau VPC de l'équilibreur de charge et le réseau VPC du backend peut être configurée à l'aide de l'appairage de réseaux VPC, de tunnels Cloud VPN, de rattachements de VLAN Cloud Interconnect ou d'un framework Network Connectivity Center.
Définition du réseau de backend
- Pour les NEG zonaux et hybrides, vous spécifiez explicitement le réseau VPC lorsque vous créez le NEG.
- Pour les groupes d'instances gérés, le réseau VPC est défini dans le modèle d'instance.
- Pour les groupes d'instances non gérés, le réseau VPC du groupe d'instances est défini pour correspondre au réseau VPC de l'interface
nic0
de la première VM ajoutée au groupe d'instances.
Exigences du réseau de backend
Le réseau de votre backend doit répondre à l'une des exigences réseau suivantes :
Le réseau VPC du backend doit correspondre exactement à celui de la règle de transfert.
Le réseau VPC du backend doit être connecté à celui de la règle de transfert à l'aide de l'appairage de réseaux VPC. Vous devez configurer les échanges de routes de sous-réseau pour permettre la communication entre le sous-réseau proxy réservé dans le réseau VPC de la règle de transfert et les sous-réseaux utilisés par les instances ou les points de terminaison de backend.
- Le réseau VPC du backend et celui de la règle de transfert doivent tous deux être des spokes VPC rattachés au même hub Network Connectivity Center. Les filtres d'importation et d'exportation doivent autoriser la communication entre le sous-réseau proxy réservé dans le réseau VPC de la règle de transfert et les sous-réseaux utilisés par les instances ou points de terminaison de backend.
Pour tous les autres types de backend, tous les backends doivent se trouver dans le même réseau VPC et dans la même région.
Les équilibreurs de charge d'application externes régionaux sont également compatibles avec les environnements VPC partagés, qui vous permettent de partager des réseaux VPC et leurs ressources associées entre plusieurs projets. Si vous souhaitez que le service de backend et les backends de l'équilibreur de charge d'application externe régional se trouvent dans un projet différent de la règle de transfert, vous devez configurer l'équilibreur de charge dans un environnement VPC partagé avec référencement de services inter-projets.
Backends et interfaces réseau
Si vous utilisez des backends de groupe d'instances, les paquets sont toujours distribués à nic0
. Si vous souhaitez envoyer des paquets à des interfaces non nic0
(vNIC ou interfaces réseau dynamiques), utilisez plutôt des backends de NEG.
Si vous utilisez des backends de NEG zonaux, les paquets sont envoyés à l'interface réseau représentée par le point de terminaison dans le NEG. Les points de terminaison du NEG doivent se trouver dans le même réseau VPC que le réseau VPC défini explicitement pour le NEG.
Vérifications d'état
Chaque service de backend spécifie une vérification d'état qui vérifie régulièrement que les backends sont disponibles et aptes à recevoir une connexion de l'équilibreur de charge. Cela réduit le risque que des requêtes soient envoyées à des backends ne pouvant pas les traiter. Les vérifications d'état ne vérifient pas si l'application elle-même fonctionne.
Pour les vérifications d'état, vous devez créer une règle de pare-feu autorisant le trafic entrant qui permet aux vérifications d'état d'atteindre vos instances backend. En règle générale, les vérifications d'état proviennent du mécanisme de vérification d'état centralisé de Google.
Les équilibreurs de charge d'application externes régionaux qui utilisent des backends NEG hybrides font exception à cette règle car leurs vérifications d'état proviennent du sous-réseau proxy réservé. Pour plus d'informations, consultez la présentation des NEG hybrides.
Protocole de vérification d'état
Bien que ce ne soit pas obligatoire et pas toujours possible, il est recommandé d'utiliser une vérification d'état dont le protocole correspond à celui du service de backend. Par exemple, une vérification d'état HTTP/2 permet de tester plus précisément la connectivité HTTP/2 aux backends. En revanche, les équilibreurs de charge d'application externes régionaux qui utilisent des backends NEG hybrides ne sont pas compatibles avec les vérifications d'état gRPC. Pour obtenir la liste des protocoles de vérification d'état compatibles, consultez la section Fonctionnalités d'équilibrage de charge.
Le tableau suivant spécifie le champ d'application des vérifications d'état compatibles avec les équilibreurs de charge d'application externes dans chaque mode.
Mode d'équilibreur de charge | Type de vérification d'état |
---|---|
Équilibreur de charge d'application externe global | Global |
Équilibreur de charge d'application classique | Global |
Équilibreur de charge d'application externe régional | Regional (Régional) |
Pour en savoir plus sur les vérifications d'état, consultez les pages suivantes :
Règles de pare-feu
L'équilibreur de charge nécessite les règles de pare-feu suivantes :
- Pour les équilibreurs de charge d'application externes globaux, une règle d'entrée autorisant le trafic provenant des serveurs Google Front End (GFE) vers vos backends. Pour l'équilibreur de charge d'application externe régional, une règle d'entrée autorisant le trafic provenant du sous-réseau proxy réservé vers vos backends.
- Une règle d'autorisation d'entrée pour autoriser le trafic provenant des plages de vérification de l'état. Pour plus d'informations sur les vérifications de l'état et découvrir pourquoi il est nécessaire d'autoriser le trafic qui en provient, consultez Plages d'adresses IP de vérification et règles de pare-feu.
Les règles de pare-feu sont mises en œuvre au niveau de l'instance de VM, et non sur les proxys GFE. Vous ne pouvez pas utiliser les règles de pare-feu Google Cloud pour empêcher le trafic d'atteindre l'équilibreur de charge. Pour l'équilibreur de charge d'application externe global et l'équilibreur de charge d'application classique, vous pouvez utiliser Google Cloud Armor.
Les ports de ces règles de pare-feu doivent être configurés comme suit :
Autorisez le trafic vers le port de destination pour la vérification d'état de chaque service de backend.
Pour les backends de groupe d'instances : déterminez les ports à configurer par le mappage entre le port nommé du service de backend et les numéros de port associés à ce port nommé sur chaque groupe d'instances. Les numéros de port peuvent varier entre les groupes d'instances attribués au même service de backend.
Pour les backends de NEG
GCE_VM_IP_PORT
: autorisez le trafic vers les numéros de port des points de terminaison.
Le tableau suivant récapitule les plages d'adresses IP sources requises pour les règles de pare-feu :
Mode d'équilibreur de charge | Plages sources de vérification d'état | Demander des plages sources |
---|---|---|
Équilibreur de charge d'application externe global |
Pour le trafic IPv6 vers les backends :
|
La source du trafic GFE dépend du type de backend :
|
Équilibreur de charge d'application classique |
|
La source du trafic GFE dépend du type de backend :
|
Équilibreur de charge d'application externe régional |
Pour le trafic IPv6 vers les backends :
|
Le sous-réseau proxy réservé que vous configurez. |
Assistance GKE
GKE utilise des équilibreurs de charge d'application externes de différentes manières :
- Les passerelles externes créées à l'aide du contrôleur GKE Gateway peuvent utiliser n'importe quel mode d'équilibreur de charge d'application externe. Vous contrôlez le mode de l'équilibreur de charge en choisissant une GatewayClass. Le contrôleur GKE Gateway utilise toujours des backends NEG zonaux
GCE_VM_IP_PORT
.
- Les entrées externes créées à l'aide du contrôleur GKE Ingress sont toujours des équilibreurs de charge d'application classiques. Le contrôleur GKE Ingress préfère utiliser des backends NEG zonaux
GCE_VM_IP_PORT
, mais les backends de groupes d'instances sont également compatibles.
- Vous pouvez utiliser des NEG zonaux
GCE_VM_IP_PORT
créés et gérés par les services GKE comme backends pour n'importe quel équilibreur de charge d'application ou équilibreur de charge réseau proxy. Pour en savoir plus, consultez Équilibrage de charge natif en conteneurs via des NEG zonaux autonomes.
Architecture du VPC partagé
Les équilibreurs de charge d'application externes sont compatibles avec les réseaux qui utilisent un VPC partagé. Un VPC partagé permet à des organisations de connecter des ressources provenant de différents projets à un réseau VPC commun, afin de pouvoir communiquer entre elles de manière sécurisée et efficace à l'aide d'adresses IP internes de ce réseau. Si vous n'êtes pas familiarisé avec le VPC partagé, consultez la présentation du VPC partagé.
Il existe plusieurs façons de configurer un équilibreur de charge d'application externe dans un réseau VPC partagé. Quel que soit le type de déploiement, tous les composants de l'équilibreur de charge doivent appartenir à la même organisation.
Équilibreur de charge | Composants d'interface | Composants backend |
---|---|---|
Équilibreur de charge d'application externe global |
Si vous utilisez un réseau VPC partagé pour vos backends, créez le réseau requis dans le projet hôte de VPC partagé. L'adresse IP externe globale, la règle de transfert, le proxy HTTP(S) cible et le mappage d'URL associé doivent être définis dans le même projet. Ce projet peut être un projet hôte ou un projet de service. |
Vous pouvez effectuer l'une des actions suivantes :
Chaque service de backend doit être défini dans le même projet que les backends auxquels il fait référence. Les vérifications d'état associées aux services de backend doivent aussi être définies dans le même projet que le service de backend. Les backends peuvent faire partie d'un réseau VPC partagé à partir du projet hôte ou d'un réseau VPC autonome, c'est-à-dire d'un réseau VPC non partagé dans le projet de service. |
Équilibreur de charge d'application classique | L'adresse IP externe globale, la règle de transfert, le proxy HTTP(S) cible et le mappage d'URL associé doivent être définis dans le même projet hôte ou de service que les backends. | Un service de backend global doit être défini dans le même projet hôte ou de service que les backends (groupes d'instances ou NEG). Les vérifications d'état associées aux services de backend doivent également être définies dans le même projet que le service de backend. |
Équilibreur de charge d'application externe régional | Créez le réseau et le sous-réseau proxy réservé requis dans le projet hôte de VPC partagé. L'adresse IP externe régionale, la règle de transfert, le proxy HTTP(S) cible et le mappage d'URL associé doivent être définis dans le même projet. Ce projet peut être un projet hôte ou un projet de service. |
Vous pouvez effectuer l'une des actions suivantes :
Chaque service de backend doit être défini dans le même projet que les backends auxquels il fait référence. Les vérifications de l'état associées aux services de backend doivent également être définies dans le même projet que le service de backend. |
Bien que vous puissiez créer tous les composants et les backends d'équilibrage de charge dans le projet hôte de VPC partagé, ce type de déploiement ne sépare pas les responsabilités d'administration réseau et de développement de services.
Tous les composants et les backends de l'équilibreur de charge dans un projet de service
Le schéma d'architecture suivant illustre un déploiement de VPC partagé standard dans lequel tous les composants et les backends de l'équilibreur de charge se trouvent dans un projet de service. Ce type de déploiement est compatible avec tous les équilibreurs de charge d'application.
Les composants et les backends de l'équilibreur de charge doivent utiliser le même réseau VPC.
Backends sans serveur dans un environnement VPC partagé
Pour un équilibreur de charge qui utilise un backend de NEG sans serveur, le service Cloud Run ou Cloud Run Functions de backend doit se trouver dans le même projet que le NEG sans serveur.
En outre, pour l'équilibreur de charge d'application externe régional compatible avec le référencement de services inter-projets, le service de backend, le NEG sans serveur et le service Cloud Run doivent toujours se trouver dans le même projet de service.
Référence de services inter-projets
La référence de services inter-projets est un modèle de déploiement dans lequel l'interface et le mappage d'URL de l'équilibreur de charge se trouvent dans un projet, tandis que le service de backend et les backends de l'équilibreur de charge se trouvent dans un autre projet.
Le référencement de services inter-projets permet aux organisations de configurer un équilibreur de charge central et d'acheminer le trafic vers des centaines de services répartis sur plusieurs projets différents. Vous pouvez gérer toutes les règles et stratégies de routage du trafic de manière centralisée dans un mappage d'URL. Vous pouvez également associer l'équilibreur de charge à un seul ensemble de noms d'hôte et de certificats SSL. Par conséquent, vous pouvez optimiser le nombre d'équilibreurs de charge nécessaires au déploiement de votre application et réduire les coûts de gestion, d'exploitation et de quota.
En disposant de projets différents pour chacune de vos équipes fonctionnelles, vous pouvez également assurer la séparation des rôles au sein de votre organisation. Les propriétaires de service peuvent se concentrer sur la création de services dans des projets de service, tandis que les équipes réseau peuvent provisionner et gérer des équilibreurs de charge dans un autre projet, et les deux peuvent être connectées à l'aide du référencement de services inter-projets.
Les propriétaires de services peuvent conserver leur autonomie quant à l'exposition de leurs services et contrôler quels utilisateurs peuvent y accéder à l'aide de l'équilibreur de charge. Ce procédé fait appel à un rôle IAM spécial appelé Rôle "Utilisateur des services d'équilibreur de charge Compute" (roles/compute.loadBalancerServiceUser
).
La compatibilité du référencement des services inter-projets varie selon le type d'équilibreur de charge :
Pour les équilibreurs de charge d'application externes globaux : l'interface et le mappage d'URL de votre équilibreur de charge peuvent référencer des services de backend ou des buckets backend de n'importe quel projet de la même organisation. Aucune restriction ne s'applique aux réseaux VPC. Bien que vous puissiez utiliser un environnement VPC partagé pour configurer un déploiement inter-projets, comme indiqué dans cet exemple, cela n'est pas obligatoire.
Pour les équilibreurs de charge d'application externes régionaux : vous devez créer l'équilibreur de charge dans un environnement VPC partagé. L'interface et le mappage d'URL de l'équilibreur de charge doivent se trouver dans un projet hôte ou de service. Les services de backend et les backends de l'équilibreur de charge peuvent être répartis entre les projets hôtes ou de service du même environnement VPC partagé.
Pour apprendre à configurer un VPC partagé pour un équilibreur de charge d'application externe régional, avec et sans référencement de services inter-projets, consultez la page Configurer un équilibreur de charge d'application externe régional avec un VPC partagé.
Remarques sur l'utilisation du référencement des services inter-projets
-
La référence de services inter-projets peut être utilisée avec des groupes d'instances, des NEG sans serveur et avec la plupart des autres types de backends compatibles. Toutefois, les restrictions suivantes s'appliquent :
Avec les équilibreurs de charge d'application externes globaux, vous ne pouvez pas référencer de service de backend inter-projets si le service de backend dispose de backends NEG sans serveur avec App Engine.
- Avec les équilibreurs de charge d'application externes régionaux, vous ne pouvez pas référencer de service de backend inter-projets si le service de backend dispose de backends NEG Internet régionaux.
- Le référencement des services inter-projets n'est pas compatible avec l'équilibreur de charge d'application classique.
- Google Cloud ne fait pas de distinction entre les ressources (par exemple, les services de backend) utilisant le même nom sur plusieurs projets. Par conséquent, lorsque vous utilisez le référencement de services multiprojet, nous vous recommandons d'utiliser des noms de service de backend uniques pour tous les projets de votre organisation.
- Si vous voyez une erreur telle que "Les références inter-projets pour cette ressource ne sont pas autorisées", assurez-vous d'avoir l'autorisation d'utiliser la ressource. Un administrateur du projet propriétaire de la ressource doit vous attribuer le rôle Utilisateur des services d'équilibreur de charge Compute (
roles/compute.loadBalancerServiceUser
). Ce rôle peut être attribué au niveau du projet ou de la ressource. Pour obtenir un exemple, consultez Accorder des autorisations à l'administrateur de l'équilibreur de charge Compute pour utiliser le service de backend ou le bucket de backend.
Exemple 1 : interface et backend de l'équilibreur de charge dans des projets de service différents
Voici un exemple de déploiement de VPC partagé dans lequel l'interface et le mappage d'URL de l'équilibreur de charge sont créés dans le projet de service A, et le mappage d'URL référence un service de backend dans le projet de service B.
Dans ce cas, les administrateurs réseau ou les administrateurs d'équilibrage de charge du projet de service A nécessitent un accès aux services de backend du projet de service B. Les administrateurs du projet de service B attribuent le rôle Utilisateur des services de l'équilibreur de charge Compute (roles/compute.loadBalancerServiceUser
) aux administrateurs de l'équilibreur de charge du projet de service A qui souhaitent référencer le service de backend dans le projet de service B.
Exemple 2 : interface de l'équilibreur de charge dans le projet hôte et backends dans les projets de service
Voici un exemple de déploiement de VPC partagé dans lequel l'interface et le mappage d'URL de l'équilibreur de charge sont créés dans le projet hôte, et les services de backend (et les backends) sont créés dans les projets de service.
Dans ce cas, les administrateurs réseau ou les administrateurs d'équilibreur de charge du projet hôte requièrent un accès aux services de backend dans le projet de service. Les administrateurs de projets de service accordent le rôle Utilisateur des services de l'équilibreur de charge Compute (roles/compute.loadBalancerServiceUser
) aux administrateurs de l'équilibreur de charge du projet hôte A qui souhaitent référencer le service de backend dans le projet de service.
Exemple 3 : Interface et backends de l'équilibreur de charge dans différents projets
Voici un exemple de déploiement dans lequel l'interface et le mappage d'URL de l'équilibreur de charge d'application externe global sont créés dans un projet différent du service de backend et des backends de l'équilibreur de charge. Ce type de déploiement n'utilise pas de VPC partagé et n'est compatible qu'avec les équilibreurs de charge d'application externes globaux.
Pour en savoir plus sur cette configuration, consultez Configurer le référencement de services multiprojets avec un service de backend et un bucket de backend.
Haute disponibilité et basculement
La haute disponibilité et le basculement dans les équilibreurs de charge d'application externes peuvent être configurés au niveau de l'équilibreur de charge. Pour ce faire, créez des équilibreurs de charge d'application externes régionaux de sauvegarde dans n'importe quelle région où vous en avez besoin.
Le tableau suivant décrit le comportement de basculement.
Mode d'équilibreur de charge | Méthodes de basculement |
---|---|
Équilibreur de charge d'application externe global, Équilibreur de charge d'application classique |
Vous pouvez configurer une configuration de basculement actif-passif dans laquelle le trafic bascule vers un équilibreur de charge d'application externe régional de secours. Vous utilisez des vérifications de l'état pour détecter les pannes et des règles de routage Cloud DNS pour acheminer le trafic lorsque le basculement est déclenché. |
Équilibreur de charge d'application externe régional | Utilisez l'une des méthodes suivantes pour garantir un déploiement à haute disponibilité :
|
Compatibilité HTTP/2
HTTP/2 est une révision majeure du protocole HTTP/1. Il existe deux modes de compatibilité HTTP/2 :
- HTTP/2 sur TLS
- HTTP/2 en texte clair sur TCP
HTTP/2 sur TLS
Le protocole HTTP/2 sur TLS est accepté pour les connexions entre les clients et l'équilibreur de charge d'application externe, ainsi que pour les connexions entre l'équilibreur de charge et ses backends.
L'équilibreur de charge négocie automatiquement le protocole HTTP/2 avec les clients dans le cadre du handshake TLS à l'aide de l'extension TLS ALPN. Même si un équilibreur de charge est configuré pour utiliser HTTPS, les clients modernes utilisent par défaut HTTP/2. Ce fonctionnement est contrôlé au niveau du client et non au niveau de l'équilibreur de charge.
Si un client n'est pas compatible avec le protocole HTTP/2 et que l'équilibreur de charge est configuré pour utiliser HTTP/2 entre l'équilibreur de charge et les instances backend, l'équilibreur de charge peut toujours négocier une connexion HTTPS ou accepter des requêtes HTTP non sécurisées. Ces requêtes HTTPS ou HTTP sont ensuite transformées par l'équilibreur de charge pour relayer les requêtes par proxy via HTTP/2 vers les instances backend.
Pour utiliser HTTP/2 sur TLS, vous devez activer TLS sur vos backends et définir le protocole du service de backend sur HTTP2
. Pour en savoir plus, consultez Chiffrement entre l'équilibreur de charge et les backends.
Nombre maximal de flux simultanés HTTP/2
Le paramètre SETTINGS_MAX_CONCURRENT_STREAMS
HTTP/2 décrit le nombre maximal de flux accepté par le point de terminaison (flux lancés par le point de terminaison pair). La valeur annoncée par un client HTTP/2 à un équilibreur de chargeGoogle Cloud est sans importance, car l'équilibreur de charge ne lance pas de flux vers le client.
Dans le cas où l'équilibreur de charge utilise HTTP/2 pour communiquer avec un serveur qui s'exécute sur une VM, l'équilibreur de charge respecte la valeur SETTINGS_MAX_CONCURRENT_STREAMS
annoncée par le serveur. Si une valeur "zéro" est annoncée, l'équilibreur de charge ne peut pas transférer les requêtes vers le serveur, et cela peut générer des erreurs.
Limites liées à HTTP/2
- Le protocole HTTP/2 entre l'équilibreur de charge et l'instance peut nécessiter beaucoup plus de connexions TCP à l'instance que HTTP ou HTTPS. Le regroupement de connexions, une optimisation qui réduit le nombre de ces connexions avec HTTP ou HTTPS, n'est pas disponible avec HTTP/2. Vous risquez par conséquent de constater des latences de backend élevées, car les connexions backend sont établies plus fréquemment.
- Le protocole HTTP/2 entre l'équilibreur de charge et le backend n'est pas compatible avec l'exécution du protocole WebSocket sur un seul flux d'une connexion HTTP/2 (RFC 8441).
- Le protocole HTTP/2 entre l'équilibreur de charge et le backend n'est pas compatible avec le serveur push.
- Le taux d'erreur gRPC et le volume de requêtes ne sont pas visibles dans l'APIGoogle Cloud ni dans la console Google Cloud . Si le point de terminaison gRPC renvoie une erreur, les journaux de l'équilibreur de charge et les données de surveillance signalent le code d'état HTTP
200 OK
.
HTTP/2 en texte clair sur TCP (H2C)
HTTP/2 en texte clair sur TCP, également appelé H2C, vous permet d'utiliser HTTP/2 sans TLS. H2C est compatible avec les deux types de connexions suivants :
- Connexions entre les clients et l'équilibreur de charge. Aucune configuration spéciale n'est requise.
Connexions entre l'équilibreur de charge et ses backends.
Pour configurer H2C pour les connexions entre l'équilibreur de charge et ses backends, définissez le protocole du service de backend sur
H2C
.
La compatibilité avec H2C est également disponible pour les équilibreurs de charge créés à l'aide du contrôleur GKE Gateway et de Cloud Service Mesh.
H2C n'est pas compatible avec les équilibreurs de charge d'application classiques.
Compatibilité HTTP/3
HTTP/3 est un protocole Internet de nouvelle génération. Il repose sur IETF QUIC, un protocole développé à partir du protocole Google QUIC d'origine. Le protocole HTTP/3 assure la compatibilité entre l'équilibreur de charge d'application externe, Cloud CDN et les clients.
Plus précisément :
- IETF QUIC est un protocole de couche de transport qui offre un contrôle de congestion et une fiabilité semblables à TCP, qui utilise TLS 1.3 pour une sécurité optimale, et qui fournit des performances améliorées.
- HTTP/3 est une couche d'application basée sur IETF QUIC qui s'appuie sur QUIC pour gérer le multiplexage, le contrôle de congestion, la détection de perte et la retransmission.
- Le protocole HTTP/3 permet d'initier les connexions client plus rapidement, élimine le blocage en tête de ligne dans les flux multiplexés et permet de migrer la connexion lorsque l'adresse IP d'un client change.
- Le protocole HTTP/3 accepte les connexions entre les clients et l'équilibreur de charge, mais pas les connexions entre l'équilibreur de charge et ses backends.
- Les connexions HTTP/3 utilisent l'algorithme de contrôle de congestion BBR.
L'utilisation du protocole HTTP/3 sur votre équilibreur de charge peut améliorer le temps de chargement des pages Web, réduire les nouvelles mises en mémoire tampon de vidéos et améliorer le débit sur les connexions à latence plus élevée.
Le tableau suivant spécifie la compatibilité HTTP/3 pour les équilibreurs de charge d'application externes dans chaque mode.
Mode d'équilibreur de charge | Compatibilité HTTP/3 |
---|---|
Équilibreur de charge d'application externe global (toujours au niveau Premium) | |
Équilibreur de charge d'application classique au niveau Premium | |
Équilibreur de charge d'application classique au niveau Standard | |
Équilibreur de charge d'application externe régional (niveau Premium ou Standard) |
Négociation du protocole HTTP/3
Lorsque le protocole HTTP/3 est activé, l'équilibreur de charge annonce cette compatibilité aux clients, ce qui permet aux clients compatibles avec HTTP/3 d'établir des connexions HTTP/3 avec l'équilibreur de charge HTTPS.
- Les clients correctement mis en œuvre peuvent toujours revenir au protocole HTTPS ou HTTP/2 lorsqu'ils ne parviennent pas à établir une connexion HTTP/3.
- Les clients compatibles avec HTTP/3 utilisent leurs connaissances antérieures mises en cache de la compatibilité HTTP/3 pour éviter les allers-retours inutiles.
- Du fait de ce mécanisme, activer ou désactiver HTTP/3 dans l'équilibreur de charge n'affecte pas sa capacité à se connecter aux clients.
La compatibilité est annoncée dans l'en-tête de réponse HTTP Alt-Svc
. Lorsque HTTP/3 est activé, les réponses de l'équilibreur de charge incluent la valeur d'en-tête alt-svc
suivante :
alt-svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000"
Si le protocole HTTP/3 a été explicitement défini sur DISABLE
, les réponses n'incluent pas d'en-tête de réponse alt-svc
.
Lorsque HTTP/3 est activé sur votre équilibreur de charge HTTPS, certaines circonstances peuvent amener le client à revenir au protocole HTTPS ou HTTP/2 au lieu de négocier le protocole HTTP/3. En voici quelques-unes :
- Lorsqu'un client est compatible avec des versions du protocole HTTP/3 qui ne sont pas acceptées par l'équilibreur de charge HTTPS.
- Lorsque l'équilibreur de charge détecte que le trafic UDP est bloqué ou soumis à une limitation de débit, d'une manière qui empêche le bon fonctionnement de HTTP/3.
- Le client n'est pas du tout compatible avec le protocole HTTP/3 et ne tente donc pas de négocier une connexion HTTP/3.
Lorsqu'une connexion se rabat sur HTTPS ou HTTP/2, nous ne comptabilisons pas ce problème comme une défaillance de l'équilibreur de charge.
Avant d'activer le protocole HTTP/3, assurez-vous que les comportements décrits ci-dessus sont acceptables pour vos charges de travail.
Configurer le protocole HTTP/3
Les valeurs NONE
(par défaut) et ENABLE
activent toutes deux la compatibilité HTTP/3 pour votre équilibreur de charge.
Lorsque le protocole HTTP/3 est activé, l'équilibreur de charge l'annonce aux clients. Ainsi, les clients compatibles peuvent négocier une version HTTP/3 avec l'équilibreur de charge. Les clients qui ne sont pas compatibles avec HTTP/3 ne négocient pas de connexion HTTP/3. Vous n'avez pas besoin de désactiver explicitement HTTP/3, sauf si vous avez identifié des implémentations clientes défectueuses.
Les équilibreurs de charge d'application externes proposent trois méthodes de configuration du protocole HTTP/3, comme indiqué dans le tableau suivant.
Valeur quicOverride | Comportement |
---|---|
NONE |
La compatibilité du protocole HTTP/3 est annoncée aux clients. |
ENABLE |
La compatibilité du protocole HTTP/3 est annoncée aux clients. |
DISABLE |
Désactive explicitement la diffusion des annonces concernant les protocoles HTTP/3 et QUIC aux clients. |
Pour activer (ou désactiver) explicitement HTTP/3, procédez comme suit.
Console : HTTPS
- Dans la console Google Cloud , accédez à la page Équilibrage de charge.
Accéder à la page "Équilibrage de charge"
- Sélectionnez l'équilibreur de charge que vous souhaitez modifier.
- Cliquez sur Frontend configuration (Configuration du frontend).
- Sélectionnez l'adresse IP et le port de l'interface que vous souhaitez modifier. Pour modifier une configuration HTTP/3, le protocole doit être HTTPS.
Activer le protocole HTTP/3
- Sélectionnez le menu Négociation QUIC.
- Pour activer explicitement HTTP/3 pour cette interface, sélectionnez Activé.
- Si vous disposez de plusieurs règles d'interface représentant IPv4 et IPv6, assurez-vous d'activer HTTP/3 sur chaque règle.
Désactiver le protocole HTTP/3
- Sélectionnez le menu Négociation QUIC.
- Pour désactiver explicitement HTTP/3 pour cette interface, sélectionnez Désactivé.
- Si vous disposez de plusieurs règles d'interface représentant IPv4 et IPv6, assurez-vous de désactiver HTTP/3 pour chaque règle.
gcloud : HTTPS
Avant d'exécuter cette commande, vous devez créer une ressource de certificat SSL pour chaque certificat.
gcloud compute target-https-proxies create HTTPS_PROXY_NAME \ --global \ --quic-override=QUIC_SETTING
Remplacez QUIC_SETTING
par l'un des éléments suivants :
NONE
(par défaut) : permet à Google de contrôler l'annonce du protocole HTTP/3.Lorsque vous sélectionnez
NONE
, HTTP/3 est annoncé aux clients, mais pas Google QUIC. Dans la console Google Cloud , cette option est appelée Automatique (par défaut).ENABLE
: annonce le protocole HTTP/3 aux clients.DISABLE
: n'annonce pas le protocole HTTP/3 aux clients.
API : HTTPS
POST https://www.googleapis.com/v1/compute/projects/PROJECT_ID/global/targetHttpsProxies/TARGET_PROXY_NAME/setQuicOverride { "quicOverride": QUIC_SETTING }
Remplacez QUIC_SETTING
par l'un des éléments suivants :
NONE
(par défaut) : permet à Google de contrôler l'annonce du protocole HTTP/3.Lorsque vous sélectionnez
NONE
, HTTP/3 est annoncé aux clients, mais pas Google QUIC. Dans la console Google Cloud , cette option est appelée Automatique (par défaut).ENABLE
: annonce les protocoles HTTP/3 et Google QUIC aux clients.DISABLE
: n'annonce pas les protocoles HTTP/3 ou Google QUIC aux clients.
Assistance WebSocket
Google Cloud Les équilibreurs de charge HTTP(S) sont compatibles avec le protocole WebSocket lorsque vous utilisez HTTP ou HTTPS comme protocole avec le backend. L'équilibreur de charge ne nécessite aucune configuration pour relayer les connexions WebSocket par proxy.
Le protocole WebSocket fournit un canal de communication full-duplex entre les clients et l'équilibreur de charge. Pour plus d'informations, consultez la norme RFC 6455.
Le protocole WebSocket fonctionne comme suit :
- L'équilibreur de charge reconnaît une requête WebSocket
Upgrade
d'un client HTTP ou HTTPS. La requête contient les en-têtesConnection: Upgrade
etUpgrade: websocket
, suivis d'autres en-têtes de requête pertinents liés à WebSocket. - Le backend envoie une réponse WebSocket
Upgrade
. L'instance de backend envoie une réponse101 switching protocol
avec les en-têtesConnection: Upgrade
etUpgrade: websocket
, ainsi que d'autres en-têtes de réponse liés à WebSocket. - L'équilibreur de charge établit un trafic bidirectionnel par proxy pendant la durée de la connexion actuelle.
Si l'instance de backend renvoie un code d'état 426
ou 502
, l'équilibreur de charge ferme la connexion.
L'affinité de session pour WebSockets fonctionne de la même manière que pour toute autre requête. Pour plus d'informations, consultez la section Affinité de session.
Compatibilité avec gRPC
gRPC est un framework Open Source pour les appels de procédure à distance. Il est basé sur le standard HTTP/2. Voici quelques exemples d'utilisation de gRPC :
- Systèmes distribués à faible latence et hautement évolutifs
- Développement de clients mobiles communiquant avec un serveur cloud
- Conception de nouveaux protocoles devant être précis, efficaces et indépendants du langage
- Conception à plusieurs couches pour permettre l'extension, l'authentification et la journalisation
Pour utiliser gRPC avec vos applications Google Cloud , vous devez relayer les requêtes par proxy de bout en bout via HTTP/2. Pour ce faire, créez un équilibreur de charge d'application avec l'une des configurations suivantes :
Pour un trafic non chiffré de bout en bout (sans TLS) : créez un équilibreur de charge HTTP (configuré avec un proxy HTTP cible). Vous pouvez également configurer l'équilibreur de charge pour qu'il utilise HTTP/2 pour les connexions non chiffrées entre l'équilibreur de charge et ses backends en définissant le protocole du service de backend sur
H2C
.Pour le trafic chiffré de bout en bout (avec TLS) : créez un équilibreur de charge HTTPS (configuré avec un proxy HTTPS cible et un certificat SSL). L'équilibreur de charge négocie le protocole HTTP/2 avec les clients dans le cadre du handshake SSL à l'aide de l'extension TLS ALPN.
De plus, vous devez vous assurer que les backends peuvent gérer le trafic TLS et configurer l'équilibreur de charge pour qu'il utilise HTTP/2 pour les connexions chiffrées entre l'équilibreur de charge et ses backends en définissant le protocole du service de backend sur
HTTP2
.L'équilibreur de charge peut toujours négocier le protocole HTTPS avec certains clients ou accepter des requêtes HTTP non sécurisées sur un équilibreur de charge configuré pour utiliser HTTP/2 entre l'équilibreur de charge et les instances backend. Ces requêtes HTTP ou HTTPS sont transformées par l'équilibreur de charge pour relayer les requêtes par proxy via HTTP/2 vers les instances backend.
Si vous souhaitez configurer un équilibreur de charge d'application en utilisant HTTP/2 avec un objet Ingress Google Kubernetes Engine, ou en associant gRPC et HTTP/2 avec un objet Ingress, consultez la page HTTP/2 pour l'équilibrage de charge avec Ingress.
Si vous souhaitez configurer un équilibreur de charge d'application externe en utilisant HTTP/2 avec Cloud Run, consultez Utiliser HTTP/2 derrière un équilibreur de charge.
Pour en savoir plus sur la résolution des problèmes liés à HTTP/2, consultez la section Résoudre les problèmes liés à l'utilisation du protocole HTTP/2 avec les backends.
Pour plus d'informations sur les limites du protocole HTTP/2, consultez la section Limites liées à HTTP/2.
Compatibilité avec TLS
Par défaut, lorsqu'il interrompt les requêtes SSL des clients, un proxy HTTPS cible n'accepte que les protocoles TLS 1.0, 1.1, 1.2 et 1.3.
Lorsque l'équilibreur de charge d'application externe global ou l'équilibreur de charge d'application externe régional utilisent HTTPS comme protocole de service de backend, ils peuvent négocier les protocoles TLS 1.2 ou 1.3 vers le backend.Lorsque l'équilibreur de charge d'application classique utilise HTTPS comme protocole de service de backend, il peut négocier les protocoles TLS 1.0, 1.1, 1.2 ou 1.3 vers le backend.
Compatibilité avec le protocole TLS mutuel
Le protocole TLS mutuel (mTLS) est un protocole standard du secteur pour l'authentification mutuelle entre un client et un serveur. Il permet de s'assurer que le client et le serveur s'authentifient mutuellement en vérifiant que chacun détient un certificat valide émis par une autorité de certification (CA) de confiance. Contrairement au protocole TLS standard, où seul le serveur est authentifié, mTLS exige que le client et le serveur présentent des certificats, confirmant l'identité des deux parties avant l'établissement de la communication.
Tous les équilibreurs de charge d'application sont compatibles avec mTLS. Avec l'authentification mTLS, l'équilibreur de charge demande au client d'envoyer un certificat pour s'authentifier lors du handshake TLS avec l'équilibreur de charge. Vous pouvez configurer un magasin de confiance Certificate Manager que l'équilibreur de charge utilise ensuite pour valider la chaîne de confiance du certificat client.
Pour en savoir plus sur mTLS, consultez la page Authentification TLS mutuelle.
Compatibilité avec TLS 1.3 Early Data
Les données anticipées TLS 1.3 sont compatibles avec le proxy HTTPS cible des équilibreurs de charge d'application externes suivants pour HTTPS sur TCP (HTTP/1.1, HTTP/2) et HTTP/3 sur QUIC :
- Équilibreurs de charge d'application externes globaux
- Équilibreurs de charge d'application classiques
TLS 1.3 a été défini dans la RFC 8446 et introduit le concept de données anticipées, également appelées données à temps de trajet aller-retour nul (0-DAR), qui peuvent améliorer les performances des applications pour les connexions reprises de 30 à 50 %.
Avec TLS 1.2, deux allers-retours sont nécessaires avant que les données puissent être transmises de manière sécurisée. TLS 1.3 réduit ce délai à un aller-retour (1-DAR) pour les nouvelles connexions, ce qui permet aux clients d'envoyer des données d'application immédiatement après la première réponse du serveur. De plus, TLS 1.3 introduit le concept de données anticipées pour les sessions reprises, ce qui permet aux clients d'envoyer des données d'application avec le ClientHello
initial, réduisant ainsi le temps d'aller-retour effectif à zéro (0-DAR).
Les données anticipées TLS 1.3 permettent au serveur backend de commencer à traiter les données client avant la fin du processus de handshake avec le client, ce qui réduit la latence. Toutefois, il convient de prendre des précautions pour limiter les risques de relecture.
Étant donné que les données anticipées sont envoyées avant la fin du handshake, un pirate informatique peut tenter de capturer et de rejouer les requêtes. Pour atténuer ce problème, le serveur de backend doit contrôler soigneusement l'utilisation des données précoces, en la limitant aux requêtes idempotentes. Les méthodes HTTP qui sont censées être idempotentes, mais qui peuvent déclencher des modifications non idempotentes (par exemple, une requête GET modifiant une base de données), ne doivent pas accepter les données précoces. Dans ce cas, le serveur de backend doit rejeter les requêtes avec l'en-tête HTTP Early-Data: 1
en renvoyant un code d'état HTTP 425 Too Early
.
Les requêtes avec données précoces ont l'en-tête HTTP Early-Data défini sur la valeur 1
, ce qui indique au serveur de backend que la requête a été transmise dans les données précoces TLS. Il indique également que le client comprend le code d'état HTTP 425 Too
Early
.
Modes de données précoces TLS (0-DAR)
Vous pouvez configurer les données précoces TLS à l'aide de l'un des modes suivants sur la ressource de proxy HTTPS cible de l'équilibreur de charge.
STRICT
. Cela permet d'activer les données anticipées TLS 1.3 pour les requêtes avec des méthodes HTTP sécurisées (GET, HEAD, OPTIONS, TRACE) et les requêtes HTTP qui n'ont pas de paramètres de requête. Les requêtes qui envoient des données précoces contenant des méthodes HTTP non idempotentes (telles que POST ou PUT) ou avec des paramètres de requête sont rejetées avec un code d'état HTTP425
.PERMISSIVE
. Cela permet d'activer les données précoces TLS 1.3 pour les requêtes avec des méthodes HTTP sécurisées (GET, HEAD, OPTIONS, TRACE). Ce mode ne refuse pas les requêtes qui incluent des paramètres de requête. Le propriétaire de l'application doit s'assurer que les données anticipées peuvent être utilisées pour chaque chemin de requête, en particulier pour les points de terminaison où la relecture des requêtes peut entraîner des effets secondaires indésirables, tels que la journalisation ou les mises à jour de la base de données déclenchées par les requêtes GET.DISABLED
. Les données précoces TLS 1.3 ne sont pas annoncées, et toute tentative (non valide) d'envoi de données précoces est rejetée. Si vos applications ne sont pas équipées pour gérer les demandes de données anticipées de manière sécurisée, vous devez désactiver les données anticipées. TLS 1.3 Early Data est désactivé par défaut.UNRESTRICTED
(non recommandé pour la plupart des charges de travail). Cela permet d'activer les données précoces TLS 1.3 pour les requêtes utilisant n'importe quelle méthode HTTP, y compris les méthodes non idempotentes telles que POST. Ce mode n'applique aucune autre limitation. Ce mode peut être utile pour les cas d'utilisation gRPC. Toutefois, nous ne recommandons pas cette méthode, sauf si vous avez évalué votre stratégie de sécurité et atténué le risque d'attaques par relecture à l'aide d'autres mécanismes.
Configurer les données précoces TLS
Pour activer ou désactiver explicitement TLS Early Data, procédez comme suit :
Console
Dans la console Google Cloud , accédez à la page Équilibrage de charge.
Sélectionnez l'équilibreur de charge pour lequel vous devez activer les données anticipées.
Cliquez sur Modifier (
).Cliquez sur Configuration de l'interface.
Sélectionnez l'adresse IP et le port de l'interface que vous souhaitez modifier. Pour activer les données anticipées TLS, le protocole doit être HTTPS.
Dans la liste Données précoces (0-DAR), sélectionnez un mode de données précoces TLS.
Cliquez sur OK.
Pour mettre à jour l'équilibreur de charge, cliquez sur Mettre à jour.
gcloud
Configurez le mode de données précoces TLS sur le proxy HTTPS cible d'un équilibreur de charge d'application.
gcloud compute target-https-proxies update TARGET_HTTPS_PROXY \ --tls-early-data=TLS_EARLY_DATA_MODE
Remplacez les éléments suivants :
TARGET_HTTPS_PROXY
: proxy HTTPS cible de votre équilibreur de chargeTLS_EARLY_DATA_MODE
:STRICT
,PERMISSIVE
,DISABLED
ouUNRESTRICTED
API
PATCH https://compute.googleapis.com/compute/v1/projects/{project}/global/targetHttpsProxies/TARGET_HTTPS_PROXY { "tlsEarlyData":"TLS_EARLY_DATA_MODE", "fingerprint": "FINGERPRINT" }
Remplacez les éléments suivants :
TARGET_HTTPS_PROXY
: proxy HTTPS cible de votre équilibreur de chargeTLS_EARLY_DATA_MODE
:STRICT
,PERMISSIVE
,DISABLED
ouUNRESTRICTED
FINGERPRINT
: chaîne encodée en Base64. Une empreinte digitale à jour doit être fournie pour corriger le proxy HTTPS cible. Sinon, la requête échoue avec un code d'état HTTP412 Precondition Failed
.
Une fois que vous avez configuré les données précoces TLS, vous pouvez envoyer des requêtes à partir d'un client HTTP compatible avec les données précoces TLS. Vous pouvez observer une latence plus faible pour les requêtes reprises.
Si un client non conforme à la norme RFC envoie une requête avec une méthode non idempotente ou avec des paramètres de requête, la requête est refusée. Un code d'état HTTP 425 Early
s'affiche dans les journaux de l'équilibreur de charge, ainsi que la réponse HTTP suivante :
HTTP/1.1 425 Too Early Content-Type: text/html; charset=UTF-8 Referrer-Policy: no-referrer Content-Length: 1558 Date: Thu, 03 Aug 2024 02:45:14 GMT Connection: close <!DOCTYPE html> <html lang=en> <title>Error 425 (Too Early)</title> <p>The request was sent to the server too early, please retry. That's all we know.</p> </html>
Limites
Les équilibreurs de charge HTTPS n'envoient pas d'alerte de fermeture
close_notify
lorsqu'ils mettent fin aux connexions SSL. En d'autres termes, l'équilibreur de charge ferme la connexion TCP au lieu de procéder à l'arrêt d'une connexion SSL.Les équilibreurs de charge HTTPS n'acceptent que les minuscules dans les domaines d'un attribut de nom commun (
CN
) ou d'un autre nom d'objet (SAN
) du certificat. Les certificats dont les domaines contiennent des majuscules ne sont renvoyés que lorsqu'ils sont définis comme certificat principal dans le proxy cible.Les équilibreurs de charge HTTPS n'utilisent pas l'extension SNI (Server Name Indication) lors de la connexion au backend, à l'exception des équilibreurs de charge avec des backends NEG Internet. Pour en savoir plus, consultez la section Chiffrement entre l'équilibreur de charge et les backends.
Google Cloud ne garantit pas qu'une connexion TCP sous-jacente peut rester ouverte pendant toute la durée du délai avant expiration du service de backend. Les systèmes clients doivent mettre en œuvre une logique de nouvelle tentative au lieu de compter sur une connexion TCP pour être ouverte pendant de longues périodes.
Lorsque vous créez un équilibreur de charge d'application externe régional au niveau Premium à l'aide de la consoleGoogle Cloud , seules les régions compatibles avec le niveau Standard sont disponibles dans la console Google Cloud . Pour accéder à d'autres régions, utilisez gcloud CLI ou l'API.
Les proxys GFE utilisés par les équilibreurs de charge d'application globaux et classiques ne sont pas compatibles avec les réponses précoces
200 OK
envoyées avant que la charge utile POST de la requête n'ait été entièrement transférée au backend. L'envoi d'une réponse200 OK
précoce entraîne la fermeture de la connexion entre le GFE et le backend.Votre backend doit répondre avec des réponses
100 Continue
après la réception des en-têtes de requête, puis attendre que la charge utile POST de la requête ait été entièrement transférée par le proxy avant de répondre avec le code de réponse200 OK
final.Lorsque vous utilisez des équilibreurs de charge d'application externes régionaux avec Cloud Run dans un environnement VPC partagé, les réseaux VPC autonomes des projets de service peuvent envoyer du trafic vers d'autres services Cloud Run déployés dans d'autres projets de service au sein du même environnement VPC partagé. Il s'agit d'un problème connu.
Cloud CDN vous permet de forcer le cache à ignorer un objet ou un ensemble d'objets en demandant une invalidation de cache. Lorsque vous utilisez un équilibreur de charge d'application externe global avec une référence de service inter-projets de VPC partagé, par défaut, les administrateurs de projet de service ne disposent pas des autorisations requises pour invalider un cache. En effet, l'invalidation de cache est configurée dans le projet d'interface (c'est-à-dire le projet contenant la règle de transfert, le proxy cible et le mappage d'URL de l'équilibreur de charge). Ainsi, les invalidations de cache ne peuvent être émises que par des comptes principaux disposant des rôles IAM permettant de configurer des ressources liées à l'équilibreur de charge dans les projets frontend (par exemple, le rôle Administrateur de réseau Compute). Les administrateurs de services, qui contrôlent le provisionnement des services de backend dans un projet distinct, doivent collaborer avec l'administrateur de l'équilibreur de charge du projet d'interface pour émettre une invalidation de cache pour leurs services inter-projets.
Étapes suivantes
Pour savoir comment les équilibreurs de charge d'application externes gèrent les connexions, acheminent le trafic et maintiennent l'affinité de session, consultez Distribution des requêtes pour les équilibreurs de charge d'application externes.
Pour savoir comment déployer un équilibreur de charge d'application externe global, consultez la page Configurer un équilibreur de charge d'application externe avec un backend Compute Engine.
- Pour savoir comment déployer un équilibreur de charge d'application externe régional, consultez la page Configurer un équilibreur de charge d'application externe régional avec un backend Compute Engine.
Si vous êtes déjà un utilisateur de l'équilibreur de charge d'application classique, assurez-vous de consulter la présentation de la migration lorsque vous planifiez un nouveau déploiement avec l'équilibreur de charge d'application externe global.
Pour apprendre à automatiser votre configuration d'équilibreur de charge d'application externe avec Terraform, consultez la page Exemples de modules Terraform pour les équilibreurs de charge d'application externes.
Pour apprendre à configurer des fonctionnalités avancées de gestion du trafic avec l'équilibreur de charge d'application externe global, consultez la page Présentation de la gestion du trafic pour les équilibreurs de charge d'application externes globaux.
- Pour apprendre à configurer des fonctionnalités avancées de gestion du trafic avec l'équilibreur de charge d'application externe régional, consultez la page Présentation de la gestion du trafic pour les équilibreurs de charge d'application externes régionaux.
Pour en savoir plus sur la diffusion de sites Web, consultez la page Diffuser un site Web.
Pour connaître les emplacements des points de présence (POP) de Google, consultez la page Emplacements des GFE.
Pour en savoir plus sur la gestion de la capacité, consultez les pages Gérer la capacité à l'aide de l'équilibrage de charge et Optimiser la capacité des applications avec l'équilibrage de charge global.
Pour savoir comment utiliser le Gestionnaire de certificats afin de provisionner et gérer les certificats SSL, consultez la page Présentation du Gestionnaire de certificats.
Pour insérer une logique personnalisée dans le chemin d'accès aux données d'équilibrage de charge, configurez les plug-ins ou les appels d'extensions de service.
Pour les équilibreurs de charge d'application externes régionaux uniquement, vous pouvez essayer d'utiliser Apigee Shadow API Discovery pour trouver des API fantômes (également appelées API non documentées) dans votre infrastructureGoogle Cloud existante. Assurez-vous de lire les limites associées avant d'activer la détection d'API Shadow.