Descripción general de los servicios de backend

Un servicio de backend define cómo Cloud Load Balancing distribuye el tráfico. La configuración del servicio de backend contiene un conjunto de valores, como el protocolo que se usa para conectarse a backends, varios parámetros de configuración de distribución y sesión, verificaciones de estado y tiempos de espera. Esta configuración proporciona un control detallado sobre el comportamiento del balanceador de cargas. Para comenzar, la mayoría de las opciones de configuración tienen valores predeterminados que permiten una configuración rápida. Un servicio de backend puede tener un permiso global oregional.

Los balanceadores de cargas, los proxies de Envoy y los clientes de gRPC sin proxy usan la información de configuración en el recurso del servicio de backend para hacer lo siguiente:

  • Dirigir el tráfico a los backends correctos, que son grupos de instancias o grupos de extremos de red (NEG).
  • Distribuir el tráfico según un modo de balanceo, que es una configuración para cada backend
  • Determinar qué verificación de estado supervisa el estado de los backends
  • Especificar la afinidad de sesión.
  • Determina si otros servicios están habilitados, incluidos los siguientes que solo están disponibles para ciertos balanceadores de cargas:
    • Cloud CDN
    • Políticas de seguridad de Google Cloud Armor
    • Identity-Aware Proxy
  • Designa los servicios de backend regionales como un servicio en App Hub, que está en vista previa.

Establece estos valores cuando creas un servicio de backend o cuando agregas un backend al servicio de backend.

Nota: Si usas el balanceador de cargas de aplicaciones externo global o el balanceador de cargas de aplicaciones clásico, y tus backends entregan contenido estático, considera usar buckets de backend en lugar de servicios de backend. Consulta buckets de backend para el balanceador de cargas de aplicaciones externo global o buckets de backend para el balanceador de cargas de aplicaciones clásico.

En la siguiente tabla, se resumen los balanceadores de cargas que usan servicios de backend. El producto que usas determina la cantidad máxima de servicios de backend, el permiso de un servicio de backend, el tipo de backends compatibles y el esquema de balanceo de cargas del servicio de backend. El esquema de balanceo de cargas es un identificador que Google usa para clasificar reglas de reenvío y servicios de backend. Cada producto de balanceo de cargas usa un esquema de balanceo de cargas para las reglas de reenvío y los servicios de backend. Algunos esquemas se comparten entre los productos.

Tabla: Servicios de backend y tipos de backend compatibles
Producto Cantidad máxima de servicios de backend Alcance del servicio de backend Tipos de backends compatibles Esquema de balanceo de cargas
Balanceador de cargas de aplicaciones externo global Varias Global Cada servicio de backend admite una de las siguientes combinaciones:
  • Todos los backends de grupos de instancias: Uno o más backends de grupos de instancias administrados, no administrados o una combinación de ambos *
  • Todos los NEG zonales: Uno o más NEG zonales de tipo GCE_VM_IP_PORT*
  • Todos los NEG de conectividad híbrida: Uno o más NEG de tipo NON_GCP_PRIVATE_IP_PORT
  • Una combinación de NEG zonales y híbridos: NEG de tipo GCE_VM_IP_PORT y NON_GCP_PRIVATE_IP_PORT
  • Todos los NEG sin servidores: Uno o más servicios de App Engine, Cloud Run o Cloud Run Functions
  • Un NEG de Internet global para un backend externo
  • NEG de Private Service Connect:
    • APIs de Google: un único NEG de Private Service Connect
    • Servicios administrados: uno o más NEG de Private Service Connect
EXTERNAL_MANAGED
Balanceador de cargas de aplicaciones clásico Varias Global Cada servicio de backend admite una de las siguientes combinaciones:
  • Todos los backends de grupos de instancias: Uno o más backends de grupos de instancias administrados, no administrados o una combinación de ambos
  • Todos los NEG zonales: Uno o más NEG zonales de tipo GCE_VM_IP_PORT
  • Todos los NEG de conectividad híbrida: Uno o más NEG de tipo NON_GCP_PRIVATE_IP_PORT
  • Una combinación de NEG zonales y híbridos: NEG de tipo GCE_VM_IP_PORT y NON_GCP_PRIVATE_IP_PORT
  • Todos los NEG sin servidores: Uno o más servicios de App Engine, Cloud Run o Cloud Run Functions o
  • Un NEG de Internet global para un backend externo
EXTERNAL#
Balanceador de cargas de aplicaciones externo regional Varias Regional Cada servicio de backend admite una de las siguientes combinaciones:
  • Todos los backends de grupos de instancias: Uno o más backends de grupos de instancias administrados, no administrados o una combinación de ambos *
  • Todos los NEG zonales: Uno o más NEG zonales de tipo GCE_VM_IP_PORT *
  • Todos los NEG de conectividad híbrida: Uno o más NEG de tipo NON_GCP_PRIVATE_IP_PORT
  • Una combinación de NEG zonales y híbridos: NEG de tipo GCE_VM_IP_PORT y NON_GCP_PRIVATE_IP_PORT
  • Un solo NEG sin servidores (solo Cloud Run)
  • Un NEG de Private Service Connect único
  • Todos los NEGs de Internet regionales para un backend externo
EXTERNAL_MANAGED
Balanceador de cargas de aplicaciones interno entre regiones Varias Global Cada servicio de backend admite una de las siguientes combinaciones:
  • Todos los backends de grupos de instancias: Uno o más backends de grupos de instancias administrados, no administrados o una combinación de ambos *
  • Todos los NEG zonales: Uno o más NEG zonales de tipo GCE_VM_IP_PORT *
  • Todos los NEG de conectividad híbrida: Uno o más NEG de tipo NON_GCP_PRIVATE_IP_PORT
  • Una combinación de NEG zonales y híbridos: NEG de tipo GCE_VM_IP_PORT y NON_GCP_PRIVATE_IP_PORT
  • Un solo NEG sin servidores (solo Cloud Run)
  • NEG de Private Service Connect:
    • APIs de Google: un único NEG de Private Service Connect
    • Servicios administrados: uno o más NEG de Private Service Connect
INTERNAL_MANAGED
Balanceador de cargas de aplicaciones interno regional Varias Regional Cada servicio de backend admite una de las siguientes combinaciones:
  • Todos los backends de grupos de instancias: Uno o más backends de grupos de instancias administrados, no administrados o una combinación de ambos *
  • Todos los NEG zonales: Uno o más NEG zonales de tipo GCE_VM_IP_PORT *
  • Todos los NEG de conectividad híbrida: Uno o más NEG de tipo NON_GCP_PRIVATE_IP_PORT
  • Una combinación de NEG zonales y híbridos: NEG de tipo GCE_VM_IP_PORT y NON_GCP_PRIVATE_IP_PORT
  • Un solo NEG sin servidores (solo Cloud Run)
  • Un NEG de Private Service Connect único
  • Todos los NEGs de Internet regionales para un backend externo
INTERNAL_MANAGED
Balanceador de cargas de red del proxy externo global 1 Global El servicio de backend admite una de las siguientes combinaciones de backend:
  • Todos los backends de grupos de instancias: Uno o más backends de grupos de instancias administrados, no administrados o una combinación de ambos *
  • Todos los NEG zonales: Uno o más NEG zonales de tipo GCE_VM_IP_PORT*
  • Todos los NEG de conectividad híbrida: Uno o más NEG de tipo NON_GCP_PRIVATE_IP_PORT
  • Una combinación de NEG zonales y híbridos: NEG de tipo GCE_VM_IP_PORT y NON_GCP_PRIVATE_IP_PORT
  • NEG de Private Service Connect:
    • APIs de Google: un único NEG de Private Service Connect
    • Servicios administrados: uno o más NEG de Private Service Connect
EXTERNAL_MANAGED
Balanceador de cargas de red del proxy clásico 1 Global El servicio de backend admite una de las siguientes combinaciones de backend:
  • Todos los backends de grupos de instancias: Uno o más backends de grupos de instancias administrados, no administrados o una combinación de ambos
  • Todos los NEG zonales: Uno o más NEG zonales de tipo GCE_VM_IP_PORT
  • Todos los NEG de conectividad híbrida: Uno o más NEG de tipo NON_GCP_PRIVATE_IP_PORT
  • Una combinación de NEG zonales y híbridos: NEG de tipo GCE_VM_IP_PORT y NON_GCP_PRIVATE_IP_PORT
EXTERNO
Balanceador de cargas de red del proxy externo regional 1 Regional El servicio de backend admite una de las siguientes combinaciones de backend:
  • Todos los backends de grupos de instancias: Uno o más backends de grupos de instancias administrados, no administrados o una combinación de ambos *
  • Todos los NEG zonales: Uno o más NEG zonales de tipo GCE_VM_IP_PORT *
  • Todos los NEG de conectividad híbrida: Uno o más NEG de tipo NON_GCP_PRIVATE_IP_PORT
  • Una combinación de NEG zonales y híbridos: NEG de tipo GCE_VM_IP_PORT y NON_GCP_PRIVATE_IP_PORT
  • Todos los NEGs de Internet regionales para un backend externo
  • Un NEG de Private Service Connect único
EXTERNAL_MANAGED
Balanceador de cargas de red de proxy interno regional 1 Regional El servicio de backend admite una de las siguientes combinaciones de backend:
  • Todos los backends de grupos de instancias: Uno o más backends de grupos de instancias administrados, no administrados o una combinación de ambos *
  • Todos los NEG zonales: Uno o más NEG zonales de tipo GCE_VM_IP_PORT *
  • Todos los NEG de conectividad híbrida: Uno o más NEG de tipo NON_GCP_PRIVATE_IP_PORT
  • Una combinación de NEG zonales y híbridos: NEG de tipo GCE_VM_IP_PORT y NON_GCP_PRIVATE_IP_PORT
  • Todos los NEGs de Internet regionales para un backend externo
  • Un NEG de Private Service Connect único
INTERNAL_MANAGED
Balanceador de cargas de red de proxy interno entre regiones Varias Global El servicio de backend admite una de las siguientes combinaciones de backend:
  • Todos los backends de grupos de instancias: Uno o más backends de grupos de instancias administrados, no administrados o una combinación de ambos *
  • Todos los NEG zonales: Uno o más NEG zonales de tipo GCE_VM_IP_PORT *
  • Todos los NEG de conectividad híbrida: Uno o más NEG de tipo NON_GCP_PRIVATE_IP_PORT
  • Una combinación de NEG zonales y híbridos: NEG de tipo GCE_VM_IP_PORT y NON_GCP_PRIVATE_IP_PORT
  • NEG de Private Service Connect:
    • APIs de Google: un único NEG de Private Service Connect
    • Servicios administrados: uno o más NEG de Private Service Connect
INTERNAL_MANAGED
Balanceador de cargas de red de transferencia externo 1 Regional El servicio de backend admite una de las siguientes combinaciones de backend:
  • Todos los backends de grupos de instancias: Uno o más backends de grupos de instancias administrados, no administrados o una combinación de ambos
  • Todos los NEG zonales: Uno o más NEG zonales de tipo GCE_VM_IP
