Présentation des services de backend

Un service de backend définit la manière dont Cloud Load Balancing répartit le trafic. La configuration du service de backend contient un ensemble de valeurs, telles que le protocole utilisé pour se connecter aux backends, divers paramètres de répartition et de gestion des sessions, les vérifications d'état et les délais avant expiration. Ces paramètres permettent de contrôler précisément le comportement de votre équilibreur de charge. Si vous devez démarrer rapidement, la plupart des paramètres possèdent des valeurs par défaut qui facilitent la configuration.

Vous pouvez configurer un service de backend pour les services d'équilibrage de charge Google Cloud suivants :

  • Équilibrage de charge HTTP(S) externe
  • Équilibrage de charge HTTP(S) interne
  • Équilibrage de charge proxy SSL
  • Équilibrage de charge proxy TCP
  • Équilibrage de charge TCP/UDP interne

Traffic Director utilise également les services de backend. L'équilibrage de charge réseau n'utilise pas de service de backend.

Les équilibreurs de charge, les proxys Envoy et les clients gRPC sans proxy utilisent les informations de configuration de la ressource de service de backend pour effectuer les opérations suivantes :

  • Dirigez le trafic vers les bons backends, qui sont des groupes d'instances ou des groupes de points de terminaison du réseau (NEG). Vous pouvez configurer un équilibreur de charge HTTP(S) externe pour utiliser un bucket de backend au lieu d'un service de backend. Pour en savoir plus sur l'utilisation de buckets backend avec les équilibreurs de charge HTTP(S) externes, consultez la page Configurer un équilibreur de charge avec des buckets backend.
  • Répartissez le trafic selon un mode d'équilibrage à paramétrer pour chaque backend
  • Déterminez la vérification d'état utilisée pour surveiller l'état des backends
  • Spécifiez l'affinité de session.
  • Déterminez si d'autres services sont activés, y compris les suivants :
    • Cloud CDN (équilibreurs de charge HTTP(S) externes uniquement)
    • Règles de sécurité Google Cloud Armor (équilibreurs de charge HTTP(S) externes uniquement)
    • Identity-Aware Proxy (équilibreurs de charge HTTP(S) externes uniquement)

Vous définissez ces valeurs lorsque vous créez un service de backend ou ajoutez un backend au service de backend.

Un service de backend a un champ d'application global ou régional.

Pour plus d'informations sur les propriétés de la ressource de service de backend, consultez les documents de référence suivants :

Le produit que vous utilisez, qui est un équilibreur de charge ou Traffic Director, détermine les éléments suivants :

  • Nombre maximal de services de backend
  • Champ d'application d'un service de backend
  • Type de backend que chaque service de backend peut utiliser
  • Schéma d'équilibrage de charge du service de backend
Produit Nombre maximal de services de backend Champ d'application du service de backend Types de backends compatibles Schéma d'équilibrage de charge
Équilibrage de charge HTTP(S) externe Plusieurs Global1 Chaque service de backend accepte les combinaisons de backends suivantes :
  • Tous les backends de groupe d'instances : un ou plusieurs backends de groupes d'instances gérés ou non, ou une combinaison de backends de groupes d'instances gérés et non gérés
  • Tous les NEG zonaux : un ou plusieurs NEG zonaux
  • Tous les NEG sans serveur : un ou plusieurs services App Engine, Cloud Run ou Cloud Functions
  • Un NEG Internet
EXTERNAL
Équilibrage de charge HTTP(S) interne Plusieurs Disques Chaque service de backend accepte les combinaisons de backends suivantes :
  • Tous les backends de groupe d'instances : un ou plusieurs backends de groupes d'instances gérés ou non, ou une combinaison de backends de groupes d'instances gérés et non gérés, ou
  • Tous les NEG zonaux : un ou plusieurs NEG zonaux
INTERNAL_MANAGED
Équilibrage de charge proxy SSL 1 Global1 Le service de backend accepte les combinaisons de backends suivantes :
  • Tous les backends de groupe d'instances : un ou plusieurs backends de groupes d'instances gérés ou non, ou une combinaison de backends de groupes d'instances gérés et non gérés, ou
  • Tous les NEG zonaux : un ou plusieurs NEG zonaux, ou
  • Un NEG Internet
EXTERNAL
Équilibrage de charge proxy TCP 1 Global1 Le service de backend accepte les combinaisons de backends suivantes :
  • Tous les backends de groupe d'instances : un ou plusieurs backends de groupes d'instances gérés ou non, ou une combinaison de backends de groupes d'instances gérés et non gérés, ou
  • Tous les NEG zonaux : un ou plusieurs NEG zonaux, ou
  • Un NEG Internet
EXTERNAL
Équilibrage de charge TCP/UDP interne 1 Régional, mais configurable pour être accessible à l'échelle mondiale Le service de backend accepte la combinaison de backends suivante :
  • Tous les backends de groupe d'instances : un ou plusieurs backends de groupes d'instances gérés ou non, ou une combinaison de backends de groupes d'instances gérés et non gérés
INTERNAL
Traffic Director Plusieurs Monde Chaque service de backend accepte les combinaisons de backends suivantes :
  • Tous les backends de groupe d'instances : un ou plusieurs backends de groupes d'instances gérés ou non, ou une combinaison de backends de groupes d'instances gérés et non gérés, ou
  • Tous les NEG zonaux : un ou plusieurs NEG zonaux
INTERNAL_SELF_MANAGED

1 Les services de backend utilisés par l'équilibrage de charge HTTP(S), l'équilibrage de charge proxy SSL et l'équilibrage de charge proxy TCP ont toujours un champ d'application global, aussi bien au niveau de réseau Standard que Premium. Cependant, les restrictions suivantes s'appliquent au niveau Standard :

Backends

Un backend est un groupe de points de terminaison vers lequel un équilibreur de charge Google Cloud, un proxy Envoy configuré par Traffic Director ou un client gRPC sans proxy distribue le trafic. Il existe plusieurs types de backends :

En outre, vous pouvez disposer d'un backend de bucket Cloud Storage en utilisant un bucket backend au lieu d'un service de backend.

