Configurar un servicio de backend de Cloud Load Balancing global en Application Design Center

Para crear un balanceador de carga en tu aplicación, debes configurar y conectar distintos componentes de frontend y backend de Cloud Load Balancing. Los componentes independientes te ayudan a aplicar controles distintos para el tráfico externo e interno, así como a evitar el acceso directo a los datos.

El componente de backend de Cloud Load Balancing global te ayuda a gestionar la configuración de distribución del tráfico del balanceador de carga, incluido el protocolo utilizado para conectarse a los backends, la configuración de las sesiones, las comprobaciones de estado y los tiempos de espera. Puede configurar los siguientes backends:

  • NEG sin servidor: una lista de aplicaciones de Cloud Run o Cloud Run functions sin servidor como backends.

  • Grupo de instancias gestionado (MIG): lista de grupos de instancias de Compute Engine como back-ends.

Para obtener más información, consulta el artículo Descripción general de los servicios backend.

En este documento se describen las conexiones y los parámetros que puede configurar al usar App Design Center para crear un backend global de Cloud Load Balancing. Los parámetros de configuración se basan en el módulo de Terraform terraform-google-lb-http.

Conexiones de componentes

Para crear un componente completo de Cloud Load Balancing, debes conectar tu backend global de Cloud Load Balancing a al menos un frontend global de Cloud Load Balancing. Los componentes de Cloud Load Balancing conectados se muestran como un grupo en el lienzo de diseño.

En la siguiente tabla se incluyen los componentes que puedes conectar a un backend de Cloud Load Balancing global y los cambios que se producen en tu aplicación y en el código de Terraform generado.

Componente conectado

Actualizaciones de aplicaciones

Información general

Cloud Run

  • El balanceador de carga puede distribuir el tráfico entrante al servicio de Cloud Run.
  • El servicio de Cloud Run se añade como un endpoint de backend en la configuración de backends de NEG sin servidor de Cloud Load Balancing.
Configurar un balanceador de carga de aplicación externo global con Cloud Run

Frontend de balanceo de carga global de Cloud (obligatorio)

  • El frontend de Cloud Load Balancing, que gestiona las solicitudes entrantes, está vinculado al backend de Cloud Load Balancing, que procesa las solicitudes.
  • La información del servicio backend se añade a la entrada del mapa de URLs del frontend.
Resumen de los mapas de URLs

MIG de Compute Engine

  • El balanceador de carga puede distribuir el tráfico entrante al MIG de Compute Engine.
  • El MIG de Compute Engine se añade al campo de grupos de servicios de backend de Cloud Load Balancing.
Configurar un balanceador de carga de aplicaciones clásico con un backend de grupo de instancias gestionado

Parámetros de configuración obligatorios

Si tu plantilla incluye un componente de backend de balanceo de carga de Cloud global, debes configurar los siguientes parámetros antes de implementarla.

Nombre del parámetro

Descripción y restricciones

Información general

Nombre

Nombre del servicio de backend del balanceador de carga. name

ID del proyecto

El proyecto en el que quieres desplegar el servicio de backend de Cloud Load Balancing.

Configurar componentes

Parámetros de configuración opcionales

Los siguientes parámetros son opcionales. Para mostrar los parámetros avanzados, en el área Configuración, selecciona Mostrar campos avanzados.

Función

Nombre del parámetro

Descripción e información de las restricciones

Información general

Asignaciones de rutas de host

Host Configurar mapas de URLs Usar mapas de URLs
Ruta Configurar mapas de URLs Usar mapas de URLs
Esquema de balanceo de carga loadBalancingScheme Descripción general de los servicios de backend
Protocolo protocol Protocolo a los backends
Nombre de la portabilidad portName Puertos con nombre
Descripción Descripción del servicio de backend. description
Habilitar CDN enableCDN Descripción general de Cloud CDN
Modo de compresión compressionMode La compresión no funciona
Encabezados de solicitud personalizados customRequestHeaders[] Crear encabezados personalizados en servicios de backend
Encabezados de respuesta personalizados customResponseHeaders[] Crear encabezados personalizados en servicios de backend
Tiempo de espera de purga de conexión (seg.) connectionDraining.drainingTimeoutSec Habilitar la purga de conexión
Afinidad de sesión sessionAffinity Afinidad de sesión
TTL de cookie de afinidad (segundos) affinityCookieTtlSec Afinidad de cookie generada
Política de balanceo de carga según ubicación localityLbPolicy Política de localidad del balanceo de carga
Tiempo de espera (segundos) timeoutSec Tiempo de espera del servicio de backend