EXTERNO
Balanceador de cargas de red de transferencia interno 1 Regional, pero configurable para que sea accesible a nivel global El servicio de backend admite una de las siguientes combinaciones de backend:
  • Todos los backends de grupos de instancias: Uno o más backends de grupos de instancias administrados, no administrados o una combinación de ambos
  • Todos los NEG zonales: Uno o más NEG zonales de tipo GCE_VM_IP
  • NEG de asignación de un puerto (vista previa)
INTERNAL
Cloud Service Mesh Varias Global Cada servicio de backend admite una de las siguientes combinaciones:
  • Todos los backends de grupos de instancias: Uno o más backends de grupos de instancias administrados, no administrados o una combinación de ambos
  • Todos los NEG zonales: Uno o más NEG zonales de tipo GCE_VM_IP_PORT o NON_GCP_PRIVATE_IP_PORT
  • Un NEG de Internet de tipo INTERNET_FQDN_PORT
  • Una o más vinculaciones del servicio
INTERNAL_SELF_MANAGED
* Compatible con IPv4 y Grupos de instancias IPv6 (pila doble) y backends de NEG zonales. Compatibilidad con NEG zonales pila doble solo en extremos de tipo GCE_VM_IP_PORT.

 Para implementaciones de GKE, los backends de NEG mixtos solo son compatibles con NEG independientes.
Los servicios de backend que usan los balanceadores de cargas de aplicaciones clásicos y los balanceadores de cargas de red de proxy clásicos siempre tienen alcance global, ya sea de nivel de red Estándar o Premium. However, in Standard Tier the following restrictions apply:
# Es posible adjuntar servicios de backend EXTERNAL_MANAGED a reglas de reenvío EXTERNAL. Sin embargo, los servicios de backend de EXTERNAL no se pueden adjuntar a las reglas de reenvío de EXTERNAL_MANAGED. Para aprovechar las funciones nuevas disponibles solo con el balanceador de cargas de aplicaciones externo global, te recomendamos que migres tus recursos EXTERNAL existentes a EXTERNAL_MANAGED con el proceso de migración que se describe en Cómo migrar recursos del balanceador de cargas de aplicaciones clásico al balanceador de cargas de aplicaciones externo global.

Backends

Un backend es uno o más extremos que reciben tráfico de un balanceador de cargas de Google Cloud, un proxy de Envoy configurado por Cloud Service Mesh o un cliente de gRPC sin proxy. Existen varios tipos de backends:

No puedes borrar un grupo de instancias de backend o un NEG que estén asociados con un servicio de backend. Antes de borrar un grupo de instancias o un NEG, primero debes quitarlos como un backend de todos los servicios de backend que hacen referencia a ellos.

Grupos de instancias

En esta sección, se analiza cómo funcionan los grupos de instancias con el servicio de backend.

Direcciones IP externas y VM de backend

Las VMs de backend en los servicios de backend no necesitan direcciones IP externas:

  • En el caso de los balanceadores de cargas de aplicaciones externos globales y los balanceadores de cargas de red del proxy externos: los clientes se comunican con un Google Front End (GFE) que aloja la dirección IP externa del balanceador de cargas. Los GFE se comunican con las VMs o los extremos de backend mediante el envío de paquetes a una dirección interna creada mediante la unión de un identificador a la red de VPC del backend con la dirección IPv4 interna del backend. La comunicación entre los GFE y los extremos o VMs de backend se facilita mediante rutas especiales.
    • Para los backends de grupo de instancias, la dirección IPv4 interna siempre es la dirección IPv4 interna principal que corresponde a la interfaz nic0 de la VM.
    • Para extremos GCE_VM_IP_PORT en un NEG zonal, puedes especificar la dirección IP del extremo como la dirección IPv4 principal asociada con cualquier interfaz de red de una VM o cualquier dirección IPv4 de un rango de direcciones IP de alias asociado con cualquier red interfaz de una VM.
  • Para los balanceadores de cargas de aplicaciones externos regionales: los clientes se comunican con un proxy de Envoy que aloja la dirección IP externa del balanceador de cargas. Los proxies de Envoy se comunican con las VMa o los extremos de backend mediante el envío de paquetes a una dirección interna creada mediante la unión de un identificador a la red de VPC del backend con la dirección IPv4 interna del backend.

    • Para los backends de grupo de instancias, la dirección IPv4 interna siempre es la dirección IPv4 interna principal que corresponde a la interfaz nic0 de la VM y nic0 debe estar en la misma red que el balanceador de cargas.
    • Para extremos GCE_VM_IP_PORT en un NEG zonal, puedes especificar la dirección IP del extremo como la dirección IPv4 principal asociada con cualquier interfaz de red de una VM o cualquier dirección IPv4 de un rango de direcciones IP de alias asociado con cualquier interfaz de red de una VM, siempre que la interfaz de red esté en la misma red que el balanceador de cargas.
  • Para los balanceadores de cargas de red externos: los clientes se comunican directamente con los backends a través de la infraestructura de balanceo de cargas de paso de Maglev de Google. Los paquetes se enrutan y se entregan a los backends con las direcciones IP de origen y destino originales conservadas. Los backends responden a los clientes mediante el retorno directo del servidor. Los métodos utilizados para seleccionar un backend y realizar un seguimiento de las conexiones son configurables.

    • Para los backends de grupos de instancias, los paquetes siempre se entregan a la interfaz nic0 de la VM.
    • Para los extremos GCE_VM_IP en un NEG zonal, los paquetes se entregan a la interfaz de red de la VM que se encuentra en la subred asociada con el NEG.

Puertos con nombre

El atributo del puerto con nombre del servicio de backend solo se aplica a los balanceadores de cargas basados en proxy (balanceadores de cargas de aplicaciones y balanceadores de cargas de red de proxy) que usan backends de grupos de instancias. El puerto con nombre define el puerto de destino que se usa para la conexión TCP entre el proxy (GFE o Envoy) y la instancia de backend.

Los puertos con nombre se configuran de la siguiente manera:

  • En cada backend del grupo de instancias, debes configurar uno o más puertos con nombre mediante pares clave-valor. La clave representa un nombre de puerto significativo que eliges y el valor representa el número de puerto que asignas al nombre. La asignación de nombres a números se realiza de forma individual para cada backend del grupo de instancias.

  • En el servicio de backend, debes especificar un solo puerto con nombre únicamente con el nombre del puerto (--port-name).

En cada backend de grupo de instancias, el servicio de backend traduce el nombre del puerto a un número de puerto. Cuando el puerto con nombre de un grupo de instancias coincide con el --port-name del servicio de backend, el servicio de backend usa este número de puerto para la comunicación con las VMs del grupo de instancias.

Por ejemplo, puedes configurar el puerto con nombre en un grupo de instancias con el nombre my-service-name y el puerto 8888:

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

Luego, debes hacer referencia al puerto con nombre en la configuración del servicio de backend mediante el --port-name en el servicio de backend configurado como my-service-name:

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

Un servicio de backend puede usar un número de puerto diferente cuando se comunica con las VM en grupos de instancias diferentes si cada grupo de instancias especifica un número de puerto diferente para el mismo nombre de puerto.

No es necesario que el número de puerto resuelto que usa el servicio de backend del balanceador de cargas de proxy coincida con el número de puerto que usan las reglas de reenvío del balanceador de cargas. Un balanceador de cargas de proxy escucha las conexiones TCP enviadas a la dirección IP y al puerto de destino de las reglas de reenvío. Debido a que el proxy abre una segunda conexión de TCP a sus backends, el puerto de destino de la segunda conexión de TCP puede ser diferente.

Los puertos con nombre solo se aplican a los backends de grupos de instancias. Los NEG zonales con extremos GCE_VM_IP_PORT, los NEG híbridos con extremos NON_GCP_PRIVATE_IP_PORT los NEG de Internet definen puertos mediante un mecanismo diferente, es decir, en los extremos. NEG sin servidores hace referencia a los servicios de Google y los NEG de PSC hacen referencia a los adjuntos de servicio mediante abstracciones que no implican especificar un puerto de destino.

Los balanceadores de cargas de red de transferencia internos y los balanceadores de cargas de red de transferencias externos no usan puertos con nombre. Esto se debe a que son balanceadores de cargas de paso que enrutan las conexiones directamente a los backends en lugar de crear conexiones nuevas. Los paquetes se entregan a los backends mediante la preservación de la dirección IP y el puerto de destino de la regla de reenvío del balanceador de cargas.

Para aprender a crear puertos con nombre, consulta las siguientes instrucciones:

Restricciones y recomendaciones para grupos de instancias

Ten en cuenta las siguientes restricciones y recomendaciones cuando crees grupos de instancias para los balanceadores de cargas:

  • No pongas una VM en más de un grupo de instancias con balanceo de cargas. Si una VM es miembro de dos o más grupos de instancias no administrados, o de un grupo de instancias administrado y de uno o más grupos de instancias no administrados, solo puedes usar uno de esos grupos de instancias a la vez como backend para un servicio de backend en particular.

    Si necesitas una VM para participar en varios balanceadores de cargas, debes usar el mismo grupo de instancias como backend en cada uno de los servicios de backend.

  • Para los balanceadores de cargas de proxy, cuando quieras balancear el tráfico en puertos diferentes, especifica los puertos con nombre necesarios en un grupo de instancias y haz que cada servicio de backend se suscriba a un único nombre llamado puerto.

  • Puedes usar el mismo grupo de instancias como backend para más de un servicio de backend. En esta situación, los backends deben usar modos de balanceo compatibles. Compatible significa que los modos de balanceo deben ser iguales o deben ser una combinación de CONNECTION y RATE.

    Las combinaciones de modo de balanceo incompatibles son las siguientes:

    • CONNECTION con UTILIZATION
    • RATE con UTILIZATION

    Considera el siguiente ejemplo:

    • Tienes dos servicios de backend: external-https-backend-service para un balanceador de cargas de aplicaciones externo y internal-tcp-backend-service para un balanceador de cargas de red de transferencia interno.
    • Usas un grupo de instancias llamado instance-group-a en internal-tcp-backend-service.
    • En internal-tcp-backend-service, debes aplicar el modo de balanceo CONNECTION, porque los balanceadores de cargas de red de transferencia internos solo admiten el modo de balanceo CONNECTION.
    • También puedes usar instance-group-a en external-https-backend-service si aplicas el modo de balanceo RATE en external-https-backend-service.
    • No puedes usar instance-group-a en external-https-backend-service con el modo de balanceo UTILIZATION.
  • Si deseas cambiar el modo de balanceo de un grupo de instancias que funciona como backend para varios servicios de backend, haz lo siguiente:

    • Quita el grupo de instancias de todos los servicios de backend, excepto de uno.
    • Cambia el modo de balanceo del backend en el servicio de backend restante.
    • Vuelve a agregar el grupo de instancias como backend para los servicios de backend restantes, si es que admiten el modo de balanceo nuevo.
  • Si el grupo de instancias está asociado con varios servicios de backend, cada servicio de backend puede hacer referencia al mismo puerto con nombre o a un puerto con nombre diferente en el grupo de instancias.

  • Recomendamos que no se agregue un grupo de instancias administrado con ajuste de escala automático a más de un servicio de backend. Esto podría causar un escalamiento impredecible e innecesario de las instancias en el grupo, en especial si usas la métrica de ajuste de escala automático del uso del balanceo de cargas de HTTP.

    • Aunque no se recomienda, esta situación podría funcionar si la métrica de ajuste de escala automático es uso de CPU o una métrica de Cloud Monitoring que no está relacionada con la capacidad de entrega del balanceador de cargas. El uso de una de estas métricas de ajuste de escala automático puede evitar el escalamiento errático.

