En este documento se proporcionan instrucciones para configurar un balanceador de carga de aplicaciones externo regional para los servicios que se ejecutan en máquinas virtuales de Compute Engine.
Como los balanceadores de carga de aplicaciones externos regionales te permiten crear balanceadores de carga en regiones específicas, suelen usarse para cargas de trabajo que tienen requisitos de cumplimiento de jurisdicción. Las cargas de trabajo que requieren acceso a la salida del nivel de red Standard son otro caso de uso habitual de los balanceadores de carga de aplicaciones externos regionales, ya que estos admiten tanto el nivel de servicio de red Premium como el Standard.
Antes de seguir esta guía, familiarízate con lo siguiente:
- Descripción general del balanceador de carga de aplicaciones externo
- Descripción general de las reglas de cortafuegos de VPC
Permisos
Para seguir esta guía, debes poder crear instancias y modificar una red en un proyecto. Debes ser propietario o editor del proyecto, o bien tener todos los roles de gestión de identidades y accesos de Compute Engine que se indican a continuación.
Tarea | Rol necesario |
---|---|
Crear redes, subredes y componentes de balanceador de carga | Administrador de red |
Añadir y eliminar reglas de cortafuegos | Administrador de seguridad |
Crear instancias | Administrador de instancias |
Para obtener más información, consulta las siguientes guías:
Descripción general de la configuración
Puede configurar un balanceador de carga de aplicaciones externo regional tal como se describe en el siguiente flujo de configuración de alto nivel. Los pasos numerados hacen referencia a los números del diagrama.
Como se muestra en el diagrama, en este ejemplo se crea un balanceador de carga de aplicaciones externo regional en una red de VPC de la región us-west1
, con un servicio de backend y dos grupos de instancias de backend.
En el diagrama se muestra lo siguiente:
Una red de VPC con dos subredes:
Una subred se usa para los backends (grupos de instancias). Su intervalo de direcciones IP principal es
10.1.2.0/24
.Una subred es una subred de solo proxy en la región
us-west1
. Debes crear una subred solo de proxy en cada región de una red de VPC en la que uses balanceadores de carga de aplicación externos regionales. La subred solo proxy de la región se comparte entre todos los balanceadores de carga regionales de la región. Las direcciones de origen de los paquetes enviados desde los balanceadores de carga a los backends de tu servicio se asignan desde la subred solo proxy. En este ejemplo, la subred de solo proxy de la región tiene un intervalo de direcciones IP principal de10.129.0.0/23
, que es el tamaño de subred recomendado. Para obtener más información, consulta Subredes de solo proxy.
Una regla de cortafuegos que permita el flujo de tráfico de la subred de solo proxy en tu red. Esto significa añadir una regla que permita el tráfico de los puertos TCP
80
,443
y8080
desde10.129.0.0/23
(el intervalo de la subred de solo proxy en este ejemplo). Otra regla de cortafuegos para las pruebas de comprobación del estado.Instancias de backend.
Grupos de instancias:
- Grupos de instancias gestionados o sin gestionar para implementaciones de VMs de Compute Engine
- NEGs para implementaciones de GKE
En cada zona, puedes tener una combinación de tipos de grupos de backend en función de los requisitos de tu implementación.
Una comprobación del estado regional que informa sobre la disponibilidad de tus backends.
Un servicio backend regional que monitoriza el uso y el estado de los backends.
Un mapa de URLs regional que analiza la URL de una solicitud y reenvía las solicitudes a servicios de backend específicos en función del host y la ruta de la URL de la solicitud.
Un proxy HTTP o HTTPS de destino regional, que recibe una solicitud del usuario y la reenvía al mapa de URLs. En el caso de HTTPS, configura un recurso de certificado SSL regional. El proxy de destino puede usar el certificado SSL o el certificado de Gestor de certificados para descifrar el tráfico SSL si configuras el balanceo de carga HTTPS. El proxy de destino puede reenviar tráfico a sus instancias mediante HTTP o HTTPS.
Una regla de reenvío, que tiene la dirección IP externa de tu balanceador de carga para reenviar cada solicitud entrante al proxy de destino.
La dirección IP externa asociada a la regla de reenvío se reserva mediante el comando
gcloud compute addresses create
, tal como se describe en Reservar la dirección IP del balanceador de carga.
Configurar la red y las subredes
Necesitas una red de VPC con dos subredes: una para los backends del balanceador de carga y otra para los proxies del balanceador de carga. Un balanceador de carga de aplicación externo regional es regional. El tráfico de la red de VPC se dirige al balanceador de carga si la fuente del tráfico se encuentra en una subred de la misma región que el balanceador de carga.
En este ejemplo se usan la siguiente red VPC, región y subredes:
Red. La red es una red de VPC en modo personalizado llamada
lb-network
.Subred para las back-ends. Una subred llamada
backend-subnet
en la regiónus-west1
usa10.1.2.0/24
para su intervalo de IP principal.Subred para proxies. Una subred llamada
proxy-only-subnet
en la regiónus-west1
usa10.129.0.0/23
para su intervalo de IP principal.
Configurar la red y la subred de los back-ends
Consola
En la Google Cloud consola, ve a la página Redes de VPC.
Haz clic en Crear red VPC.
En Nombre, escribe
lb-network
.En la sección Subredes:
- Selecciona Personalizado en Modo de creación de subred.
- En la sección Nueva subred, introduce la siguiente información:
- Nombre:
backend-subnet
- Región:
us-west1
- Intervalo de direcciones IP:
10.1.2.0/24
- Nombre:
- Haz clic en Listo.
Haz clic en Crear.
gcloud
Crea la red VPC personalizada con el comando
gcloud compute networks create
:gcloud compute networks create lb-network --subnet-mode=custom
Crea una subred en la red
lb-network
de la regiónus-west1
con el comandogcloud compute networks subnets create
:gcloud compute networks subnets create backend-subnet \ --network=lb-network \ --range=10.1.2.0/24 \ --region=us-west1
Terraform
Para crear la red de VPC, usa el recurso google_compute_network
.
Para crear la subred de VPC en la red lb-network
, usa el recurso google_compute_subnetwork
.
API
Haz una solicitud
POST
al métodonetworks.insert
y sustituye PROJECT_ID por el ID de tu proyecto.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks { "routingConfig": { "routingMode": "REGIONAL" }, "name": "lb-network", "autoCreateSubnetworks": false }
Haz una solicitud
POST
al métodosubnetworks.insert
y sustituye PROJECT_ID por el ID de tu proyecto.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks { "name": "backend-subnet", "network": "projects/PROJECT_ID/global/networks/lb-network", "ipCidrRange": "10.1.2.0/24", "region": "projects/PROJECT_ID/regions/us-west1", }
Configurar la subred de solo proxy
Una subred de solo proxy proporciona un conjunto de direcciones IP que Google usa para ejecutar proxies de Envoy en tu nombre. Los proxies terminan las conexiones del cliente y crean nuevas conexiones con los back-ends.
Todos los balanceadores de carga regionales basados en Envoy de la misma región de la red de VPC lb-network
usan esta subred de solo proxy. Solo puede haber una subred de solo proxy activa por región y por red.
Consola
Si usas la consola de Google Cloud , también puedes esperar y crear la subred de solo proxy más adelante en la página Balanceo de carga.
Si quieres crear la subred de solo proxy ahora, sigue estos pasos:
En la Google Cloud consola, ve a la página Redes de VPC.
Haz clic en el nombre de la red de VPC:
lb-network
.Haz clic en Añadir subred.
En Nombre, escribe
proxy-only-subnet
.En Región, selecciona
us-west1
.En Propósito, selecciona Proxy gestionado regional.
En Intervalo de direcciones IP, introduce
10.129.0.0/23
.Haz clic en Añadir.
gcloud
Crea la subred de solo proxy con el comando gcloud compute networks subnets
create
.
gcloud compute networks subnets create proxy-only-subnet \ --purpose=REGIONAL_MANAGED_PROXY \ --role=ACTIVE \ --region=us-west1 \ --network=lb-network \ --range=10.129.0.0/23
Terraform
Para crear la subred de solo proxy de la VPC en la red lb-network
, usa el recurso google_compute_subnetwork
.
API
Crea la subred de solo proxy con el método subnetworks.insert
y sustituye PROJECT_ID por el ID de tu proyecto.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks { "name": "proxy-only-subnet", "ipCidrRange": "10.129.0.0/23", "network": "projects/PROJECT_ID/global/networks/lb-network", "region": "projects/PROJECT_ID/regions/us-west1", "purpose": "REGIONAL_MANAGED_PROXY", "role": "ACTIVE" }
Configurar reglas de cortafuegos
En este ejemplo se usan las siguientes reglas de cortafuegos:
fw-allow-health-check
. Una regla de entrada aplicable a las instancias que se están balanceando de carga, que permite todo el tráfico TCP de los sistemas de comprobación del estado Google Cloud(en130.211.0.0/22
y35.191.0.0/16
). En este ejemplo, se usa la etiqueta de destinoload-balanced-backend
para identificar las VMs a las que se aplica la regla de cortafuegos.fw-allow-proxies
. Una regla de entrada, aplicable a las instancias con balanceo de carga, que permite el tráfico TCP en los puertos80
,443
y8080
de los proxies gestionados del balanceador de carga de aplicaciones externo regional. En este ejemplo se usa la etiqueta de destinoload-balanced-backend
para identificar las VMs a las que se aplica la regla de cortafuegos.
Sin estas reglas de cortafuegos, la regla denegar predeterminada de entrada bloquea el tráfico entrante a las instancias de backend.
Las etiquetas de destino definen las instancias de backend. Si no se incluyen las etiquetas de destino, las reglas de cortafuegos se aplican a todas las instancias de backend de la red de VPC. Cuando crees las VMs de backend, asegúrate de incluir las etiquetas de destino especificadas, tal como se muestra en Crear un grupo de instancias gestionado.
Consola
En la Google Cloud consola, ve a la página Políticas de cortafuegos.
Haz clic en Crear regla de cortafuegos para crear la regla que permita las comprobaciones deGoogle Cloud estado:
- Nombre:
fw-allow-health-check
- Red:
lb-network
- Sentido del tráfico: entrada
- Acción tras coincidencia: Permitir
- Objetivos: Etiquetas de destino especificadas
- Etiquetas de destino:
load-balanced-backend
- Filtro de origen: Intervalos de IPv4
- Intervalos de IPv4 de origen:
130.211.0.0/22
y35.191.0.0/16
- Protocolos y puertos:
- Elige Protocolos y puertos especificados.
- Selecciona la casilla TCP y, a continuación, introduce
80
como número de puerto.
Como práctica recomendada, limita esta regla a los protocolos y puertos que coincidan con los que usa tu comprobación de estado. Si usastcp:80
para el protocolo y el puerto, Google Cloud puede usar HTTP en el puerto80
para ponerse en contacto con tus VMs, pero no puede usar HTTPS en el puerto443
para hacerlo.
- Nombre:
Haz clic en Crear.
Haz clic en Crear regla de cortafuegos para crear la regla que permita que los servidores proxy del balanceador de carga se conecten a los backends:
- Nombre:
fw-allow-proxies
- Red:
lb-network
- Sentido del tráfico: entrada
- Acción tras coincidencia: Permitir
- Objetivos: Etiquetas de destino especificadas
- Etiquetas de destino:
load-balanced-backend
- Filtro de origen: Intervalos de IPv4
- Intervalos de IPv4 de origen:
10.129.0.0/23
- Protocolos y puertos:
- Elige Protocolos y puertos especificados.
- Selecciona la casilla TCP y, a continuación, introduce
80, 443, 8080
en los números de puerto.
- Nombre:
Haz clic en Crear.
gcloud
Crea la regla
fw-allow-health-check
para permitir Google Cloud las comprobaciones del estado. En este ejemplo, se permite todo el tráfico TCP de los verificadores de comprobación del estado. Sin embargo, puede configurar un conjunto de puertos más reducido para satisfacer sus necesidades.gcloud compute firewall-rules create fw-allow-health-check \ --network=lb-network \ --action=allow \ --direction=ingress \ --source-ranges=130.211.0.0/22,35.191.0.0/16 \ --target-tags=load-balanced-backend \ --rules=tcp
Crea la regla
fw-allow-proxies
para permitir que los proxies del balanceador de carga de aplicaciones externo regional se conecten a tus backends. Asigna asource-ranges
los intervalos asignados de tu subred de solo proxy. Por ejemplo,10.129.0.0/23
.gcloud compute firewall-rules create fw-allow-proxies \ --network=lb-network \ --action=allow \ --direction=ingress \ --source-ranges=source-range \ --target-tags=load-balanced-backend \ --rules=tcp:80,tcp:443,tcp:8080
Terraform
Para crear las reglas de cortafuegos, usa el recurso google_compute_firewall
.
API
Crea la regla de cortafuegos fw-allow-health-check
haciendo una solicitud POST
al método firewalls.insert
, sustituyendo PROJECT_ID por el ID de tu proyecto.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewalls { "name": "fw-allow-health-check", "network": "projects/PROJECT-ID/global/networks/lb-network", "sourceRanges": [ "130.211.0.0/22", "35.191.0.0/16" ], "targetTags": [ "load-balanced-backend" ], "allowed": [ { "IPProtocol": "tcp" } ], "direction": "INGRESS" }
Crea la regla de cortafuegos fw-allow-proxies
para permitir el tráfico TCP en la subred de proxy del método firewalls.insert
. Sustituye PROJECT_ID por el ID de tu proyecto.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewalls { "name": "fw-allow-proxies", "network": "projects/PROJECT_ID/global/networks/lb-network", "sourceRanges": [ "10.129.0.0/23" ], "targetTags": [ "load-balanced-backend" ], "allowed": [ { "IPProtocol": "tcp", "ports": [ "80" ] }, { "IPProtocol": "tcp", "ports": [ "443" ] }, { "IPProtocol": "tcp", "ports": [ "8080" ] } ], "direction": "INGRESS" }
Configurar un balanceador de carga de aplicaciones externo regional con un servicio basado en VMs
En esta sección se muestra la configuración necesaria para los servicios que se ejecutan en máquinas virtuales de Compute Engine. Las VMs cliente se conectan a la dirección IP y al puerto que configures en la regla de reenvío. Cuando tus aplicaciones cliente envían tráfico a esta dirección IP y puerto, sus solicitudes se reenvían a tus máquinas virtuales (VMs) de backend según el mapa de URLs de tu balanceador de carga de aplicaciones externo regional.
En el ejemplo de esta página se crea explícitamente una dirección IP externa reservada para la regla de reenvío del balanceador de carga de aplicaciones externo regional, en lugar de permitir que se asigne una dirección IP externa efímera. Como práctica recomendada, te sugerimos que reserves direcciones IP para las reglas de reenvío.
Crear un backend de grupo de instancias gestionado
En esta sección se muestra cómo crear una plantilla y un grupo de instancias gestionado. El grupo de instancias gestionado proporciona instancias de VM que ejecutan los servidores backend de un balanceador de carga de aplicaciones externo regional de ejemplo. El tráfico de los clientes se balancea entre estos servidores de backend. Para hacer demostraciones, los back-ends sirven sus propios nombres de host.
Consola
Crea una plantilla de instancia. En la consola, ve a la página Plantillas de instancia. Google Cloud
- Haz clic en Crear plantilla de instancia.
- En Nombre, escribe
l7-xlb-backend-template
. - Asegúrate de que Disco de arranque esté configurado con una imagen de Debian, como Debian GNU/Linux 12 (bookworm). En estas instrucciones se usan comandos que solo están disponibles en Debian, como
apt-get
. - Haz clic en Advanced options (Opciones avanzadas).
- Haga clic en Redes y configure los siguientes campos:
- En Etiquetas de red, introduzca
load-balanced-backend
. - En Interfaces de red, selecciona lo siguiente:
- Red:
lb-network
- Subred:
backend-subnet
- Red:
- En Etiquetas de red, introduzca
Haz clic en Gestión. Introduce la siguiente secuencia de comandos en el campo Secuencia de comandos de inicio.
#! /bin/bash apt-get update apt-get install apache2 -y a2ensite default-ssl a2enmod ssl vm_hostname="$(curl -H "Metadata-Flavor:Google" \ http://metadata.google.internal/computeMetadata/v1/instance/name)" echo "Page served from: $vm_hostname" | \ tee /var/www/html/index.html systemctl restart apache2
Haz clic en Crear.
Crea un grupo de instancias gestionado. En la consola, ve a la página Grupos de instancias. Google Cloud
- Haz clic en Crear grupo de instancias.
- Selecciona Nuevo grupo de instancias gestionado (sin reconocimiento del estado). Para obtener más información, consulta Grupos de instancias gestionados con o sin reconocimiento del estado.
- En Nombre, escribe
l7-xlb-backend-example
. - En Ubicación, selecciona Una sola zona.
- En Región, selecciona
us-west1
. - En Zona, selecciona
us-west1-a
. - En Plantilla de instancia, selecciona
l7-xlb-backend-template
. En Modo de autoescalado, selecciona Activado: añade y quita instancias del grupo.
Define Número mínimo de instancias como
2
y Número máximo de instancias como2
o más.Haz clic en Crear.
gcloud
En las gcloud
instrucciones de esta guía se presupone que usas Cloud Shell u otro entorno con bash instalado.
Crea una plantilla de instancia de VM con un servidor HTTP con el comando
gcloud compute instance-templates create
.gcloud compute instance-templates create l7-xlb-backend-template \ --region=us-west1 \ --network=lb-network \ --subnet=backend-subnet \ --tags=load-balanced-backend \ --image-family=debian-12 \ --image-project=debian-cloud \ --metadata=startup-script='#! /bin/bash apt-get update apt-get install apache2 -y a2ensite default-ssl a2enmod ssl vm_hostname="$(curl -H "Metadata-Flavor:Google" \ http://metadata.google.internal/computeMetadata/v1/instance/name)" echo "Page served from: $vm_hostname" | \ tee /var/www/html/index.html systemctl restart apache2'
Crea un grupo de instancias gestionado en la zona con el comando
gcloud compute instance-groups managed create
.gcloud compute instance-groups managed create l7-xlb-backend-example \ --zone=us-west1-a \ --size=2 \ --template=l7-xlb-backend-template
Terraform
Para crear la plantilla de instancia, usa el recurso google_compute_instance_template
.
Para crear el grupo de instancias gestionado, usa el recurso google_compute_instance_group_manager
.
API
Crea la plantilla de instancia con el método
instanceTemplates.insert
y sustituyePROJECT_ID
por el ID de tu proyecto.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates { "name":"l7-xlb-backend-template", "properties": { "machineType":"e2-standard-2", "tags": { "items":[ "load-balanced-backend" ] }, "metadata": { "kind":"compute#metadata", "items":[ { "key":"startup-script", "value":"#! /bin/bash\napt-get update\napt-get install apache2 -y\na2ensite default-ssl\na2enmod ssl\nvm_hostname=\"$(curl -H \"Metadata-Flavor:Google\" \\\nhttp://metadata.google.internal/computeMetadata/v1/instance/name)\"\necho \"Page served from: $vm_hostname\" | \\\ntee /var/www/html/index.html\nsystemctl restart apache2" } ] }, "networkInterfaces":[ { "network":"projects/PROJECT_ID/global/networks/lb-network", "subnetwork":"regions/us-west1/subnetworks/backend-subnet", "accessConfigs":[ { "type":"ONE_TO_ONE_NAT" } ] } ], "disks": [ { "index":0, "boot":true, "initializeParams": { "sourceImage":"projects/debian-cloud/global/images/family/debian-12" }, "autoDelete":true } ] } }
Crea un grupo de instancias gestionadas en cada zona con el método
instanceGroupManagers.insert
, sustituyendoPROJECT_ID
por el ID de tu proyecto.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/{zone}/instanceGroupManagers { "name": "l7-xlb-backend-example", "zone": "projects/PROJECT_ID/zones/us-west1-a", "instanceTemplate": "projects/PROJECT_ID/global/instanceTemplates/l7-xlb-backend-template", "baseInstanceName": "l7-xlb-backend-example", "targetSize": 2 }
Añadir un puerto con nombre al grupo de instancias
En tu grupo de instancias, define un servicio HTTP y asigna un nombre de puerto al puerto correspondiente. El servicio de backend del balanceador de carga reenvía el tráfico al puerto con nombre.
Consola
En la consola, ve a la página Grupos de instancias. Google Cloud
Haz clic en el nombre del grupo de instancias (en este ejemplo,
l7-xlb-backend-example
).En la página Resumen del grupo de instancias, haga clic en Editar
.Haz clic en Especificar asignación de nombres de puertos.
Haz clic en Añadir elemento.
En el nombre del puerto, introduce
http
. En el número de puerto, introduce80
.Haz clic en Guardar.
gcloud
Usa el comando gcloud compute instance-groups
set-named-ports
.
gcloud compute instance-groups set-named-ports l7-xlb-backend-example \ --named-ports http:80 \ --zone us-west1-a
Terraform
El atributo named_port
se incluye en el ejemplo de grupo de instancias gestionado.
Reservar la dirección IP del balanceador de carga
Reserva una dirección IP estática para el balanceador de carga.
Consola
En la Google Cloud consola, ve a la página Reservar una dirección estática.
Elige un nombre para la nueva dirección.
En Nivel de servicio de red, selecciona Estándar.
En Versión de IP, selecciona IPv4. Las direcciones IPv6 solo pueden ser globales y solo se pueden usar con balanceadores de carga globales.
En Type (Tipo), selecciona Regional (Regional).
En Region (Región), selecciona us-west1.
Deje la opción Adjunto a configurada como Ninguno. Una vez que hayas creado el balanceador de carga, esta dirección IP se adjuntará a la regla de reenvío del balanceador de carga.
Haz clic en Reservar para reservar la dirección IP.
gcloud
Para reservar una dirección IP externa estática con
gcloud compute
, usa el comandocompute addresses create
.gcloud compute addresses create ADDRESS_NAME \ --region=us-west1 \ --network-tier=STANDARD
Haz los cambios siguientes:
ADDRESS_NAME
: el nombre que quieras darle a esta dirección.REGION
: la región en la que quieres reservar esta dirección. Esta región debe ser la misma que la del balanceador de carga. Todas las direcciones IP regionales sonIPv4
.
Usa el comando
compute addresses describe
para ver el resultado:gcloud compute addresses describe ADDRESS_NAME
Terraform
Para reservar la dirección IP, usa el recurso google_compute_address
.
Para saber cómo aplicar o quitar una configuración de Terraform, consulta Comandos básicos de Terraform.
API
Para crear una dirección IPv4 regional, llama al método addresses.insert
regional:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/addresses
El cuerpo de la solicitud debe contener lo siguiente:
{ "name": "ADDRESS_NAME" "networkTier": "STANDARD" "region": "us-west1" }
Haz los cambios siguientes:
ADDRESS_NAME
: nombre de la direcciónREGION
: el nombre de la región de esta solicitudPROJECT_ID
: el ID de proyecto de esta solicitud
Configurar el balanceador de carga
En este ejemplo se muestra cómo crear los siguientes recursos de balanceador de carga de aplicaciones externo regional:
- Comprobación del estado de HTTP
- Servicio de backend con un grupo de instancias gestionado como backend
- Una asignación de URLs
- Asegúrate de hacer referencia a un mapa de URLs regional si se ha definido una región para el proxy HTTP(S) de destino. Un mapa de URLs regional enruta las solicitudes a un servicio de backend regional en función de las reglas que definas para el host y la ruta de una URL entrante. Un mapa de URLs regional solo puede hacer referencia a una regla de proxy de destino regional de la misma región.
- Certificado SSL (para HTTPS)
- Proxy de destino
- Regla de reenvío
Disponibilidad de proxy
A veces, las Google Cloud regiones no tienen suficiente capacidad de proxy para un nuevo balanceador de carga. Si esto ocurre, la Google Cloud consola proporciona un mensaje de advertencia de disponibilidad del proxy cuando creas el balanceador de carga. Para solucionar este problema, puedes hacer una de las siguientes cosas:
- Selecciona otra región para el balanceador de carga. Esta puede ser una opción práctica si tienes back-ends en otra región.
- Selecciona una red de VPC que ya tenga una subred de solo proxy asignada.
Espera a que se resuelva el problema de capacidad.
Consola
Selecciona el tipo de balanceador de carga
En la Google Cloud consola, ve a la página Balanceo de carga.
- Haga clic en Crear balanceador de carga.
- En Tipo de balanceador de carga, selecciona Balanceador de carga de aplicación (HTTP/HTTPS) y haz clic en Siguiente.
- En Público o interno, selecciona Público (externo) y haz clic en Siguiente.
- Para la implementación global o en una sola región, selecciona La mejor opción para cargas de trabajo regionales y haz clic en Siguiente.
- Haz clic en Configurar.
Configuración básica
- En el nombre del balanceador de carga, introduce
regional-l7-xlb
. - En Región, selecciona
us-west1
. - En Red, selecciona
lb-network
.
Reservar una subred de solo proxy
En el caso de un balanceador de carga de aplicación externo regional, reserva una subred de solo proxy:
- Haz clic en Reservar subred.
- En Nombre, escribe
proxy-only-subnet
. - En Intervalo de direcciones IP, introduce
10.129.0.0/23
. - Haz clic en Añadir.
Configurar el frontend
Para HTTP:
- Haz clic en Configuración de frontend.
- Asigna el valor
l7-xlb-forwarding-rule
a Nombre. - Define Protocol (Protocolo) como
HTTP
. - Configure Nivel de servicio de red como Estándar.
- Define Puerto como
80
. - Selecciona la dirección IP que has creado en Reservar la dirección IP del balanceador de carga.
- Haz clic en Listo.
En el caso de HTTPS:
- Haz clic en Configuración de frontend.
- En el campo Name (Nombre), introduce
l7-xlb-forwarding-rule
. - En el campo Protocol (Protocolo), selecciona
HTTPS (includes HTTP/2)
. - Configure Nivel de servicio de red como Estándar.
- Asegúrate de que el Puerto esté configurado como
443
. - Selecciona la dirección IP que has creado en Reservar la dirección IP del balanceador de carga.
- En la lista Certificado, haz lo siguiente:
- Si ya tienes un recurso de certificado SSL autogestionado de Compute Engine, selecciona el certificado SSL principal.
- Haz clic en Crear certificado.
- En el campo Name (Nombre), introduce
l7-xlb-cert
. - En los campos correspondientes, sube los archivos con formato PEM:
- Certificado
- Clave privada
- Haz clic en Crear.
- En el campo Name (Nombre), introduce
- Opcional: Para añadir certificados además del certificado SSL principal, sigue estos pasos:
- Haz clic en Añadir certificado.
- Si ya tienes un certificado, selecciónalo en la lista Certificados.
- Opcional: Haz clic en Crear un certificado y sigue las instrucciones del paso anterior.
Selecciona una política de SSL de la lista Política de SSL. Si quiere crear una política de SSL, siga estos pasos:
- En la lista Política de SSL, selecciona Crear política.
- Escribe un nombre para la política de SSL.
- Seleccione una versión mínima de TLS. El valor predeterminado es TLS 1.0.
- Selecciona uno de los perfiles preconfigurados gestionados por Google o un perfil Personalizado que te permita seleccionar funciones SSL de forma individual. Se muestran las secciones Funciones habilitadas y Funciones inhabilitadas.
- Haz clic en Guardar.
Si no has creado ninguna política de SSL, se aplicará una política de SSL predeterminada Google Cloud .
Haz clic en Listo.
Configurar el servicio de backend
- Haz clic en Configuración de backend.
- En el menú Crear o seleccionar servicios de backend, selecciona Crear un servicio de backend.
- Asigna el nombre
l7-xlb-backend-service
al servicio de backend. - En Protocol (Protocolo), selecciona HTTP.
- En Puerto con nombre, introduce
http
. - En Tipo de backend, seleccione Grupo de instancias.
- En la sección Nuevo backend, haz lo siguiente:
- Define Grupo de instancias como
l7-xlb-backend-example
. - Define Port numbers (Transferir números) en
80
. - En Modo de balanceo, selecciona Utilización.
- Haz clic en Listo.
- Define Grupo de instancias como
- En la lista Comprobación del estado, haga clic en Crear una comprobación del estado.
- Asigna el valor
l7-xlb-basic-check
a Nombre. - Define Protocol (Protocolo) como
HTTP
. - Define Puerto como
80
. - Haz clic en Guardar.
- Asigna el valor
- Haz clic en Crear.
Configurar las reglas de enrutamiento
- Haz clic en Reglas de enrutamiento.
- En Modo, selecciona Regla sencilla de host y ruta.
- Asegúrate de que
l7-xlb-backend-service
sea el único servicio de backend para cualquier host o ruta sin coincidencia.
Revisar la configuración
- Haz clic en Revisar y finalizar.
- Revisa los ajustes de configuración de tu balanceador de carga.
- Opcional: Haz clic en Código equivalente para ver la solicitud de la API REST que se usará para crear el balanceador de carga.
- Haz clic en Crear.
gcloud
Define la comprobación del estado de HTTP con el comando
gcloud compute health-checks create http
.gcloud compute health-checks create http l7-xlb-basic-check \ --region=us-west1 \ --request-path='/' \ --use-serving-port
Define el servicio de backend con el comando
gcloud compute backend-services create
.gcloud compute backend-services create l7-xlb-backend-service \ --load-balancing-scheme=EXTERNAL_MANAGED \ --protocol=HTTP \ --port-name=http \ --health-checks=l7-xlb-basic-check \ --health-checks-region=us-west1 \ --region=us-west1
Añade backends al servicio de backend con el comando
gcloud compute backend-services add-backend
.gcloud compute backend-services add-backend l7-xlb-backend-service \ --balancing-mode=UTILIZATION \ --instance-group=l7-xlb-backend-example \ --instance-group-zone=us-west1-a \ --region=us-west1
Crea el mapa de URLs con el comando
gcloud compute url-maps create
.gcloud compute url-maps create regional-l7-xlb-map \ --default-service=l7-xlb-backend-service \ --region=us-west1
Crea el proxy de destino.
En HTTP:
En el caso de un balanceador de carga HTTP, crea el proxy de destino con el comando
gcloud compute target-http-proxies create
.gcloud compute target-http-proxies create l7-xlb-proxy \ --url-map=regional-l7-xlb-map \ --url-map-region=us-west1 \ --region=us-west1
Para HTTPS:
Puedes crear certificados de Compute Engine o de Certificate Manager. Utiliza cualquiera de los siguientes métodos para crear certificados con Certificate Manager:
- Certificados autogestionados regionales. Para obtener información sobre cómo crear y usar certificados regionales autogestionados, consulta Implementar un certificado regional autogestionado. No se admiten mapas de certificados.
Certificados gestionados por Google regionales. No se admiten mapas de certificados.
Certificate Manager admite los siguientes tipos de certificados regionales gestionados por Google:
- Certificados regionales gestionados por Google con autorización de DNS por proyecto. Para obtener más información, consulta el artículo sobre cómo desplegar un certificado regional gestionado por Google con autorización de DNS.
- Certificados privados gestionados por Google regionales con el Servicio de Autoridades de Certificación. Para obtener más información, consulta el artículo sobre cómo implementar un certificado regional gestionado por Google con el Servicio de Autoridades de Certificación.
Una vez que hayas creado los certificados, adjúntalos directamente al proxy de destino.
Asigna las rutas de los archivos a nombres de variables.
export LB_CERT=path to PEM-formatted file
export LB_PRIVATE_KEY=path to PEM-formatted file
Crea un certificado SSL regional con el comando
gcloud compute ssl-certificates create
.gcloud compute ssl-certificates create l7-xlb-cert \ --certificate=$LB_CERT \ --private-key=$LB_PRIVATE_KEY \ --region=us-west1
Usa el certificado SSL regional para crear un proxy de destino con el comando
gcloud compute target-https-proxies create
.gcloud compute target-https-proxies create l7-xlb-proxy \ --url-map=regional-l7-xlb-map \ --region=us-west1 \ --ssl-certificates=l7-xlb-cert
Crea la regla de reenvío.
En HTTP:
Usa el comando
gcloud compute forwarding-rules create
con las marcas correctas.gcloud compute forwarding-rules create l7-xlb-forwarding-rule \ --load-balancing-scheme=EXTERNAL_MANAGED \ --network-tier=STANDARD \ --network=lb-network \ --address=ADDRESS_NAME \ --ports=80 \ --region=us-west1 \ --target-http-proxy=l7-xlb-proxy \ --target-http-proxy-region=us-west1
Para HTTPS:
Crea la regla de reenvío con el comando
gcloud compute forwarding-rules create
con las marcas correctas.gcloud compute forwarding-rules create l7-xlb-forwarding-rule \ --load-balancing-scheme=EXTERNAL_MANAGED \ --network-tier=STANDARD \ --network=lb-network \ --address=ADDRESS_NAME \ --ports=443 \ --region=us-west1 \ --target-https-proxy=l7-xlb-proxy \ --target-https-proxy-region=us-west1
Terraform
Para crear la comprobación del estado, usa el recurso google_compute_region_health_check
.
Para crear el servicio de backend, usa el recurso google_compute_region_backend_service
.
Para crear el mapa de URLs, usa el recurso google_compute_region_url_map
.
Para crear el proxy HTTP de destino, usa el recurso google_compute_region_target_http_proxy
.
Para crear la regla de reenvío, usa el recurso google_compute_forwarding_rule
.
Para saber cómo aplicar o quitar una configuración de Terraform, consulta Comandos básicos de Terraform.
API
Para crear la comprobación del estado, haz una solicitud POST
al método regionHealthChecks.insert
, sustituyendo PROJECT_ID
por el ID de tu proyecto.
POST https://compute.googleapis.com/compute/v1/projects/<var>PROJECT_ID</var>/regions/{region}/healthChecks
{
"name": "l7-xlb-basic-check",
"type": "HTTP",
"httpHealthCheck": {
"portSpecification": "USE_SERVING_PORT"
}
}
Crea el servicio backend regional haciendo una solicitud POST
al método regionBackendServices.insert
, sustituyendo PROJECT_ID
por el ID de tu proyecto.
POST https://compute.googleapis.com/compute/v1/projects/<var>PROJECT_ID</var>/regions/us-west1/backendServices
{
"name": "l7-xlb-backend-service",
"backends": [
{
"group": "projects/<var>PROJECT_ID</var>/zones/us-west1-a/instanceGroups/l7-xlb-backend-example",
"balancingMode": "UTILIZATION"
}
],
"healthChecks": [
"projects/<var>PROJECT_ID</var>/regions/us-west1/healthChecks/l7-xlb-basic-check"
],
"loadBalancingScheme": "EXTERNAL_MANAGED"
}
Crea el mapa de URLs haciendo una solicitud POST
al método
regionUrlMaps.insert
y sustituyendo PROJECT_ID
por el ID de tu proyecto.
POST https://compute.googleapis.com/compute/v1/projects/<var>PROJECT_ID</var>/regions/us-west1/urlMaps
{
"name": "regional-l7-xlb-map",
"defaultService": "projects/<var>PROJECT_ID</var>/regions/us-west1/backendServices/l7-xlb-backend-service"
}
Crea el proxy HTTP de destino enviando una solicitud POST
al método regionTargetHttpProxies.insert
y sustituyendo PROJECT_ID
por el ID de tu proyecto.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/targetHttpProxy { "name": "l7-xlb-proxy", "urlMap": "projects/PROJECT_ID/global/urlMaps/regional-l7-xlb-map", "region": "us-west1" }
Para crear la regla de reenvío, haz una solicitud POST
al método forwardingRules.insert
y sustituye PROJECT_ID
por el ID de tu proyecto.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/forwardingRules { "name": "l7-xlb-forwarding-rule", "IPAddress": "10.1.2.99", "IPProtocol": "TCP", "portRange": "80-80", "target": "projects/PROJECT_ID/regions/us-west1/targetHttpProxies/l7-xlb-proxy", "loadBalancingScheme": "EXTERNAL_MANAGED", "network": "projects/PROJECT_ID/global/networks/lb-network", "networkTier": "STANDARD", }
Conectar tu dominio a tu balanceador de carga
Una vez creado el balanceador de carga, anota la dirección IP asociada a él. Por ejemplo, 30.90.80.100
. Para dirigir tu dominio a tu balanceador de carga, crea un registro A
con tu servicio de registro de dominios. Si has añadido varios dominios a tu certificado SSL, debes añadir un registro A
para cada uno de ellos, todos apuntando a la dirección IP del balanceador de carga. Por ejemplo, para crear registros A
de www.example.com
y example.com
, usa lo siguiente:
NAME TYPE DATA www A 30.90.80.100 @ A 30.90.80.100
Si usas Cloud DNS como proveedor de DNS, consulta el artículo sobre cómo añadir, modificar y eliminar registros.
Probar el balanceador de carga
Ahora que el servicio de balanceo de carga está en funcionamiento, puedes enviar tráfico a la regla de reenvío y ver cómo se dispersa entre las diferentes instancias.
Consola
En la Google Cloud consola, ve a la página Balanceo de carga.
- Selecciona el balanceador de carga que acabas de crear.
- En la sección Backend, comprueba que las VMs estén en buen estado. La columna Healthy (Saludable) debe estar rellenada, lo que indica que ambas máquinas virtuales están en buen estado (
2/2
). Si no es así, prueba a volver a cargar la página. La consola Google Cloud puede tardar unos instantes en indicar que las máquinas virtuales están en buen estado. Si los back-ends no están en buen estado al cabo de unos minutos, revisa la configuración del cortafuegos y la etiqueta de red asignada a tus VMs de backend. - Una vez que la consola muestre que las instancias de backend están en buen estado, puedes probar el balanceador de carga con un navegador web. Para ello, ve a
https://IP_ADDRESS
(ohttp://IP_ADDRESS
). SustituyeIP_ADDRESS
por la dirección IP del balanceador de carga. Google Cloud - Si has usado un certificado autofirmado para probar HTTPS, tu navegador mostrará una advertencia. Debes indicar explícitamente a tu navegador que acepte un certificado autofirmado.
- Tu navegador debería renderizar una página con contenido que muestre el nombre de la instancia que ha servido la página, junto con su zona (por ejemplo,
Page served from: lb-backend-example-xxxx
). Si tu navegador no renderiza esta página, revisa los ajustes de configuración de esta guía.
gcloud
Anota la dirección IPv4 que se ha reservado:
gcloud beta compute addresses describe ADDRESS_NAME \ --format="get(address)" \ --region="us-west1"
Puede probar su balanceador de carga con un navegador web. Para ello, vaya a https://IP_ADDRESS
(o http://IP_ADDRESS
). Sustituya IP_ADDRESS
por la dirección IP del balanceador de carga.
Si has usado un certificado autofirmado para probar HTTPS, tu navegador mostrará una advertencia. Debes indicar explícitamente a tu navegador que acepte un certificado autofirmado.
Tu navegador debería renderizar una página con información mínima sobre la instancia de backend. Si tu navegador no renderiza esta página, consulta los ajustes de configuración de esta guía.
Opciones de configuración adicionales
En esta sección se amplía el ejemplo de configuración para ofrecer opciones de configuración alternativas y adicionales. Todas las tareas son opcionales. Puedes realizarlas en el orden que prefieras.
Habilitar la afinidad de sesión
En estos procedimientos se muestra cómo actualizar un servicio de backend del balanceador de carga de aplicaciones externo regional de ejemplo para que use la afinidad de cookies generada, la afinidad de campos de encabezado o la afinidad de cookies HTTP.
Cuando se habilita la afinidad de cookies generadas, el balanceador de carga emite una cookie en la primera solicitud. En cada solicitud posterior con la misma cookie, el balanceador de carga dirige la solicitud a la misma VM o endpoint de backend. En el caso de los balanceadores de carga de aplicación externos regionales, la cookie se llama GCILB
.
Cuando la afinidad de campo de encabezado está habilitada, el balanceador de carga dirige las solicitudes a las VMs de backend o a los endpoints de un NEG en función del valor del encabezado HTTP denominado en la marca --custom-request-header
. La afinidad de campo de encabezado solo es válida si la política de localidad del balanceo de carga es RING_HASH
o MAGLEV
y el hash coherente del servicio de backend especifica el nombre del encabezado HTTP.
Cuando la afinidad de cookies HTTP está habilitada, el balanceador de carga dirige las solicitudes a las VMs de backend o a los endpoints de un NEG en función de una cookie HTTP denominada en la marca HTTP_COOKIE
con la marca opcional --affinity-cookie-ttl
. Si el cliente no proporciona la cookie en su solicitud HTTP, el proxy genera la cookie y la devuelve al cliente en un encabezado Set-Cookie
. La afinidad de cookies HTTP solo es válida si la política de localidad del balanceo de carga es RING_HASH
o MAGLEV
y el hash coherente del servicio de backend especifica la cookie HTTP.
Consola
Para habilitar o cambiar la afinidad de sesión de un servicio de backend, sigue estos pasos:
En la Google Cloud consola, ve a la página Balanceo de carga.
Selecciona el balanceador de carga que acabas de crear.
Haz clic en Back-ends.
Haz clic en l7-xlb-backend-service (el nombre del servicio de backend que has creado para este ejemplo) y, a continuación, en Editar.
En la página Detalles del servicio backend, haz clic en Configuración avanzada.
En Afinidad de sesión, seleccione el tipo de afinidad de sesión que quiera en el menú.
Haz clic en Actualizar.
gcloud
Usa los siguientes comandos para actualizar el servicio de backend l7-xlb-backend-service
a diferentes tipos de afinidad de sesión:
gcloud compute backend-services update l7-xlb-backend-service \ --session-affinity=GENERATED_COOKIE | HEADER_FIELD | HTTP_COOKIE | CLIENT_IP --region=us-west1
API
Para definir la afinidad de sesión, haz una solicitud PATCH
al método regionBackendServices/patch
.
PATCH https://compute.googleapis.com/compute/v1/projects/<var>PROJECT_ID</var>/regions/us-west1/regionBackendServices/l7-xlb-backend-service
{
"sessionAffinity": <var>"GENERATED_COOKIE" | "HEADER_FIELD" | "HTTP_COOKIE" | "CLIENT_IP"</var>
}
Actualizar el tiempo de espera de keep-alive HTTP del cliente
El balanceador de carga creado en los pasos anteriores se ha configurado con un valor predeterminado para el tiempo de espera de keep-alive HTTP del cliente.Para actualizar el tiempo de espera de keep-alive HTTP del cliente, sigue estas instrucciones.
Consola
En la Google Cloud consola, ve a la página Balanceo de carga.
- Haga clic en el nombre del balanceador de carga que quiera modificar.
- Haz clic en Editar.
- Haz clic en Configuración de frontend.
- Despliega Funciones avanzadas. En Tiempo de espera de HTTP Keep-Alive, introduce un valor de tiempo de espera.
- Haz clic en Actualizar.
- Para revisar los cambios, haz clic en Revisar y finalizar y, a continuación, en Actualizar.
gcloud
En el caso de un balanceador de carga HTTP, actualiza el proxy HTTP de destino con el comando gcloud compute target-http-proxies update
.
gcloud compute target-http-proxies update TARGET_HTTP_PROXY_NAME \ --http-keep-alive-timeout-sec=HTTP_KEEP_ALIVE_TIMEOUT_SEC \ --region=REGION
En el caso de un balanceador de carga HTTPS, actualice el proxy HTTPS de destino con el comando gcloud compute target-https-proxies update
.
gcloud compute target-https-proxies update TARGET_HTTP_PROXY_NAME \ --http-keep-alive-timeout-sec=HTTP_KEEP_ALIVE_TIMEOUT_SEC \ --region REGION
Haz los cambios siguientes:
TARGET_HTTP_PROXY_NAME
: nombre del proxy HTTP de destino.TARGET_HTTPS_PROXY_NAME
: nombre del proxy HTTPS de destino.HTTP_KEEP_ALIVE_TIMEOUT_SEC
: el valor del tiempo de espera de HTTP Keep-Alive de 5 a 600 segundos.
Habilitar IAP en el balanceador de carga de aplicación externo
Puedes configurar las compras en aplicaciones para que estén habilitadas o inhabilitadas (opción predeterminada). Si está habilitada, debe proporcionar valores para oauth2-client-id
y oauth2-client-secret
.
Para habilitar IAP, actualiza el servicio de backend para incluir la marca --iap=enabled
con oauth2-client-id
y oauth2-client-secret
.
De forma opcional, puedes habilitar IAP en un recurso de Compute Engine mediante la Google Cloud consola, la CLI de gcloud o la API.
Siguientes pasos
- Convertir un balanceador de carga de aplicaciones a IPv6
- Descripción general de la gestión del tráfico de los balanceadores de carga de aplicación externos regionales
- Subredes de solo proxy
- Usar certificados SSL autogestionados
- Limpiar la configuración del balanceador de carga