Vous ne pouvez pas utiliser différents types de backends avec le même service de backend. Par exemple, un seul service de backend ne peut pas référencer une combinaison de groupes d'instances et de NEG zonaux. Cependant, vous pouvez utiliser une combinaison de différents types de groupes d'instances sur le même service de backend. Par exemple, un seul service de backend peut référencer une combinaison de groupes d'instances gérés et non gérés. Pour obtenir des informations complètes et savoir quels backends sont compatibles avec quels services de backend, consultez le tableau de la section précédente.

Vous ne pouvez pas supprimer un groupe d'instances ou un NEG backend associé à un service de backend. Avant de supprimer un groupe d'instances ou un NEG, vous devez d'abord le supprimer en tant que backend de tous les services de backend qui le référencent.

Protocole de communication avec les backends

Lorsque vous créez un service de backend, vous devez spécifier le protocole utilisé pour communiquer avec les backends. Vous ne pouvez spécifier qu'un seul protocole par service de backend. Vous ne pouvez pas définir de protocole secondaire à utiliser comme solution de secours.

Les protocoles disponibles sont les suivants :

  • HTTP
  • HTTPS
  • HTTP/2
  • SSL
  • TCP
  • UDP
  • gRPC (Traffic Director uniquement)

Les protocoles valides dépendent du type d'équilibreur de charge ou de l'utilisation ou non de Traffic Director. Pour en savoir plus, consultez les sections Fonctionnalités de l'équilibreur de charge et Fonctionnalités de Traffic Director.

La modification du protocole d'un service de backend rend les backends inaccessibles via les équilibreurs de charge pendant quelques minutes.

Chiffrement entre l'équilibreur de charge et les backends

Pour l'équilibrage de charge HTTP(S), l'équilibrage de charge proxy TCP et l'équilibrage de charge proxy SSL, Google chiffre automatiquement le trafic entre les Google Front Ends (GFE) et vos backends hébergés dans Google Cloud.

Outre le chiffrement au niveau du réseau, vous pouvez utiliser un protocole sécurisé comme protocole de service de backend. Les protocoles sécurisés incluent SSL, HTTPS, ou HTTP/2 (via TLS). Vous pouvez les utiliser pour les équilibreurs de charge basés sur GFE ainsi que pour l'équilibrage de charge HTTP(S) interne et Traffic Director.

Lorsqu'un équilibreur de charge se connecte à vos backends via un protocole de service de backend sécurisé, le serveur GFE joue le rôle du client SSL ou HTTPS. De même, lorsqu'un proxy côté client configuré à l'aide de Traffic Director se connecte à vos backends à l'aide d'un protocole de service de backend sécurisé, le proxy joue le rôle de client SSL ou HTTPS.

Un protocole sécurisé permettant de se connecter aux instances backend est recommandé dans les cas suivants :

  • Lorsque vous avez besoin d'une connexion chiffrée vérifiable entre l'équilibreur de charge (ou Traffic Director) et les instances backend.

  • Lorsque l'équilibreur de charge se connecte à une instance backend externe à Google Cloud (via un NEG Internet). La communication avec un backend NEG Internet peut transiter sur l'Internet public. Lorsque l'équilibreur de charge se connecte à un NEG Internet, le certificat signé par une autorité de certification publique doit respecter les exigences de validation.

Pour utiliser un protocole sécurisé entre l'équilibreur de charge et vos backends, gardez à l'esprit les exigences suivantes :

  • Les services de backend de votre équilibreur de charge doivent utiliser le protocole SSL (TLS), HTTPS ou HTTP/2.

  • Le logiciel d'instance de backend doit diffuser le trafic à l'aide du même protocole que le service de backend. Par exemple, si le service de backend utilise le protocole HTTPS, veillez à configurer vos instances backend pour qu'elles utilisent le protocole HTTPS. Si vous utilisez le protocole HTTP/2, vos backends doivent utiliser le protocole TLS. Pour obtenir des instructions de configuration, reportez-vous à la documentation du logiciel de votre instance backend.

  • Vous devez installer des clés privées et des certificats sur vos instances backend. Ces certificats ne doivent pas nécessairement correspondre au certificat SSL de l'équilibreur de charge. Pour obtenir des instructions d'installation, reportez-vous à la documentation du logiciel de votre instance backend.

  • Le logiciel s'exécutant sur vos instances backend doit fonctionner en tant que serveur SSL ou HTTPS. Pour obtenir des instructions de configuration, reportez-vous à la documentation du logiciel de votre instance backend.

Tenez compte des points suivants lorsque vous utilisez un groupe d'instances ou des backends NEG de zone :

  • Lorsqu'un serveur GFE démarre une session TLS sur les backends, le serveur GFE n'utilise pas l'extension SNI (Server Name Indication).

  • Lorsqu'un serveur GFE se connecte à des backends situés dans Google Cloud, il accepte tous les certificats présentés par vos backends. Les serveurs GFE n'effectuent pas de validation des certificats. Par exemple, le certificat est considéré comme valide même dans les cas suivants :

    • Le certificat est autosigné.
    • Le certificat est signé par une autorité de certification inconnue.
    • Le certificat a expiré ou n'est pas encore valide.
    • Les attributs CN et subjectAlternativeName ne correspondent pas à un en-tête Host ni à un enregistrement PTR DNS.
Pour plus d'informations sur le chiffrement de Google, consultez la page Chiffrement des données en transit dans Google Cloud.

Groupes d'instances

Cette section explique comment les groupes d'instances fonctionnent avec le service de backend.

VM backend et adresses IP externes

Les VM backend dans les services de backend n'ont pas besoin d'adresses IP externes :

  • Pour les équilibreurs de charge HTTP(S) externes, les équilibreurs de charge proxy SSL et les équilibreurs de charge proxy TCP, les clients communiquent avec un GFE à l'aide de l'adresse IP externe de votre équilibreur de charge. Le GFE communique avec les VM ou points de terminaison backend à l'aide des adresses IP internes de leur interface réseau principale. Étant donné que le GFE est un proxy, les VM backend proprement dites n'ont pas besoin d'adresses IP externes.

  • Pour les équilibreurs de charge HTTP(S) internes, les équilibreurs de charge TCP/UDP internes et Traffic Director : les VM backend des équilibreurs de charge internes et Traffic Director ne nécessitent pas d'adresses IP externes.