Grupos de extremos de red zonales

Los extremos de red representan servicios por su dirección IP o una combinación de dirección IP y puerto, en lugar de hacer referencia a una VM de un grupo de instancias. Un grupo de extremos de red (NEG) es una agrupación lógica de extremos de red.

Los grupos de extremos de red por zonas (NEG) son recursos zonales que representan conjuntos de direcciones IP o combinaciones de direcciones IP y puertos para recursos de Google Cloud dentro de una única subred.

Los servicios de backend que usan NEG zonales como backends distribuyen el tráfico entre las aplicaciones o los contenedores que se ejecutan dentro de las VM.

Existen dos tipos de extremos de red disponibles para los NEG zonales:

  • Extremos GCE_VM_IP (compatibles solo con balanceadores de cargas de red de transferencia internos y balanceadores de cargas de red de transferencia externos basados en servicios de backend).
  • Extremos de GCE_VM_IP_PORT.

Para ver qué productos admiten backends de NEG zonales, consulta Tabla: Servicios de backend y tipos de backends compatibles.

Para obtener más detalles, consulta la Descripción general de los NEG zonales.

Grupos de extremos de red de Internet

Los NEGs de Internet son recursos globales que definen backends externos. Un backend externo es un backend alojado en la infraestructura local o en la infraestructura proporcionada por terceros.

Un NEG de Internet es una combinación de un nombre de host o una dirección IP, más un puerto opcional. Existen dos tipos de extremos de red disponibles para los NEGs de Internet: INTERNET_FQDN_PORT y INTERNET_IP_PORT.

Los NEGs de Internet están disponibles en dos permisos: global y regional. Para ver qué productos admiten backends de NEG de Internet en cada permiso, consulta Tabla: Servicios de backend y tipos de backend compatibles.

Para obtener más información, consulta Descripción general de los grupos de extremos de red de Internet.

Grupos de extremos de red sin servidores

Un grupo de extremos de red (NEG) especifica un grupo de extremos de backend para un balanceador de cargas. Un NEG sin servidores es un backend que apunta a un servicio de Cloud Run, App Engine, Cloud Run Functions o API Gateway.

Un NEG sin servidores puede representar una de las siguientes opciones:

  • Un servicio de Cloud Run o un grupo de servicios
  • Una función de Cloud Run Functions o un grupo de funciones.
  • Una app de App Engine (estándar o flexible), un servicio específico dentro de una app, una versión específica de una app o un grupo de servicios.
  • Una API Gateway que proporciona acceso a tus servicios a través de una API de REST coherente en todos los servicios, sin importar la implementación de estos. Esta función se encuentra en vista previa.

A fin de configurar un NEG sin servidores para aplicaciones sin servidores que comparten un patrón de URL, usa una máscara de URL. Una máscara de URL es una plantilla del esquema de URL (por ejemplo, example.com/<service>). El NEG sin servidores usará esta plantilla para extraer el nombre <service> de la URL de la solicitud entrante y enrutar la solicitud al servicio de Cloud Run, Cloud Run Functions o App Engine coincidente con el mismo nombre.

Para ver qué balanceadores de cargas admiten backends de NEG sin servidores, consulta Tabla: Servicios de backend y tipos de backends compatibles.

Para obtener más información sobre los NEG sin servidores, consulta la descripción general de los grupos de extremos de red sin servidores.

Vinculaciones del servicio

Una vinculación del servicio es un backend que establece una conexión entre un servicio de backend en Cloud Service Mesh y un servicio registrado en el Directorio de servicios. Un servicio de backend puede hacer referencia a varias vinculaciones del servicio. Un servicio de backend con una vinculación del servicio no puede hacer referencia a ningún otro tipo de backend.

Backends mixtos

Las siguientes consideraciones de uso se aplican cuando agregas diferentes tipos de backends a un solo servicio de backend:

  • Un solo servicio de backend no puede usar simultáneamente grupos de instancias y NEG zonales.
  • Puedes usar una combinación de tipos de grupos de instancias diferentes en el mismo servicio de backend. Por ejemplo, un solo servicio de backend puede hacer referencia a una combinación de grupos de instancias administrados y no administrados. Para obtener información completa sobre la compatibilidad de los backends con los servicios de backend, consulta la tabla de la sección anterior.
  • Con ciertos balanceadores de cargas de proxy, puedes usar una combinación de NEG zonales (con extremos GCE_VM_IP_PORT) y NEG de conectividad híbrida (con extremos NON_GCP_PRIVATE_IP_PORT) para configurar el balanceo de cargas híbrido. Para ver qué balanceadores de cargas tienen esta capacidad, consulta Tabla: Servicios de backend y tipos de backend compatibles.

Protocolo para los backends

Cuando creas un servicio de backend, debes especificar el protocolo que se usa para comunicarse con los backends. Puedes especificar solo un protocolo por servicio de backend; no puedes especificar un protocolo secundario para usar como resguardo.

Los protocolos válidos dependen del tipo de balanceador de cargas o de si se usa Cloud Service Mesh.

Tabla: Protocolo para los backends
Producto Opciones de protocolo del servicio de backend
Balanceador de cargas de aplicaciones HTTP, HTTPS, HTTP/2
Balanceador de cargas de red del proxy

TCP o SSL

Los balanceadores de cargas de red del proxy regional solo admiten TCP.

Balanceador de cargas de red de transferencia TCP, UDP, o UNSPECIFIED
Cloud Service Mesh HTTP, HTTPS, HTTP/2, gRPC, TCP

Cuando cambias el protocolo de un servicio de backend, no se puede acceder a los backends a través de los balanceadores de cargas durante unos minutos.

Política de selección de direcciones IP

Este campo se aplica a los balanceadores de cargas de proxy. Debes usar la política de selección de direcciones IP para especificar el tipo de tráfico que se envía del servicio de backend a tus backends.

Cuando selecciones la política de selección de dirección IP, asegúrate de que tus backends admitan el tipo de tráfico seleccionado. Para obtener más información, consulta Tabla: Servicios de backend y backends compatibles tipos.

La política de selección de direcciones IP se usa cuando deseas convertir tu servicio de backend del balanceador de cargas para admitir un tipo de tráfico diferente. Para obtener más información, consulta Convierte de pila única a pila doble.

Puedes especificar los siguientes valores para la política de selección de direcciones IP:

Política de selección de direcciones IP Descripción
Solo IPv4 Solo envía tráfico IPv4 a los backends del servicio de backend, sin importar el tráfico del cliente al GFE. Solo IPv4 de estado se usan para comprobar el estado de los backends.
Preferir IPv6

Prioriza la conexión IPv6 del backend sobre el Conexión IPv4 (siempre que haya un backend en buen estado con direcciones IPv6).

Las verificaciones de estado supervisan de forma periódica las conexiones IPv6 e IPv4 de los backends. GFE primero intenta establecer la conexión IPv6. Si la conexión IPv6 está interrumpida o es lenta, GFE usa visitantes felices para recurrir y conectarse a IPv4.

Incluso si una de las conexiones IPv6 o IPv4 está en mal estado, el backend se considera en buen estado, y GFE puede probar ambas conexiones, y los visitantes felices, en última instancia, seleccionan cuál usar.

Solo IPv6

Solo envía tráfico IPv6 a los backends del servicio de backend, sin importar el tráfico del cliente al proxy. Solo IPv6 de estado se usan para comprobar el estado de los backends.

No hay validación para verificar si el tipo de tráfico de backend coincide con la política de selección de direcciones IP. Por ejemplo, si tienes backends solo de IPv4 y seleccionas Only IPv6 como la política de selección de direcciones IP, la configuración genera backends en mal estado porque el tráfico no llega a esos backends y se muestra el código de respuesta HTTP 503 a los clientes.

Encriptación entre el balanceador de cargas y los backends

Para obtener más información sobre la encriptación entre el balanceador de cargas y los backends, consulta Encriptación en los backends.

Distribución del tráfico

Los valores de los siguientes campos del recurso de servicios de backend determinan algunos aspectos del comportamiento del backend:

  • Un modo de balanceo define cómo el balanceador de cargas mide la preparación de backend para solicitudes o conexiones nuevas.
  • Una capacidad de destino define una cantidad máxima de conexiones de destino, una tasa máxima de destino o el uso máximo de CPU de destino.
  • Un escalador de capacidad ajusta la capacidad general disponible sin modificar la capacidad de destino.

Modo de balanceo

El modo de balanceo determina si los backends de un balanceador de cargas o Cloud Service Mesh pueden manejar el tráfico adicional o si están cargados por completo.

Google Cloud tiene tres modos de balanceo:

  • CONNECTION: Determina cómo se distribuye la carga en función de la cantidad total de conexiones que puede controlar el backend.
  • RATE: La cantidad máxima de solicitudes (consultas) de destino por segundo (RPS, QPS). Se puede exceder la cantidad máxima de RPS/QPS si se alcanza o supera la capacidad de todos los backends.
  • UTILIZATION: Determina cómo se distribuye la carga en función del uso de las instancias en un grupo de instancias.

Modos de balanceo disponibles para cada balanceador de cargas

Debes establecer el modo de balanceo cuando agregas un backend al servicio de backend. Los modos de balanceo disponibles para un balanceador de cargas dependen del tipo de balanceador de cargas y de los backends.

Los balanceadores de cargas de red de transferencia requieren el modo de balanceo CONNECTION, pero no admiten la configuración de ninguna capacidad de destino.

Los balanceadores de cargas de aplicaciones admiten los modos de balanceo RATE o UTILIZATION para backends de grupo de instancias, el modo de balanceo RATE para NEG zonales con extremos GCE_VM_IP_PORT, y el modo de balanceo RATE para los NEG híbridos (extremos NON_GCP_PRIVATE_IP_PORT). Para cualquier otro tipo de backend compatible, se debe omitir el modo de balanceo.

  • Para los balanceadores de cargas de aplicaciones clásicos, se selecciona una región en función de la ubicación del cliente y si la región tiene capacidad disponible, según la capacidad de destino del modo de balanceo de cargas. Luego, dentro de una región, la capacidad objetivo del modo de balanceo se usa para calcular las proporciones sobre cuántas solicitudes deben dirigirse a cada backend de la región. Luego, las solicitudes o conexiones se distribuyen según un algoritmo round robin entre las instancias o los extremos dentro del backend.

  • Para los balanceadores de cargas de aplicaciones externos globales, se selecciona una región en función de la ubicación del cliente y de si la región tiene capacidad disponible, según la capacidad de destino del modo de balanceo de cargas. Dentro de una región, la capacidad de destino del modo de balanceo se usa para calcular las proporciones de cuántas solicitudes deben dirigirse a cada backend (grupo de instancias o NEG) de la región. Puedes usar la política de balanceo de cargas de servicio (serviceLbPolicy) y la configuración del backend preferido para influir en la selección de cualquier backend específico dentro de una región. Además, dentro de cada grupo de instancias o NEG, la política de balanceo de cargas (LocalityLbPolicy) determina cómo se distribuye el tráfico en las instancias o extremos dentro del grupo.

  • Duración balanceadores de cargas de aplicaciones internos entre regiones balanceadores de cargas de aplicaciones externos regionales, y balanceadores de cargas de aplicaciones internos regionales, la capacidad objetivo del modo de balanceo se usa para calcular las proporciones sobre cuántas solicitudes deben ir a cada backend (grupo de instancias o NEG) en la región. Dentro de cada grupo de instancias o NEG, la política de balanceo de cargas (LocalityLbPolicy) determina cómo se distribuye el tráfico en las instancias o extremos del grupo. Solo los El balanceador de cargas de aplicaciones interno regional admite el uso de la política de balanceo de cargas de servicio (serviceLbPolicy) y la configuración de backend preferido para influir en la selección de cualquier backend específico dentro de una región.

