El balanceador de carga de red de proxy interno regional es un balanceador de carga regional de capa 4 basado en proxy que te permite ejecutar y escalar el tráfico de tu servicio TCP mediante una dirección IP interna a la que solo pueden acceder los clientes de la misma red de VPC o los clientes conectados a tu red de VPC.
En esta guía se explica cómo configurar un balanceador de carga de red con proxy interno regional con un backend de grupo de instancias gestionado (MIG).
Antes de empezar, consulta la descripción general del balanceador de carga de red de proxy interno regional.
Información general
En este ejemplo, usaremos el balanceador de carga para distribuir el tráfico TCP entre las VMs de backend de dos grupos de instancias gestionados zonales de la región REGION_A
. En este ejemplo, el servicio es un conjunto de servidores Apache configurados para responder en el puerto 110
.
Muchos navegadores no permiten el puerto 110
, por lo que la sección de pruebas usa curl
.
En este ejemplo, se configura la siguiente implementación:
El balanceador de carga de red de proxy interno regional es un balanceador de carga regional. Todos los componentes del balanceador de carga (grupos de instancias de backend, servicio de backend, proxy de destino y regla de reenvío) deben estar en la misma región.
Permisos
Para seguir esta guía, debes poder crear instancias y modificar una red en un proyecto. Debes tener el rol de propietario o editor del proyecto, o bien debes tener todos los roles de gestión de identidades y accesos de Compute Engine siguientes:
Tarea | Rol obligatorio |
---|---|
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 de Compute |
Para obtener más información, consulta las siguientes guías:
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. Los balanceadores de carga de red con proxy internos regionales son regionales. El tráfico de la red de VPC se dirige al balanceador de carga si la fuente del tráfico está 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ónREGION_A
usa10.1.2.0/24
para su intervalo de IP principal.Subred para proxies. Una subred llamada
proxy-only-subnet
en la regiónREGION_A
usa10.129.0.0/23
para su intervalo de IP principal.
Para demostrar el acceso global, en este ejemplo también se crea una segunda VM de cliente de prueba en otra región (REGION_B) y una subred con el intervalo de direcciones IP principal 10.3.4.0/24
.
Crear la red y las subredes
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 subredes.
Crea una subred para los back-ends del balanceador de carga. En la sección Nueva subred, introduce la siguiente información:
- Nombre:
backend-subnet
- Región:
REGION_A
- Intervalo de direcciones IP:
10.1.2.0/24
- Nombre:
Haz clic en Listo.
Haz clic en Añadir subred.
Crea una subred para demostrar el acceso global. En la sección Nueva subred, introduce la siguiente información:
- Nombre:
test-global-access-subnet
- Región:
REGION_B
- Intervalo de direcciones IP:
10.3.4.0/24
- Nombre:
Haz clic en Listo.
Haz clic en Crear.
gcloud
Crea la red de 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ónREGION_A
con 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
Sustituye REGION_A por el nombre de la región de destino. Google Cloud
Crea una subred en la red
lb-network
de la regiónREGION_B
con el comandogcloud compute networks subnets create
:gcloud compute networks subnets create test-global-access-subnet \ --network=lb-network \ --range=10.3.4.0/24 \ --region=REGION_B
Sustituye REGION_B por el nombre de la Google Cloud región en la que quieras crear la segunda subred para probar el acceso global.
Crear 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 basados en Envoy de la REGION_A
región de la red de VPC lb-network
usan esta subred de solo proxy.
Consola
Si usas la consola de Google Cloud , 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.
Ve a Redes de VPC. - Haz clic en el nombre de la red de VPC compartida:
lb-network
. - Haz clic en Añadir subred.
- En Nombre, escribe
proxy-only-subnet
. - En Región, selecciona
REGION_A
. - 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=REGION_A \ --network=lb-network \ --range=10.129.0.0/23
Crear reglas de cortafuegos
Este ejemplo requiere las siguientes reglas de cortafuegos:
fw-allow-ssh
. Una regla de entrada aplicable a las instancias que se van a balancear de carga que permita la conectividad SSH entrante en el puerto TCP22
desde cualquier dirección. Puede elegir un intervalo de IPs de origen más restrictivo para esta regla. Por ejemplo, puede especificar solo los intervalos de IPs del sistema desde el que inicia sesiones SSH. En este ejemplo se usa la etiqueta de destinoallow-ssh
.fw-allow-health-check
. Una regla de entrada, aplicable a las instancias con balanceo de carga, que permite todo el tráfico TCP de los sistemas de comprobación de estado (en130.211.0.0/22
y35.191.0.0/16
). En este ejemplo, se usa la etiqueta de destinoallow-health-check
. Google Cloudfw-allow-proxy-only-subnet
. Una regla de entrada que permita que las conexiones de la subred de solo proxy lleguen a los backends.
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.
Ve a Políticas de cortafuegos - Haga clic en Crear regla de cortafuegos para crear la regla que permita las conexiones SSH entrantes:
- Nombre:
fw-allow-ssh
- Red:
lb-network
- Sentido del tráfico: entrada
- Acción tras coincidencia: Permitir
- Objetivos: Etiquetas de destino especificadas
- Etiquetas de destino:
allow-ssh
- Filtro de origen: Intervalos de IPv4
- Intervalos de IPv4 de origen:
0.0.0.0/0
- Protocolos y puertos:
- Elige Protocolos y puertos especificados.
- Selecciona la casilla TCP y, a continuación, introduce
22
como número de puerto.
- Nombre:
- Haz clic en Crear.
- Haz clic en Crear regla de cortafuegos por segunda vez para crear la regla que permita las comprobaciones del estado:
Google Cloud
- 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:
allow-health-check
- 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 por tercera vez para crear la regla que permita que los servidores proxy del balanceador de carga se conecten a los backends:
- Nombre:
fw-allow-proxy-only-subnet
- Red:
lb-network
- Sentido del tráfico: entrada
- Acción tras coincidencia: Permitir
- Objetivos: Etiquetas de destino especificadas
- Etiquetas de destino:
allow-proxy-only-subnet
- 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
en los números de puerto.
- Nombre:
- Haz clic en Crear.
gcloud
Crea la regla de cortafuegos
fw-allow-ssh
para permitir la conectividad SSH a las VMs con la etiqueta de redallow-ssh
. Si omitesource-ranges
, Google Cloud interpreta que la regla se aplica a cualquier fuente.gcloud compute firewall-rules create fw-allow-ssh \ --network=lb-network \ --action=allow \ --direction=ingress \ --target-tags=allow-ssh \ --rules=tcp:22
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=allow-health-check \ --rules=tcp:80
Crea la regla de
fw-allow-proxy-only-subnet
para permitir que los proxies de Envoy de la región se conecten a tus backends. Asigna--source-ranges
a los intervalos 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
Reservar la dirección IP del balanceador de carga
Para reservar una dirección IP interna estática para tu balanceador de carga, consulta Reservar una dirección IPv4 o IPv6 interna estática nueva.
Crear un grupo de instancias gestionado
En esta sección se muestra cómo crear dos backends de grupos de instancias gestionados (MIGs) en la región REGION_A
para el balanceador de carga. El MIG proporciona instancias de VM que ejecutan los servidores Apache de backend de este ejemplo de balanceador de carga de red con proxy interno regional.
Normalmente, los balanceadores de carga de red con proxy internos regionales no se usan para el tráfico HTTP, pero el software Apache se usa con frecuencia para las pruebas.
Consola
Crea una plantilla de instancia. En la Google Cloud consola, ve a la página Plantillas de instancia.
- Haz clic en Crear plantilla de instancia.
- En Nombre, escribe
int-tcp-proxy-backend-template
. - Asegúrate de que el 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, introduce
allow-ssh
,allow-health-check
yallow-proxy-only-subnet
. - En Interfaces de red, selecciona lo siguiente:
- Red:
lb-network
- Subred:
backend-subnet
- Red:
- En Etiquetas de red, introduce
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 Google Cloud consola, ve a la página Grupos de instancias.
- 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
mig-a
. - En Ubicación, selecciona Una sola zona.
- En Región, selecciona
REGION_A
. - En Zona, selecciona
ZONE_A1
. - En Plantilla de instancia, selecciona
int-tcp-proxy-backend-template
. Especifica el número de instancias que quieres crear en el grupo.
En este ejemplo, especifica las siguientes opciones en Escalado automático:
- En Modo de autoescalado, selecciona
Off:do not autoscale
. - En Número máximo de instancias, introduce
2
.
- En Modo de autoescalado, selecciona
En Asignación de puertos, haz clic en Añadir puerto.
- En Nombre de la portabilidad, introduce
tcp80
. - En Número de puerto, introduce
80
.
- En Nombre de la portabilidad, introduce
Haz clic en Crear.
Repite el paso 2 para crear un segundo grupo de instancias gestionado con los siguientes ajustes:
- Nombre:
mig-c
- Zona:
ZONE_A2
Mantén el resto de los ajustes.
- Nombre:
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 int-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 gestionado en la zona
ZONE_A1
.gcloud compute instance-groups managed create mig-a \ --zone=ZONE_A1 \ --size=2 \ --template=int-tcp-proxy-backend-template
Sustituye ZONE_A1 por el nombre de la zona de la Google Cloud región de destino.
Crea un grupo de instancias gestionado en la zona
ZONE_A2
.gcloud compute instance-groups managed create mig-c \ --zone=ZONE_A2 \ --size=2 \ --template=int-tcp-proxy-backend-template
Sustituye ZONE_A2 por el nombre de otra zona de la región de destino Google Cloud .
Configurar el balanceador de carga
Consola
Iniciar la configuración
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 red (TCP/UDP/SSL) y haz clic en Siguiente.
- En Proxy o pasarela, selecciona Balanceador de carga de proxy y haz clic en Siguiente.
- En Público o interno, selecciona Interno y haz clic en Siguiente.
- En Implementación en una sola región o en varias regiones, selecciona La mejor opción para cargas de trabajo regionales y haz clic en Siguiente.
- Haz clic en Configurar.
Configuración básica
- En Nombre, escribe
my-int-tcp-lb
. - En Región, selecciona
REGION_A
. - En Red, selecciona
lb-network
.
Reservar una subred de solo proxy
Para reservar una subred de solo proxy, sigue estos pasos:
- 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.
Configuración de backend
- Haz clic en Configuración de backend.
- En Tipo de backend, selecciona Grupo de instancias.
- En Protocolo, selecciona TCP.
- En Puerto con nombre, introduce
tcp80
. - Configura el primer backend:
- En Nuevo backend, selecciona el grupo de instancias
mig-a
. - En Números de puerto, introduce
80
. - Mantén los valores predeterminados restantes y haz clic en Hecho.
- En Nuevo backend, selecciona el grupo de instancias
- Configura el segundo backend:
- Haz clic en Añadir backend.
- En Nuevo backend, selecciona el grupo de instancias
mig-c
. - En Números de puerto, introduce
80
. - Mantén los valores predeterminados restantes y haz clic en Hecho.
- Configura la comprobación del estado:
- En Comprobación del estado, selecciona Crear una comprobación del estado.
- Asigna el valor
tcp-health-check
al Nombre de la comprobación del estado. - En Protocolo, selecciona TCP.
- Define Puerto como
80
.
- Mantenga los demás valores predeterminados y haga clic en Guardar.
- En la Google Cloud consola, comprueba que haya una marca de verificación junto a Configuración de backend. Si no es así, comprueba que has completado todos los pasos.
Configuración de frontend
- Haz clic en Configuración de frontend.
- En Nombre, escribe
int-tcp-forwarding-rule
. - En Subred, selecciona backend-subnet.
- En Dirección IP, selecciona la dirección IP reservada anteriormente: LB_IP_ADDRESS
- En Número de puerto, introduce
110
. La regla de reenvío solo reenvía los paquetes con un puerto de destino coincidente. - En este ejemplo, no habilites Proxy Protocol porque no funciona con el software del servidor HTTP de Apache. Para obtener más información, consulta Protocolo de proxy.
- Haz clic en Listo.
- En la Google Cloud consola, comprueba que haya una marca de verificación junto a Configuración de frontend. Si no es así, comprueba que has completado todos los pasos anteriores.
Revisar y finalizar
- 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
Crea una comprobación del estado regional.
gcloud compute health-checks create tcp tcp-health-check \ --region=REGION_A \ --use-serving-port
Crea un servicio de backend.
gcloud compute backend-services create internal-tcp-proxy-bs \ --load-balancing-scheme=INTERNAL_MANAGED \ --protocol=TCP \ --region=REGION_A \ --health-checks=tcp-health-check \ --health-checks-region=REGION_A
Añade grupos de instancias a tu servicio de backend.
gcloud compute backend-services add-backend internal-tcp-proxy-bs \ --region=REGION_A \ --instance-group=mig-a \ --instance-group-zone=ZONE_A1 \ --balancing-mode=UTILIZATION \ --max-utilization=0.8
gcloud compute backend-services add-backend internal-tcp-proxy-bs \ --region=REGION_A \ --instance-group=mig-c \ --instance-group-zone=ZONE_A2 \ --balancing-mode=UTILIZATION \ --max-utilization=0.8
Crea un proxy TCP de destino interno.
gcloud compute target-tcp-proxies create int-tcp-target-proxy \ --backend-service=internal-tcp-proxy-bs \ --proxy-header=NONE \ --region=REGION_A
Si quieres activar el encabezado de proxy, asigna el valor
PROXY_V1
en 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 de proxy.Crea la regla de reenvío. En
--ports
, especifica un número de puerto único entre 1 y 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 int-tcp-forwarding-rule \ --load-balancing-scheme=INTERNAL_MANAGED \ --network=lb-network \ --subnet=backend-subnet \ --region=REGION_A \ --target-tcp-proxy=int-tcp-target-proxy \ --target-tcp-proxy-region=REGION_A \ --address=int-tcp-ip-address \ --ports=110
Probar el balanceador de carga
Para probar el balanceador de carga, crea una VM cliente en la misma región que el balanceador de carga. A continuación, envía tráfico del cliente al balanceador de carga.
Crear una VM cliente
Crea una VM cliente (client-vm
) en la misma región que el balanceador de carga.
Consola
En la consola de Google Cloud , ve a la página Instancias de VM.
Haz clic en Crear instancia.
Asigna el valor
client-vm
a Nombre.Define Zona como
ZONE_A1
.Haz clic en Advanced options (Opciones avanzadas).
Haga clic en Redes y configure los siguientes campos:
- En Etiquetas de red, introduzca
allow-ssh
. - En Interfaces de red, selecciona lo siguiente:
- Red:
lb-network
- Subred:
backend-subnet
- Red:
- En Etiquetas de red, introduzca
Haz clic en Crear.
gcloud
La VM cliente debe estar en la misma red VPC y región que el balanceador de carga. No es necesario que esté en la misma subred o zona. El cliente usa la misma subred que las VMs de backend.
gcloud compute instances create client-vm \ --zone=ZONE_A1 \ --image-family=debian-12 \ --image-project=debian-cloud \ --tags=allow-ssh \ --subnet=backend-subnet
Enviar tráfico al balanceador de carga
Ahora que ha configurado el balanceador de carga, puede probar a enviar tráfico a la dirección IP del balanceador de carga.
Usa SSH para conectarte a la instancia de cliente.
gcloud compute ssh client-vm \ --zone=ZONE_A1
Verifica que el balanceador de carga esté sirviendo los nombres de host de backend correctamente.
Usa el
compute addresses describe
comando para ver la dirección IP del balanceador de carga:gcloud compute addresses describe int-tcp-ip-address \ --region=REGION_A
Anota la dirección IP.
Envía tráfico al balanceador de carga. Sustituye IP_ADDRESS por la dirección IP del balanceador de carga.
curl IP_ADDRESS:110
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 el acceso global
Puedes habilitar el acceso global para tu balanceador de carga y que los clientes de todas las regiones puedan acceder a él. Los backends de tu balanceador de carga de ejemplo deben seguir estando en una región (REGION_A
).
No puedes modificar una regla de reenvío regional para habilitar el acceso global. Para ello, debes crear una nueva regla de reenvío. Además, una vez que se ha creado una regla de reenvío con el acceso global habilitado, no se puede modificar. Para inhabilitar el acceso global, debes crear una regla de reenvío de acceso regional y eliminar la regla de reenvío de acceso global anterior.
Para configurar el acceso global, haz los siguientes cambios en la configuración.
Consola
Crea una regla de reenvío para el balanceador de carga:
En la Google Cloud consola, ve a la página Balanceo de carga.
En la columna Nombre, haz clic en el balanceador de carga.
Haz clic en Configuración de frontend.
Haz clic en Añadir IP y puerto de frontend.
Escribe el nombre y los detalles de la subred de la nueva regla de reenvío.
En Subred, selecciona backend-subnet.
En Dirección IP, puedes seleccionar la misma dirección IP que una regla de reenvío ya creada, reservar una nueva dirección IP o usar una dirección IP efímera. Solo se puede compartir la misma dirección IP en varias reglas de reenvío si se define la marca
--purpose
de la dirección IP enSHARED_LOADBALANCER_VIP
al crearla.En Número de puerto, introduce
110
.En Acceso global, selecciona Habilitar.
Haz clic en Listo.
Haz clic en Actualizar.
gcloud
Crea una regla de reenvío para el balanceador de carga con la marca
--allow-global-access
.gcloud compute forwarding-rules create int-tcp-forwarding-rule-global-access \ --load-balancing-scheme=INTERNAL_MANAGED \ --network=lb-network \ --subnet=backend-subnet \ --region=REGION_A \ --target-tcp-proxy=int-tcp-target-proxy \ --target-tcp-proxy-region=REGION_A \ --address=int-tcp-ip-address \ --ports=110 \ --allow-global-access
Puedes usar el comando
gcloud compute forwarding-rules describe
para determinar si una regla de reenvío tiene habilitado el acceso global. Por ejemplo:gcloud compute forwarding-rules describe int-tcp-forwarding-rule-global-access \ --region=REGION_A \ --format="get(name,region,allowGlobalAccess)"
Cuando el acceso global está habilitado, la palabra
True
aparece en el resultado después del nombre y la región de la regla de reenvío.
Crear una VM cliente para probar el acceso global
Consola
En la consola de Google Cloud , ve a la página Instancias de VM.
Haz clic en Crear instancia.
Asigna el valor
test-global-access-vm
a Nombre.Define Zona como
ZONE_B1
.Haz clic en Advanced options (Opciones avanzadas).
Haga clic en Redes y configure los siguientes campos:
- En Etiquetas de red, introduzca
allow-ssh
. - En Interfaces de red, selecciona lo siguiente:
- Red:
lb-network
- Subred:
test-global-access-subnet
- Red:
- En Etiquetas de red, introduzca
Haz clic en Crear.
gcloud
Crea una máquina virtual cliente en la zona ZONE_B1
.
gcloud compute instances create test-global-access-vm \ --zone=ZONE_B1 \ --image-family=debian-12 \ --image-project=debian-cloud \ --tags=allow-ssh \ --subnet=test-global-access-subnet
Sustituye ZONE_B1 por el nombre de la zona de la región REGION_B.
Conéctate a la VM cliente y prueba la conectividad
Usa
ssh
para conectarte a la instancia del cliente:gcloud compute ssh test-global-access-vm \ --zone=ZONE_B1
Usa el
gcloud compute addresses describe
comando para obtener la dirección IP del balanceador de carga:gcloud compute addresses describe int-tcp-ip-address \ --region=REGION_A
Anota la dirección IP.
Envía tráfico al balanceador de carga. Sustituye IP_ADDRESS por la dirección IP del balanceador de carga:
curl IP_ADDRESS:110
Protocolo PROXY para conservar la información de conexión del cliente
El balanceador de carga de red proxy finaliza las conexiones TCP del cliente y crea nuevas conexiones con las instancias. De forma predeterminada, la información de la IP y el puerto del cliente original no se conserva.
Para conservar y enviar la información de conexión original a tus instancias, habilita PROXY protocol version 1 (Protocolo PROXY versión 1). Este protocolo envía un encabezado adicional que contiene la dirección IP de origen, la dirección IP de destino y los números de puerto a la instancia como parte de la solicitud.
Asegúrate de que las instancias de backend del balanceador de carga de red proxy ejecuten servidores que admitan encabezados del protocolo PROXY. Si los servidores no están configurados para admitir encabezados del protocolo PROXY, las instancias de backend devuelven respuestas vacías.
Si configuras el protocolo PROXY para el tráfico de usuarios, también puedes hacerlo para tus comprobaciones del estado. Si compruebas el estado y sirves contenido en el mismo puerto, define el --proxy-header
de la comprobación del estado para que coincida con la configuración del balanceador de carga.
El encabezado del protocolo PROXY suele ser una sola línea de texto legible por el usuario con el siguiente formato:
PROXY TCP4 <client IP> <load balancing IP> <source port> <dest port>\r\n
En el siguiente ejemplo se muestra un protocolo PROXY:
PROXY TCP4 192.0.2.1 198.51.100.1 15221 110\r\n
En el ejemplo anterior, la IP del cliente es 192.0.2.1
, la IP de balanceo de carga es 198.51.100.1
, el puerto del cliente es 15221
y el puerto de destino es 110
.
Cuando no se conoce la IP del cliente, el balanceador de carga genera un encabezado de protocolo PROXY con el siguiente formato:
PROXY UNKNOWN\r\n
Actualizar el encabezado del protocolo PROXY del proxy de destino
No puedes actualizar el encabezado del protocolo PROXY en el proxy de destino. Tienes que crear un proxy de destino con el ajuste necesario para el encabezado del protocolo PROXY. Sigue estos pasos para crear un nuevo frontend con los ajustes necesarios:
Consola
En la Google Cloud consola, ve a la página Balanceo de carga.
- Haz clic en el nombre del balanceador de carga que quieras editar.
- Haz clic en Editar en el balanceador de carga.
- Haz clic en Configuración de frontend.
- Elimina la IP y el puerto de frontend antiguos.
- Haz clic en Añadir IP y puerto de frontend.
- En Nombre, escribe
int-tcp-forwarding-rule
. - En Subred, selecciona backend-subnet.
- En Dirección IP, selecciona la dirección IP reservada anteriormente: LB_IP_ADDRESS
- En Número de puerto, introduce
110
. La regla de reenvío solo reenvía paquetes con un puerto de destino coincidente. - Cambia el valor del campo Protocolo de proxy a Activado.
- Haz clic en Listo.
- En Nombre, escribe
- Haz clic en Update (Actualizar) para guardar los cambios.
gcloud
En el siguiente comando, edita el campo
--proxy-header
y asigna el valorNONE
oPROXY_V1
, según tus necesidades.gcloud compute target-tcp-proxies create TARGET_PROXY_NAME \ --backend-service=BACKEND_SERVICE \ --proxy-header=[NONE | PROXY_V1] \ --region=REGION
Elimina la regla de reenvío que ya tienes.
gcloud compute forwarding-rules delete int-tcp-forwarding-rule \ --region=REGION
Crea una regla de reenvío y asóciala al proxy de destino.
gcloud compute forwarding-rules create int-tcp-forwarding-rule \ --load-balancing-scheme=INTERNAL_MANAGED \ --network=lb-network \ --subnet=backend-subnet \ --region=REGION \ --target-tcp-proxy=TARGET_PROXY_NAME \ --target-tcp-proxy-region=REGION \ --address=LB_IP_ADDRESS \ --ports=110
Habilitar la afinidad de sesión
La configuración de ejemplo crea un servicio de backend sin afinidad de sesión.
En estos procedimientos se muestra cómo actualizar un servicio de backend del balanceador de carga de red de proxy interno regional de ejemplo para que el servicio de backend use la afinidad de IP de cliente o la afinidad de cookies generada.
Cuando la afinidad de IP de cliente está habilitada, el balanceador de carga dirige las solicitudes de un cliente concreto a la misma VM de backend en función de un hash creado a partir de la dirección IP del cliente y la dirección IP del balanceador de carga (la dirección IP interna de una regla de reenvío interna).
Consola
Para habilitar la afinidad de sesión de IP de cliente, sigue estos pasos:
- En la Google Cloud consola, ve a la página Balanceo de carga.
Ve a Balanceo de carga. - Haz clic en Back-ends.
- Haz clic en internal-tcp-proxy-bs (el nombre del servicio de backend que has creado en 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 IP de cliente en el menú.
- Haz clic en Actualizar.
gcloud
Usa el siguiente comando de la CLI de Google Cloud para actualizar el internal-tcp-proxy-bs
backend
service y especificar la afinidad de sesión de la IP del cliente:
gcloud compute backend-services update internal-tcp-proxy-bs \ --region=REGION_A \ --session-affinity=CLIENT_IP
Habilitar la purga de conexión
Puedes habilitar el drenaje de conexiones en los servicios de backend para minimizar las interrupciones para los usuarios cuando se termina, se elimina manualmente o se elimina mediante un escalador automático una instancia que está sirviendo tráfico. Para obtener más información sobre la purga de conexiones, consulta la documentación sobre cómo habilitar la purga de conexiones.
Siguientes pasos
- Convertir un balanceador de carga de red de proxy a IPv6
- Descripción general del balanceador de carga de red de proxy interno regional
- Usar Monitoring
- Limpiar la configuración del balanceador de carga