Ports nommés

Un équilibreur de charge peut écouter l'interface sur un ou plusieurs numéros de port spécifiés dans la règle de transfert de l'équilibreur de charge. Sur le backend, l'équilibreur de charge peut transférer le trafic vers le même numéro de port ou vers un numéro de port différent. Vos instances backend (instances Compute Engine) écoutent ce numéro de port. Vous configurez ce numéro de port dans le groupe d'instances et vous y faites référence dans la configuration du service de backend.

Le numéro de port du backend est appelé port nommé, car il s'agit d'une paire nom/valeur. Dans le groupe d'instances, vous définissez le nom et la valeur de la clé pour le port. Vous faites ensuite référence au port nommé dans la configuration du service de backend.

Si le port nommé d'un groupe d'instances correspond au --port-name dans la configuration du service de backend, le service de backend utilise ce numéro de port pour communiquer avec les VM du groupe d'instances.

Les types d'équilibreurs de charge suivants nécessitent que chaque groupe d'instances Compute Engine dispose d'un port nommé :

  • Équilibrage de charge HTTP(S) interne
  • Équilibrage de charge HTTP(S)
  • Équilibrage de charge proxy SSL
  • Équilibrage de charge proxy TCP

Pour savoir comment créer des ports nommés, consultez les instructions suivantes :

Par exemple, vous pouvez définir le port nommé sur un groupe d'instances comme indiqué dans l'exemple ci-dessous, où le nom du service est my-service-name et le port est 8888 :

gcloud compute instance-groups unmanaged set-named-ports my-unmanaged-ig \
    --named-ports=my-service-name:8888

Vous pouvez ensuite définir le port nommé --port-name du service de backend sur my-service-name :

gcloud compute backend-services update my-backend-service \
    --port-name=my-service-name

Veuillez noter les points suivants :

  • Chaque service de backend s'abonne à un nom de port unique. Chacun de ses groupes d'instances de backend doit avoir au moins un port nommé pour ce nom.

  • Un service de backend peut utiliser un numéro de port différent lors de la communication avec des VM appartenant à différents groupes d'instances si chacun de ces groupes spécifie un numéro de port différent pour le même nom de port.

  • Le numéro de port résolu employé par le service de backend ne doit pas nécessairement correspondre au numéro de port utilisé par les règles de transfert de l'équilibreur de charge.

Les ports nommés ne sont pas utilisés dans les cas suivants :

  • Pour les backends NEG zonaux ou NEG Internet, car ces NEG définissent les ports en se basant sur un mécanisme différent, à savoir les points de terminaison.
  • Pour les backends NEG sans serveur, car ces NEG ne disposent pas de points de terminaison.
  • Pour les équilibreurs de charge TCP/UDP internes, car il s'agit d'équilibreurs de charge à stratégie directe, et non de proxys. Leur service de backend ne s'abonne donc pas à un port nommé.

Pour plus d'informations sur les ports nommés, consultez les pages sur les commandes gcloud compute instance-groups managed set-named-ports et gcloud compute instance-groups unmanaged set-named-ports dans la documentation du SDK.

Restrictions et conseils concernant les groupes d'instances

Gardez à l'esprit les restrictions et conseils suivants lorsque vous créez des groupes d'instances pour vos équilibreurs de charge :

  • N'associez pas une même instance de VM à plusieurs groupes d'instances à équilibrage de charge. Si une VM appartient à deux groupes d'instances non gérés ou plus, ou à un groupe d'instances géré et un ou plusieurs groupes d'instances non gérés, Google Cloud vous oblige à n'utiliser qu'un seul de ces groupes d'instances à la fois comme backend d'un service particulier.

    Si vous avez besoin qu'une VM participe à plusieurs équilibreurs de charge, vous devez utiliser le même groupe d'instances comme backend pour chacun des services de backend. Pour équilibrer le trafic vers différents ports, créez les ports nommés requis pour un groupe d'instances et demandez à chaque service de backend de s'abonner à un port nommé unique.

  • Vous pouvez utiliser le même groupe d'instances qu'un backend pour plusieurs services de backend. Dans ce cas, les backends doivent utiliser des modes d'équilibrage compatibles. Compatible signifie que les modes d'équilibrage doivent être les mêmes ou une combinaison de CONNECTION et RATE. Les combinaisons incompatibles sont les suivantes :

    • CONNECTION avec UTILIZATION
    • RATE avec UTILIZATION

    Prenons l'exemple suivant :

    • Vous disposez de deux services de backend : external-https-backend-service pour un équilibreur de charge HTTP(S) externe et internal-tcp-backend-service pour un équilibreur de charge TCP/UDP interne.
    • Vous utilisez un groupe d'instances appelé instance-group-a dans internal-tcp-backend-service.
    • Dans internal-tcp-backend-service, vous devez appliquer le mode d'équilibrage CONNECTION, car les équilibreurs de charge TCP/UDP internes n'acceptent que le mode d'équilibrage CONNECTION.
    • Vous pouvez également utiliser instance-group-a dans external-https-backend-service si vous appliquez le mode d'équilibrage RATE dans external-https-backend-service.
    • Vous ne pouvez pas également utiliser instance-group-a dans external-https-backend-service avec le mode d'équilibrage UTILIZATION.
  • Pour modifier le mode d'équilibrage d'un groupe d'instances servant de backend à plusieurs services de backend, procédez comme suit :

    • Supprimez le groupe d'instances de tous les services de backend, sauf un.
    • Modifiez le mode d'équilibrage du backend sur le service de backend restant.
    • Ajoutez à nouveau le groupe d'instances comme backend des autres services de backend, s'ils acceptent le nouveau mode d'équilibrage.
  • Si votre groupe d'instances est associé à plusieurs services de backend, chacun de ces services peut référencer le même port nommé ou un port nommé différent sur le groupe d'instances.

  • Nous vous recommandons de ne pas ajouter de groupe d'instances géré avec autoscaling à plusieurs services de backend. Cela pourrait entraîner un scaling imprévisible et inutile pour les instances du groupe, en particulier si vous employez la métrique d'autoscaling Utilisation de l'équilibrage de charge HTTP.

    • Bien qu'il ne soit pas recommandé, ce scénario peut fonctionner si vous exploitez la métrique d'autoscaling Utilisation du processeur, ou une métrique Cloud Monitoring qui n'est pas liée à la capacité de diffusion de l'équilibreur de charge. Ces métriques d'autoscaling peuvent éviter l'irrégularité d'un scaling.