Los balanceadores de cargas de red de proxy admiten los modos de balanceo CONNECTION o UTILIZATION para backends de grupo de instancias, el modo de balanceo CONNECTION para NEG zonales con extremos GCE_VM_IP_PORT, y el modo de balanceo CONNECTION para los NEG híbridos (extremos NON_GCP_PRIVATE_IP_PORT). Para cualquier otro tipo de backend compatible, se debe omitir el modo de balanceo.

  • Para los balanceadores de cargas de red de proxy externos globales, se selecciona una región en función de la ubicación del cliente y de si la región tiene capacidad disponible, según la capacidad de destino del modo de balanceo de cargas. Dentro de una región, la capacidad de destino del modo de balanceo se usa para calcular las proporciones de cuántas solicitudes deben dirigirse a cada backend (grupo de instancias o NEG) de la región. Puedes usar la política de balanceo de cargas de servicio (serviceLbPolicy) y la configuración del backend preferido para influir en la selección de cualquier backend específico dentro de una región. Además, dentro de cada grupo de instancias o NEG, la política de balanceo de cargas (LocalityLbPolicy) determina cómo se distribuye el tráfico en las instancias o extremos dentro del grupo.

  • Para los balanceadores de cargas de red de proxy internos entre regiones, primero se selecciona la región configurada. Dentro de una región, la capacidad de destino del modo de balanceo se usa para calcular las proporciones de cuántas solicitudes deben dirigirse a cada backend (grupo de instancias o NEG) de la región. Puedes usar la política de balanceo de cargas de servicio (serviceLbPolicy) y la configuración del backend preferido para influir en la selección de cualquier backend específico dentro de una región. Además, dentro de cada grupo de instancias o NEG, la política de balanceo de cargas (LocalityLbPolicy) determina cómo se distribuye el tráfico en las instancias o extremos dentro del grupo.

  • Para los balanceadores de cargas de red de proxy clásicos, se selecciona una región en función de la ubicación del cliente y si la región tiene capacidad disponible, según la capacidad de destino del modo de balanceo de cargas. Luego, dentro de una región, la capacidad de destino del modo de balanceo de cargas se usa para calcular las proporciones sobre cuántas solicitudes o conexiones deben ir a cada backend (grupo de instancias o NEG) en la región. Después de que el balanceador de cargas selecciona un backend, las solicitudes o conexiones se distribuyen según un algoritmo round robin entre las instancias de VM o los extremos de red dentro de cada backend individual.

  • En los balanceadores de cargas de red del proxy externos regionales y los balanceadores de cargas de red del proxy internos regionales, la capacidad de destino del modo de balanceo de cargas se usa para calcular las proporciones de cuántas solicitudes deben dirigirse a cada backend (grupo de instancias o NEG). Dentro de cada grupo de instancias o NEG, la política de balanceo de cargas (localityLbPolicy) determina cómo se distribuye el tráfico en las instancias o extremos del grupo.

En la siguiente tabla, se resumen los modos de balanceo de cargas disponibles para cada combinación de balanceador de cargas y backend.

Tabla: Modos de balanceo disponibles para cada balanceador de cargas
Balanceador de cargas Backends Modos de balanceo disponibles
Balanceador de cargas de aplicaciones Grupos de instancias RATE o UTILIZATION
NEG zonales (extremos GCE_VM_IP_PORT) RATE
NEG híbridos (extremos NON_GCP_PRIVATE_IP_PORT) RATE

Balanceador de cargas de red de proxy

  • Balanceador de cargas de red del proxy externo global
  • Balanceador de cargas de red del proxy clásico
  • Balanceador de cargas de red del proxy externo regional
  • Balanceador de cargas de red de proxy interno regional
  • Balanceador de cargas de red de proxy interno entre regiones
Grupos de instancias CONNECTION o UTILIZATION
NEG zonales (extremos GCE_VM_IP_PORT) CONNECTION

NEG híbridos (extremos NON_GCP_PRIVATE_IP_PORT)

CONNECTION
Balanceador de cargas de red de transferencia Grupos de instancias CONNECTION
NEG zonales (extremos GCE_VM_IP) CONNECTION

Si el uso promedio de todas las VM asociadas con un servicio de backend es inferior al 10%, Google Cloud puede preferir zonas específicas. Esto puede suceder cuando usas grupos de instancias regionales administrados, grupos de instancias administrados zonales en zonas diferentes y grupos de instancias zonales no administrados. Este desequilibrio zonal se resuelve de forma automática a medida que se envía más tráfico al balanceador de cargas.

Para obtener más información, consulta la página gcloud compute backend-services add-backend.

Capacidad de destino

Cada modo de balanceo tiene una capacidad de destino correspondiente, que define uno de los siguientes valores máximos de destino:

  • Número de conexiones
  • Frecuencia
  • Uso de CPU

En cada modo de balanceo, la capacidad de destino no es un disyuntor. Un balanceador de cargas puede exceder el máximo en ciertas condiciones, por ejemplo, si todas las VM o los extremos de backend lo alcanzaron.

Modo de balanceo de conexiones

En el modo de balanceo CONNECTION, la capacidad de destino define una cantidad máxima de destino de conexiones abiertas. Excepto por los balanceadores de cargas de red de transferencia internos y los balanceadores de cargas de red de transferencia externos, debes usar una de las siguientes opciones de configuración para especificar una cantidad máxima de conexiones de destino:

  • max-connections-per-instance (por VM): Cantidad promedio de conexiones de destino para una sola VM.
  • max-connections-per-endpoint (por extremo en un NEG zonal): Cantidad promedio de conexiones de destino para un solo extremo.
  • max-connections (por NEG zonales y para grupos de instancias zonales): Cantidad promedio de conexiones de destino en todo el NEG o grupo de instancias. Para los grupos de instancias administrados regionales, usa max-connections-per-instance en su lugar.

En la siguiente tabla, se muestra cómo el parámetro de capacidad de destino define los siguientes aspectos:

  • La capacidad de destino de todo el backend
  • La capacidad de destino esperada para cada instancia o extremo
Tabla: Capacidad de destino para los backends con el modo de balanceo CONNECTION
Tipo de backend Capacidad de destino
Si especificas Capacidad completa del backend Capacidad esperada por instancia o extremo
Grupo de instancias
N instancias,
H en buen estado
max-connections-per-instance=X X × N (X × N)/H
NEG zonales
N extremos,
H en buen estado
max-connections-per-endpoint=X X × N (X × N)/H
Grupos de instancias
(excepto los grupos de instancias administrados regionales)

H instancias en buen estado
max-connections=Y Y Y/H

Como se ilustra, la configuración max-connections-per-instance y max-connections-per-endpoint son proxies para calcular una cantidad máxima de conexiones de destino en todo el grupo de instancias de VM o en el NEG zonal completo:

  • En un grupo de instancias de VMs con instancias N, configurar max-connections-per-instance=X tiene el mismo significado que configurar max-connections=X × N.
  • En un NEG zonal con extremos N, la configuración de max-connections-per-endpoint=X tiene el mismo significado que la opción de configuración max-connections=X × N.

Modo de balanceo de tarifas

Para el modo de balanceo RATE, debes definir la capacidad de destino mediante uno de los siguientes parámetros:

  • max-rate-per-instance (por VM): Proporciona una tasa promedio de solicitudes HTTP de destino para una sola VM.
  • max-rate-per-endpoint (por extremo en un NEG zonal): Proporciona una tasa promedio de solicitudes HTTP de destino para un solo extremo.
  • max-rate (por NEG zonales y para grupos de instancias zonales): Proporciona una tasa promedio de solicitudes HTTP de destino para todo el NEG o todo grupo de instancias. Para los grupos de instancias administrados regionales, usa max-rate-per-instance en su lugar.

En la siguiente tabla, se muestra cómo el parámetro de capacidad de destino define los siguientes aspectos:

  • La capacidad de destino de todo el backend
  • La capacidad de destino esperada para cada instancia o extremo
Tabla: Capacidad de destino para backends mediante el modo de balanceo RATE
Tipo de backend Capacidad de destino
Si especificas Capacidad completa del backend Capacidad esperada por instancia o extremo
Grupo de instancias
N instancias,
H en buen estado
max-rate-per-instance=X X × N (X × N)/H
NEG zonales
N extremos,
H en buen estado
max-rate-per-endpoint=X X × N (X × N)/H
Grupos de instancias
(excepto los grupos de instancias administrados regionales)

H instancias en buen estado
max-rate=Y Y Y/H

Como se ilustra, la configuración max-rate-per-instance y max-rate-per-endpoint son proxies para calcular una tasa máxima de solicitudes HTTP de destino en todo el grupo de instancias o en el NEG zonal completo:

  • En un grupo de instancias con instancias N, configurar max-rate-per-instance=X tiene el mismo significado que configurar max-rate=X × N.
  • En un NEG zonal con extremos N, la configuración de max-rate-per-endpoint=X tiene el mismo significado que la opción de configuración max-rate=X × N.

Modo de balanceo de uso

El modo de balanceo UTILIZATION no tiene una capacidad de destino requerida. Tienes una serie de opciones que dependen del tipo de backend, como se resume en la tabla de la sección siguiente.

La capacidad de destino max-utilization solo se puede especificar por grupo de instancias y no se puede aplicar a una VM específica del grupo.

El modo de balanceo UTILIZATION no tiene una capacidad de destino requerida. Cuando usas la consola de Google Cloud para agregar un grupo de instancias de backend a un servicio de backend, la consola de Cloud establece el valor de max-utilization en 0.8 (80%) si el modo de balanceo UTILIZATION está seleccionado. Además de max-utilization, el modo de balanceo UTILIZATION admite capacidades de destino más complejas, como se resume en la tabla en la siguiente sección.

Cambia el modo de balanceo de un balanceador de cargas

En algunos balanceadores de cargas o sus configuraciones, no puedes cambiar el modo de balanceo porque el servicio de backend tiene solo un modo de balanceo posible. Para otros, según el backend usado, puedes cambiar el modo de balanceo porque hay más de un modo disponible para esos servicios de backend.