Configuración de registro

Habilitar logConfig.enable Logging
Frecuencia de muestreo logConfig.sampleRate Logging

Grupos

Grupo backends[].group Back-ends
Descripción Descripción del grupo de back-ends. backends[].description
Modo de balanceo backends[].balancingMode Modos de equilibrio y ajustes de capacidad objetivo
Escalador de capacidad backends[].capcityScaler Escalador de capacidad
Número máximo de conexiones backends[].maxConnections Modo de balanceo de conexiones
Número máximo de conexiones por instancia backends[].maxConnectionsPerInstance Modo de balanceo de conexiones
Número máximo de conexiones por endpoint backends[].maxConnectionsPerEndpoint Modo de balanceo de conexiones
Velocidad máxima backends[].maxRate Modo de balanceo de tarifas
Tarifa máxima por instancia backends[].maxRatePerInstance Modo de balanceo de tarifas
Velocidad máxima por endpoint backends[].maxRatePerEndpoint Modo de balanceo de tarifas
Uso máximo backends[].maxUtilization Modo de equilibrio de la utilización

Backends de NEG sin servidor

Región region [región] Descripción general de los grupos de puntos finales de red sin servidor
Tipo El tipo de backend sin servidor. Los valores posibles son cloud-run, cloud-function o app-engine. Balanceadores de carga admitidos
Nombre del servicio appEngine.service Descripción general de los grupos de puntos finales de red sin servidor
Versión del servicio appEngine.version Descripción general de los grupos de puntos finales de red sin servidor

Configuración de IAP

Habilitar iap.enabled Introducción a Identity-Aware Proxy
ID de cliente de OAuth2 iap.oauth2ClientId Cómo compartir clientes de OAuth
Secreto de cliente de OAuth2 iap.oauth2ClientSecret Cómo compartir clientes de OAuth

Política de CDN

Modo de caché cdnPolicy.cacheMode Descripción general del almacenamiento en caché
Signed URL Cache Max Age Sec cdnPolicy.signedUrlCacheMaxAgeSec Personalizar el tiempo máximo de la caché
TTL predeterminado cdnPolicy.defaultTtl Cambiar la configuración de TTL y las anulaciones
TTL máximo cdnPolicy.maxTtl Cambiar la configuración de TTL y las anulaciones
TTL de cliente cdnPolicy.clientTtl Cambiar la configuración de TTL y las anulaciones
Almacenamiento en caché negativo cdnPolicy.negativeCaching Usar almacenamiento en caché negativo
Servir mientras esté inactivo cdnPolicy.serveWhileStale Publicar contenido obsoleto
Omitir la caché en los encabezados de solicitud cdnPolicy.bypassCacheOnRequestHeaders[] Saltar la caché

Política de almacenamiento en caché negativo

Código cdnPolicy.negativeCachingPolicy[].code Usar almacenamiento en caché negativo
TTL cdnPolicy.negativeCachingPolicy[].ttl Usar almacenamiento en caché negativo

Política de claves de caché

Incluir host cdnPolicy.cacheKeyPolicy.includeHost Claves de caché
Incluir protocolo cdnPolicy.cacheKeyPolicy.includeProtocol Claves de caché
Incluir cadena de consulta cdnPolicy.cacheKeyPolicy.includeQueryString Lista de inclusión de cadenas de consulta
Lista negra de cadenas de consulta cdnPolicy.cacheKeyPolicy.queryStringBlacklist[] Lista de exclusión de cadenas de consulta
Lista blanca de cadenas de consulta cdnPolicy.cacheKeyPolicy.queryStringWhitelist[] Lista de inclusión de cadenas de consulta
Incluir encabezados HTTP cdnPolicy.cacheKeyPolicy.includeHttpHeaders[] Ajustes de la clave de caché de encabezados HTTP y cookies HTTP
Incluir cookies con nombre cdnPolicy.cacheKeyPolicy.includeNamedCookies[] Incluir cookies con nombre