Groupes zonaux de points de terminaison du réseau

Un service de backend dont les backends sont des groupes de points de terminaison du réseau (NEG) zonaux distribue le trafic entre les applications ou conteneurs exécutés sur des VM.

Un point de terminaison du réseau zonal est la combinaison d'une adresse IP et d'un port, spécifiée de l'une des deux façons suivantes :

  • En spécifiant une paire IP address:port, telle que 10.0.1.1:80.
  • En spécifiant seulement une adresse IP de point de terminaison du réseau. Le port par défaut du NEG est automatiquement utilisé comme port de la paire IP address:port.

Les points de terminaison du réseau représentent les services en fonction de leur adresse IP et de leur port, plutôt que de se référer à une VM spécifique. Un groupe de points de terminaison du réseau est un regroupement logique de points de terminaison du réseau.

Pour plus d'informations, consultez la page Présentation des groupes de points de terminaison de réseau dans l'équilibrage de charge.

Groupes de points de terminaison du réseau Internet

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

Un NEG Internet est la combinaison d'une adresse IP, ou d'un nom d'hôte, et d'un port facultatif :

  • 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)
  • Une adresse IP publique et un port facultatif, par exemple 203.0.113.8:80 ou 203.0.113.8:443 (ports par défaut : 80 pour HTTP et 443 pour HTTPS)

Un service de backend d'un équilibreur de charge HTTP(S) externe dont le backend est un groupe de points de terminaison du réseau Internet distribue le trafic vers une destination en dehors de Google Cloud.

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

Groupes de points de terminaison du réseau sans serveur

Un groupe de points de terminaison du réseau (NEG) spécifie un groupe de points de terminaison backend pour un équilibreur de charge. Un NEG sans serveur est un backend qui pointe vers un service Cloud Run, App Engine ou Cloud Functions.

Un NEG sans serveur peut représenter :

  • un service Cloud Run ou un groupe de services partageant le même format d'URL ;
  • une fonction Cloud Functions ou un groupe de fonctions partageant le même format d'URL ;
  • une application App Engine (environnement standard ou flexible), un service spécifique au sein d'une application ou même une version spécifique d'une application.

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

Distribution du trafic

Les valeurs des champs suivants dans la ressource de services de backend déterminent certains aspects du comportement du backend :

  • Un mode d'équilibrage définit la manière dont l'équilibreur de charge mesure l'état de préparation des backends susceptibles de recevoir les requêtes ou connexions ultérieures.
  • Une capacité cible définit le nombre maximal de connexions cible, un taux maximal cible ou une utilisation du processeur maximale cible.
  • Un scaler de capacité ajuste la capacité globale disponible sans modifier la capacité cible.

Mode d'équilibrage

Le mode d'équilibrage détermine si les backends d'un équilibreur de charge sont en mesure de gérer du trafic supplémentaire ou s'ils fonctionnent à charge maximale. Google Cloud propose trois modes d'équilibrage :

  • CONNECTION
  • RATE
  • UTILIZATION

Les options du mode d'équilibrage dépendent du schéma d'équilibrage de charge et du protocole du service de backend, ainsi que du type des backends connectés au service de backend.

Vous définissez le mode d'équilibrage lorsque vous ajoutez un backend au service de backend. Notez que vous ne pouvez pas définir de mode d'équilibrage pour un NEG sans serveur.

Mode d'équilibrage Schémas d'équilibrage de charge compatibles Protocoles de service de backend compatibles Types de backends compatibles Produits applicables
CONNECTION EXTERNAL
INTERNAL
SSL, TCP et UDP
Les options de protocole sont limitées par le type d'équilibreur de charge. Par exemple, l'équilibrage de charge TCP/UDP interne n'utilise que le protocole TCP ou UDP.
Soit des groupes d'instances, soit des NEG zonaux, si compatibles.
Par exemple, l'équilibrage de charge TCP/UDP interne n'accepte pas les NEG zonaux.
  • Équilibrage de charge proxy SSL
  • Équilibrage de charge proxy TCP
  • Équilibrage de charge TCP/UDP interne
RATE EXTERNAL
INTERNAL_MANAGED
INTERNAL_SELF_MANAGED
HTTP, HTTPS, HTTP2, gRPC Groupes d'instances ou NEG zonaux
  • Équilibrage de charge HTTP(S) externe
  • Équilibrage de charge HTTP(S) interne
  • Traffic Director (INTERNAL_SELF_MANAGED ; protocoles HTTP et gRPC uniquement)
UTILIZATION EXTERNAL
INTERNAL_MANAGED
INTERNAL_SELF_MANAGED
Tout protocole Groupes d'instances uniquement. Les NEG zonaux n'acceptent pas le mode d'utilisation.
  • Équilibrage de charge HTTP(S) externe
  • Équilibrage de charge HTTP(S) interne
  • Équilibrage de charge proxy SSL
  • Équilibrage de charge proxy TCP
  • Traffic Director (INTERNAL_SELF_MANAGED ; protocoles HTTP et gRPC uniquement)

Si l'utilisation moyenne de toutes les VM associées à un service de backend est inférieure à 10 %, Google Cloud peut préférer des zones spécifiques. Cela peut se produire lorsque vous utilisez des groupes d'instances régionaux gérés, des groupes d'instances zonaux gérés dans différentes zones et des groupes d'instances zonaux non gérés. Ce déséquilibre zonal se résout automatiquement à mesure que le trafic envoyé à l'équilibreur de charge augmente.

Pour plus d'informations, consultez la page sur la commande gcloud beta compute backend-services add-backend.

Modifier le mode d'équilibrage d'un équilibreur de charge