A fin de ver qué modos de balanceo son compatibles para cada balanceador de cargas, consulta Tabla: Modos de balanceo disponibles para cada balanceador de cargas.

Modos de balanceo y configuración de la capacidad objetivo

En el caso de los productos que admiten una especificación de capacidad objetivo, esta no es un disyuntor. Cuando se alcanza el máximo de capacidad objetivo configurado en una zona determinada, las solicitudes o conexiones nuevas se distribuyen a otras zonas que no están procesando solicitudes o conexiones con la capacidad objetivo. Si todas las zonas alcanzaron la capacidad objetivo, las solicitudes o conexiones nuevas se distribuyen por desbordamiento.

Balanceadores de cargas de aplicaciones y Cloud Service Mesh

En esta tabla, se enumeran las combinaciones de modo de balanceo y capacidad objetivo disponibles para los balanceadores de cargas de aplicaciones y Cloud Service Mesh.

Tabla: Combinaciones de modo de balanceo y capacidad objetivo para los balanceadores de cargas de aplicaciones y Cloud Service Mesh
Tipo de backend Modo de balanceo Especificación de la capacidad objetivo
Grupos de instancias
  • zonales no administrados
  • zonales administrados
  • regionales administrados
RATE Debes especificar uno de los siguientes:
  • max-rate
    (solo es compatible con grupos de instancias zonales)
  • max-rate-per-instance
    (compatible con todos los grupos de instancias)
UTILIZATION De manera opcional, puedes especificar una de las siguientes opciones:
  • (1) max-utilization
  • (2) max-rate
    (solo es compatible con grupos de instancias zonales)
  • (3) max-rate-per-instance
    (compatible con todos los grupos de instancias)
  • (1) y (2) combinadas.
  • (1) y (3) combinadas.

NEG zonales

  • GCP_VM_IP_PORT

NEG híbridos

  • NON_GCP_PRIVATE_IP_PORT
RATE Debes especificar uno de los siguientes:
  • max-rate por NEG zonal
  • max-rate-per-endpoint

Balanceadores de cargas de red de proxy

En esta tabla, se enumeran las combinaciones de modo de balanceo y capacidad objetivo disponibles para los balanceadores de cargas de red de proxy.

Tabla: Combinaciones de modo de balanceo y capacidad objetivo para los balanceadores de cargas de red de proxy
Tipo de backend Modo de balanceo Especificación de la capacidad objetivo
Grupos de instancias
  • zonales no administrados
  • zonales administrados
  • regionales administrados
CONNECTION Debes especificar uno de los siguientes:
  • max-connections
    (solo es compatible con grupos de instancias zonales)
  • max-rate-per-instance
    (compatible con todos los grupos de instancias)
UTILIZATION De manera opcional, puedes especificar una de las siguientes opciones:
  • (1) max-utilization
  • (2) max-connections
    (solo es compatible con grupos de instancias zonales)
  • (3) max-connections-per-instance
    (compatible con todos los grupos de instancias)
  • (1) y (2) combinadas.
  • (1) y (3) combinadas.

NEG zonales

  • GCP_VM_IP_PORT

NEG híbridos

  • NON_GCP_PRIVATE_IP_PORT
CONNECTION Debes especificar uno de los siguientes:
  • max-connections por NEG zonal
  • max-connections-per-endpoint

Balanceadores de cargas de red de transferencia

En esta tabla, se enumeran las combinaciones de modo de balanceo y capacidad objetivo disponibles para los balanceadores de cargas de red de transferencia.

Tabla: Combinaciones de modo de balanceo y capacidad objetivo para los balanceadores de cargas de red de transferencia
Tipo de backend Modo de balanceo Especificación de la capacidad objetivo
Grupos de instancias
  • zonales no administrados
  • zonales administrados
  • regionales administrados
CONNECTION No puedes especificar una cantidad objetivo máxima de conexiones.
NEG zonales
  • GCP_VM_IP
CONNECTION No puedes especificar una cantidad objetivo máxima de conexiones.

Escalador de capacidad

Usa el escalador de capacidad para escalar la capacidad de destino (uso máximo, tasa máxima o cantidad máxima de conexiones) sin cambiar la capacidad de destino.

Para ver la documentación de referencia de Google Cloud, consulta lo siguiente:

Puedes ajustar el escalador de capacidad para escalar la capacidad de destino efectiva sin cambiar de forma explícita uno de los parámetros --max-*.

Puedes configurar el escalador de capacidad con cualquiera de estos valores:

  • El valor predeterminado es 1, lo que significa que el grupo entrega hasta el 100% de su capacidad configurada (según balancingMode).
  • Un valor de 0 significa que el grupo se desvía por completo y ofrece el 0% de su capacidad disponible. No puedes establecer una configuración de 0 cuando solo hay un backend conectado al servicio de backend.
  • Un valor de 0.1 (10%) a 1.0 (100%).

En los siguientes ejemplos, se demuestra cómo funciona el escalador de capacidad junto con la configuración de capacidad objetivo.

  • Si el modo de balanceo esRATE, max-rate se configura como 80 RPS y el escalador de capacidad 1.0, la capacidad disponible también es80 RPS.

  • Si el modo de balanceo es RATE, max-rate se establece en 80 RPS y el escalador en 0.5, la capacidad disponible es 40 RPS (0.5 times 80).

  • Si el modo de balanceo es RATE, max-rate se establece en 80 RPS y el escalador en 0.0, y la capacidad disponible es cero (0).

Política de balanceo de cargas de servicios

Una política de balanceo de cargas de servicio (serviceLbPolicy) es un recurso asociado con el servicio de backend del balanceador de cargas. Te permite personalizar los parámetros que influyen en cómo se distribuye el tráfico dentro de los backends asociados con un servicio de backend:

  • Personaliza el algoritmo de balanceo de cargas que se usa para determinar cómo se distribuye el tráfico entre regiones o zonas
  • Habilita el vaciado de capacidad automática para que el balanceador de cargas pueda vaciar rápidamente el tráfico de los backends en mal estado.

Además, puedes designar backends específicos como backends preferidos. Estos backends deben usarse en toda su capacidad (es decir, la capacidad objetivo especificada por el modo de balanceo del backend) antes de que se envíen las solicitudes a los backends restantes.

Para obtener más información, consulta Optimizaciones avanzadas del balanceo de cargas con una política de balanceo de cargas de servicios.

Política de balanceo de cargas de la localidad

Para un servicio de backend, la distribución del tráfico se basa en un modo de balanceo y una política de localidad del balanceo de cargas. El modo de balanceo determina la fracción del tráfico que se debe enviar a cada backend (grupo de instancias o NEG ). Luego, la política de localidad de balanceo de cargas (LocalityLbPolicy) determina cómo se distribuye el tráfico entre las instancias o los extremos dentro de cada zona. En los grupos de instancias administrados regionales, la política de localidad se aplica a cada zona constituyente.

La política de localidad de balanceo de cargas se configura por servicio de backend. Podrás configurar los siguientes parámetros:

  • ROUND_ROBIN (predeterminado): Es la configuración predeterminada de la política de localidad de balanceo de cargas en la que el balanceador de cargas selecciona un backend en buen estado en orden de reparto de turnos.

  • LEAST_REQUEST: Un algoritmo O(1) en el que el balanceador de cargas selecciona dos hosts en buen estado aleatorios y elige el host que tiene menos solicitudes activas.

  • RING_HASH: Este algoritmo implementa un hash coherente en los backends. El algoritmo tiene la propiedad de que la adición o eliminación de un host de un conjunto de hosts N solo afecta a 1/N de las solicitudes.

  • RANDOM: El balanceador de cargas selecciona un host en buen estado de forma aleatoria.

  • ORIGINAL_DESTINATION: El balanceador de cargas selecciona un backend según los metadatos de conexión del cliente. Las conexiones se abren a la dirección IP de destino original especificada en la solicitud del cliente entrante, antes de que la solicitud se redirecciona al balanceador de cargas.

    ORIGINAL_DESTINATION no es compatible con los balanceadores de cargas de aplicaciones externos regionales ni globales.

  • MAGLEV: Implementa un hash coherente en los backends y se puede usar como reemplazo de la política RING_HASH. Maglev no es tan estable como RING_HASH, pero tiene tiempos de compilación de búsqueda de tabla y tiempos de selección de host más rápidos. Para obtener más información sobre Maglev, consulta el documento informativo de Maglev.

  • WEIGHTED_MAGLEV: Implementa el balanceo de cargas ponderado por instancia mediante las ponderaciones que informan las verificaciones de estado. Si se usa esta política, el servicio de backend debe configurar una verificación de estado no heredada basada en HTTP, y se espera que las respuestas de la verificación de estado contengan el campo de encabezado de respuesta HTTP no estándar, X-Load-Balancing-Endpoint-Weight, para especificar las ponderaciones por instancia. Las decisiones de equilibrio de carga se toman en función de las ponderaciones por instancia que se informan en las últimas respuestas de la verificación de estado procesadas, siempre y cuando cada instancia informe una ponderación válida o UNAVAILABLE_WEIGHT. De lo contrario, el balanceo de cargas seguirá teniendo el mismo peso.

    WEIGHTED_MAGLEV solo es compatible con los balanceadores de cargas de red de transferencia externos. Para ver un ejemplo, consulta Configura el balanceo de cargas ponderado para los balanceadores de cargas de red de transferencia externos.

La configuración de una política de localidad de balanceo de cargas solo es compatible con los servicios de backend que se usan con los siguientes balanceadores de cargas:

  • Balanceador de cargas de aplicaciones externo global
  • Balanceador de cargas de aplicaciones externo regional
  • Balanceador de cargas de aplicaciones interno entre regiones
  • Balanceador de cargas de aplicaciones interno regional
  • Balanceador de cargas de red de transferencia externo

Ten en cuenta que el valor predeterminado efectivo de la política de localidad del balanceo de cargas (localityLbPolicy) cambia según la configuración de afinidad de sesión. Si la afinidad de sesión no está configurada, es decir, si permanece en el valor predeterminado de NONE, el valor predeterminado para localityLbPolicy es ROUND_ROBIN. Si la afinidad de sesión se establece en un valor distinto de NONE, el valor predeterminado para localityLbPolicy es MAGLEV.

Para configurar una política de localidad de balanceo de cargas, puedes usar la consola de Google Cloud, gcloud (--locality-lb-policy) o la API (localityLbPolicy).

Cloud Service Mesh y distribución de tráfico

Cloud Service Mesh también usa recursos de servicio de backend. En particular, Cloud Service Mesh usa servicios de backend cuyo esquema de balanceo de cargas es INTERNAL_SELF_MANAGED. Para un servicio de backend interno autoadministrado, la distribución de tráfico se basa en la combinación de un modo de balanceo de cargas y una política de balanceo de cargas. El servicio de backend dirige el tráfico a un backend según el modo de balanceo del backend. Luego, Cloud Service Mesh distribuye el tráfico según una política de balanceo de cargas.

