El balanceador de cargas de red del proxy interno 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 detrás de 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.
Esta guía contiene instrucciones para configurar un balanceador de cargas de red de proxy interno regional con un backend de grupo de instancias administrado (MIG).
Antes de comenzar, lee la descripción general del balanceador de cargas de red de proxy interno regional.
Descripción general
En este ejemplo, usaremos el balanceador de cargas para distribuir el tráfico de TCP entre las VM de backend en dos grupos de instancias zonales administrados en la región REGION_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
.
En este ejemplo, debes configurar la siguiente implementación:
El balanceador de cargas de red del proxy interno regional es un balanceador de cargas regional. Todos los componentes del balanceador de cargas (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 ser propietario o editor de un proyecto o tener todas las siguientes funciones de IAM de Compute Engine:
Tarea | Función requerida |
---|---|
Crear redes, subredes y componentes del balanceador de cargas | Administrador de redes |
Agrega y quita reglas de firewall | Administrador de seguridad |
Crea instancias | Administrador de instancias de Compute |
Si deseas obtener más información, consulta las siguientes guías:
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. Los balanceadores de cargas de red del proxy internos regionales son regionales. 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. Es una red de VPC de modo personalizado con el nombre
lb-network
.Subred para backends. Una subred llamada
backend-subnet
en la regiónREGION_A
usa10.1.2.0/24
en su rango de IP principal.Subred para proxies. Una subred llamada
proxy-only-subnet
en la regiónREGION_A
usa10.129.0.0/23
en su rango de IP principal.
Para demostrar el acceso global, en este ejemplo, se crea también una segunda VM de cliente de prueba en una región diferente (REGION_B) y una subred con el rango de direcciones IP principal 10.3.4.0/24
.
Crea la red y las subredes
Console
En la consola de Google Cloud, 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 Agregar subred.
Crea una subred para demostrar el acceso global. En la sección Nueva subred, ingresa la siguiente información:
- Nombre:
test-global-access-subnet
- Región:
REGION_B
- Rangos 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
en 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
Reemplaza REGION_A por el nombre de la región de Google Cloud de destino.
Crea una subred en la red
lb-network
en 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
Reemplaza REGION_B por el nombre de la región de Google Cloud en la que deseas crear la segunda subred para probar el acceso global.
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 REGION_A
de la red de VPC lb-network
.
Console
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 cargas.
Si quieres crear la subred de solo proxy ahora, sigue estos pasos:
- En la consola de Google Cloud, ve a la página Redes de VPC.
Ir a las redes de VPC - Haz clic en el nombre de la red de VPC compartida:
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
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
Crea reglas de firewall
En este ejemplo, se requieren 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 TCP22
desde 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
. Una regla de entrada, aplicable a las instancias en las que se realiza el balanceo de cargas, que permite todo el tráfico de TCP de los sistemas de verificación de estado de Google Cloud (en130.211.0.0/22
y35.191.0.0/16
). 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 Google Cloud, ve a la página Firewall.
Ir a Políticas de firewall - Haz clic en Crear regla de firewall para crear la regla que permite conexiones SSH entrantes:
- 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
22
para 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 de Google Cloud:
- 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:
130.211.0.0/22
y35.191.0.0/16
- Protocolos y puertos:
- Elige Protocolos y puertos especificados.
- Selecciona la casilla de verificación TCP y, luego, ingresa
80
para 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 usastcp:80
en el protocolo y el puerto, Google Cloud puede usar HTTP en el puerto80
a fin de contactar las VM, pero no puede usar HTTPS en el puerto443
para 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 conecten 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
80
para los números de puerto.
- Nombre:
- Haz clic en Crear.
gcloud
Crea la regla de firewall
fw-allow-ssh
para permitir la conectividad SSH a las VM con la etiqueta de redallow-ssh
. Cuando omitessource-ranges
, Google Cloud 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:22
Crea la regla
fw-allow-health-check
para permitir las verificaciones de estado de Google Cloud. 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=130.211.0.0/22,35.191.0.0/16 \ --target-tags=allow-health-check \ --rules=tcp:80
Crea la regla
fw-allow-proxy-only-subnet
para permitir que los proxies de Envoy de la región se conecten a tus backends. Configura--source-ranges
en 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
Si deseas reservar una dirección IP interna estática para tu balanceador de cargas, consulta Reserva una dirección IPv4 o IPv6 interna estática nueva.
Cree 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 REGION_A
del balanceador de cargas. El MIG proporciona instancias de VM que ejecutan los servidores Apache de backend para este ejemplo de balanceador de cargas de red del proxy interno regional.
Por lo general, no se usa un balanceador de cargas de red interno de proxy regional para el tráfico HTTP, pero el software de Apache se suele usar para las pruebas.
Console
Cree una plantilla de instancias. En la consola de Google Cloud, ve a la página Plantillas de instancia.
- Haz clic en Crear plantilla de instancias.
- En Nombre, ingresa
int-tcp-proxy-backend-template
. - Asegúrate de que el disco de arranque esté configurado como una imagen de Debian, como Debian GNU/Linux 10 (stretch). 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-check
yallow-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.
Crea un grupo de instancias administrado. En la consola de Google Cloud, 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 MIG sin estado o con estado.
- En Nombre, ingresa
mig-a
. - En Ubicación, selecciona Zona única.
- En Región, selecciona
REGION_A
. - En Zona, selecciona
ZONE_A1
. - En Plantilla de instancias, selecciona
int-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.
Repite el paso 2 para crear un segundo grupo de instancias administrado con la siguiente configuración:
- Nombre:
mig-c
- Zona:
ZONE_A2
Mantén todas las demás opciones de configuración iguales.
- Nombre:
gcloud
En las instrucciones de gcloud
que se incluyen en esta guía, se supone que usas Cloud Shell o algún otro entorno con bash instalado.
Crea una plantilla de instancias de VM con el servidor de 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 administrado en la zona
ZONE_A1
.gcloud compute instance-groups managed create mig-a \ --zone=ZONE_A1 \ --size=2 \ --template=int-tcp-proxy-backend-template
Reemplaza ZONE_A1 por el nombre de la zona en la región de Google Cloud de destino.
Crea un grupo de instancias administrado en la zona
ZONE_A2
.gcloud compute instance-groups managed create mig-c \ --zone=ZONE_A2 \ --size=2 \ --template=int-tcp-proxy-backend-template
Reemplaza ZONE_A2 por el nombre de otra zona en la región de Google Cloud de destino.
Configura el balanceador de cargas
Console
Inicia la configuración
En la consola de Google Cloud, 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 Interno y haz clic en Siguiente.
- En Implementación entre regiones o de una sola región, selecciona Ideal para cargas de trabajo regionales y haz clic en Siguiente.
- Haz clic en Configurar.
Configuración básica
- En Nombre, ingresa
my-int-tcp-lb
. - En Región, selecciona
REGION_A
. - En Red, selecciona
lb-network
.
Reserva una subred de solo proxy
Sigue estos pasos para reservar una subred de solo proxy:
- Haz clic en Reservar subred.
- En Nombre, ingresa
proxy-only-subnet
. - En Rango de direcciones IP, ingresa
10.129.0.0/23
. - Haz clic en Agregar.
Configuración de backend
- Haga clic en Configuración de backend.
- En Tipo de backend, selecciona Grupo de instancias.
- En Protocol, selecciona TCP.
- En Puerto con nombre, ingresa
tcp80
. - 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:
- Haga clic en Agregar backend.
- En Nuevo backend, selecciona el grupo de instancias
mig-c
. - En Números de puerto, ingresa
80
. - Conserva los valores predeterminados restantes y haz clic en Listo.
- Configura la verificación de estado:
- En Verificación de estado, selecciona Crear una verificación de estado.
- Establece el campo Nombre de la verificación de estado en
tcp-health-check
. - En Protocol, selecciona TCP.
- Configura el Puerto como
80
.
- Conserva los valores predeterminados restantes y haz clic en Guardar.
- En la consola de Google Cloud, verifica que haya una marca de verificación junto a Configuración de backend. De lo contrario, verifica que hayas completado todos los pasos.
Configuración de frontend
- Haga clic en Configuración de frontend.
- En Nombre, ingresa
int-tcp-forwarding-rule
. - En Subred, selecciona backend-subnet.
- 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 este ejemplo, no habilites el Protocolo de proxy 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 consola de Google Cloud, 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 Revisar y finalizar.
- 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 usará para crear el balanceador de cargas.
- Haz clic en Crear.
gcloud
Creación de una verificación de 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
Agrega 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, configúralo como
PROXY_V1
en lugar deNONE
. En este ejemplo, no habilites el Protocolo de 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. 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 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
Prueba el balanceador de cargas
Para probar el balanceador de cargas, crea una VM de cliente en la misma región que el balanceador de cargas. Luego, envía tráfico del cliente al balanceador de cargas.
Crea una VM de cliente
Crea una VM de cliente (client-vm
) en la misma región que el balanceador de cargas.
Console
En la consola de Google Cloud, ve a la página Instancias de VM.
Haz clic en Crear instancia.
Establece el Nombre como
client-vm
.Establece la Zona en
ZONE_A1
.Haz clic en Opciones avanzadas.
Haz clic en Herramientas de redes y configura los siguientes campos:
- En Etiquetas de red, ingresa
allow-ssh
. - En Interfaces de red, selecciona lo siguiente:
- Red:
lb-network
- Subred:
backend-subnet
- Red:
- En Etiquetas de red, ingresa
Haz clic en Crear.
gcloud
La VM de cliente debe estar en la misma red de VPC y región que el balanceador de cargas. No es necesario que esté en la misma subred o zona. El cliente usa la misma subred que las VM 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
Envía tráfico al 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.
Usa SSH para conectarte a la instancia de cliente.
gcloud compute ssh client-vm \ --zone=ZONE_A1
Verifica que el balanceador de cargas entregue los nombres de host del backend como se esperaba.
Usa el comando
compute addresses describe
para ver la dirección IP del balanceador de cargas:gcloud compute addresses describe int-tcp-ip-address \ --region=REGION_A
Anota la dirección IP.
Envía tráfico al balanceador de cargas. Reemplaza IP_ADDRESS por la dirección IP del balanceador de cargas.
curl IP_ADDRESS:110
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.
Habilitar el acceso global
Puedes habilitar el acceso
global para tu balanceador
de cargas para que sea accesible a los clientes en todas las regiones. De todos modos, los backends del balanceador de cargas de ejemplo deben ubicarse en una región (REGION_A
).
No puedes modificar una regla de reenvío regional existente para habilitar el acceso global. Debes crear una nueva regla de reenvío para este fin. Además, después de crear una regla de reenvío con acceso global habilitado, no se puede modificar. Para inhabilitar el acceso global, debes crear una nueva regla de reenvío de acceso regional y borrar la regla anterior.
Para configurar el acceso global, realiza los siguientes cambios de configuración.
Console
Crea una nueva regla de desvío para el balanceador de cargas:
En la consola de Google Cloud, ve a la página Balanceo de cargas.
En la columna Nombre, haz clic en el balanceador de cargas.
Haz clic en Configuración de frontend.
Haz clic en Agregar IP y puerto de frontend.
Ingresa el nombre y los detalles de la subred para la regla de reenvío nueva.
En Subred, selecciona backend-subnet.
En la dirección IP, puedes seleccionar la misma dirección IP que una regla de reenvío existente, reservar una dirección IP nueva o usar una dirección IP efímera. Compartir la misma dirección IP en varias reglas de reenvío solo es posible si configuras la marca de dirección IP
--purpose
comoSHARED_LOADBALANCER_VIP
mientras creas la dirección IP.En Número de puerto, ingresa
110
.En Acceso global, selecciona Habilitar.
Haz clic en Listo.
Haz clic en Actualizar.
gcloud
Crea una regla de reenvío nueva para el balanceador de cargas 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.
Crea una VM de cliente para probar el acceso global
Console
En la consola de Google Cloud, ve a la página Instancias de VM.
Haz clic en Crear instancia.
Establece el Nombre como
test-global-access-vm
.Establece la Zona en
ZONE_B1
.Haz clic en Opciones avanzadas.
Haz clic en Herramientas de redes y configura los siguientes campos:
- En Etiquetas de red, ingresa
allow-ssh
. - En Interfaces de red, selecciona lo siguiente:
- Red:
lb-network
- Subred:
test-global-access-subnet
- Red:
- En Etiquetas de red, ingresa
Haz clic en Crear.
gcloud
Crea una VM de 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
Reemplaza ZONE_B1 por el nombre de la zona en la región REGION_B.
Conéctate a la VM de cliente y prueba la conectividad
Usa
ssh
para conectarte al cliente.gcloud compute ssh test-global-access-vm \ --zone=ZONE_B1
Usa el comando
gcloud compute addresses describe
para obtener la dirección IP del balanceador de cargas:gcloud compute addresses describe int-tcp-ip-address \ --region=REGION_A
Anota la dirección IP.
Envía tráfico al balanceador de cargas. Reemplaza IP_ADDRESS por la dirección IP del balanceador de cargas:
curl IP_ADDRESS:110
Protocolo PROXY para retener información de conexión del cliente
El balanceador de cargas de red de proxy finaliza las conexiones TCP del cliente y crea conexiones nuevas con las instancias. De forma predeterminada, no se conservan la IP de cliente original y la información del puerto.
Para conservar y enviar la información de conexión original a tus instancias, habilita el protocolo PROXY (versión 1). Este protocolo envía a la instancia un encabezado adicional que contiene la dirección IP de origen, la dirección IP de destino y los números de puerto como parte de la solicitud.
Asegúrate de que las instancias de backend del balanceador de cargas de red del 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 muestran respuestas vacías.
Si configuras el protocolo PROXY para el tráfico de los usuarios, también debes configurarlo para las verificaciones de estado. Si verificas el estado y entregas contenido en el mismo puerto, configura el --proxy-header
de la verificación de estado para que coincida con la configuración del balanceador de cargas.
Por lo general, el encabezado del protocolo PROXY será una sola línea de texto legible para 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 de cliente es 192.0.2.1
, la IP de balanceo de cargas es 198.51.100.1
, el puerto del cliente es 15221
y el puerto de destino es 110
.
Cuando no se sabe la dirección IP de cliente, el balanceador de cargas genera un encabezado de protocolo PROXY con el formato siguiente:
PROXY UNKNOWN\r\n
Actualiza el encabezado del protocolo PROXY para el proxy de destino
No puedes actualizar el encabezado del protocolo PROXY en el proxy de destino existente. Debes crear un proxy de destino nuevo con la configuración requerida para el encabezado del protocolo PROXY. Sigue estos pasos para crear un frontend nuevo con la configuración necesaria:
Console
En la consola de Google Cloud, ve a la página Balanceo de cargas.
- Haz clic en el nombre del balanceador de cargas que quieres editar.
- Haz clic en Editar para editar tu balanceador de cargas.
- Haz clic en Configuración de frontend.
- Borra la IP y el puerto de frontend anteriores.
- Haz clic en Agregar IP y puerto de frontend.
- En Nombre, ingresa
int-tcp-forwarding-rule
. - En Subred, selecciona backend-subnet.
- 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. - Cambia el valor del campo del Protocolo Proxy a Activado.
- Haz clic en Listo.
- En Nombre, ingresa
- Haz clic en Actualizar para guardar los cambios.
gcloud
En el siguiente comando, edita el campo
--proxy-header
y configúralo comoNONE
oPROXY_V1
según tu requisito.gcloud compute target-tcp-proxies create TARGET_PROXY_NAME \ --backend-service=BACKEND_SERVICE \ --proxy-header=[NONE | PROXY_V1] \ --region=REGION
Borra la regla de reenvío existente.
gcloud compute forwarding-rules delete int-tcp-forwarding-rule \ --region=REGION
Crea una regla de reenvío nueva y asóciala con el 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
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 el balanceador de cargas de proxy regional interno de ejemplo ade modo 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).
Console
Para habilitar la afinidad de sesión de IP de cliente, sigue estos pasos:
- En la consola de Google Cloud, ve a la página Balanceo de cargas.
Ir a Balanceo de cargas - Haz clic en Backends.
- Haz clic en internal-tcp-proxy-bs (el nombre del servicio de backend que creaste para este ejemplo) y 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 en el menú.
- Haz clic en Actualizar.
gcloud
Usa el siguiente comando de Google Cloud CLI para actualizar el servicio de backend internal-tcp-proxy-bs
y especifica la afinidad de sesión de IP de cliente:
gcloud compute backend-services update internal-tcp-proxy-bs \ --region=REGION_A \ --session-affinity=CLIENT_IP
Habilita el vaciado de conexiones
Puedes habilitar el desvío de conexiones en servicios de backend a fin de garantizar una interrupción mínima para tus usuarios cuando se finaliza una instancia que entrega tráfico, se quita de forma manual o la quita un escalador automático. Para obtener más información sobre el vaciado de conexiones, consulta la documentación Habilita el vaciado de conexiones.
¿Qué sigue?
- Convierte el balanceador de cargas de red del proxy a IPv6
- Descripción general del balanceador de cargas de red del proxy interno regional
- Usa la supervisión
- Limpia la configuración del balanceador de cargas