Pour certains équilibreurs de charge, vous ne pouvez pas modifier le mode d'équilibrage, car le service de backend n'accepte qu'un seul mode d'équilibrage possible :

  • Les services de backend des équilibreurs de charge TCP/UDP internes n'acceptent que le mode d'équilibrage CONNECTION.
  • Les services de backend des équilibreurs de charge HTTP(S) externes dont tous les backends sont des NEG n'acceptent que le mode d'équilibrage RATE.
  • Les services de backend des équilibreurs de charge HTTP(S) internes dont tous les backends sont des NEG n'acceptent que le mode d'équilibrage RATE.
  • Les services de backend des équilibreurs de charge proxy SSL dont tous les backends sont des NEG n'acceptent que le mode d'équilibrage CONNECTION.
  • Les services de backend des équilibreurs de charge proxy TCP dont tous les backends sont des NEG n'acceptent que le mode d'équilibrage CONNECTION.

Pour certains équilibreurs de charge, vous pouvez modifier le mode d'équilibrage, car leurs services de backend acceptent plusieurs modes :

  • Les services de backend des équilibreurs de charge HTTP(S) externes dont tous les backends sont des groupes d'instances acceptent le mode d'équilibrage RATE ou UTILIZATION.
  • Les services de backend des équilibreurs de charge HTTP(S) internes dont tous les backends sont des groupes d'instances acceptent le mode d'équilibrage RATE ou UTILIZATION.
  • Les services de backend des équilibreurs de charge proxy SSL dont tous les backends sont des groupes d'instances acceptent le mode d'équilibrage CONNECTION ou UTILIZATION.
  • Les services de backend des équilibreurs de charge proxy TCP dont tous les backends sont des groupes d'instances acceptent le mode d'équilibrage CONNECTION ou UTILIZATION.

Capacité cible

Chaque mode d'équilibrage a une capacité cible correspondante, qui définit un nombre maximal de connexions cible, un taux maximal cible ou une utilisation du processeur maximale cible. Pour chaque mode d'équilibrage, la capacité cible n'est pas un disjoncteur. Un équilibreur de charge pourra dépasser la valeur maximale dans certaines conditions ; par exemple, si tous les points de terminaison ou VM de backend atteignent cette valeur.

  • Pour le mode d'équilibrage CONNECTION, la capacité cible définit un nombre maximal cible de connexions simultanées. Vous pouvez utiliser l'un des paramètres suivants :

    • max-connections-per-instance (par VM)
    • max-connections-per-endpoint (par point de terminaison dans un NEG zonal)
    • max-connections (par NEG zonal et pour les groupes d'instances zonaux non gérés pour l'ensemble du groupe)

    Lorsque vous spécifiez max-connections-per-instance ou max-connections-per-endpoint, Google Cloud calcule la cible effective pour chaque VM ou point de terminaison comme suit :

    • (Nombre maximal de connexions par VM * nombre total de VM) / nombre de VM opérationnelles
    • (Nombre maximal de connexions par point de terminaison * nombre total de points de terminaison) / nombre de points de terminaison opérationnels

    Lorsque vous spécifiez max-connections, Google Cloud calcule la cible effective pour chaque VM ou point de terminaison de la manière suivante :

    • Nombre maximal de connexions / nombre de VM opérationnelles
    • Nombre maximal de connexions / nombre de points de terminaison opérationnels
  • Pour le mode d'équilibrage RATE, la capacité cible définit un taux maximal cible de requêtes HTTP. Vous pouvez utiliser l'un des paramètres suivants :

    • max-rate-per-instance (pour chaque VM)
    • max-rate-per-endpoint (pour chaque point de terminaison dans un NEG zonal)
    • max-rate (pour les NEG zonaux et les groupes d'instances zonaux non gérés pour l'ensemble du groupe)

    Lorsque vous spécifiez max-rate-per-instance ou max-rate-per-endpoint, Google Cloud calcule le taux cible effectif pour chaque VM ou point de terminaison comme suit :

    • taux maximal par VM * nombre total de VM / nombre de VM opérationnelles
    • taux maximal par point de terminaison * nombre total de points de terminaison / nombre de points de terminaison opérationnels

    Lorsque vous spécifiez max-rate, Google Cloud calcule le taux cible effectif pour chaque VM ou point de terminaison de la manière suivante :

    • taux maximal / nombre de VM opérationnelles
    • taux maximal / nombre de points de terminaison opérationnels
  • Pour le mode d'équilibrage UTILIZATION, il n'est pas nécessaire de définir une capacité cible. Vous disposez d'un certain nombre d'options qui dépendent du type de backend, comme résumé dans le tableau suivant.

Ce tableau indique tous les modes d'équilibrage possibles pour un équilibreur de charge et un type de backend donnés. Il présente également les paramètres de capacité disponibles ou obligatoires que vous devez spécifier conjointement avec le mode d'équilibrage.