Los servicios de backend internos autoadministrados son compatibles con los siguientes modos de balanceo:

  • UTILIZATION, si todos los backends son grupos de instancias
  • RATE, si todos los backends son grupos de instancias o NEG zonales

Si eliges el modo de balanceo RATE, debes especificar una tasa máxima, una tasa máxima por instancia o una tasa máxima por extremo.

Para obtener más información acerca de Cloud Service Mesh, consulta Conceptos de Cloud Service Mesh.

Subconjuntos de backend

La subdivisión de backends es una función opcional que mejora el rendimiento y la escalabilidad mediante la asignación de un subconjunto de backends a cada una de las instancias de proxy.

La subdivisión de backends es compatible con lo siguiente:

  • Balanceador de cargas de aplicaciones interno regional
  • Balanceador de cargas de red de transferencia interno

Subconjuntos de backends para balanceadores de cargas de aplicaciones internos regionales

El balanceador de cargas de aplicaciones interno entre regiones no admite la subdivisión de backends.

Para los balanceadores de cargas de aplicaciones internos regionales, la subdivisión de backends asigna automáticamente solo una subdivisión de los backends dentro del servicio de backend regional a cada instancia de proxy. De forma predeterminada, cada instancia de proxy abre conexiones con todos los backends dentro de un servicio de backend. Cuando la cantidad de instancias de proxy y los backends son conexiones grandes de apertura a todos los backends, puede haber problemas de rendimiento.

Mediante la habilitación del subconjunto, cada proxy solo abre conexiones a un subconjunto de backends, lo que reduce la cantidad de conexiones que se mantienen abiertas a cada backend. Reducir la cantidad de conexiones abiertas a cada backend puede mejorar el rendimiento de los backends y los proxies.

En el siguiente diagrama, se muestra un balanceador de cargas con dos proxies. Sin la subconfiguración de backend, el tráfico de ambos proxies se distribuye a todos los backends en el servicio de backend 1. Con el subconjunto del backend habilitado, el tráfico de cada proxy se distribuye a un subconjunto de los backends. El tráfico del proxy 1 se distribuye a los backends 1 y 2, y el tráfico del proxy 2 se distribuye a los backends 3 y 4.

Compara el balanceador de cargas de aplicaciones interno sin y con subconjuntos de backend.
Compara el balanceador de cargas de aplicaciones interno sin y con subconjuntos de backend (haz clic para ampliar).

Además, puedes definir mejor el tráfico del balanceo de cargas en los backends si configuras la política localityLbPolicy. Para obtener más información, consulta Políticas de tráfico.

Si deseas leer sobre la configuración de los subconjuntos de backends para los balanceadores de cargas de aplicaciones internos, consulta Configura los subconjuntos de backends.

Advertencias relacionadas con los subconjuntos de backends para el balanceador de cargas de aplicaciones interno
  • Aunque los subconjuntos de backend están diseñados para garantizar que todas las instancias de backend se mantengan bien usadas, pueden generar sesgos en la cantidad de tráfico que recibe cada backend. Se recomienda configurar localityLbPolicy en LEAST_REQUEST para los servicios de backend sensibles al balanceo de cargas de backend.
  • Si se habilita o se inhabilita la subdivisión, se interrumpen las conexiones existentes.
  • La subdivisión de backends requiere que la afinidad de sesión sea NONE (un hash de 5 tuplas). Otras opciones de afinidad de sesión solo se pueden usar si la subdivisión de backends está inhabilitada. Los valores predeterminados de las marcas --subsetting-policy y --session-affinity son NONE, y solo uno de ellos a la vez se puede establecer en un valor diferente.

Subconjuntos de backends para el balanceador de cargas de red de transferencia interno

Los subconjuntos de backends para los balanceadores de cargas de red de transferencia internos te permiten escalar tu balanceador de cargas de red de transferencia interno a fin de admitir una mayor cantidad de instancias de VM de backend por servicio de backend interno.

Para obtener información sobre cómo la subdivisión afecta este límite, consulta la sección “Servicios de backend” de las cuotas y los límites de recursos del balanceo de cargas.

De forma predeterminada, la subdivisión está inhabilitada, lo que limita el servicio de backend a una distribución de hasta 250 instancias de backend o extremos. Si tu servicio de backend necesita admitir más de 250 backends, puedes habilitar la subdivisión. Cuando se habilita la subdivisión, se selecciona un subconjunto de instancias de backend para cada conexión de cliente.

En el siguiente diagrama, se muestra un modelo reducido de la diferencia entre estos dos modos de operación.

Compara un balanceador de cargas de red de transferencia interno sin y con subconjuntos.
Compara un balanceador de cargas de red de transferencia interno sin y con subconjuntos (haz clic para ampliar)

Sin la subdivisión, el conjunto completo de backends en buen estado se usa mejor, y las conexiones de clientes nuevas se distribuyen entre todos los backends en buen estado según la distribución de tráfico. La subposición impone restricciones de balanceo de cargas, pero permite que el balanceador de cargas admita más de 250 backends.

Para obtener instrucciones de configuración, consulta Subdivisión.

Advertencias relacionadas con los subconjuntos de backends para el balanceador de cargas de red de transferencia interno
  • Cuando la subdivisión está habilitada, no todos los backends recibirán tráfico de un remitente determinado, incluso cuando la cantidad de backends sea pequeña.
  • Para obtener la cantidad máxima de instancias de backend cuando los subconjuntos están habilitados, consulta la página de cuotas.
  • Solo la afinidad de sesión de 5 tuplas es compatible con la subdivisión.
  • La duplicación de paquetes no es compatible con la subdivisión.
  • Si se habilita o se inhabilita la subdivisión, se interrumpen las conexiones existentes.
  • Si los clientes locales necesitan acceder a un balanceador de cargas de red de transferencia interno, los subconjuntos pueden reducir de forma sustancial la cantidad de backends que reciben conexiones de tus clientes locales. Esto se debe a que la región del túnel de Cloud VPN o el adjunto de VLAN de Cloud Interconnect determina el subconjunto de backends del balanceador de cargas. Todos los extremos de Cloud VPN y Cloud Interconnect en una región específica usan el mismo subconjunto. Se usan diferentes subconjuntos en diferentes regiones.

Precios de la división de backend

No se aplican cargos por el uso de división de backend. Para obtener más información, consulta Todos los precios de herramientas de redes.

Afinidad de sesión

La afinidad de sesión te permite controlar cómo el balanceador de cargas selecciona backends para conexiones nuevas de manera predecible, siempre que la cantidad de backends en buen estado se mantenga constante. Esto es útil para las aplicaciones que necesitan que varias solicitudes de un usuario determinado se dirijan al mismo backend o extremo. Estas aplicaciones incluyen servidores con estado que usan la publicación de anuncios, los juegos o los servicios con almacenamiento en caché interno intenso.

Los balanceadores de cargas de Google Cloud proporcionan afinidad de sesión en función del mejor esfuerzo. Factores como cambiar los estados de la verificación de estado del backend, agregar o quitar backends, cambios en las ponderaciones del backend (incluida la habilitación o inhabilitación del balanceo ponderado) o cambios en el contenido total del backend, según la medición del modo de balanceo, pueden interrumpir la afinidad de sesión.

El balanceo de cargas con afinidad de sesión funciona bien cuando hay una distribución razonable grande de conexiones únicas. Razonablemente grande significa al menos varias veces la cantidad de backends. Probar un balanceador de cargas con una cantidad pequeña de conexiones no dará como resultado una representación precisa de la distribución de las conexiones de cliente entre backends.

De forma predeterminada, todos los balanceadores de cargas de Google Cloud seleccionan backends mediante un hash quíntuple (--session-affinity=NONE), de la siguiente manera:

  • Dirección IP de origen del paquete
  • El puerto de origen del paquete (si está presente en el encabezado del paquete)
  • Dirección IP de destino del paquete
  • El puerto de destino del paquete (si está presente en el encabezado del paquete)
  • Protocolo del paquete

Para los balanceadores de cargas de paso, las conexiones nuevas se distribuyen a extremos o instancias de backend en buen estado (en el grupo activo, si se configura una política de conmutación por error). Puedes controlar lo siguiente:

Para los balanceadores de cargas basados en proxy, siempre que la cantidad de instancias o extremos de backend en buen estado permanezca constante y siempre que la instancia o el extremo de backend seleccionado no esté al máximo de su capacidad, las solicitudes o conexiones posteriores van al mismo extremo o VM de backend. La capacidad de destino del modo de balanceo determina cuándo el backend alcanza el máximo de su capacidad.

En la siguiente tabla, se muestran las opciones de afinidad de sesión compatibles con cada producto:

Tabla: Configuración de afinidad de sesión compatible
Producto Opciones de afinidad de sesión
  • Ninguno (NONE)
  • IP de cliente (CLIENT_IP)
  • Cookie generada (GENERATED_COOKIE)
  • Campo de encabezado (HEADER_FIELD)
  • Cookie HTTP (HTTP_COOKIE)
  • Afinidad basada en cookies con estado (STRONG_COOKIE_AFFINITY)

También ten en cuenta lo siguiente:

  • El valor predeterminado efectivo de la política de localidad del balanceo de cargas (localityLbPolicy) cambia según la configuración de afinidad de sesión. Si la afinidad de sesión no está configurada, es decir, si permanece en el valor predeterminado de NONE, el valor predeterminado para localityLbPolicy es ROUND_ROBIN. Si la afinidad de sesión se establece en un valor distinto de NONE, el valor predeterminado para localityLbPolicy es MAGLEV.
  • Para el balanceador de cargas de aplicaciones externo, no configures la afinidad de sesión si usas la división de tráfico ponderada. Si lo haces, la configuración de división de tráfico ponderada tiene prioridad.
Balanceador de cargas de aplicaciones clásico
  • Ninguno (NONE)
  • IP de cliente (CLIENT_IP)
  • Cookie generada (GENERATED_COOKIE)
  • Ninguno (NONE)
  • IP de cliente (CLIENT_IP)
  • Cookie generada (GENERATED_COOKIE)
  • Campo de encabezado (HEADER_FIELD)
  • Cookie HTTP (HTTP_COOKIE)
  • Afinidad basada en cookies con estado (STRONG_COOKIE_AFFINITY)

También ten en cuenta lo siguiente:

  • El valor predeterminado efectivo de la política de localidad del balanceo de cargas (localityLbPolicy) cambia según la configuración de afinidad de sesión. Si la afinidad de sesión no está configurada, es decir, si permanece en el valor predeterminado de NONE, el valor predeterminado para localityLbPolicy es ROUND_ROBIN. Si la afinidad de sesión se establece en un valor distinto de NONE, el valor predeterminado para localityLbPolicy es MAGLEV.
  • Para el balanceador de cargas de aplicaciones interno, no configures la afinidad de sesión si usas la división de tráfico ponderada. Si lo haces, la configuración de división de tráfico ponderada tiene prioridad.
Balanceador de cargas de red de transferencia interno
  • Ninguno (NONE)
  • IP de cliente, sin destino (CLIENT_IP_NO_DESTINATION)
  • IP de cliente, IP de destino (CLIENT_IP)
  • IP de cliente, IP de destino, protocolo (CLIENT_IP_PROTO)
  • IP de cliente, puerto de cliente, IP de destino, puerto de destino, protocolo (CLIENT_IP_PORT_PROTO)