Detección de anomalías

Tiempo base de expulsión (segundos) outlierDetection.baseEjectionTime.seconds Detección de valores atípicos en NEGs sin servidor
Base Ejection Time Nanos outlierDetection.baseEjectionTime.nanos Detección de valores atípicos en NEGs sin servidor
Errores consecutivos outlierDetection.consecutiveErrors Detección de valores atípicos en NEGs sin servidor
Errores de pasarela consecutivos outlierDetection.consecutiveGatewayFailure Detección de valores atípicos en NEGs sin servidor
Aplicar errores consecutivos outlierDetection.enforcingConsecutiveErrors Detección de valores atípicos en NEGs sin servidor
Aplicar errores de pasarela consecutivos outlierDetection.enforcingConsecutiveGatewayFailure Detección de valores atípicos en NEGs sin servidor
Aplicar tasa de éxito outlierDetection.enforcingSuccessRate Detección de valores atípicos en NEGs sin servidor
Segundos de intervalo outlierDetection.interval.seconds Detección de valores atípicos en NEGs sin servidor
Intervalo en nanosegundos outlierDetection.interval.nanos Detección de valores atípicos en NEGs sin servidor
Porcentaje máximo de expulsión outlierDetection.maxEjectionPercent Detección de valores atípicos en NEGs sin servidor
Número mínimo de hosts para valorar la tasa de éxito outlierDetection.successRateMinimumHosts Detección de valores atípicos en NEGs sin servidor
Volumen de solicitudes de tasa de éxito outlierDetection.successRateRequestVolume Detección de valores atípicos en NEGs sin servidor
Factor de desviación estándar de la tasa de éxito outlierDetection.successRateStdevFactor Detección de valores atípicos en NEGs sin servidor

Revisión de salud

Host http2HealthCheck.host Marcas adicionales para comprobaciones de estado HTTP, HTTPS y HTTP/2
Ruta de la solicitud http2HealthCheck.requestPath Criterios de éxito de HTTP, HTTPS y HTTP/2
Solicitud sslHealthCheck.request Criterios de éxito de SSL y TCP
Respuesta sslHealthCheck.response Marcas adicionales para comprobaciones de estado HTTP, HTTPS y HTTP/2
Puerto http2HealthCheck.port Categorías, protocolos y puertos de comprobación de estado
Nombre de la portabilidad http2HealthCheck.portName Puertos con nombre
Encabezado de proxy http2HealthCheck.proxyHeader Encabezados
Especificación de puerto http2HealthCheck.portSpecification Marcas de especificación de puertos
Protocolo type Categorías, protocolos y puertos de comprobación de estado
Intervalo de comprobación (seg.) checkIntervalSec Sondas
Tiempo de espera (segundos) timeoutSec Sondas
Umbral de buen estado healthyThreshold Estado de salud
Umbral en mal estado unhealthyThreshold Estado de salud
Almacenamiento de registros logConfig.enable Información de registro de comprobaciones del estado
Política de seguridad de Edge edge_security_policy Políticas de seguridad de Edge
Política de seguridad security_policy Información general sobre la política de seguridad
Redes de cortafuegos red Configurar reglas de cortafuegos
Proyectos de cortafuegos Nombres de los proyectos en los que se crearán las reglas de cortafuegos. Configurar reglas de cortafuegos
Etiquetas de destino targetTags[] Restringir qué clientes pueden enviar tráfico al balanceador de carga
Cuentas de servicio de destino targetServiceAccounts[] Filtrado de origen y destino por cuenta de servicio

Siguientes pasos

Debes conectar tu componente de backend a un componente de frontend. Para configurar el componente de frontend, consulta Configurar un frontend global de Cloud Load Balancing en Application Design Center.