Équilibreur de charge Type de backend Mode d'équilibrage Capacité cible
Équilibrage de charge TCP/UDP interne Groupe d'instances CONNECTION Vous ne pouvez pas spécifier de nombre maximal de connexions.
Équilibrage de charge proxy SSL, équilibrage de charge proxy TCP Groupe d'instances CONNECTION Vous devez spécifier l'un des éléments suivants :
1. Nombre maximal de connexions par groupe d'instances zonal
2. Nombre maximal de connexions par instance
(groupes d'instances zonaux ou régionaux)
UTILIZATION Vous pouvez éventuellement spécifier l'une des options suivantes :
1. Utilisation maximale
2. Nombre maximal de connexions par groupe d'instances zonal
3. Nombre maximal de connexions par instance
(groupes d'instances zonaux ou régionaux)
4. 1 et 2 ensemble
5. 1 et 3 ensemble
NEG zonal CONNECTION Vous devez spécifier l'un des éléments suivants :
1. Nombre maximal de connexions par NEG zonal
2. Nombre maximal de connexions par point de terminaison
Équilibrage de charge HTTP(S), équilibrage de charge HTTP(S) interne, Traffic Director Groupe d'instances RATE Vous devez spécifier l'un des éléments suivants :
1. Taux maximal par groupe d'instances zonal
2. Taux maximal par instance
(groupes d'instances zonaux ou régionaux)
UTILIZATION Vous pouvez éventuellement spécifier l'une des options suivantes :
1. Utilisation maximale
2. Taux maximal par groupe d'instances zonal
3. Taux maximal par instance
(groupes d'instances zonaux ou régionaux)
4. 1 et 2 ensemble
5. 1 et 3 ensemble
NEG zonal RATE Vous devez spécifier l'un des éléments suivants :
1. Taux maximal par NEG zonal
2. Taux maximal par point de terminaison

Scaler de capacité

Vous pouvez éventuellement ajuster le scaler de capacité de façon à réduire la capacité cible (utilisation maximale, taux maximal ou connexions maximales) sans la modifier. Le scaler de capacité est compatible avec tous les équilibreurs de charge qui acceptent une capacité cible. La seule exception concerne l'équilibreur de charge TCP/UDP interne.

Par défaut, le scaler de capacité est défini sur 1.0 (100 %). Cela signifie, par exemple, que si le pourcentage d'utilisation actuel d'une instance backend est de 80 % et que l'utilisation maximale est définie sur 80 %, le service de backend cesse d'envoyer des requêtes à cette instance :

capacity-scaler: 1 * 0.8

Vous pouvez définir le scaler de capacité sur 0.0 ou bien sur une valeur allant de 0.1 (10 %) à 1.0 (100 %). Un facteur de scaling de zéro (0.0) empêche toute nouvelle connexion. Vous ne pouvez pas configurer une valeur de 0.0 lorsqu'un seul backend est associé au service de backend.

Utiliser le scaler de capacité lorsque deux services de backend partagent un backend de groupe d'instances

Dans une situation où deux services de backend utilisent le même backend de groupe d'instances, vous devez répartir la capacité du groupe d'instances entre les deux services de backend.

Par exemple, vous pouvez définir le scaler de capacité sur 0.5 pour les deux services de backend. Chaque service de backend recevra ainsi 40 % de la capacité du groupe d'instances :

capacity-scaler: 0.5 * 0.8

Lorsque chaque service de backend a utilisé 40 % de la capacité du groupe d'instances, les requêtes ne sont plus envoyées à ce groupe.

Traffic Director et distribution du trafic

Traffic Director utilise également les ressources de services de backend. Plus précisément, il exploite des services de backend dont le schéma d'équilibrage de charge est INTERNAL_SELF_MANAGED. Pour un service de backend interne autogéré, la distribution du trafic est basée sur la combinaison d'un mode d'équilibrage de charge et d'une règle d'équilibrage de charge. Le service de backend dirige le trafic vers un backend en fonction du mode d'équilibrage du backend. Ensuite, Traffic Director répartit le trafic en fonction d'une règle d'équilibrage de charge.

Les services de backend internes autogérés sont compatibles avec les modes d'équilibrage suivants :

  • UTILIZATION, si tous les backends sont des groupes d'instances ;
  • RATE, si tous les backends sont des groupes d'instances ou des NEG zonaux.

Si vous choisissez le mode d'équilibrage RATE, vous devez spécifier un taux maximal, un taux maximal par instance ou un taux maximal par point de terminaison.

Pour plus d'informations sur Traffic Director, consultez la page Concepts de Traffic Director.

Affinité de session

Sans affinité de session, les équilibreurs de charge distribuent les nouvelles requêtes en fonction d'un hachage à cinq tuples, comme suit :

  • Adresse IP du client
  • Port source du client
  • Adresse IP de la règle de transfert de l'équilibreur de charge
  • Port de destination de l'équilibreur de charge
  • Protocole de couche 3 (protocole TCP pour tous les équilibreurs de charge qui utilisent des services de backend).

Le mode d'équilibrage du NEG zonal ou groupe d'instances backend détermine quand le backend fonctionne à pleine capacité. Certaines applications nécessitent que plusieurs requêtes provenant d'un utilisateur donné soit dirigées vers le même backend ou point de terminaison. Ces applications incluent des serveurs avec état utilisés pour la diffusion d'annonces, les jeux ou les services avec une forte mise en cache interne.

L'affinité de session est disponible pour le trafic TCP, y compris les protocoles SSL, HTTP(S) et HTTP/2. Si une instance ou un point de terminaison backend est opérationnel et n'a pas atteint la capacité (en fonction du mode d'équilibrage), les requêtes ultérieures sont dirigées vers la même VM ou le même point de terminaison backend. Gardez à l'esprit les éléments suivants lors de la configuration de l'affinité de session :

  • Comme le trafic UDP n'est pas compatible avec les sessions, l'affinité de session n'affecte pas ce type de trafic.

  • Lorsque les services gRPC sans proxy sont configurés, Traffic Director n'est pas compatible avec l'affinité de session.

  • Ne comptez pas sur l'affinité de session pour l'authentification ou la sécurité. L'affinité de session est conçue pour rompre lorsqu'un backend a atteint ou dépassé sa capacité ou s'il n'est plus opérationnel.

  • Les équilibreurs de charge Google Cloud assurent l'affinité de session de la façon la plus optimale possible. Des facteurs tels que la modification des états de la vérification d'état du backend ou de son utilisation maximale, selon les mesures effectuées par le mode d'équilibrage, peuvent rompre l'affinité de session. L'utilisation d'une affinité de session autre que None avec le mode d'équilibrage UTILIZATION n'est pas recommandée. En effet, les changements d'utilisation de l'instance peuvent amener le service d'équilibrage de charge à diriger les nouvelles requêtes ou connexions vers des VM backend moins utilisées. Cette action rompt l'affinité de session. Utilisez plutôt le mode d'équilibrage RATE ou CONNECTION afin de réduire les risques de rupture de l'affinité de session.

Le tableau suivant présente les options d'affinité de session :

Produit Options d'affinité de session
• TCP/UDP interne • Aucune
• Adresse IP client
• Adresse IP client et protocole
• Adresse IP client, protocole et port
• Proxy TCP
• Proxy SSL
• Aucune
• Adresse IP client
• HTTP(S) externe • Aucune
• Adresse IP client
• Cookie généré
• HTTP(S) interne • Aucune
• Adresse IP client
• Cookie généré
• Champ d'en-tête
• Cookie HTTP
• Réseau L'équilibrage de charge au niveau du réseau n'utilise pas les services de backend. À la place, vous définissez l'affinité de session pour les équilibreurs de charge réseau via des pools cibles. Consultez le paramètre sessionAffinity sur la page Pools cibles.
• Traffic Director • Aucune
• Adresse IP client
• Cookie généré
• Champ d'en-tête
• Cookie HTTP

Les sections suivantes décrivent les différents types d'affinité de session.

Affinité basée sur les adresses IP client

L'affinité basée sur les adresses IP client dirige les requêtes en provenance d'une même adresse IP client vers une même instance backend. Chaque équilibreur de charge Google Cloud faisant appel à des services de backend peut utiliser l'affinité basée sur les adresses IP client.

Lorsque vous utilisez l'affinité basée sur les adresses IP client, gardez à l'esprit les points suivants :

  • L'affinité basée sur les adresses IP client consiste en un hachage à deux tuples composé de l'adresse IP du client et de l'adresse IP de la règle de transfert de l'équilibreur de charge que le client contacte.

  • L'adresse IP client vue par l'équilibreur de charge peut ne pas correspondre au client d'origine si elle est protégée par la fonctionnalité NAT ou envoie des requêtes via un proxy. Les requêtes effectuées via NAT ou un proxy utilisent l'adresse IP du routeur NAT ou du proxy comme adresse IP client. Cela peut entraîner un regroupement inutile du trafic entrant sur les mêmes instances backend.

  • Si un client passe d'un réseau à un autre, son adresse IP change, ce qui entraîne une rupture d'affinité.

Lorsque vous définissez l'affinité basée sur les cookies générés, l'équilibreur de charge émet un cookie lors de la première requête. Pour chaque requête suivante présentant le même cookie, l'équilibreur de charge dirige celle-ci vers les mêmes VM ou points de terminaison backend.

  • Pour les équilibreurs de charge HTTP(S) externes, ce cookie est nommé GCLB.
  • Pour les équilibreurs de charge HTTP(S) internes et Traffic Director, ce cookie est nommé GCILB.

L'affinité basée sur les cookies permet à un équilibreur de charge d'identifier un client plus précisément qu'avec l'affinité basée sur les adresses IP client. Exemple :

  1. Grâce à l'affinité basée sur les cookies, l'équilibreur de charge peut identifier de manière unique deux systèmes clients (ou plus) partageant la même adresse IP source. Lorsqu'il utilise l'affinité basée sur les adresses IP client, l'équilibreur de charge traite toutes les connexions provenant de la même adresse IP source comme si elles provenaient du même système client.

  2. Si un client change d'adresse IP, l'affinité basée sur les cookies permet à l'équilibreur de charge de reconnaître les connexions ultérieures de ce client, plutôt que de traiter celles-ci comme si elles étaient nouvelles. Par exemple, lorsqu'un client change son adresse IP dans le cas d'un appareil mobile passant d'un réseau à un autre.

Lorsqu'un équilibreur de charge crée un cookie pour l'affinité basée sur les cookies générés, il définit l'attribut path du cookie sur /. Si l'outil de mise en correspondance des chemins d'accès du mappage d'URL comporte plusieurs services de backend pour un nom d'hôte, tous les services de backend partagent le même cookie de session.

La durée de vie du cookie HTTP généré par l'équilibreur de charge est configurable. Vous pouvez la définir sur 0 (par défaut), ce qui signifie que le cookie n'est qu'un cookie de session. Vous pouvez également la définir de sorte qu'elle soit comprise entre 1 et 86400 secondes (24 heures) inclus.

Affinité basée sur le champ d'en-tête

Un équilibreur de charge HTTP(S) interne peut utiliser l'affinité basée sur le champ d'en-tête lorsque les deux conditions suivantes sont remplies :

  • La règle de localité d'équilibrage de charge est RING_HASH ou MAGLEV.
  • Le hachage cohérent du service de backend spécifie le nom de l'en-tête HTTP.

L'affinité basée sur le champ d'en-tête achemine les requêtes vers les VM ou points de terminaison backend d'un NEG zonal en fonction de la valeur de l'en-tête HTTP nommé dans l'option --custom-request-header.

Pour plus d'informations sur l'équilibrage de charge HTTP(S) interne utilisant l'affinité basée sur le champ d'en-tête, consultez la page Présentation de l'équilibrage de charge HTTP(S) interne.

Un équilibreur de charge HTTP(S) interne peut utiliser l'affinité basée sur les cookies HTTP lorsque les deux conditions suivantes sont remplies :

  • La règle de localité d'équilibrage de charge est RING_HASH ou MAGLEV.
  • Le hachage cohérent du service de backend spécifie le nom du cookie HTTP.

L'affinité basée sur les cookies HTTP achemine les requêtes vers les VM ou points de terminaison backend d'un NEG en fonction du cookie HTTP nommé dans l'option HTTP_COOKIE. Si le client ne fournit pas de cookie, le proxy en génère un et le renvoie au client dans un en-tête Set-Cookie.

Pour plus d'informations sur l'équilibrage de charge HTTP(S) interne utilisant l'affinité basée sur les cookies HTTP, consultez la page Présentation de l'équilibrage de charge HTTP(S) interne.

Perdre l'affinité de session

Quel que soit le type d'affinité choisi, un client peut perdre son affinité avec un backend dans les situations suivantes :

  • Si le NEG zonal ou le groupe d'instances backend manque de capacité par rapport à la capacité cible définie du mode d'équilibrage. Dans cette situation, Google Cloud dirige le trafic vers un autre NEG zonal ou groupe d'instances backend, qui peut se trouver dans une zone différente. Vous pouvez minimiser ce comportement en spécifiant une valeur appropriée pour la capacité cible de chaque backend en fonction de vos propres tests.
  • L'autoscaling ajoute ou supprime des instances d'un groupe d'instances géré. Lorsque cela se produit, le nombre d'instances dans le groupe change, de sorte que le service de backend recalcule les hachages pour l'affinité de session. Vous pouvez minimiser ce comportement en vous assurant que la taille minimale du groupe d'instances géré est capable de supporter une charge type. L'autoscaling ne s'effectue alors qu'en cas d'augmentation inattendue de la charge.
  • Si une VM ou un point de terminaison backend d'un NEG échoue aux vérifications de l'état, l'équilibreur de charge dirige le trafic vers un autre backend opérationnel. Reportez-vous à la documentation de chaque équilibreur de charge Google Cloud pour en savoir plus sur le comportement de l'équilibreur lorsque tous ses backends échouent aux vérifications de l'état.
  • Lorsque le mode d'équilibrage UTILIZATION est activé pour les groupes d'instances backend, l'affinité de session se rompt en raison de changements dans l'utilisation du backend. Vous pouvez minimiser ce comportement en utilisant le mode d'équilibrage RATE ou CONNECTION, selon le type compatible avec l'équilibreur de charge.

Lorsque vous utilisez l'équilibrage de charge HTTP(S), l'équilibrage de charge proxy SSL ou l'équilibrage de charge proxy TCP, gardez à l'esprit les points supplémentaires suivants :

  • Si le chemin de routage d'un client sur Internet vers Google change entre les requêtes ou les connexions, un autre GFE peut être sélectionné comme proxy. Toutefois, cela peut rompre l'affinité de session.
  • Lorsque vous utilisez le mode d'équilibrage UTILIZATION (en particulier sans avoir défini de capacité maximale cible), l'affinité de session est susceptible de se rompre lorsque le trafic vers l'équilibreur de charge est faible. Basculez plutôt vers le mode d'équilibrage RATE ou CONNECTION.

Délai avant expiration du service de backend

La plupart des équilibreurs de charge Google Cloud disposent d'un délai avant expiration de service de backend. La valeur par défaut est de 30 secondes.

  • Pour les équilibreurs de charge HTTP(S) externes et les équilibreurs de charge HTTP(S) internes utilisant le protocole HTTP, HTTPS ou HTTP/2, le délai avant expiration du service de backend est un délai d'expiration de requête/réponse pour le trafic HTTP(S). Il s'agit de la durée pendant laquelle l'équilibreur de charge attend qu'un backend renvoie une réponse complète à une requête. Par exemple, si la valeur par défaut du délai avant expiration du service de backend est de 30 secondes, alors les backends disposent de cette durée pour fournir une réponse complète aux requêtes. L'équilibreur de charge relance la requête HTTP GET une fois si le backend ferme la connexion ou expire avant d'envoyer des en-têtes de réponse à l'équilibreur de charge. Si le backend envoie des en-têtes de réponse (même si le corps de la réponse est par ailleurs incomplet) ou que la requête envoyée au backend n'est pas une requête HTTP GET, l'équilibreur de charge ne la relance pas. Si le backend ne répond pas du tout, l'équilibreur de charge renvoie une réponse HTTP 5xx au client. Pour modifier le délai alloué aux backends pour qu'ils répondent aux requêtes, modifiez le délai d'expiration.

  • Pour le trafic HTTP, la durée maximale pour que le client termine d'envoyer sa requête est égale au délai avant expiration du service de backend. Si des réponses HTTP 408 avec jsonPayload.statusDetail client_timed_out apparaissent, cela signifie que la progression était insuffisante lors de l'envoi par proxy de la requête du client ou de la réponse du backend. Si le problème est dû à des clients rencontrant des problèmes de performances, vous pouvez résoudre ce problème en augmentant le délai avant expiration du service de backend.

  • Pour les équilibreurs de charge HTTP(S) externes et les équilibreurs de charge HTTP(S) internes, si la connexion HTTP est mise à niveau vers un WebSocket, le délai avant expiration du service de backend définit la durée maximale pendant laquelle un WebSocket peut être ouvert, qu'il soit inactif ou non.

  • Pour les équilibreurs de charge proxy SSL et les équilibreurs de charge proxy TCP, le délai avant expiration est un délai d'inactivité. Pour accorder plus ou moins de temps avant la suppression de la connexion, modifiez le délai d'expiration. Ce délai d'inactivité est également utilisé pour les connexions WebSocket.

  • Pour les équilibreurs de charge TCP/UDP internes, le délai avant expiration du service de backend n'a aucun effet.

  • Lorsque les services gRPC sans proxy sont configurés, Traffic Director n'est pas compatible avec le délai avant expiration du service de backend.

Vérifications d'état

Chaque service de backend dont les backends sont des groupes d'instances ou des NEG zonaux doit être associé à une vérification d'état. Les services de backend utilisant un NEG Internet comme backend n'ont pas besoin de référencer une vérification d'état.

Lorsque vous créez un équilibreur de charge à l'aide de Google Cloud Console, vous pouvez créer la vérification d'état, si nécessaire, lors de la création de l'équilibreur de charge, mais vous pouvez également référencer une vérification d'état existante.

Lorsque vous créez un service de backend basé sur un groupe d'instances ou un NEG zonal à l'aide de l'outil de ligne de commande gcloud ou de l'API, vous devez référencer une vérification d'état existante. Reportez-vous au guide sur les équilibreurs de charge de la page Présentation des vérifications d'état pour en savoir plus sur le type et le champ d'application requis pour la vérification d'état.

Pour en savoir plus, consultez les documents suivants :

Fonctionnalités supplémentaires activées sur la ressource du service de backend

Les fonctionnalités Google Cloud facultatives suivantes sont disponibles pour les services de backend utilisés par un équilibrage de charge HTTP(S). Elles ne sont pas abordées dans ce document, mais sont traitées dans les pages suivantes :

  • Google Cloud Armor offre une protection contre les attaques DDoS et autres grâce à des règles de sécurité.
  • Cloud CDN est un système de diffusion de contenu à faible latence.
  • Les en-têtes personnalisés sont des en-têtes supplémentaires que l'équilibreur de charge ajoute aux requêtes.
  • IAP vous permet d'effectuer les opérations suivantes :
    • Exiger une authentification auprès d'un compte Google avec une connexion OAuth 2.0.
    • Contrôler les accès à l'aide des autorisations Identity and Access Management

Autres remarques

Les fonctionnalités suivantes ne sont compatibles qu'avec les équilibreurs de charge HTTP(S) internes et Traffic Director. Toutefois, elles ne sont pas compatibles avec l'utilisation de services gRPC sans proxy avec Traffic Director.

  • Ruptures de circuit
  • Détection des anomalies
  • Règles d'équilibrage de charge
  • Affinité de session basée sur les cookies HTTP
  • Affinité de session basée sur l'en-tête HTTP

Étape suivante

Pour obtenir de la documentation et des informations sur l'utilisation des services de backend dans l'équilibrage de charge, consultez les ressources suivantes :