Para obtener información específica sobre el balanceador de cargas de red de transferencia interno y la afinidad de sesión, consulta la descripción general del balanceador de cargas de red de transferencia interna.

Balanceador de cargas de red de transferencia externo*
  • Ninguno (NONE)
  • IP de cliente, IP de destino (CLIENT_IP)
  • IP de cliente, IP de destino, protocolo (CLIENT_IP_PROTO)
  • IP de cliente, puerto de cliente, IP de destino, puerto de destino, protocolo (CLIENT_IP_PORT_PROTO)

Para obtener información específica sobre el balanceador de cargas de red de transferencia externo y la afinidad de sesión, consulta la descripción general del balanceador de cargas de red de transferencia externo de TCP/UDP externo.

  • Balanceador de cargas de red del proxy externo global
  • Balanceador de cargas de red del proxy clásico
  • Balanceador de cargas de red del proxy externo regional
  • Balanceador de cargas de red de proxy interno regional
  • Balanceador de cargas de red de proxy interno entre regiones
  • Ninguno (NONE)
  • IP de cliente (CLIENT_IP)
Cloud Service Mesh
  • Ninguno (NONE)
  • IP de cliente (CLIENT_IP)
  • Cookie generada (GENERATED_COOKIE) (solo protocolos HTTP)
  • Campo de encabezado (HEADER_FIELD) (solo protocolos HTTP)
  • Cookie HTTP (HTTP_COOKIE) (solo protocolos HTTP)

* En esta tabla se documentan los afinidades de sesión que admiten los balanceadores de cargas de red de transferencia externos basados en servicios de backend. Los balanceadores de cargas de red de transferencia externos basados en grupos de destino no usan servicios de backend. En su lugar, debes establecer la afinidad de sesión para los balanceadores de cargas de red de transferencia externo a través del parámetro sessionAffinity en grupos de destino.

Ten en cuenta lo siguiente cuando configures la afinidad de sesión:

  • No uses la afinidad de sesión para fines de autenticación o seguridad. La afinidad de sesión, excepto la afinidad de sesión basada en cookies con estado, está diseñada para interrumpirse cada vez que cambia la cantidad de backends activos y en buen estado. Para obtener más información, consulta Pérdida de afinidad de sesión.

  • Los valores predeterminados de las marcas --session-affinity y --subsetting-policy son NONE, y solo uno de ellos a la vez se puede establecer en un valor diferente.

Tipos de afinidad de sesión

En las siguientes secciones, se analizan los diferentes tipos de afinidad de sesión:

IP de cliente sin afinidad de destino

La afinidad de sesión de IP de cliente, sin destino (CLIENT_IP_NO_DESTINATION) es un hash de una tupla que se basa solo en la dirección IP de origen de cada paquete recibido. Esta afinidad de sesión solo está disponible para los balanceadores de cargas de red de transferencia internos.

Esta opción puede ser útil en situaciones en las que necesitas que la misma VM de backend procese todos los paquetes de un cliente, en función solo de la dirección IP de origen del paquete, sin importar la dirección IP de destino del paquete. Estas situaciones suelen surgir cuando un balanceador de cargas de red de transferencia interno es el próximo salto de una ruta estática. Para obtener más detalles, consulta Afinidad de sesión y balanceadores de cargas de red de transferencia internos de próximo salto.

Afinidad de IP de cliente

La afinidad de sesión de IP de cliente (CLIENT_IP) es un hash de dos tuplas creado a partir de las direcciones IP de origen y destino del paquete. La afinidad de sesión de IP de cliente está disponible para todos los balanceadores de cargas de Google Cloud que usan servicios de backend. Los balanceadores de cargas de red de transferencia externos llaman a esta opción de afinidad de sesión IP de cliente, IP de destino.

Cuando uses la afinidad de IP de cliente, ten en cuenta lo siguiente:

  • La dirección IP de destino del paquete solo es la misma que la dirección IP de la regla de reenvío del balanceador de cargas si el paquete se envía directamente al balanceador de cargas.

  • Los paquetes que se enrutan a un balanceador de cargas de red de transferencia interno de próximo salto a través de una ruta estática tienen direcciones IP de destino que no coinciden con la dirección IP de la regla de reenvío del balanceador de cargas. Para obtener detalles importantes, consulta Afinidad de sesión y balanceadores de cargas de red de transferencia internos de próximo salto.

  • Es posible que la dirección IP de origen del paquete no coincida con una dirección IP asociada con el cliente original si un sistema de proxy o NAT intermedio procesa el paquete antes de entregarlo a un balanceador de cargas de Google Cloud. En situaciones en las que muchos clientes comparten la misma dirección IP de origen efectiva, es posible que algunas VMs de backend reciban más conexiones o solicitudes que otras.

Cuando usas la afinidad basada en cookies generadas, el balanceador de cargas incluye una cookie HTTP en el encabezado Set-Cookie en respuesta a la solicitud HTTP inicial.

El nombre de la cookie generada varía según el tipo de balanceador de cargas. Los siguientes productos admiten cookies generadas:

Producto Nombre de cookie
Balanceadores de cargas de aplicaciones externos globales GCLB
Balanceadores de cargas de aplicaciones clásicos GCLB
Balanceadores de cargas de aplicaciones regionales externos GCILB
Balanceadores de cargas de aplicaciones internos entre regiones GCILB
Balanceadores de cargas de aplicaciones internos regionales GCILB
Cloud Service Mesh GCILB

El atributo de ruta de la cookie generada siempre es una barra diagonal (/), por lo que se aplica a todos los servicios de backend en el mismo mapa de URL, siempre y cuando los otros servicios de backend también usen la afinidad de cookies generada.

Puedes configurar el valor del tiempo de actividad (TTL) de la cookie entre 0 y 1,209,600 segundos (inclusive) con el parámetro del servicio de backend affinityCookieTtlSec. Si no se especifica affinityCookieTtlSec, el valor de TTL predeterminado es 0.

Cuando el cliente incluye la cookie de afinidad de sesión generada en el encabezado de solicitud Cookie de las solicitudes HTTP, el balanceador de cargas dirige esas solicitudes a la misma instancia o extremo de backend, siempre que la cookie de afinidad de sesión siga siendo válida. Para ello, se asigna el valor de la cookie a un índice que hace referencia a una instancia o un extremo de backend específicos, y se garantiza que se cumplan los requisitos de afinidad de sesión de la cookie generada.

Para usar la afinidad de cookie generada, configura el siguiente modo de balanceo y la configuración de localityLbPolicy:

  • Para los grupos de instancias de backend, usa el modo de balanceo RATE.
  • Para el localityLbPolicy del servicio de backend, usa RING_HASH o MAGLEV. Si no configuras localityLbPolicy de forma explícita, el balanceador de cargas usa MAGLEV como valor predeterminado implícito.

Para obtener más información, consulta Pérdida de afinidad de sesión.

Afinidad de campo de encabezado

Con la afinidad de campo de encabezado, las solicitudes se enrutan a los backends según el valor del encabezado HTTP en el campo consistentHash.httpHeaderName del servicio de backend. Para distribuir solicitudes en todos los backends disponibles, cada cliente debe usar un valor de encabezado HTTP diferente.

Los siguientes balanceadores de cargas usan la afinidad de campo de encabezado:

  • Cloud Service Mesh
  • Balanceador de cargas de aplicaciones interno entre regiones
  • Balanceador de cargas de aplicaciones externo global
  • Balanceador de cargas de aplicaciones externo regional
  • Balanceador de cargas de aplicaciones interno regional

La afinidad de campo de encabezado es compatible cuando se cumplen las siguientes condiciones:

  • La política de localidad del balanceo de cargas es RING_HASH o MAGLEV.
  • El consistentHash del servicio de backend especifica el nombre del encabezado HTTP (httpHeaderName).

Para obtener información sobre qué productos admiten la afinidad de campo de encabezado, consulta Tabla: Configuración de afinidad de sesión compatible.

Cuando usas la afinidad basada en cookies HTTP, el balanceador de cargas incluye una cookie HTTP en el encabezado Set-Cookie en respuesta a la solicitud HTTP inicial. Especifica el nombre, la ruta de acceso y el tiempo de actividad (TTL) de la cookie.

Los siguientes productos admiten la afinidad basada en cookies HTTP:

  • Todos los balanceadores de cargas de aplicaciones
  • Cloud Service Mesh

Puedes configurar los valores de TTL de la cookie con segundos, fracciones de segundo (como nanosegundos) o ambos segundos más fracciones de segundo (como nanosegundos) con los siguientes parámetros del servicio de backend y valores válidos:

  • consistentHash.httpCookie.ttl.seconds se puede establecer en un valor entre 0 y 315576000000 inclusive.
  • consistentHash.httpCookie.ttl.nanos se puede establecer en un valor entre 0 y 999999999 inclusive. Como las unidades son nanosegundos, 999999999 significa .999999999 segundos.

Si no se especifican consistentHash.httpCookie.ttl.seconds ni consistentHash.httpCookie.ttl.nanos, se usa el valor del parámetro del servicio de backend affinityCookieTtlSec. Si no se especifica affinityCookieTtlSec, el valor de TTL predeterminado es 0.

Cuando el cliente incluye la cookie de afinidad de sesión HTTP en el encabezado de solicitud Cookie de las solicitudes HTTP, el balanceador de cargas dirige esas solicitudes a la misma instancia o extremo de backend, siempre que la cookie de afinidad de sesión siga siendo válida. Para ello, se asigna el valor de la cookie a un índice que hace referencia a una instancia o un extremo de backend específicos, y se asegura de que se cumplan los requisitos de afinidad de sesión de la cookie generada.

Para usar la afinidad de cookie HTTP, configura el siguiente modo de equilibrio y la configuración de localityLbPolicy:

  • Para los grupos de instancias de backend, usa el modo de balanceo RATE.
  • Para el localityLbPolicy del servicio de backend, usa RING_HASH o MAGLEV. Si no configuras localityLbPolicy de forma explícita, el balanceador de cargas usa MAGLEV como valor predeterminado implícito.

Para obtener más información, consulta Pérdida de afinidad de sesión.

Afinidad de sesión basada en cookies con estado

Cuando usas la afinidad basada en cookies con estado, el balanceador de cargas incluye una cookie HTTP en el encabezado Set-Cookie en respuesta a la solicitud HTTP inicial. Especifica el nombre, la ruta de acceso y el tiempo de actividad (TTL) de la cookie.

Todos los balanceadores de cargas de aplicaciones, excepto los balanceadores de cargas de aplicaciones clásicos, admiten la afinidad basada en cookies con estado.

Puedes configurar los valores de TTL de la cookie con segundos, fracciones de segundo (como nanosegundos) o ambos segundos más fracciones de segundo (como nanosegundos). La duración representada por strongSessionAffinityCookie.ttl no se puede establecer en un valor que represente más de dos semanas (1,209,600 segundos).

