Un servicio de backend define cómo distribuye el tráfico Cloud Load Balancing. La configuración del servicio de backend contiene un conjunto de valores, como el protocolo utilizado para conectarse a los backends, varios ajustes de distribución y de sesión, comprobaciones de estado y tiempos de espera. Estos ajustes proporcionan un control pormenorizado sobre el comportamiento del balanceador de carga. Para empezar, la mayoría de los ajustes tienen valores predeterminados que permiten una configuración rápida. Un servicio de backend puede ser global o regional.
Los balanceadores de carga, los proxies Envoy y los clientes gRPC sin proxy usan la información de configuración del recurso de servicio de backend para hacer lo siguiente:
- Dirigir el tráfico a los backends correctos, que son grupos de instancias o grupos de puntos finales de red (NEGs).
- Distribuir el tráfico según un modo de balanceo, que es un ajuste de cada backend.
- Determina qué comprobación del estado está monitorizando el estado de los backends.
- Especifica la afinidad de sesión.
- Determina si hay otros servicios habilitados, incluidos los siguientes, que solo están disponibles para determinados balanceadores de carga:
- Cloud CDN
- Políticas de seguridad de Google Cloud Armor
- Identity-Aware Proxy
- Designa servicios backend regionales como un servicio en las aplicaciones de App Hub.
Estos valores se definen al crear un servicio de backend o al añadir un backend al servicio de backend.
Nota: Si usas el balanceador de carga de aplicaciones externo global o el balanceador de carga de aplicaciones clásico y tus backends sirven contenido estático, te recomendamos que uses contenedores de backend en lugar de servicios de backend. Consulta los cubos de backend de los balanceadores de carga de aplicación externos globales o los cubos de backend de los balanceadores de carga de aplicación clásicos.En la siguiente tabla se resume qué balanceadores de carga usan servicios de backend. El producto que utilices también determina el número máximo de servicios de backend, el ámbito de un servicio de backend, el tipo de backends admitidos y el esquema de balanceo de carga del servicio de backend. El esquema de balanceo de carga es un identificador que Google usa para clasificar las reglas de reenvío y los servicios de backend. Cada producto de balanceo de carga usa un esquema de balanceo de carga para sus reglas de reenvío y servicios de backend. Algunos esquemas se comparten entre productos.
Producto | Número máximo de servicios de backend | Ámbito del servicio de backend | Tipos de backend admitidos | Esquema de balanceo de carga |
---|---|---|---|---|
Balanceador de carga de aplicación externo global | Varios | Global | Cada servicio backend admite una de las siguientes combinaciones de backend:
|
EXTERNAL_MANAGED |
Balanceador de carga de aplicación clásico | Varios | Global‡ | Cada servicio backend admite una de las siguientes combinaciones de backend:
|
EXTERNAL# |
Balanceador de carga de aplicación externo regional | Varios | Regional | Cada servicio backend admite una de las siguientes combinaciones de backend:
|
EXTERNAL_MANAGED |
Balanceador de carga de aplicación interno entre regiones | Varios | Global | Cada servicio backend admite una de las siguientes combinaciones de backend:
|
INTERNAL_MANAGED |
Balanceador de carga de aplicación interno regional | Varios | Regional | Cada servicio backend admite una de las siguientes combinaciones de backend:
|
INTERNAL_MANAGED |
Balanceador de carga de red con proxy externo global | 1 | Global‡ | El servicio de backend admite una de las siguientes combinaciones de backend:
|
EXTERNAL_MANAGED |
Balanceador de carga de red de proxy clásico | 1 | Global‡ | El servicio de backend admite una de las siguientes combinaciones de backend:
|
EXTERNO |
Balanceador de carga de red con proxy externo regional | 1 | Regional | El servicio de backend admite una de las siguientes combinaciones de backend:
|
EXTERNAL_MANAGED |
Balanceador de carga de red con proxy interno regional | 1 | Regional | El servicio de backend admite una de las siguientes combinaciones de backend:
|
INTERNAL_MANAGED |
Balanceador de carga de red con proxy interno interregional | Varios | Global | El servicio de backend admite una de las siguientes combinaciones de backend:
|
INTERNAL_MANAGED |
Balanceador de carga de red de paso a través externo | 1 | Regional | El servicio de backend admite una de las siguientes combinaciones de backend:
|
EXTERNO |
Balanceador de carga de red de paso a través interno | 1 | Regional, pero se puede configurar para que sea accesible a nivel mundial | El servicio de backend admite una de las siguientes combinaciones de backend:
|
INTERNAL |
Cloud Service Mesh | Varios | Global | Cada servicio backend admite una de las siguientes combinaciones de backend:
|
INTERNAL_SELF_MANAGED |
GCE_VM_IP_PORT
.
- La regla de reenvío y su dirección IP externa son regionales.
- Todos los backends conectados al servicio de backend deben estar en la misma región que la regla de reenvío.
EXTERNAL_MANAGED
servicios de backend a
EXTERNAL
reglas de reenvío. Sin embargo, los servicios de backend de EXTERNAL
no se pueden adjuntar a reglas de reenvío de EXTERNAL_MANAGED
.
Para aprovechar las nuevas funciones disponibles solo con el balanceador de carga de aplicación externo global, te recomendamos que migres tus recursos de EXTERNAL
a EXTERNAL_MANAGED
mediante el proceso de migración descrito en el artículo Migrar recursos del balanceador de carga de aplicación clásico al balanceador de carga de aplicación externo global.
Nombres de balanceadores de carga
En el caso de los balanceadores de carga de red de proxy y los balanceadores de carga de red con paso a través, el nombre del balanceador de carga siempre es el mismo que el del servicio de backend. El comportamiento de cada interfaz Google Cloud es el siguiente:
- Google Cloud console. Si crea un balanceador de carga de red de proxy o un balanceador de carga de red de transferencia mediante la consola, el servicio de backend recibe automáticamente el mismo nombre que ha introducido para el balanceador de carga. Google Cloud
- Google Cloud CLI o API. Si creas un balanceador de carga de red proxy o un balanceador de carga de red de transferencia mediante la CLI de gcloud o la API, debes introducir el nombre que quieras al crear el servicio de backend. El nombre de este servicio de backend se refleja en la Google Cloud consola como el nombre del balanceador de carga.
Para obtener información sobre cómo se asignan los nombres a los balanceadores de carga de aplicaciones, consulta el artículo Descripción general de los mapas de URLs: nombres de los balanceadores de carga.
Backends
Un backend es uno o varios endpoints que reciben tráfico de un Google Cloudbalanceador de carga, un proxy de Envoy configurado con Cloud Service Mesh o un cliente gRPC sin proxy. Hay varios tipos de back-ends:
- Grupo de instancias que contiene instancias de máquina virtual (VM). Un grupo de instancias puede ser un grupo de instancias gestionado (MIG), con o sin autoescalado, o bien un grupo de instancias no gestionado. Más de un servicio de backend puede hacer referencia a un grupo de instancias, pero todos los servicios de backend que hagan referencia al grupo de instancias deben usar el mismo modo de balanceo.
- NEG por zonas
- NEG sin servidor
- NEG de Private Service Connect
- NEG de Internet
- NEG de conectividad híbrida
- NEG de asignación de puertos
- Enlaces de servicio del directorio de servicios
No puedes eliminar un grupo de instancias de backend ni un NEG asociado a un servicio de backend. Antes de eliminar un grupo de instancias o un NEG, primero debes quitarlo como backend de todos los servicios de backend que hagan referencia a él.
Grupos de instancias
En esta sección se explica cómo funcionan los grupos de instancias con el servicio de backend.
Máquinas virtuales de backend y direcciones IP externas
Las VMs de backend de los servicios de backend no necesitan direcciones IP externas:
- En el caso de los balanceadores de carga de aplicación externos globales y los balanceadores de carga de red con proxy externo: los clientes se comunican con un frontend de Google (GFE) que aloja la dirección IP externa de tu balanceador de carga. Los GFE se comunican con las VMs o los endpoints de backend enviando paquetes a una dirección interna creada combinando un identificador de la red de VPC del backend con la dirección IPv4 interna del backend. La comunicación entre los GFE y las VMs o los endpoints de backend se facilita a través de rutas especiales.
- En el caso de los backends de grupos de instancias, la dirección IPv4 interna siempre es la dirección IPv4 interna principal que corresponde a la interfaz
nic0
de la máquina virtual. - En el caso de los endpoints
GCE_VM_IP_PORT
de un NEG zonal, puede especificar la dirección IP del endpoint como la dirección IPv4 principal asociada a cualquier interfaz de red de una VM o cualquier dirección IPv4 de un intervalo de direcciones IP de alias asociado a cualquier interfaz de red de una VM.
- En el caso de los backends de grupos de instancias, la dirección IPv4 interna siempre es la dirección IPv4 interna principal que corresponde a la interfaz
En el caso de los balanceadores de carga de aplicación externos regionales: los clientes se comunican con un proxy de Envoy que aloja la dirección IP externa de tu balanceador de carga. Los proxies de Envoy se comunican con las VMs o los endpoints de backend enviando paquetes a una dirección interna creada al combinar un identificador de la red de VPC del backend con la dirección IPv4 interna del backend.
- En el caso de los backends de grupos de instancias, la dirección IPv4 interna siempre es la dirección IPv4 interna principal que corresponde a la interfaz
nic0
de la VM, ynic0
debe estar en la misma red que el balanceador de carga. - En el caso de los endpoints
GCE_VM_IP_PORT
de un NEG zonal, puede especificar la dirección IP del endpoint como la dirección IPv4 principal asociada a cualquier interfaz de red de una VM o cualquier dirección IPv4 de un intervalo de direcciones IP de alias asociado a cualquier interfaz de red de una VM, siempre que la interfaz de red esté en la misma red que el balanceador de carga.
- En el caso de los backends de grupos de instancias, la dirección IPv4 interna siempre es la dirección IPv4 interna principal que corresponde a la interfaz
En el caso de los balanceadores de carga de red de paso a través externos: los clientes se comunican directamente con los backends a través de la infraestructura de balanceo de carga de paso a través Maglev de Google. Los paquetes se enrutan y se entregan a los backends con las direcciones IP de origen y destino originales. Los back-ends responden a los clientes mediante la devolución directa del servidor. Los métodos que se usan para seleccionar un backend y monitorizar las conexiones son configurables.
- En el caso de los backends de grupos de instancias, los paquetes siempre se entregan a la interfaz
nic0
de la VM. - En el caso de los endpoints de
GCE_VM_IP
de un NEG zonal, los paquetes se envían a la interfaz de red de la VM que se encuentra en la subred asociada al NEG.
- En el caso de los backends de grupos de instancias, los paquetes siempre se entregan a la interfaz
Puertos con nombre
El atributo puerto con nombre del servicio de backend solo se aplica a los balanceadores de carga basados en proxy (balanceadores de carga de aplicaciones y balanceadores de carga 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 de grupo de instancias, debe configurar uno o varios puertos con nombre mediante pares clave-valor. La clave representa un nombre de puerto significativo que elijas, y el valor representa el número de puerto que asignes 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, especifica un único puerto con nombre usando solo el nombre del puerto (
--port-name
).
El servicio de backend traduce el nombre del puerto a un número de puerto por cada backend del grupo de instancias. Cuando el puerto con nombre de un grupo de instancias coincide con el --port-name
de un servicio de backend, el servicio de backend usa este número de puerto para comunicarse con las VMs del grupo de instancias.
Por ejemplo, puedes definir 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
A continuación, haga referencia al puerto con nombre en la configuración del servicio de backend con el valor --port-name
del servicio de backend definido 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 al comunicarse con VMs de distintos grupos de instancias si cada grupo de instancias especifica un número de puerto diferente para el mismo nombre de puerto.
El número de puerto resuelto que usa el servicio de backend del balanceador de carga proxy no tiene por qué coincidir con el número de puerto que usan las reglas de reenvío del balanceador de carga. Un balanceador de carga de proxy escucha las conexiones TCP enviadas a la dirección IP y al puerto de destino de sus reglas de reenvío. Como el proxy abre una segunda conexión TCP a sus back-ends, el puerto de destino de la segunda conexión TCP puede ser diferente.
Los puertos con nombre solo se pueden aplicar a back-ends de grupos de instancias. Los NEG zonales con GCE_VM_IP_PORT
puntos finalesNON_GCP_PRIVATE_IP_PORT
, los NEG híbridos con NON_GCP_PRIVATE_IP_PORT
puntos finales y los NEG de Internet definen los puertos mediante un mecanismo diferente, es decir, en los propios puntos finales.Los NEG sin servidor hacen referencia a servicios de Google y los NEG de PSC hacen referencia a adjuntos de servicio mediante abstracciones que no implican especificar un puerto de destino.
Los balanceadores de carga de red de paso a través internos y externos no usan puertos con nombre. Esto se debe a que son balanceadores de carga de transferencia que enrutan las conexiones directamente a las back-ends en lugar de crear nuevas conexiones. Los paquetes se entregan a los backends conservando la dirección IP y el puerto de destino de la regla de reenvío del balanceador de carga.
Para saber cómo crear puertos con nombre, sigue estas instrucciones:
- Grupos de instancias sin gestionar: trabajar con puertos con nombre
- Grupos de instancias gestionados: asignar puertos con nombre a grupos de instancias gestionados
Restricciones y directrices para grupos de instancias
Ten en cuenta las siguientes restricciones y directrices al crear grupos de instancias para tus balanceadores de carga:
No incluyas una VM en más de un grupo de instancias con balanceo de carga. Si una VM es miembro de dos o más grupos de instancias no gestionados, o de un grupo de instancias gestionado y uno o varios grupos de instancias no gestionados, Google Cloud solo podrás usar uno de esos grupos de instancias a la vez como backend de un servicio de backend concreto.
Si necesitas que una VM participe en varios balanceadores de carga, debes usar el mismo grupo de instancias como backend en cada uno de los servicios de backend.
En el caso de los balanceadores de carga proxy, si quieres balancear el tráfico a diferentes puertos, especifica los puertos con nombre necesarios en un grupo de instancias y haz que cada servicio de backend se suscriba a un puerto con nombre único.
Puede usar el mismo grupo de instancias como backend de 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 una combinación de modos de balanceo compatibles (por ejemplo,
CONNECTION
yRATE
).Las combinaciones de modos de equilibrio incompatibles son las siguientes:
CONNECTION
conUTILIZATION
RATE
conUTILIZATION
CUSTOM_METRICS
conUTILIZATION
CUSTOM_METRICS
conRATE
CUSTOM_METRICS
conCONNECTION
Veamos un ejemplo:
- Tienes dos servicios de backend:
external-https-backend-service
para un balanceador de carga de aplicación externo yinternal-tcp-backend-service
para un balanceador de carga de red con paso a través interno. - Estás usando un grupo de instancias llamado
instance-group-a
eninternal-tcp-backend-service
. - En
internal-tcp-backend-service
, debes aplicar el modo deCONNECTION
balanceo, ya que los balanceadores de carga de red de paso a través internos solo admiten el modo deCONNECTION
balanceo. - También puedes usar
instance-group-a
enexternal-https-backend-service
si aplicas el modo de balanceoRATE
enexternal-https-backend-service
. - Tampoco puedes usar en
instance-group-a
external-https-backend-service
con el modo de balanceoUTILIZATION
.
Para cambiar el modo de balanceo de un grupo de instancias que actúa como backend de varios servicios de backend, sigue estos pasos:
- 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 añadir el grupo de instancias como backend a los servicios de backend restantes, si admiten el nuevo modo de balanceo.
Si tu grupo de instancias está asociado a varios servicios de backend, cada servicio de backend puede hacer referencia al mismo puerto con nombre o a otro puerto con nombre del grupo de instancias.
Te recomendamos que no añadas un grupo de instancias gestionado con autoescalado a más de un servicio de backend. Si lo haces, puede que se produzca un escalado impredecible e innecesario de las instancias del grupo, sobre todo si usas la métrica de autoescalado Uso del balanceo de carga HTTP.
- Aunque no es recomendable, este escenario puede funcionar si la métrica de autoescalado es Uso de CPU o una métrica de Cloud Monitoring que no esté relacionada con la capacidad de servicio del balanceador de carga. Si usas una de estas métricas de autoescalado, es posible que evites que el escalado sea errático.
Grupos de puntos finales de red por zonas
Los puntos finales de red representan los servicios por su dirección IP o por 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 puntos finales de red (NEG) es una agrupación lógica de puntos finales de red.
Los grupos de puntos finales de red (NEGs) zonales son recursos zonales que representan colecciones de direcciones IP o de combinaciones de direcciones IP y puertos para recursos de Google Cloud en una sola subred.
Un servicio de backend que usa NEGs zonales como backends distribuye el tráfico entre las aplicaciones o los contenedores que se ejecutan en máquinas virtuales.
Hay dos tipos de endpoints de red disponibles para los NEGs zonales:
- Endpoints
GCE_VM_IP
(solo se admiten con balanceadores de carga de red de paso a través internos y balanceadores de carga de red de paso a través externos basados en servicios de backend). GCE_VM_IP_PORT
endpoints.
Para ver qué productos admiten back-ends de NEG zonales, consulta la tabla de servicios de back-end y tipos de back-end admitidos.
Para obtener más información, consulta la descripción general de los NEGs zonales.
Grupos de puntos finales de red de Internet
Los NEGs de Internet son recursos que definen backends externos. Un backend externo es un backend alojado en una infraestructura local o en una 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. Hay dos tipos de puntos finales de red disponibles para los NEGs de Internet: INTERNET_FQDN_PORT
y INTERNET_IP_PORT
.
Para obtener más información, consulta el resumen de los grupos de puntos de conexión de red de Internet.
Grupos de puntos finales de red sin servidor
Un grupo de endpoints de red (NEG) especifica un grupo de endpoints de backend para un balanceador de carga. Un NEG sin servidor es un backend que apunta a un recurso de Cloud Run, App Engine, Cloud Run functions o API Gateway.
Un NEG sin servidor puede representar uno de los siguientes elementos:
- Un recurso de Cloud Run o un grupo de recursos.
- Una función o un grupo de funciones de Cloud Run (antes, Cloud Run Functions de 2.ª gen.).
- Una función de Cloud Run (1.ª gen.) o un grupo de funciones
- Una aplicación del entorno estándar o del entorno flexible de App Engine, un servicio específico de una aplicación, una versión específica de una aplicación o un grupo de servicios.
- Una API Gateway que proporciona acceso a tus servicios a través de una API REST coherente en todos los servicios, independientemente de la implementación del servicio. Esta función está en versión preliminar.
Para configurar un NEG sin servidor para aplicaciones sin servidor que compartan un patrón de URL, usa una máscara de URL. Una máscara de URL es una plantilla de tu esquema de URL (por ejemplo, example.com/<service>
). El NEG sin servidor 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 que coincida y tenga el mismo nombre.
Para ver qué balanceadores de carga admiten backends de NEG sin servidor, consulta la tabla Servicios de backend y tipos de backend admitidos.
Para obtener más información sobre los NEGs sin servidor, consulta la descripción general de los grupos de puntos finales de red sin servidor.
Enlaces a servicios
Un enlace de servicio es un backend que establece una conexión entre un servicio de backend de Cloud Service Mesh y un servicio registrado en el Directorio de servicios. Un servicio de backend puede hacer referencia a varios enlaces de servicio. Un servicio de backend con un enlace de servicio no puede hacer referencia a ningún otro tipo de backend.
Backends mixtos
Cuando añades diferentes tipos de backends a un mismo servicio de backend, se aplican las siguientes consideraciones de uso:
- Un servicio de backend no puede usar simultáneamente grupos de instancias y NEGs zonales.
- Puedes usar una combinación de diferentes tipos de grupos de instancias en el mismo servicio de backend. Por ejemplo, un único servicio de backend puede hacer referencia a una combinación de grupos de instancias gestionados y sin gestionar. Para obtener información completa sobre qué back-ends son compatibles con qué servicios de back-end, consulta la tabla de la sección anterior.
- Con determinados balanceadores de carga proxy, puedes usar una combinación de NEGs zonales (con endpoints
GCE_VM_IP_PORT
) y NEGs de conectividad híbrida (con endpointsNON_GCP_PRIVATE_IP_PORT
) para configurar el balanceo de carga híbrido. Para ver qué balanceadores de carga tienen esta función, consulta la tabla de servicios de backend y tipos de backend admitidos.
Protocolo a los backends
Cuando crees un servicio de backend, debes especificar el protocolo que se usará para comunicarse con los backends. Solo puedes especificar un protocolo por servicio de backend. No puedes especificar un protocolo secundario para usarlo como alternativa.
Los protocolos válidos dependen del tipo de balanceador de carga o de si usas Cloud Service Mesh.
Producto | Opciones de protocolo de servicios de backend |
---|---|
Balanceador de carga de aplicación | HTTP, HTTPS y HTTP/2 |
Balanceador de carga de red de proxy | TCP o SSL Los balanceadores de carga de red de proxy regionales solo admiten TCP. |
Balanceador de carga de red de paso a través | TCP, UDP o UNSPECIFIED |
Cloud Service Mesh | HTTP, HTTPS, HTTP/2, gRPC y TCP |
Si cambia el protocolo de un servicio de backend, los backends no se podrán acceder a través de los balanceadores de carga durante unos minutos.
Política de selección de direcciones IP
Este campo se aplica a los balanceadores de carga proxy. Debe usar la política de selección de direcciones IP para especificar el tipo de tráfico que se envía desde el servicio de backend a sus backends.
Cuando selecciones la política de selección de direcciones IP, asegúrate de que tus back-ends admitan el tipo de tráfico seleccionado. Para obtener más información, consulta la tabla de servicios backend y tipos de backend admitidos.
La política de selección de direcciones IP se usa cuando quieres convertir el servicio de backend de tu balanceador de carga para que admita otro tipo de tráfico. Para obtener más información, consulta Convertir de pila única a pila dual.
Puede 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, independientemente del tráfico del cliente al GFE. Solo se utilizan comprobaciones del estado IPv4 para comprobar el estado de los backends. |
Preferir IPv6 | Prioriza la conexión IPv6 del backend sobre la conexión IPv4 (siempre que haya un backend correcto con direcciones IPv6). Las comprobaciones del estado monitorizan periódicamente las conexiones IPv6 e IPv4 de los backends. El GFE primero intenta establecer la conexión IPv6. Si la conexión IPv6 se interrumpe o es lenta, el GFE usa Happy Eyeballs para volver a IPv4 y conectarse a ella. Aunque una de las conexiones IPv6 o IPv4 no esté en buen estado, el backend se sigue considerando en buen estado y el GFE puede probar ambas conexiones. Finalmente, Happy Eyeballs selecciona cuál usar. |
Solo IPv6 | Solo envía tráfico IPv6 a los backends del servicio de backend, independientemente del tráfico del cliente al proxy. Solo se usan comprobaciones del estado de IPv6 para comprobar el estado de los backends. No se realiza ninguna validación para comprobar si el tipo de tráfico de backend coincide con la política de selección de direcciones IP. Por ejemplo, si tienes back-ends solo IPv4 y seleccionas |
Encriptado entre el balanceador de carga y los backends
Para obtener información sobre el cifrado entre el balanceador de carga y los backends, consulta Cifrado a los backends.
Distribución del tráfico
Los valores de los siguientes campos del recurso de servicios backend determinan algunos aspectos del comportamiento del backend:
- Un modo de balanceo define cómo mide el balanceador de carga la disponibilidad del backend para las nuevas solicitudes o conexiones.
- Una capacidad objetivo define un número máximo objetivo de conexiones, una tasa máxima objetivo o un uso máximo objetivo de la CPU.
- Un escalador de capacidad ajusta la capacidad total disponible sin modificar la capacidad objetivo.
Modo de balanceo
El modo de balanceo determina si los backends de un balanceador de carga o de Cloud Service Mesh pueden gestionar tráfico adicional o están totalmente cargados.
Google Cloud tiene cuatro modos de balanceo:
CONNECTION
: determina cómo se distribuye la carga en función del número total de conexiones que puede gestionar el backend.RATE
: número máximo de solicitudes (consultas) por segundo (RPS o QPS) objetivo. Se puede superar el RPS o QPS máximo objetivo si todos los backends están al máximo de su capacidad o por encima.UTILIZATION
: determina cómo se distribuye la carga en función de la utilización de las instancias de un grupo de instancias.CUSTOM_METRICS
: determina cómo se distribuye la carga en función de las métricas personalizadas definidas por el usuario.
Modos de balanceo disponibles para cada balanceador de carga
El modo de balanceo se define al añadir un backend al servicio de backend. Los modos de balanceo disponibles para un balanceador de carga dependen del tipo de balanceador de carga y del tipo de backends.
Los balanceadores de carga de red con paso a través requieren el CONNECTION
modo de balanceo, pero no admiten la configuración de ninguna capacidad de destino.
Los balanceadores de carga de aplicaciones admiten los modos de balanceo RATE
, UTILIZATION
o CUSTOM_METRICS
para los backends de grupos de instancias, y los modos de balanceo RATE
o CUSTOM_METRICS
para los NEGs zonales (puntos finales GCE_VM_IP_PORT
) y los NEGs híbridos (puntos finales NON_GCP_PRIVATE_IP_PORT
). En el caso de cualquier otro tipo de backend admitido, se debe omitir el modo de balanceo.
En el caso de los balanceadores de carga de aplicaciones clásicos, 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 carga. Después, en una región, la capacidad objetivo del modo de balanceo se usa para calcular las proporciones de cuántas solicitudes deben ir a cada backend de la región. Las solicitudes o conexiones se distribuyen de forma rotatoria entre las instancias o los endpoints del backend.
En el caso de los balanceadores de carga 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 carga. En una región, la capacidad objetivo 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 carga de servicios (
serviceLbPolicy
) y el ajuste de backend preferido para influir en la selección de backends específicos de una región. Además, en cada grupo de instancias o NEG, la política de balanceo de carga (LocalityLbPolicy
) determina cómo se distribuye el tráfico a las instancias o los endpoints del grupo.
- En el caso de los balanceadores de carga de aplicaciones internos entre regiones , los balanceadores de carga de aplicaciones externos regionales y los balanceadores de carga de aplicaciones internos regionales, 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. En cada grupo de instancias o NEG, la política de balanceo de carga (
LocalityLbPolicy
) determina cómo se distribuye el tráfico a las instancias o los endpoints del grupo. Solo el balanceador de carga de aplicaciones interno entre regiones admite el uso de la política de balanceo de carga de servicio (serviceLbPolicy
) y los ajustes de backend preferido para influir en la selección de backends específicos de una región.
Los balanceadores de carga de red de proxy admiten los modos de balanceo CONNECTION
o UTILIZATION
para los backends de grupos de instancias de VM, el modo de balanceo CONNECTION
para los NEGs zonales con GCE_VM_IP_PORT
endpoints y el modo de balanceo CONNECTION
para los NEGs híbridos (NON_GCP_PRIVATE_IP_PORT
endpoints). En el caso de cualquier otro tipo de backend admitido, se debe omitir el modo de balanceo.
En el caso de los balanceadores de carga de red con 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 carga. En una región, la capacidad objetivo 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 carga de servicios (
serviceLbPolicy
) y el ajuste de backend preferido para influir en la selección de backends específicos de una región. Además, en cada grupo de instancias o NEG, la política de balanceo de carga (LocalityLbPolicy
) determina cómo se distribuye el tráfico a las instancias o los endpoints del grupo.En el caso de los balanceadores de carga de red con proxy internos interregionales, primero se selecciona la región configurada. En una región, la capacidad objetivo del modo de balanceo se usa para calcular las proporciones de cuántas solicitudes deben ir a cada backend (grupo de instancias o NEG) de la región. Puedes usar la política de balanceo de carga de servicios (
serviceLbPolicy
) y el ajuste de backend preferido para influir en la selección de backends específicos de una región. Además, en cada grupo de instancias o NEG, la política de balanceo de carga (LocalityLbPolicy
) determina cómo se distribuye el tráfico a las instancias o los endpoints del grupo.En el caso de los balanceadores de carga de red proxy clásicos, se selecciona una región en función de la ubicación del cliente y de si la región tiene capacidad disponible en función de la capacidad de destino del modo de balanceo de carga. A continuación, en una región, se usa la capacidad objetivo del modo de equilibrio de carga para calcular las proporciones de cuántas solicitudes o conexiones deben dirigirse a cada backend (grupo de instancias o NEG) de la región. Una vez que el balanceador de carga ha seleccionado un backend, las solicitudes o las conexiones se distribuyen de forma rotatoria entre las instancias de VM o los endpoints de red de cada backend.
- En el caso de los balanceadores de carga de red de proxy externos regionales y los balanceadores de carga de red de proxy internos regionales, la capacidad de destino del modo de balanceo de carga se usa para calcular las proporciones de cuántas solicitudes deben dirigirse a cada backend (grupo de instancias o NEG). En cada grupo de instancias o NEG, la política de balanceo de carga (
localityLbPolicy
) determina cómo se distribuye el tráfico a las instancias o los endpoints del grupo.
En la siguiente tabla se resumen los modos de balanceo de carga disponibles para cada combinación de balanceador de carga y backend.
Balanceador de carga | Backends | Modos de balanceo disponibles |
---|---|---|
Balanceador de carga de aplicación | Grupos de instancias | RATE , UTILIZATION
o CUSTOM_METRICS |
NEGs por zonas (puntos finales GCE_VM_IP_PORT ) |
RATE o CUSTOM_METRICS |
|
NEGs híbridas (puntos finales NON_GCP_PRIVATE_IP_PORT ) |
RATE o CUSTOM_METRICS |
|
Balanceador de carga de red de proxy
|
Grupos de instancias | CONNECTION o UTILIZATION |
NEGs por zonas (puntos finales GCE_VM_IP_PORT ) |
CONNECTION |
|
NEGs híbridas (puntos finales |
CONNECTION |
|
Balanceador de carga de red de paso a través | Grupos de instancias | CONNECTION |
NEGs por zonas (puntos finales GCE_VM_IP ) |
CONNECTION |
Si la utilización media de todas las VMs asociadas a un servicio de backend es inferior al 10%, Google Cloud puede que prefiera zonas específicas. Esto puede ocurrir cuando usas grupos de instancias gestionadas regionales, grupos de instancias gestionadas zonales en diferentes zonas y grupos de instancias sin gestionar zonales. Este desequilibrio zonal se resuelve automáticamente a medida que se envía más tráfico al balanceador de carga.
Para obtener más información, consulta gcloud compute backend-services add-backend.
Capacidad objetivo
Cada modo de balanceo tiene una capacidad objetivo correspondiente, que define uno de los siguientes máximos objetivo:
- Número de conexiones
- Tarifa
- Uso de CPU
En todos los modos de balanceo, la capacidad objetivo no es un interruptor automático. Un balanceador de carga puede superar el máximo en determinadas condiciones, por ejemplo, si todas las VMs o los endpoints de backend han alcanzado el máximo.
Modo de balanceo de conexiones
En el modo de balanceo CONNECTION
, la capacidad de destino define un número máximo de conexiones abiertas. A excepción de los balanceadores de carga de red de paso a través internos y externos, debes usar uno de los siguientes ajustes para especificar un número máximo de conexiones de destino:
max-connections-per-instance
(por VM): número medio objetivo de conexiones de una sola VM.max-connections-per-endpoint
(por punto final de un NEG zonal): número medio de conexiones de destino de un solo punto final.max-connections
(por NEGs zonales y grupos de instancias zonales): número medio de conexiones de destino de todo el NEG o del grupo de instancias. En el caso de los grupos de instancias gestionadas regionales, usamax-connections-per-instance
.
En la siguiente tabla se muestra cómo define el parámetro de capacidad objetivo lo siguiente:
- La capacidad objetivo de todo el backend
- La capacidad objetivo esperada de cada instancia o endpoint
Tipo de backend | Capacidad objetivo | ||
---|---|---|---|
Si especifica | Capacidad de todo el backend | Capacidad esperada por instancia o por endpoint | |
Grupo de instanciasN instancias,H en buen estado |
max-connections-per-instance=X
|
X × N
|
(X × N)/H
|
NEG por zonasN puntos finalesH en buen estado
|
max-connections-per-endpoint=X
|
X × N
|
(X × N)/H
|
Grupos de instancias (excepto los grupos de instancias gestionadas regionales) H instancias en buen estado
|
max-connections=Y
|
Y
|
Y/H
|
Como se muestra, los ajustes max-connections-per-instance
y max-connections-per-endpoint
son proxies para calcular el número máximo de conexiones de todo el grupo de instancias de máquina virtual o de todo el NEG zonal:
- En un grupo de instancias de VM con
N
instancias, el ajustemax-connections-per-instance=X
tiene el mismo significado que el ajustemax-connections=X × N
. - En un NEG zonal con
N
endpoints, definirmax-connections-per-endpoint=X
tiene el mismo significado que definirmax-connections=X × N
.
Modo de balanceo de tarifas
En el modo de balanceo RATE
, debe definir la capacidad objetivo mediante uno de los siguientes parámetros:
max-rate-per-instance
(por VM): proporciona una tasa de solicitudes HTTP media objetivo para una sola VM.max-rate-per-endpoint
(por endpoint en un NEG zonal): proporciona una tasa de solicitudes HTTP media de destino para un solo endpoint.max-rate
(por NEGs zonales y grupos de instancias zonales): proporciona una frecuencia media de solicitudes HTTP de destino para todo el NEG o el grupo de instancias. En el caso de los grupos de instancias gestionadas regionales, usamax-rate-per-instance
.
En la siguiente tabla se muestra cómo define el parámetro de capacidad objetivo lo siguiente:
- La capacidad objetivo de todo el backend
- La capacidad objetivo esperada de cada instancia o endpoint
Tipo de backend | Capacidad objetivo | ||
---|---|---|---|
Si especifica | Capacidad de todo el backend | Capacidad esperada por instancia o por endpoint | |
Grupo de instanciasN instancias,H en buen estado |
max-rate-per-instance=X
|
X × N
|
(X × N)/H
|
NEG por zonasN puntos finales,H en buen estado
|
max-rate-per-endpoint=X
|
X × N
|
(X × N)/H
|
Grupos de instancias (excepto los grupos de instancias gestionadas regionales) H instancias en buen estado
|
max-rate=Y
|
Y
|
Y/H
|
Como se muestra, los ajustes max-rate-per-instance
y max-rate-per-endpoint
son proxies para calcular una frecuencia máxima objetivo de solicitudes HTTP para todo el grupo de instancias o todo el NEG zonal:
- En un grupo de instancias con
N
instancias, definirmax-rate-per-instance=X
tiene el mismo significado que definirmax-rate=X × N
. - En un NEG por zona con
N
endpoints, definirmax-rate-per-endpoint=X
tiene el mismo significado que definirmax-rate=X × N
.
Modo de balanceo de la utilización
El modo de balanceo UTILIZATION
no tiene una capacidad objetivo obligatoria. Tienes varias opciones que dependen del tipo de backend, tal como se resume en la tabla de la siguiente sección.
La capacidad objetivo max-utilization
solo se puede especificar por grupo de instancias y no se puede aplicar a una VM concreta del grupo.
El modo de balanceo UTILIZATION
no tiene una capacidad objetivo obligatoria. Cuando usas la consola para añadir un grupo de instancias de backend a un servicio de backend, la consola asigna el valor 0,8 (80%) a max-utilization
si se selecciona el modo de balanceo de carga UTILIZATION
. Google Cloud Google Cloud Además de max-utilization
, el modo de balanceo UTILIZATION
admite capacidades de destino más complejas, tal como se resume en la tabla de la siguiente sección.
Modo de balanceo de métricas personalizadas
El modo de balanceo CUSTOM_METRICS
te permite definir tus propias métricas personalizadas
que se pueden usar para determinar cómo se distribuye la carga. Las métricas personalizadas le permiten configurar el comportamiento de distribución del tráfico de su balanceador de carga en función de métricas específicas de los requisitos de su aplicación o infraestructura, en lugar de las métricas estándar de utilización o basadas en tarifas deGoogle Cloud.
Para obtener más información, consulte Métricas personalizadas de balanceadores de carga de aplicaciones.
Cambiar el modo de balanceo de un balanceador de carga
En algunos balanceadores de carga o configuraciones de balanceadores de carga, no puedes cambiar el modo de balanceo porque el servicio de backend solo tiene un modo de balanceo posible. En otros casos, en función del backend utilizado, puedes cambiar el modo de balanceo porque hay más de un modo disponible para esos servicios de backend.
Para ver qué modos de balanceo se admiten en cada balanceador de carga, consulta la tabla de modos de balanceo disponibles para cada balanceador de carga.
Modos de equilibrio y configuración de la capacidad objetivo
En los productos que admiten una especificación de capacidad objetivo, la capacidad objetivo no es un interruptor automático. Cuando se alcanza el máximo de capacidad objetivo configurado en una zona determinada, las nuevas solicitudes o conexiones se distribuyen a otras zonas que no estén procesando solicitudes o conexiones con la capacidad objetivo. Si todas las zonas han alcanzado la capacidad objetivo, las nuevas solicitudes o conexiones se distribuyen por sobrellenado.
Balanceadores de carga de aplicaciones y Cloud Service Mesh
En esta tabla se muestran las combinaciones disponibles de modo de balanceo y capacidad objetivo para balanceadores de carga de aplicaciones y Cloud Service Mesh.
Tipo de backend | Modo de balanceo | Especificación de capacidad objetivo |
---|---|---|
Grupos de instancias
|
RATE |
Debe especificar una de las siguientes opciones:
|
UTILIZATION |
Puedes especificar opcionalmente una de las siguientes opciones:
|
|
CUSTOM_METRICS |
Puedes especificar opcionalmente una de las siguientes opciones:
max-utilization por backend. |
|
NEGs por zonas
NEGs híbridas
|
RATE |
Debe especificar una de las siguientes opciones:
|
CUSTOM_METRICS |
Puedes especificar opcionalmente una de las siguientes opciones:
max-utilization por backend. |
Balanceadores de carga de red de proxy
En esta tabla se enumeran las combinaciones de modo de balanceo y capacidad de destino disponibles para los balanceadores de carga de red de proxy.
Tipo de backend | Modo de balanceo | Especificación de capacidad objetivo |
---|---|---|
Grupos de instancias
|
CONNECTION |
Debe especificar una de las siguientes opciones:
|
UTILIZATION |
Puedes especificar opcionalmente una de las siguientes opciones:
|
|
NEGs por zonas
NEGs híbridas
|
CONNECTION |
Debe especificar una de las siguientes opciones:
|
Balanceadores de carga de red de paso a través
En esta tabla se muestran las combinaciones disponibles de modo de balanceo y capacidad de destino para los balanceadores de carga de red con paso a través.
Tipo de backend | Modo de balanceo | Especificación de capacidad objetivo |
---|---|---|
Grupos de instancias
|
CONNECTION |
No puedes especificar un número máximo de conexiones de destino. |
NEGs por zonas
|
CONNECTION |
No puedes especificar un número máximo de conexiones de destino. |
Escalador de capacidad
Usa el escalador de capacidad para escalar la capacidad objetivo (utilización máxima, tasa máxima o conexiones máximas) sin cambiarla.
Para consultar la Google Cloud documentación de referencia, consulta lo siguiente:
- Google Cloud CLI: capacity-scaler
- API:
Puedes ajustar el escalador de capacidad para escalar la capacidad objetivo efectiva sin cambiar explícitamente uno de los parámetros --max-*
.
Puede asignar al escalador de capacidad cualquiera de estos valores:
- El valor predeterminado es
1
, lo que significa que el grupo sirve hasta el 100% de su capacidad configurada (en función debalancingMode
). - El valor
0
significa que el grupo está completamente agotado y ofrece el 0% de su capacidad disponible. No puedes configurar un ajuste de0
cuando solo hay un backend asociado al servicio de backend. - Un valor de
0.1
(10%) a1.0
(100%).
En los siguientes ejemplos se muestra cómo funciona el escalador de capacidad junto con el ajuste de capacidad objetivo:
Si el modo de balanceo es
RATE
, elmax-rate
se define en80
SPS y el escalador de capacidad es1.0
, la capacidad disponible también es80
SPS.Si el modo de balanceo es
RATE
, elmax-rate
se define en80
SPS y el escalador de capacidad es0.5
, la capacidad disponible es40
SPS (0.5 times 80
).Si el modo de balanceo es
RATE
, elmax-rate
se define en80
SPS y el escalador de capacidad es0.0
, la capacidad disponible es cero (0
).
Política de balanceo de carga de servicio
Una política de balanceo de carga del servicio (serviceLbPolicy
) es un recurso asociado al servicio de backend del balanceador de carga. Te permite personalizar los parámetros que influyen en la forma en que se distribuye el tráfico entre los backends asociados a un servicio de backend:
- Personaliza el algoritmo de balanceo de carga que se usa para determinar cómo se distribuye el tráfico entre regiones o zonas.
- Habilita el drenaje automático de capacidad para que el balanceador de carga pueda drenar rápidamente el tráfico de los backends que no estén en buen estado.
Además, puedes designar back-ends específicos como back-ends preferidos. Estos back-ends deben usarse hasta su capacidad (es decir, la capacidad objetivo especificada por el modo de balanceo del back-end) antes de que se envíen solicitudes a los back-ends restantes.
Para obtener más información, consulta Optimizaciones avanzadas del balanceo de carga con una política de balanceo de carga de servicio.
Política de localidad de balanceo de carga
En el caso de un servicio de backend, la distribución del tráfico se basa en un modo de balanceo y en una política de localidad de balanceo de carga. El modo de balanceo determina la fracción del tráfico que se debe enviar a cada backend (grupo de instancias o NEG). A continuación, la política de localidad del balanceo de carga (LocalityLbPolicy
) determina cómo se distribuye el tráfico entre las instancias o los endpoints de cada zona. En el caso de los grupos de instancias gestionados regionales, la política de localidad se aplica a cada zona que los compone.
La política de localidad del balanceo de carga se configura por servicio de backend. Puedes usar los siguientes ajustes:
ROUND_ROBIN
(predeterminada): es la política de localidad de balanceo de carga predeterminada, en la que el balanceador de carga selecciona un backend en buen estado de forma rotatoria.WEIGHTED_ROUND_ROBIN
: el balanceador de carga usa métricas personalizadas definidas por el usuario para seleccionar la instancia o el endpoint óptimos del backend que atenderán la solicitud.LEAST_REQUEST
: un algoritmoO(1)
en el que el balanceador de carga selecciona dos hosts aleatorios en buen estado y elige el que tenga menos solicitudes activas.RING_HASH
: este algoritmo implementa el cifrado con hash coherente en los backend. El algoritmo tiene la propiedad de que al añadir o retirar un host de un conjunto de N hosts solo se ven afectadas 1/N de las solicitudes.RANDOM
: el balanceador de carga selecciona un host aleatorio en buen estado.ORIGINAL_DESTINATION
: el balanceador de carga selecciona un backend en función de 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 redirigiera al balanceador de carga.ORIGINAL_DESTINATION
no es compatible con los balanceadores de carga de aplicación externos globales y regionales.MAGLEV
: implementa un hash coherente en los back-ends y se puede usar como sustituto de la políticaRING_HASH
. Maglev no es tan estable comoRING_HASH
pero ofrece tiempos más rápidos tanto de compilación de búsquedas en tablas como de selección de hosts. Para obtener más información sobre Maglev, consulta el documento técnico de Maglev.WEIGHTED_MAGLEV
: Implementa el balanceo de carga ponderado por instancia mediante los pesos que indican las comprobaciones de estado. Si se usa esta política, el servicio de backend debe configurar una comprobación del estado basada en HTTP que no sea antigua, y se espera que las respuestas de la comprobación del estado contengan el campo de encabezado de respuesta HTTP no estándarX-Load-Balancing-Endpoint-Weight
para especificar los pesos por instancia. Las decisiones de balanceo de carga se toman en función de los pesos por instancia que se hayan notificado en las últimas respuestas de comprobación de estado procesadas, siempre que cada instancia notifique un peso válido oUNAVAILABLE_WEIGHT
. De lo contrario, el balanceo de carga seguirá siendo de igual peso.WEIGHTED_MAGLEV
solo se admite en balanceadores de carga de red de paso a través externos. Para ver un ejemplo, consulta Configurar el balanceo de carga ponderado para balanceadores de carga de red de paso a través externos.
La configuración de una política de localidad de balanceo de carga solo se admite en los servicios de backend que se usan con los siguientes balanceadores de carga:
- Balanceador de carga de aplicación externo global
- Balanceador de carga de aplicación externo regional
- Balanceador de carga de aplicación interno entre regiones
- Balanceador de carga de aplicación interno regional
- Balanceador de carga de red de paso a través externo
Ten en cuenta que el valor predeterminado efectivo de la política de localidad de balanceo de carga (localityLbPolicy
) cambia en función de los ajustes de afinidad de sesión. Si no se configura la afinidad de sesión (es decir, si sessionAffinity mantiene el valor predeterminado NONE
), el valor predeterminado de localityLbPolicy
es ROUND_ROBIN
. Si la afinidad de sesión tiene un valor distinto de NONE
, el valor predeterminado de localityLbPolicy
es MAGLEV
.
Para configurar una política de localidad de balanceo de carga, puedes usar la consola deGoogle Cloud , gcloud (--locality-lb-policy
) o la API (localityLbPolicy
).
Cloud Service Mesh y distribución del tráfico
Cloud Service Mesh también usa recursos de servicio backend. En concreto, Cloud Service Mesh usa servicios de backend cuyo esquema de balanceo de carga es INTERNAL_SELF_MANAGED
. En el caso de un servicio de backend interno autogestionado, la distribución del tráfico se basa en la combinación de un modo de balanceo de carga y una política de balanceo de carga. El servicio de backend dirige el tráfico a un backend según el modo de balanceo del backend. A continuación, Cloud Service Mesh distribuye el tráfico según una política de balanceo de carga.
Los servicios de backend internos autogestionados admiten los siguientes modos de balanceo:
UTILIZATION
, si todos los backends son grupos de instanciasRATE
, si todos los backends son grupos de instancias o NEGs por zonas
Si elige el modo de equilibrio RATE
, debe especificar una tasa máxima, una tasa máxima por instancia o una tasa máxima por endpoint.
Para obtener más información sobre Cloud Service Mesh, consulta los conceptos de Cloud Service Mesh.
Subconjunto de backend
La creación de subconjuntos de backend es una función opcional que mejora el rendimiento y la escalabilidad al asignar un subconjunto de backends a cada una de las instancias de proxy.
Se admite la creación de subconjuntos de backend en los siguientes casos:
- Balanceador de carga de aplicación interno regional
- Balanceador de carga de red de paso a través interno
Subconjuntos de backend para balanceadores de carga de aplicaciones internos regionales
El balanceador de carga de aplicación interno entre regiones no admite subconjuntos de backend.En el caso de los balanceadores de carga de aplicaciones internos regionales, la creación de subconjuntos de backend asigna automáticamente solo un subconjunto de los backends del servicio de backend regional a cada instancia de proxy. De forma predeterminada, cada instancia de proxy abre conexiones a todos los backends de un servicio de backend. Cuando el número de instancias de proxy y de back-ends es elevado, abrir conexiones a todos los back-ends puede provocar problemas de rendimiento.
Al habilitar la creación de subconjuntos, cada proxy solo abre conexiones a un subconjunto de los back-ends, lo que reduce el número de conexiones que se mantienen abiertas a cada back-end. Reducir el número de conexiones abiertas simultáneamente a cada backend puede mejorar el rendimiento tanto de los backends como de los proxies.
En el siguiente diagrama se muestra un balanceador de carga con dos proxies. Sin la creación de subconjuntos de backend, el tráfico de ambos proxies se distribuye a todos los backends del servicio de backend 1. Si el subconjunto de backend está 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 back-ends 1 y 2, y el tráfico del proxy 2 se distribuye a los back-ends 3 y 4.
Además, puedes acotar el tráfico de balanceo de carga a los backends configurando la política localityLbPolicy
.
Para obtener más información, consulta las políticas de tráfico.
Para obtener información sobre cómo configurar el subconjunto de backend en balanceadores de carga de aplicación internos, consulta Configurar subconjuntos de backend.
Advertencias relacionadas con la creación de subconjuntos de backends para el balanceador de carga de aplicaciones interno
- Aunque el subconjunto de backend está diseñado para asegurar que todas las instancias de backend se utilicen correctamente, puede introducir cierto sesgo en la cantidad de tráfico que recibe cada backend. Se recomienda definir
localityLbPolicy
enLEAST_REQUEST
para los servicios de backend que sean sensibles al equilibrio de la carga del backend. - Si se habilita o inhabilita la creación de subconjuntos, se interrumpirán las conexiones.
- Para que el backend pueda crear subconjuntos, la afinidad de sesión debe ser
NONE
(un hash de 5 tuplas). Otras opciones de afinidad de sesión solo se pueden usar si la creación de subconjuntos de backend está inhabilitada. Los valores predeterminados de las marcas--subsetting-policy
y--session-affinity
sonNONE
, y solo se puede asignar un valor diferente a una de ellas a la vez.
Subconjuntos de backend para balanceadores de carga de red de paso a través internos
La creación de subconjuntos de backend para balanceadores de carga de red de paso a través internos te permite escalar tu balanceador de carga de red de paso a través interno para admitir un mayor número de instancias de máquina virtual de backend por servicio de backend interno.
Para obtener información sobre cómo afecta la creación de subconjuntos a este límite, consulta la sección Servicios backend del artículo Cuotas y límites de los recursos de balanceo de carga.
De forma predeterminada, la creación de subconjuntos está inhabilitada, lo que limita el servicio de backend a distribuir contenido a un máximo de 250 instancias o endpoints de backend. Si tu servicio backend necesita admitir más de 250 backends, puedes habilitar la creación de subconjuntos. Cuando se habilita la creación de subconjuntos, 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 funcionamiento.
Sin subconjuntos, se utiliza mejor el conjunto completo de back-ends correctos y las nuevas conexiones de clientes se distribuyen entre todos los back-ends correctos según la distribución del tráfico. La creación de subconjuntos impone restricciones de balanceo de carga, pero permite que el balanceador de carga admita más de 250 back-ends.
Para obtener instrucciones de configuración, consulta Subconjuntos.
Advertencias relacionadas con la creación de subconjuntos de backend para el balanceador de carga de red de paso a través interno
- Cuando se habilita la creación de subconjuntos, no todos los back-ends recibirán tráfico de un remitente determinado, aunque el número de back-ends sea pequeño.
- Para ver el número máximo de instancias de backend cuando se habilita la creación de subconjuntos, consulta la página de cuotas .
- Solo se admite la afinidad de sesión de 5 tuplas con subconjuntos.
- Packet Mirroring no es compatible con la creación de subconjuntos.
- Si se habilita o inhabilita la creación de subconjuntos, se interrumpirán las conexiones.
- Si los clientes locales necesitan acceder a un balanceador de carga de red de paso a través interno, la creación de subconjuntos puede reducir considerablemente el número de back-ends que reciben conexiones de sus clientes locales. Esto se debe a que la región del túnel de Cloud VPN o de la vinculación de VLAN de Cloud Interconnect determina el subconjunto de los back-ends del balanceador de carga. Todos los puntos finales de Cloud VPN y Cloud Interconnect de una región específica usan el mismo subconjunto. Se usan diferentes subconjuntos en distintas regiones.
Precios de subconjuntos de backend
No se aplican cargos por usar el subconjunto de backend. Para obtener más información, consulta la página Todos los precios de redes.
Afinidad de sesión
La afinidad de sesión te permite controlar cómo selecciona el balanceador de carga los backends para las conexiones nuevas de forma predecible, siempre que el número 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 endpoint. Estas aplicaciones suelen incluir servidores con estado que se usan para servir anuncios, juegos o servicios con un almacenamiento en caché interno elevado.
Los balanceadores de cargaGoogle Cloud proporcionan afinidad de sesión en la medida de lo posible. Factores como los cambios en los estados de las comprobaciones de estado del backend, la adición o eliminación de backends, los cambios en los pesos del backend (incluida la habilitación o inhabilitación del balanceo ponderado) o los cambios en la capacidad del backend, medidos por el modo de balanceo, pueden interrumpir la afinidad de sesión.
El balanceo de carga con afinidad de sesión funciona bien cuando hay una distribución razonablemente grande de conexiones únicas. Razonablemente grande significa al menos varias veces el número de back-ends. Si pruebas un balanceador de carga con un número reducido de conexiones, no obtendrás una representación precisa de la distribución de las conexiones de cliente entre los back-ends.
De forma predeterminada, todos los balanceadores de carga Google Cloud seleccionan los backends mediante un hash de cinco tuplas (--session-affinity=NONE
), de la siguiente manera:
- Dirección IP de origen del paquete
- Puerto de origen del paquete (si está presente en el encabezado del paquete)
- Dirección IP de destino del paquete
- Puerto de destino del paquete (si está presente en el encabezado del paquete)
- Protocolo del paquete
Para obtener más información sobre la afinidad de sesión en los balanceadores de carga de red de paso a través, consulta los siguientes documentos:
- Distribución del tráfico de los balanceadores de carga de red de paso a través externos
- Distribución del tráfico de los balanceadores de carga de red de paso a través internos
Para obtener más información sobre la afinidad de sesión de los balanceadores de carga de aplicaciones, consulte los siguientes documentos:
- Afinidad de sesión para balanceadores de carga de aplicación externos
- Afinidad de sesión para balanceadores de carga de aplicación internos
Para obtener más información sobre la afinidad de sesión de los balanceadores de carga de red proxy, consulta los siguientes documentos:
- Afinidad de sesión para balanceadores de carga de red de proxy externos
- Afinidad de sesión para balanceadores de carga de red de proxy internos
Tiempo de espera del servicio de backend
La mayoría de los Google Cloud balanceadores de carga tienen un tiempo de espera del servicio de backend. El valor predeterminado es 30 segundos. El intervalo completo de valores de tiempo de espera permitidos es de 1 a 2.147.483.647 segundos.
En el caso de los balanceadores de carga de aplicaciones externos e internos que usan el protocolo HTTP, HTTPS o HTTP/2, el tiempo de espera del servicio de backend es un tiempo de espera de solicitud y respuesta para el tráfico HTTP(S).
Para obtener más información sobre el tiempo de espera del servicio de backend de cada balanceador de carga, consulta lo siguiente:
- Para los balanceadores de carga de aplicación externos globales y los balanceadores de carga de aplicación externos regionales, consulta Tiempos de espera y reintentos.
- Para los balanceadores de carga de aplicación internos, consulta Tiempos de espera y reintentos.
En el caso de los balanceadores de carga de red de proxy externo, el tiempo de espera es un tiempo de espera inactivo. Para permitir que pase más o menos tiempo antes de que se elimine la conexión, cambia el valor del tiempo de espera. Este tiempo de espera también se usa en las conexiones WebSocket.
En el caso de los balanceadores de carga de red de paso a través internos y externos, puede definir el valor del tiempo de espera del servicio de backend mediante
gcloud
o la API, pero el valor se ignora. El tiempo de espera del servicio de backend no tiene ningún significado para estos balanceadores de carga de transferencia.
- En Cloud Service Mesh, el campo de tiempo de espera del servicio de backend (especificado mediante
timeoutSec
) no se admite con los servicios gRPC sin proxy. En el caso de estos servicios, configura el tiempo de espera del servicio de backend mediante el campomaxStreamDuration
. Esto se debe a que gRPC no admite la semántica detimeoutSec
, que especifica el tiempo que se debe esperar a que un backend devuelva una respuesta completa después de enviar la solicitud. El tiempo de espera de gRPC especifica el tiempo que se debe esperar desde el inicio de la emisión hasta que la respuesta se haya procesado por completo, incluidos todos los reintentos.
Comprobaciones del estado
Cada servicio de backend cuyos backends sean grupos de instancias o NEGs zonales debe tener una comprobación de estado asociada. Los servicios de backend que usen un NEG sin servidor o un NEG de Internet global como backend no deben hacer referencia a una comprobación de estado.
Cuando creas un balanceador de carga con la Google Cloud consola, puedes crear la comprobación de estado, si es necesario, al crear el balanceador de carga o puedes hacer referencia a una comprobación de estado que ya tengas.
Cuando creas un servicio backend con backends de grupo de instancias o NEG zonales mediante la CLI de Google Cloud o la API, debes hacer referencia a una comprobación de estado ya creada. Consulta la guía de balanceadores de carga de la descripción general de las comprobaciones del estado para obtener información sobre el tipo y el ámbito de la comprobación del estado que se requiere.
Para obtener más información, consulta los siguientes documentos:
- Información general sobre las comprobaciones del estado
- Crear comprobaciones del estado
- Página de comprobación del estado de
gcloud
- Página de comprobación del estado de la API REST
Funciones adicionales habilitadas en el recurso de servicio backend
Algunos servicios backend admiten las siguientes funciones opcionales.
Cloud CDN
Cloud CDN usa la red perimetral mundial de Google para mostrar el contenido que se encuentre más cerca de los usuarios, lo que acelera tus sitios web y aplicaciones. Cloud CDN está habilitado en los servicios de backend que usan los balanceadores de carga de aplicación externos globales. El balanceador de carga proporciona las direcciones IP de frontend y los puertos que reciben las solicitudes, así como los backends que responden a ellas.
Para obtener más información, consulta la documentación de Cloud CDN.
Cloud CDN no es compatible con IAP. No se pueden habilitar en el mismo servicio de backend.
Cloud Armor
Si usas uno de los siguientes balanceadores de carga, puedes añadir protección adicional a tus aplicaciones habilitando Cloud Armor en el servicio de backend durante la creación del balanceador de carga:
- Balanceador de carga de aplicación externo global
- Balanceador de carga de aplicación clásico
- Balanceador de carga de red con proxy externo global
- Balanceador de carga de red de proxy clásico
Si usas la Google Cloud consola, puedes hacer lo siguiente:
- Selecciona una política de seguridad de Cloud Armor.
- Aceptar la configuración de una política de seguridad de limitación de frecuencia de Cloud Armor predeterminada con un nombre, un recuento de solicitudes, un intervalo, una clave y parámetros de limitación de frecuencia personalizables. Si usas Cloud Armor con un servicio de proxy upstream, como un proveedor de CDN,
Enforce_on_key
debe definirse como una dirección IP XFF. - Para inhabilitar la protección de Cloud Armor, selecciona Ninguno.
IAP
IAP te permite establecer una capa de autorización central para las aplicaciones a las que se accede mediante HTTPS, de forma que puedas usar un modelo de control de acceso a nivel de aplicación en lugar de depender de cortafuegos a nivel de red. IAP es compatible con determinados balanceadores de carga de aplicaciones.
IAP no es compatible con Cloud CDN. No se pueden habilitar en el mismo servicio de backend.
Funciones avanzadas de gestión del tráfico
Para obtener información sobre las funciones avanzadas de gestión del tráfico que se configuran en los servicios de backend y los mapas de URLs asociados a los balanceadores de carga, consulta los siguientes artículos:
- Descripción general de la gestión del tráfico de los balanceadores de carga de aplicación internos
- Descripción general de la gestión del tráfico de los balanceadores de carga de aplicación externos globales
- Descripción general de la gestión del tráfico de los balanceadores de carga de aplicación externos regionales
API y referencia de gcloud
Para obtener más información sobre las propiedades del recurso de servicio backend, consulta las siguientes referencias:
- Recurso de la API de servicio backend global
Recurso API de servicio backend regional
gcloud compute backend-services
página, para servicios backend globales y regionales
Siguientes pasos
Para consultar la documentación relacionada e información sobre cómo se usan los servicios backend en el balanceo de carga, consulta lo siguiente:
- Crear encabezados personalizados
- Crear un balanceador de carga de aplicación externo
- Descripción general del balanceador de carga de aplicaciones externo
- Habilitar la purga de conexión
- Cifrado en tránsito en Google Cloud
En el caso de los vídeos relacionados: