Un balanceador de cargas de red de proxy externo regional es un balanceador de cargas regional de capa 4 basado en proxy que te permite ejecutar y escalar el tráfico de servicio TCP en una sola región detrás de una dirección IP regional externa. Estos balanceadores de cargas distribuyen el tráfico de TCP externo desde Internet hasta los backends en la misma región.
Antes de comenzar, lee la descripción general del balanceador de cargas de red del proxy externo.
Esta guía contiene instrucciones para configurar un balanceador de cargas de red del proxy externo regional con un backend de grupo de instancias administrado (MIG). En este ejemplo, debes configurar la implementación que se muestra en el siguiente diagrama.
En este ejemplo, usaremos el balanceador de cargas para distribuir el tráfico de TCP entre las VMs de backend en dos grupos de instancias administrados zonales en la región A. En
este ejemplo en particular, el servicio consiste en un conjunto de
servidores Apache configurados
para responder en el puerto 110. Muchos navegadores no admiten el puerto 110, por lo que, en la sección de prueba, se usa curl.
Un balanceador de cargas de red de proxy externo regional es un balanceador de cargas regional. Todos los componentes del balanceador de cargas deben estar en la misma región que el balanceador de cargas.
Permisos
Para seguir esta guía, debes poder crear instancias y modificar una red en un proyecto. Debes ser propietario o editor de un proyecto o tener todos las siguientes roles de IAM de Compute Engine.
| Tarea | Rol requerido |
|---|---|
| Crear redes, subredes y componentes del balanceador de cargas | Administrador de red de Compute
(roles/compute.networkAdmin) |
| Agrega y quita reglas de firewall | Administrador de seguridad de Compute
(roles/compute.securityAdmin) |
| Crea instancias | Administrador de instancias de Compute
(roles/compute.instanceAdmin) |
Si deseas obtener más información, consulta las siguientes guías:
Opcional: Usa direcciones de BYOIP
Puedes proporcionar tus propias direcciones IP (BYOIP) para importar tus propias direcciones públicas a Cloud de Confiance by S3NS y, así, usarlas con recursos de Cloud de Confiance . Por ejemplo, si importas tus propias direcciones IPv4, puedes asignar una a la regla de reenvío cuando configures tu balanceador de cargas. Cuando sigas las instrucciones de este documento para configurar el balanceador de cargas, proporciona la dirección de BYOIP como la dirección IP.
Para obtener más información sobre el uso de BYOIP, consulta Usa tus propias direcciones IP.
Configura la red y las subredes
Necesitas una red de VPC con dos subredes, una para los backends del balanceador de cargas y la otra para los proxies del balanceador de cargas. Este balanceador de cargas es regional. El tráfico dentro de la red de VPC se enruta al balanceador de cargas si la fuente de tráfico está en una subred en la misma región que el balanceador de cargas.
Este ejemplo usa la siguiente red de VPC, región y subredes:
Red: Una red de VPC de modo personalizado llamada
lb-networkSubred para backends: una subred llamada
backend-subneten la Región A que usa10.1.2.0/24como su rango de direcciones IP principalSubred para proxies: una subred llamada
proxy-only-subneten la Región A que usa10.129.0.0/23como su rango de direcciones IP principal
Crea la red y las subredes
Console
En la consola de Cloud de Confiance , ve a la página Redes de VPC.
Haz clic en Crear red de VPC.
En Nombre, ingresa
lb-network.En la sección Subredes, establece Modo de creación de subred como Personalizado.
Crea una subred para los backends del balanceador de cargas. En la sección Nueva subred, ingresa la siguiente información:
- Nombre:
backend-subnet - Región:
REGION_A - Rangos de direcciones IP:
10.1.2.0/24
- Nombre:
Haz clic en Listo.
Haz clic en Crear.
gcloud
Para crear la red de VPC personalizada, usa el comando
gcloud compute networks create.gcloud compute networks create lb-network --subnet-mode=custom
Para crear una subred en la red
lb-networken la regiónREGION_A, usa el comandogcloud compute networks subnets create:gcloud compute networks subnets create backend-subnet \ --network=lb-network \ --range=10.1.2.0/24 \ --region=REGION_A
Crea la subred de solo proxy
La subred de solo proxy proporciona un conjunto de direcciones IP que Google usa para ejecutar proxies de Envoy en tu nombre. Los proxies finalizan las conexiones del cliente y crean conexiones nuevas a los backends.
Todos los balanceadores de cargas basados en Envoy usan esta subred de solo proxy en la región A de la red de VPC lb-network.
Console
Si usas la consola de Cloud de Confiance , puedes esperar y crear la subred de solo proxy más adelante en la página Balanceo de cargas.
Si quieres crear la subred de solo proxy ahora, sigue estos pasos:
En la consola de Cloud de Confiance , ve a la página Redes de VPC.
Haz clic en el nombre de la red de VPC:
lb-network.Haz clic en Agregar subred.
En Nombre, ingresa
proxy-only-subnet.En Región, selecciona
REGION_A.Configura Propósito como Proxy administrado regional.
En Rango de direcciones IP, ingresa
10.129.0.0/23.Haz clic en Agregar.
gcloud
Para crear la subred de solo proxy, usa el comando gcloud compute networks subnets
create:
gcloud compute networks subnets create proxy-only-subnet \
--purpose=REGIONAL_MANAGED_PROXY \
--role=ACTIVE \
--region=REGION_A \
--network=lb-network \
--range=10.129.0.0/23
Crea reglas de firewall
En este ejemplo, se crean las siguientes reglas de firewall:
fw-allow-ssh. Es una regla de entrada, aplicable a las instancias con balanceo de cargas, y que permite la conectividad SSH entrante en el puerto TCP22desde cualquier dirección. Puedes elegir un rango de IP de origen más restrictivo para esta regla; por ejemplo, puedes especificar solo los rangos de IP del sistema desde el que inicias sesiones SSH. En este ejemplo, se usa la etiqueta de destinoallow-ssh.fw-allow-health-check. Es una regla de entrada, aplicable a las instancias con balanceo de cargas, que permite todo el tráfico de TCP de los rangos de sondeo de verificación de estado.Cloud de Confiance En este ejemplo, se usa la etiqueta de destinoallow-health-check.fw-allow-proxy-only-subnet. Es una regla de entrada que permite que las conexiones de la subred de solo proxy lleguen a los backends.
Sin estas reglas de firewall, la regla predeterminada de denegación de entrada bloquea el tráfico entrante a las instancias de backend.
Las etiquetas de destino definen las instancias de backend. Sin las etiquetas de destino, las reglas de firewall se aplican a todas las instancias de backend en la red de VPC. Cuando crees las VM de backend, asegúrate de incluir las etiquetas de destino especificadas, como se muestra en Crea un grupo de instancias administrado.
Console
En la consola de Cloud de Confiance , ve a la página Políticas de firewall.
Haz clic en Crear regla de firewall para crear la regla que permite conexiones SSH entrantes. Completa los siguientes campos:
- Nombre:
fw-allow-ssh - Red:
lb-network - Dirección del tráfico: Entrada
- Acción en caso de coincidencia: Permitir
- Destinos: Etiquetas de destino especificadas
- Etiquetas de destino:
allow-ssh - Filtro de fuente: Rangos de IPv4
- Rangos de IPv4 de origen:
0.0.0.0/0 - Protocolos y puertos:
- Elige Protocolos y puertos especificados.
- Selecciona la casilla de verificación TCP y, luego, ingresa
22para el número de puerto.
- Nombre:
Haz clic en Crear.
Haz clic en Crear regla de firewall por segunda vez para crear la regla que permita las verificaciones de estado deCloud de Confiance :
- Nombre:
fw-allow-health-check - Red:
lb-network - Dirección del tráfico: Entrada
- Acción en caso de coincidencia: Permitir
- Destinos: Etiquetas de destino especificadas
- Etiquetas de destino:
allow-health-check - Filtro de fuente: Rangos de IPv4
- Rangos de IPv4 de origen:
177.222.80.0/23 Protocolos y puertos:
- Elige Protocolos y puertos especificados.
- Selecciona la casilla de verificación TCP y, luego, ingresa
80para el número de puerto.
Como práctica recomendada, limita esta regla solo a los protocolos y puertos que coincidan con los que usa tu verificación de estado. Si usas
tcp:80para el protocolo y el puerto, Cloud de Confiance puede usar HTTP en el puerto80para comunicarse con tus VMs, pero no puede usar HTTPS en el puerto443para comunicarse con ellas.
- Nombre:
Haz clic en Crear.
Haz clic en Crear regla de firewall por tercera vez para crear la regla a fin de permitir que los servidores proxy del balanceador de cargas se conecten con los backends:
- Nombre:
fw-allow-proxy-only-subnet - Red:
lb-network - Dirección del tráfico: Entrada
- Acción en caso de coincidencia: Permitir
- Destinos: Etiquetas de destino especificadas
- Etiquetas de destino:
allow-proxy-only-subnet - Filtro de fuente: Rangos de IPv4
- Rangos de IPv4 de origen:
10.129.0.0/23 - Protocolos y puertos:
- Elige Protocolos y puertos especificados.
- Selecciona la casilla de verificación TCP y, luego, ingresa
80para el número de puerto.
- Nombre:
Haz clic en Crear.
gcloud
Crea la regla de firewall
fw-allow-sshpara permitir la conectividad SSH a las VM con la etiqueta de redallow-ssh. Cuando omitessource-ranges,Cloud de Confiance interpreta que la regla significa cualquier fuente.gcloud compute firewall-rules create fw-allow-ssh \ --network=lb-network \ --action=allow \ --direction=ingress \ --target-tags=allow-ssh \ --rules=tcp:22Crea la regla
fw-allow-health-checkpara permitir las verificaciones de estado de Cloud de Confiance. Este ejemplo permite todo el tráfico de TCP proveniente de la verificación de estado. Sin embargo, puedes configurar un conjunto más limitado de puertos según tus necesidades.gcloud compute firewall-rules create fw-allow-health-check \ --network=lb-network \ --action=allow \ --direction=ingress \ --source-ranges=177.222.80.0/23\ --target-tags=allow-health-check \ --rules=tcp:80Crea la regla
fw-allow-proxy-only-subnetpara permitir que los proxies de Envoy de la región se conecten a tus backends. Configura--source-rangesen los rangos asignados de tu subred de solo proxy, en este ejemplo,10.129.0.0/23.gcloud compute firewall-rules create fw-allow-proxy-only-subnet \ --network=lb-network \ --action=allow \ --direction=ingress \ --source-ranges=10.129.0.0/23 \ --target-tags=allow-proxy-only-subnet \ --rules=tcp:80
Reserva la dirección IP del balanceador de cargas
Reserva una dirección IP estática para el balanceador de cargas.
Console
En la consola de Cloud de Confiance , ve a la página Reserva una dirección estática.
Elige un nombre para la dirección nueva.
En Nivel de servicio de red, selecciona Estándar.
Para Versión de la IP, selecciona IPv4. Las direcciones IPv6 no son compatibles.
En Tipo, selecciona Regional.
En Región, selecciona
REGION_A.Deja la opción Conectado a configurada en Ninguna. Después de crear el balanceador de cargas, esta dirección IP se adjunta a la regla de reenvío del balanceador de cargas.
Haz clic en Reservar si deseas reservar la dirección IP.
gcloud
Para reservar una dirección IP externa estática, usa el comando
gcloud compute addresses create:gcloud compute addresses create ADDRESS_NAME \ --region=REGION_A \ --network-tier=STANDARDReemplaza
ADDRESS_NAMEpor el nombre que deseas darle a esta dirección.Para ver el resultado, usa el comando
gcloud compute addresses describe:gcloud compute addresses describe ADDRESS_NAME
Crea un grupo de instancias administrado
En esta sección, se muestra cómo crear dos backends de grupos de instancias administrados (MIG) en la Región A del balanceador de cargas. El MIG proporciona instancias de VM que ejecutan los servidores Apache de backend para este ejemplo. Por lo general, no se usa un balanceador de cargas de red de proxy externo regional para el tráfico HTTP, pero el software de Apache se suele usar para las pruebas.
Console
Crea una plantilla de instancias
En la consola de Cloud de Confiance , ve a la página Plantillas de instancias.
Haz clic en Crear plantilla de instancias.
En Nombre, ingresa
ext-reg-tcp-proxy-backend-template.Asegúrate de que el disco de arranque esté configurado como 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 Opciones avanzadas.
Haz clic en Herramientas de redes y configura los siguientes campos:
- En Etiquetas de red, ingresa
allow-ssh,allow-health-checkyallow-proxy-only-subnet. - En Interfaces de red, selecciona lo siguiente:
- Red:
lb-network - Subred:
backend-subnet
- Red:
- En Etiquetas de red, ingresa
Haz clic en Administración. Ingresa 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.
Cree un grupo de instancias administrado
En la consola de Cloud de Confiance , ve a la página Grupos de instancias.
Haz clic en Crear grupo de instancias.
Selecciona Nuevo grupo de instancias administrado (sin estado). Para obtener más información, consulta Crea un MIG con discos con estado.
En Nombre, ingresa
mig-a.En Ubicación, selecciona Zona única.
En Región, selecciona
REGION_A.En Zona, selecciona
ZONE_A.En Plantilla de instancias, selecciona
ext-reg-tcp-proxy-backend-template.Especifica la cantidad de instancias que quieres crear en el grupo.
En este ejemplo, especifica las siguientes opciones en Ajuste de escala automático:
- En Modo de ajuste de escala automático, selecciona
Off:do not autoscale. - En Cantidad máxima de instancias, ingresa
2.
- En Modo de ajuste de escala automático, selecciona
En Asignación de puertos, haz clic en Agregar puerto.
- En Nombre del puerto, ingresa
tcp80. - En Número de puerto, ingresa
80.
- En Nombre del puerto, ingresa
Haz clic en Crear.
Para crear un segundo grupo de instancias administrado, repite los pasos de Crea un grupo de instancias administrado y usa la siguiente configuración:
- Nombre:
mig-b - Zona:
ZONE_B
No cambies los demás parámetros de configuración.
- Nombre:
gcloud
En las instrucciones de Google Cloud CLI de esta guía, se supone que usas Cloud Shell o algún otro entorno con bash instalado.
Para crear una plantilla de instancias de VM con el servidor HTTP, usa el comando
gcloud compute instance-templates create:gcloud compute instance-templates create ext-reg-tcp-proxy-backend-template \ --region=REGION_A \ --network=lb-network \ --subnet=backend-subnet \ --tags=allow-ssh,allow-health-check,allow-proxy-only-subnet \ --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 administrado en la zona
ZONE_A:gcloud compute instance-groups managed create mig-a \ --zone=ZONE_A \ --size=2 \ --template=ext-reg-tcp-proxy-backend-templateCrea un grupo de instancias administrado en la zona
ZONE_B:gcloud compute instance-groups managed create mig-b \ --zone=ZONE_B \ --size=2 \ --template=ext-reg-tcp-proxy-backend-template
Configura el balanceador de cargas
Console
Inicia tu configuración
En la consola de Cloud de Confiance , ve a la página Balanceo de cargas.
- Haz clic en Crear balanceador de cargas.
- En Tipo de balanceador de cargas, selecciona Balanceador de cargas de red (TCP/UDP/SSL) y haz clic en Siguiente.
- En Proxy o transferencia, selecciona Balanceador de cargas de proxy y haz clic en Siguiente.
- En Orientado al público o interno, selecciona Orientado al público (externo) y haz clic en Siguiente.
- En Implementación global o de una sola región, selecciona Mejor para cargas de trabajo regionales y haz clic en Siguiente.
- Haz clic en Configurar.
Configuración básica
- En Nombre, ingresa
my-ext-tcp-lb. - En Región, selecciona
REGION_A. - En Red, selecciona
lb-network.
Reserva una subred de solo proxy
- Haz clic en Reservar.
- En el campo Nombre, ingresa
proxy-only-subnet. - En el campo Rango de direcciones IP, ingresa
10.129.0.0/23. - Haz clic en Agregar.
Configura los backends
- Haz clic en Configuración de backend.
- En la lista Tipo de backend, selecciona Grupo de instancias.
- En la lista Protocolo, selecciona TCP.
- En el campo Puerto con nombre, ingresa
tcp80. - Configura la verificación de estado:
- En la lista Verificación de estado, selecciona Crear una verificación de estado.
- En el campo Nombre, ingresa
tcp-health-check. - En la lista Protocolo, selecciona TCP.
- En el campo Puerto, ingresa
80. - Haz clic en Crear.
- Configura el primer backend:
- En Nuevo backend, selecciona el grupo de instancias
mig-a. - En Números de puerto, ingresa
80. - Conserva los valores predeterminados restantes y haz clic en Listo.
- En Nuevo backend, selecciona el grupo de instancias
- Configura el segundo backend:
- Haz clic en Agregar backend.
- En Nuevo backend, selecciona el grupo de instancias
mig-b. - En Números de puerto, ingresa
80. - Conserva los valores predeterminados restantes y haz clic en Listo.
- Conserva los valores predeterminados restantes y haz clic en Guardar.
- En la consola de Cloud de Confiance , verifica que haya una marca de verificación junto a Configuración de backend. De lo contrario, verifica que hayas completado todos los pasos.
Configura el frontend
- Haz clic en Configuración de frontend.
- En Nombre, ingresa
ext-reg-tcp-forwarding-rule. - En Nivel de servicio de red, selecciona Estándar.
- En Dirección IP, selecciona la dirección IP que se reservó antes: LB_IP_ADDRESS
- En Número de puerto, ingresa
110. La regla de reenvío solo reenvía los paquetes con un puerto de destino coincidente. - En Protocolo de proxy, selecciona Desactivado porque el protocolo PROXY no funciona con el software del servidor HTTP de Apache. Para obtener más información, consulta Protocolo PROXY.
- Haz clic en Listo.
- En la consola de Cloud de Confiance , verifica que haya una marca de verificación junto a Configuración de frontend. De lo contrario, verifica que hayas completado todos los pasos anteriores.
Revisa y finaliza
- Haz clic en Revisión y finalización.
- Revisa la configuración del balanceador de cargas.
- Opcional: Haz clic en Código equivalente a fin de ver la solicitud a la API de REST que se usa para crear el balanceador de cargas.
- Haz clic en Crear.
gcloud
Crea una verificación de estado regional:
gcloud compute health-checks create tcp tcp-health-check \ --region=REGION_A \ --use-serving-portCrea un servicio de backend:
gcloud compute backend-services create ext-reg-tcp-proxy-bs \ --load-balancing-scheme=EXTERNAL_MANAGED \ --protocol=TCP \ --port-name=tcp80 \ --region=REGION_A \ --health-checks=tcp-health-check \ --health-checks-region=REGION_AAgrega grupos de instancias a tu servicio de backend:
gcloud compute backend-services add-backend ext-reg-tcp-proxy-bs \ --region=REGION_A \ --instance-group=mig-a \ --instance-group-zone=ZONE_A \ --balancing-mode=UTILIZATION \ --max-utilization=0.8gcloud compute backend-services add-backend ext-reg-tcp-proxy-bs \ --region=REGION_A \ --instance-group=mig-b \ --instance-group-zone=ZONE_B \ --balancing-mode=UTILIZATION \ --max-utilization=0.8Crea un proxy TCP de destino:
gcloud compute target-tcp-proxies create ext-reg-tcp-target-proxy \ --backend-service=ext-reg-tcp-proxy-bs \ --proxy-header=NONE \ --region=REGION_ASi quieres activar el encabezado de proxy, configúralo como
PROXY_V1en lugar deNONE. En este ejemplo, no habilites el protocolo PROXY porque no funciona con el software del servidor HTTP de Apache. Para obtener más información, consulta Protocolo PROXY.Crea la regla de reenvío. Para
--ports, especifica un solo número de puerto, de 1 a 65535. En este ejemplo, se usa el puerto110. La regla de reenvío solo reenvía los paquetes con un puerto de destino coincidente.gcloud compute forwarding-rules create ext-reg-tcp-forwarding-rule \ --load-balancing-scheme=EXTERNAL_MANAGED \ --network-tier=STANDARD \ --network=lb-network \ --region=REGION_A \ --target-tcp-proxy=ext-reg-tcp-target-proxy \ --target-tcp-proxy-region=REGION_A \ --address=LB_IP_ADDRESS \ --ports=110
Prueba el balanceador de cargas
Ahora que ya configuraste el balanceador de cargas, puedes probar el envío de tráfico a la dirección IP del balanceador de cargas.
Obtén la dirección IP del balanceador de cargas.
Para obtener la dirección IPv4, ejecuta el siguiente comando:
gcloud compute addresses describe ADDRESS_NAME
Envía tráfico a tu balanceador de cargas mediante la ejecución del siguiente comando. Reemplaza
LB_IP_ADDRESSpor la dirección IPv4 del balanceador de cargas:curl -m1 LB_IP_ADDRESS:9090
Opciones de configuración adicionales
En esta sección se expande el ejemplo de configuración para proporcionar opciones de configuración alternativas y adicionales. Todas las tareas son opcionales. Puedes realizarlas en cualquier orden.
Crea un balanceador de cargas con rutas de TLS
En esta sección, se muestra cómo crear un balanceador de cargas que pueda usar el enrutamiento basado en SNI. El enrutamiento basado en SNI permite que tus balanceadores de cargas de red proxy enruten el tráfico a servicios de backend específicos según el nombre de host de la indicación de nombre del servidor (SNI) proporcionado durante el protocolo de enlace TLS.
Para crear este balanceador de cargas, usamos las mismas redes, subredes y reglas de firewall que se crearon anteriormente en esta página. Configurarás la implementación que se muestra en el siguiente diagrama:
Crea un backend de grupo de instancias administrado
En esta sección, se muestra cómo crear backends de grupo de instancias administrado (MIG) para el balanceador de cargas. El MIG proporciona instancias de VM que ejecutan los servidores de backend para este ejemplo.
En las instrucciones de Google Cloud CLI de esta guía, se supone que usas Cloud Shell o algún otro entorno con bash instalado.
Crea una plantilla de instancias con un servicio HTTPS de "eco" que se exponga en el puerto 443.
gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \ --region=REGION_A \ --network=NETWORK \ --subnet=SUBNET_A \ --stack-type=IPv4_ONLY \ --tags=allow-ssh,allow-health-check,allow-proxy-only-subnet \ --image-family=debian-12 \ --image-project=debian-cloud \ --metadata=startup-script='#! /bin/bash sudo sed -i "s/^#DNS=.*/DNS=8.8.8.8 8.8.4.4/" /etc/systemd/resolved.conf sudo systemctl restart systemd-resolved sudo rm -rf /var/lib/apt/lists/* sudo apt-get -y clean sudo apt-get -y update sudo apt-get -y install ca-certificates curl gnupg software-properties-common sudo curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add - sudo add-apt-repository -y "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable" sudo apt-get -y update sudo apt-get -y install docker-ce sudo which docker echo "{ \"registry-mirrors\": [\"https://mirror.gcr.io\"] }" | sudo tee -a /etc/docker/daemon.json sudo service docker restart sudo docker run -e HTTPS_PORT=9999 -p 443:9999 --rm -dt mendhak/http-https-echo:22'Reemplaza lo siguiente:
INSTANCE_TEMPLATE_NAME: Es un nombre para la plantilla de instancias.REGION_A: Es la región de la plantilla de instancias.NETWORK: el nombre de la redSUBNET_A: Es el nombre de la subred.
Crea un grupo de instancias administrado basado en la plantilla de instancias:
gcloud compute instance-groups managed create INSTANCE_GROUP_NAME \ --zone=ZONE_A \ --size=2 \ --template=INSTANCE_TEMPLATE_NAME
Reemplaza
ZONE_Apor la zona del grupo de instancias.Configura el nombre del puerto de entrega para el grupo de instancias administrado:
gcloud compute instance-groups managed set-named-ports INSTANCE_GROUP_NAME \ --named-ports=PORT_NAME:PORT_NUMBER \ --zone=ZONE_A
Reemplaza lo siguiente:
PORT_NAME: Es un nombre para el puerto de servicio, por ejemplo,tcp443.PORT_NUMBER: Es un número de puerto para el puerto de entrega, por ejemplo,443.
Configura el firewall
Configura una regla de firewall para permitir el tráfico del balanceador de cargas y de los sondeos de verificación de estado a las instancias de backend.
gcloud compute firewall-rules create FIREWALL_RULE_NAME \
--network=NETWORK \
--action=allow \
--direction=ingress \
--source-ranges=177.222.80.0/23 \
--target-tags=allow-health-check \
--rules=tcp:443
Reemplaza FIREWALL_RULE_NAME por un nombre para la regla de firewall.
Configura el balanceador de cargas
Crea una verificación de estado de HTTPS:
gcloud compute health-checks create http HTTPS_HEALTH_CHECK_NAME \ --region=REGION_A \ --port=HC_PORTReemplaza lo siguiente:
HTTPS_HEALTH_CHECK_NAME: Es un nombre para la verificación de estado.HC_PORT: Es el puerto para la verificación de estado, por ejemplo,443.REGION_A: Es la región de la verificación de estado.
Crea un servicio de backend:
gcloud compute backend-services create BACKEND_SERVICE_NAME \ --load-balancing-scheme=EXTERNAL_MANAGED \ --protocol=TCP \ --port-name=PORT_NAME \ --health-checks=HTTPS_HEALTH_CHECK_NAME \ --health-checks-region=REGION_A \ --region=REGION_AReemplaza lo siguiente:
BACKEND_SERVICE_NAME: Es el nombre del servicio de backend.PORT_NAME: Es el nombre del puerto del servicio de backend. Usa el mismo puerto con nombre configurado en el grupo de instancias, por ejemplo,tcp443.HTTPS_HEALTH_CHECK_NAME: Es el nombre de la verificación de estado HTTPS.
Agrega el grupo de instancias de backend a tu servicio de backend:
gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \ --balancing-mode=UTILIZATION \ --max-utilization=0.8 --instance-group=INSTANCE_GROUP_NAME \ --instance-group-zone=ZONE_A \ --region=REGION_AReemplaza lo siguiente:
INSTANCE_GROUP_NAME: Es el nombre del grupo de instancias de backend.ZONE_A: la zona del grupo de instancias.
Crea un proxy TCP de destino.
gcloud beta compute target-tcp-proxies create TARGET_TCP_PROXY_NAME \ --load-balancing-scheme=EXTERNAL_MANAGED \ --proxy-header=NONE \ --region=REGION_AReemplaza
TARGET_TCP_PROXY_NAMEpor el nombre del proxy TCP de destino.Crea una especificación de ruta TLS y guárdala en un archivo YAML.
cat <<EOF | tee YAML_FILE_NAME name: TLS_ROUTE_NAME targetProxies: - projects/PROJECT_NUMBER/locations/REGION_A/targetTcpProxies/TARGET_TCP_PROXY rules: - matches: - sniHost: - example.com action: destinations: - serviceName: projects/PROJECT_NUMBER/locations/REGION_A/backendServices/BACKEND_SERVICE_NAME EOFReemplaza lo siguiente:
YAML_FILE_NAME: Un nombre para el archivo YAML, por ejemplo,tls-route.yaml.TLS_ROUTE_NAME: Es un nombre para la ruta de TLS.PROJECT_NUMBER: Número del proyecto
Usa el archivo de especificación YAML para crear el recurso de ruta de TLS.
gcloud network-services tls-routes import TLS_ROUTE_NAME \ --source=YAML_FILE_NAME \ --location=REGION_A
Crea la regla de reenvío.
gcloud compute forwarding-rules create FORWARDING_RULE_NAME \ --load-balancing-scheme=EXTERNAL_MANAGED \ --network-tier=STANDARD \ --network=NETWORK \ --region=REGION_A \ --target-tcp-proxy=TARGET_TCP_PROXY_NAME \ --target-tcp-proxy-region=REGION_A \ --address=IP_ADDRESS \ --ports=PORT_NUMBER
Reemplaza lo siguiente:
FORWARDING_RULE_NAME: un nombre para la regla de reenvío.NETWORK: el nombre de la redSUBNET_A: Es el nombre de la subred en la misma región que el balanceador de cargas.IP_ADDRESS: Es la dirección IP del balanceador de cargas.PORT_NUMBER: Es el puerto que usa la regla de reenvío, por ejemplo,443.
Prueba el balanceador de cargas
Ahora que ya configuraste el balanceador de cargas, puedes probar el envío de tráfico a la dirección IP del balanceador de cargas.
Verifica que puedas acceder al servicio HTTPS a través del balanceador de cargas.
curl https://example.com --resolve example.com:443:IP_ADDRESS -k
Verás que el comando devuelve una respuesta de una de las VMs del grupo de instancias administrado con lo siguiente impreso en la consola.
"path": "/", "headers": { "host": "example.com", "user-agent": "curl/7.81.0", "accept": "*/*" }, "method": "GET", "body": "", "fresh": false, "hostname": "example.com", "ip": "::ffff:10.142.0.2", "ips": [], "protocol": "https", "query": {}, "subdomains": [], "xhr": false, "os": { "hostname": "0cd3aec9b351" }, "connection": { "servername": "example.com" }También puedes verificar que, si proporcionas un nombre de host de SNI diferente que no coincida con una ruta de TLS, o si no proporcionas ningún nombre de host de SNI, se descarta la solicitud.
- Ejecuta una prueba con un nombre de host de SNI que no coincida con example.com para asegurarte de que se rechace la conexión.
curl https://unknown.com --resolve unknown.com:443:IP_ADDRESS -k
- Ejecuta una prueba con una conexión de texto sin formato sin TLS para asegurarte de que se rechace la conexión.
curl example.com:443 --resolve example.com:443:IP_ADDRESS -k
Estos comandos devuelven el siguiente error.
curl: (35) OpenSSL SSL_connect: Connection reset by peer in connection
Verás el código de error
connection_refuseden los registros deproxyStatuscuando el balanceador de cargas rechace esas conexiones no válidas.
Habilita la afinidad de sesión
En la configuración de ejemplo, se crea un servicio de backend sin afinidad de sesión.
En estos procedimientos, se muestran cómo actualizar un servicio de backend para un balanceador de cargas de ejemplo que creaste antes a fin de que el servicio de backend use la afinidad de IP de cliente o la afinidad de cookie generada.
Cuando la afinidad de IP de cliente está habilitada, el balanceador de cargas dirige las solicitudes de un cliente en particular a la misma VM de backend según el hash que se generó en la dirección IP del cliente y la dirección IP del balanceador de cargas (la dirección IP interna de una regla de reenvío interna).
Para habilitar la afinidad de sesión de IP de cliente, completa los siguientes pasos.
Console
En la consola de Cloud de Confiance , ve a la página Balanceo de cargas.
Haz clic en Backends.
Haz clic en
ext-reg-tcp-proxy-bs(el nombre del servicio de backend que creaste para este ejemplo) y, luego, en Editar.En la página Detalles del servicio de backend, haz clic en Configuración avanzada.
En Afinidad de sesión, selecciona IP de cliente.
Haz clic en Actualizar.
gcloud
Para actualizar el servicio de backend ext-reg-tcp-proxy-bs y especificar la afinidad de sesión de IP de cliente, usa el comando gcloud compute backend-services update ext-reg-tcp-proxy-bs:
gcloud compute backend-services update ext-reg-tcp-proxy-bs \
--region=REGION_A \
--session-affinity=CLIENT_IP