El valor de la cookie identifica una instancia o un extremo de backend seleccionado mediante la codificación de la instancia o el extremo seleccionados en el valor. Mientras la cookie sea válida, si el cliente incluye la cookie de afinidad de sesión en el encabezado de solicitud Cookie de las solicitudes HTTP posteriores, el balanceador de cargas dirige esas solicitudes a la instancia o el extremo de backend seleccionados.

A diferencia de otros métodos de afinidad de sesión, tiene las siguientes características:

  • La afinidad basada en cookies con estado no tiene requisitos específicos para el modo de balanceo ni para la política de localidad de balanceo de cargas (localityLbPolicy).

  • La afinidad basada en cookies con estado no se ve afectada cuando el ajuste de escala automático agrega una instancia nueva a un grupo de instancias administrado.

  • La afinidad basada en cookies con estado no se ve afectada cuando el ajuste de escala automático quita una instancia de un grupo de instancias administrado a menos que se quite la instancia seleccionada.

  • La afinidad basada en cookies con estado no se ve afectada cuando la recuperación automática quita una instancia de un grupo de instancias administrado a menos que se quite la instancia seleccionada.

Para obtener más información, consulta Pérdida de afinidad de sesión.

Significado de un TTL cero para las afinidades basadas en cookies

Todas las afinidades de sesión basadas en cookies, como la afinidad de cookie generada, la afinidad de cookie HTTP y la afinidad basada en cookies con estado, tienen un atributo TTL.

Un TTL de cero segundos significa que el balanceador de cargas no asigna un atributo Expires a la cookie. En este caso, el cliente trata la cookie como una cookie de sesión. La definición de una sesión varía según el cliente:

  • Algunos clientes, como los navegadores web, retienen la cookie durante toda la sesión de navegación. Esto significa que la cookie persiste en varias solicitudes hasta que se cierra la aplicación.

  • Otros clientes tratan una sesión como una sola solicitud HTTP y descartan la cookie inmediatamente después.

Pérdida de la afinidad de sesión

Todas las opciones de afinidad de sesión para los balanceadores de cargas de aplicaciones y los balanceadores de cargas de red de proxy requieren lo siguiente:

  • La instancia o el extremo de backend seleccionados deben permanecer configurados como un backend. La afinidad de sesión puede interrumpirse cuando ocurre uno de los siguientes eventos:

    • Quitas la instancia seleccionada de su grupo de instancias.

    • El ajuste de escala automático o la recuperación automática del grupo de instancias administrado quitan la instancia seleccionada de su grupo de instancias administrado.

    • Quita el extremo seleccionado de su NEG.

    • Quitas del servicio de backend el grupo de instancias o el NEG que contiene la instancia o el extremo seleccionados.

  • La instancia o el extremo de backend seleccionados deben permanecer en buen estado. La afinidad de sesión puede interrumpirse cuando la instancia o el extremo seleccionados fallan en las verificaciones de estado.

  • En el caso de los balanceadores de cargas de aplicaciones externos globales, los balanceadores de cargas de aplicaciones clásicos, los balanceadores de cargas de red de proxy externos globales y los balanceadores de cargas de red de proxy clásicos, la afinidad de la sesión puede fallar si se usa un Google Front End (GFE) de primera capa diferente para las solicitudes o conexiones posteriores después del cambio en la ruta de enrutamiento. Es posible que se seleccione un GFE de primera capa diferente si la ruta de acceso de enrutamiento de un cliente en Internet a Google cambia entre solicitudes o conexiones.

Excepto por la afinidad de sesión basada en cookies con estado, todas las opciones de afinidad de sesión para los balanceadores de cargas de aplicaciones y los balanceadores de cargas de red de proxy tienen los siguientes requisitos adicionales:

  • El grupo de instancias o el NEG que contiene la instancia o el extremo seleccionados no debe estar completo según lo define su capacidad objetivo. (Para los grupos de instancias administrados regionales, el componente zonal del grupo de instancias que contiene la instancia seleccionada no debe estar completo). La afinidad de sesión puede interrumpirse cuando el grupo de instancias o el NEG están llenos y otros grupos de instancias o NEG no lo están. Debido a que el nivel de carga puede cambiar de forma impredecible cuando se usa el modo de balanceo UTILIZATION, debes usar el modo de balanceo RATE o CONNECTION para minimizar las situaciones en las que se puede interrumpir la afinidad de sesión.

  • La cantidad total de instancias o extremos de backend configurados debe permanecer constante. Cuando se produce al menos uno de los siguientes eventos, cambia la cantidad de instancias o extremos de backend configurados, y se puede interrumpir la afinidad de sesión:

    • Agregar instancias o extremos nuevos:

      • Agregas instancias a un grupo de instancias existente en el servicio de backend.
      • El ajuste de escala automático de grupos de instancias administrados agrega instancias a un grupo de instancias administrado en el servicio de backend.
      • Agregas extremos a un NEG existente en el servicio de backend.
      • Agregas grupos de instancias o NEG no vacíos al servicio de backend.
    • Quitar cualquier instancia o extremo, no solo la instancia o el extremo seleccionados:

      • Cuando quitas cualquier instancia del backend de un grupo de instancias.
      • El ajuste de escala automático o la recuperación automática del grupo de instancias administrado quitan cualquier instancia del backend del grupo de instancias administrado.
      • Quitas cualquier extremo de un backend de NEG.
      • Quitas cualquier grupo de instancias de backend o NEG existente que no esté vacío del servicio de backend.
  • La cantidad total de instancias o extremos de backend en buen estado debe permanecer constante. Cuando ocurre al menos uno de los siguientes eventos, cambia la cantidad de instancias o extremos de backend en buen estado, y la afinidad de sesión puede interrumpirse:

    • Cualquier instancia o extremo pasa la verificación de estado y pasa de estar en mal estado a estar en buen estado.
    • Cualquier instancia o extremo falla en la verificación de estado y pasa de estar en buen estado a estar en mal estado o se agota el tiempo de espera.

Tiempo de espera del servicio de backend

La mayoría de los balanceadores de cargas de Google Cloud tienen un tiempo de espera del servicio de backend. El valor predeterminado es 30 segundos. El rango completo de valores de tiempo de espera permitidos es de 1 a 2,147,483,647 segundos.

  • Para los balanceadores de cargas de aplicaciones externos y los balanceadores de cargas de aplicaciones internos que usan el protocolo HTTP, HTTPS o HTTP/2, el tiempo de espera del servicio de backend es un tiempo de espera de solicitudes y respuestas para el tráfico HTTP(S).

    A fin de obtener más detalles sobre el tiempo de espera del servicio de backend para cada balanceador de cargas, consulta los siguientes vínculos:

  • Para los balanceadores de cargas de red del proxy externos, el tiempo de espera es de inactividad. Para permitir más o menos tiempo antes de que se borre la conexión, cambia el valor del tiempo de espera. Este tiempo de espera de inactividad también se usa para las conexiones de WebSocket.

  • Para los balanceadores de cargas de red de transferencia internos y los balanceadores de cargas de red de transferencia externos, puedes establecer el valor del tiempo de espera del servicio de backend con gcloud o la API, pero se ignorará el valor. El tiempo de espera del servicio de backend no significa nada para estos balanceadores de cargas de paso.

  • Para Cloud Service Mesh, el campo del tiempo de espera del servicio de backend (especificado con timeoutSec) no es compatible con los servicios de gRPC sin proxy. Para esos servicios, configura el tiempo de espera del servicio de backend mediante el campo maxStreamDuration. Esto se debe a que gRPC no admite la semántica de timeoutSec, que especifica la cantidad de tiempo que se debe esperar para que un backend muestre una respuesta completa después de enviar la solicitud. El tiempo de espera de gRPC especifica el tiempo que se debe esperar desde el comienzo de la transmisión hasta que la respuesta se haya procesado por completo, incluidos todos los reintentos.

Verificaciones de estado

Cada servicio de backend cuyos backends son grupos de instancias o NEG zonales debe tener una verificación de estado asociada. Los servicios de backend que usan un NEG sin servidores o un NEG de Internet global como backend deben tener un backend no hace referencia a una verificación de estado.

Cuando creas un balanceador de cargas mediante la consola de Google Cloud, puedes crear la verificación de estado, si es necesaria, cuando creas el balanceador de cargas, o puedes hacer referencia a una verificación de estado existente.

Cuando creas un servicio de backend mediante backends de grupo de instancias o de NEG zonales con Google Cloud CLI o la API, debes hacer referencia a una verificación de estado existente. Consulta la guía de balanceadores de cargas en la Descripción general de las verificaciones de estado para obtener detalles sobre el tipo y el alcance de la verificación de estado requerida.

Para obtener más información, lee los siguientes documentos:

Funciones adicionales habilitadas en el recurso de servicio de backend

Los siguientes servicios de backend admiten las siguientes funciones opcionales.

Cloud CDN

Cloud CDN usa la red perimetral global de Google para entregar contenido más cerca de los usuarios, lo que acelera los sitios web y aplicaciones. Cloud CDN está habilitado en los servicios de backend que usan los balanceadores de cargas de aplicaciones externos globales. El balanceador de cargas proporciona las direcciones IP y los puertos de frontend que reciben solicitudes y los backends que responden a esas solicitudes.

Para obtener más detalles, consulta la documentación de Cloud CDN.

Cloud CDN no es compatible con IAP. No se pueden habilitar en el mismo servicio de backend.

Google Cloud Armor

Si usas uno de los siguientes balanceadores de cargas, puedes agregar protección adicional a tus aplicaciones si habilitas Google Cloud Armor en el servicio de backend durante la creación del balanceador de cargas:

Si usas la consola de Google Cloud, puedes realizar una de las siguientes acciones:

  • Selecciona una política de seguridad de Google Cloud Armor existente.
  • Acepta la configuración de una política de seguridad predeterminada para el límite de frecuencia de Google Cloud Armor con un nombre, recuento de solicitudes, intervalo, clave y parámetros de límite de frecuencia personalizables. Si usas Google Cloud Armor con un servicio de proxy ascendente, como un proveedor de CDN, Enforce_on_key debe configurarse como una dirección IP de XFF.
  • Si deseas inhabilitar la protección de Google Cloud Armor, selecciona Ninguna.

IAP

IAP te permite establecer una capa de autorización central para las aplicaciones a las que se accede mediante HTTPS, por lo que puedes usar un modelo de control de acceso a nivel de aplicación en lugar de firewalls a nivel de red. IAP es compatible con ciertos balanceadores de cargas de aplicaciones.

IAP no es compatible con Cloud CDN. No se pueden habilitar en el mismo servicio de backend.

Funciones avanzadas de administración del tráfico

Para obtener información sobre las funciones avanzadas de administración de tráfico que se configuran en los servicios de backend y los mapas de URL asociados con los balanceadores de cargas, consulta lo siguiente:

API y referencia de gcloud

Para obtener más información sobre las propiedades del recurso del servicio de backend, consulta las siguientes referencias:

¿Qué sigue?

Para obtener información y documentación sobre cómo se usan los servicios de backend en el balanceo de cargas, consulta las siguientes páginas:

Para ver videos relacionados, consulta lo siguiente: