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 del proxy interno regional con un backend de grupos de extremos de red (NEG) zonales. Antes de comenzar:
- Lee la descripción general del balanceador de cargas de red del proxy interno regional.
- Lee la Descripción general de los NEG zonales.
Descripción general
En este ejemplo, usaremos el balanceador de cargas para distribuir el tráfico de TCP en las VMs de backend en dos NEG zonales 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 80
.
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.
Crea la red y la subred para los backends
Console
En la consola de Google Cloud, ve a la página Redes de VPC.
Haga clic en Crear red de VPC.
En Nombre, ingresa
lb-network
.En la sección Subredes:
- Establece Modo de creación de subred en Personalizado.
- 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
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
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.
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 el 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 crean las siguientes reglas de firewall:
fw-allow-health-check
: Una regla de entrada, aplicable a las instancias de Google Cloud cuyas cargas se balancean, que permite el tráfico del balanceador de cargas y los sistemas de verificación de estado de Google Cloud (130.211.0.0/22
y35.191.0.0/16
) En este ejemplo, se usa la etiqueta de destinoallow-health-check
para identificar las VM de backend a las que se debe aplicar.fw-allow-ssh
: una regla de entrada que permita la conectividad SSH entrante en el puerto TCP 22 desde cualquier dirección. Puedes elegir un rango de IP de origen más restrictivo para esta regla; por ejemplo, puedes especificar los rangos de IP de los sistemas desde los que planeas iniciar sesiones SSH. En este ejemplo, se usa la etiqueta de destinoallow-ssh
para identificar las VM a las que se debe aplicar.fw-allow-proxy-only-subnet
: Crea una regla de firewall de permiso de entrada para la subred de solo proxy a fin de permitir que el balanceador de cargas se comunique con instancias de backend en el puerto TCP80
. En este ejemplo, se usa la etiqueta de destinoallow-proxy-only-subnet
para identificar las VM de backend a las que se debe aplicar.
Console
En la consola de Google Cloud, ve a la página Políticas de firewall.
Haz clic en Crear regla de firewall:
- Ingresa un Nombre de
fw-allow-health-check
. - En Red selecciona
lb-network
. - En Destinos, selecciona Etiquetas de destino especificadas.
- Propaga el campo Etiquetas de destino con
allow-health-check
. - Configura Filtro de fuente como Rangos de IPv4.
- Establece Rangos de IPv4 de origen en
130.211.0.0/22
y35.191.0.0/16
. - En Protocolos y puertos, selecciona Protocolos y puertos especificados.
- Selecciona la casilla de verificación TCP y, luego, ingresa
80
para los números de puerto. - Haz clic en Crear.
- Ingresa un Nombre de
Vuelve a hacer clic en Crear regla de firewall para crear la regla que permita conexiones SSH entrantes:
- Nombre:
fw-allow-ssh
- Red:
lb-network
- Prioridad:
1000
- Dirección del tráfico: entrada
- Acción si hay coincidencia: permitir
- Objetivos: 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 y escribe
tcp:22
- Nombre:
Haz clic en Crear.
Haz clic en Crear regla de firewall de nuevo para crear la regla que permite conexiones entrantes desde la subred de solo proxy a los backends de Google Cloud:
- Nombre:
fw-allow-proxy-only-subnet
- Red:
lb-network
- Prioridad:
1000
- Dirección del tráfico: entrada
- Acción si hay coincidencia: permitir
- Objetivos: 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 y escribe
tcp:80
- Nombre:
Haz clic en Crear.
gcloud
Crea la regla
fw-allow-health-check
para permitir que las verificaciones de estado de Google Cloud lleguen a las instancias de backend en un puerto TCP80
:gcloud compute firewall-rules create fw-allow-health-check \ --network=lb-network \ --action=allow \ --direction=ingress \ --target-tags=allow-health-check \ --source-ranges=130.211.0.0/22,35.191.0.0/16 \ --rules=tcp:80
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 una regla de firewall de permiso de entrada para la subred de solo proxy a fin de permitir que el balanceador de cargas se comunique con instancias de backend en el puerto TCP
80
:gcloud compute firewall-rules create fw-allow-proxy-only-subnet \ --network=lb-network \ --action=allow \ --direction=ingress \ --target-tags=allow-proxy-only-subnet \ --source-ranges=10.129.0.0/23 \ --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.
Configura el NEG zonal
Configura un NEG zonal (con extremos de tipo GCE_VM_IP_PORT
) en la región REGION_A
. Primero, crea las VM. Luego, crea un NEG zonal y agrega los extremos de red de las VM al NEG.
Crea las VM
Console
En la consola de Google Cloud, ve a la página Instancias de VM.
Haga clic en Crear instancia.
Ingresa
vm-a1
en Nombre.En Región, selecciona
REGION_A
.Para la Zona, consulta
ZONE_A1
.En la sección Disco de arranque, asegúrate de que Debian GNU/Linux 12 (bookWorm) esté seleccionado como las opciones del disco de arranque. Haz clic en Elegir para cambiar la imagen si es necesario.
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.
Repite los siguientes pasos para crear 3 VMs más con las siguientes combinaciones de nombre y zona:
- Nombre:
vm-a2
, zona:ZONE_A1
- Nombre:
vm-c1
, zona:ZONE_A2
- Nombre:
vm-c2
, zona:ZONE_A2
- Nombre:
gcloud
A fin de crear las VM, ejecuta el siguiente comando dos veces, con estas combinaciones para VM_NAME y ZONE. El contenido de la secuencia de comandos es idéntico para ambas VM.
- VM_NAME:
vm-a1
y ZONE:ZONE_A1
- VM_NAME:
vm-a2
y ZONE:ZONE_A1
- VM_NAME:
vm-c1
y ZONE:ZONE_A2
VM_NAME:
vm-c2
y ZONE:ZONE_A2
gcloud compute instances create VM_NAME \ --zone=ZONE \ --image-family=debian-12 \ --image-project=debian-cloud \ --tags=allow-ssh,allow-health-check,allow-proxy-only-subnet \ --subnet=backend-subnet \ --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 los NEG zonales
Console
Para crear un grupo de extremos de red por zonas, sigue estos pasos:
En la consola de Google Cloud, ve a la página Grupos de extremos de red.
Haz clic en Crear un grupo de extremos de red.
En Nombre, ingresa
zonal-neg-a
.En Tipo de grupo de extremos de red, selecciona Grupo de extremos de red (zonal).
En Red, selecciona
lb-network
.En Subred, selecciona
backend-subnet
.En Zona, selecciona
ZONE_A1
.Ingresa el Puerto predeterminado:
80
.Haz clic en Crear.
Repite todos los pasos de esta sección para crear un segundo NEG zonal con los siguientes cambios en la configuración:
- Nombre:
zonal-neg-c
- Zona:
ZONE_A2
- Nombre:
Agrega extremos a los NEG por zonas:
En la consola de Google Cloud, ve a la página Grupos de extremos de red.
Haz clic en el Nombre del grupo de extremos de red que se creó en el paso anterior (por ejemplo,
zonal-neg-a
). Verás la página Detalles del grupo de extremos de red.En la sección Extremos de red de este grupo, haz clic en Agregar extremo de red. Verás la página Agregar extremo de red.
Selecciona una instancia de VM (por ejemplo,
vm-a1
). En la sección Interfaz de red, se muestra el nombre, la zona y la subred de la VM.- Ingresa la dirección IP del extremo de red nuevo. Puedes hacer clic en Verificar las direcciones IP principales y el rango de alias de IP en nic0 para ver la dirección IP.
- En Tipo de puerto, selecciona Predeterminado, que usa el puerto predeterminado
80
para todos los extremos del grupo de extremos de red. Esto es suficiente para nuestro ejemplo, ya que el servidor Apache entrega solicitudes en el puerto80
. - Haz clic en Crear.
Haz clic de nuevo en Agregar extremo de red. Selecciona la segunda instancia de VM,
vm-a2
, y repite estos pasos para agregar sus extremos azonal-neg-a
.Repite todos los pasos de esta sección para agregar extremos de
vm-c1
yvm-c2
azonal-neg-c
.
gcloud
Crea un NEG zonal en la zona
ZONE_A1
con extremosGCE_VM_IP_PORT
.gcloud compute network-endpoint-groups create zonal-neg-a \ --network-endpoint-type=GCE_VM_IP_PORT \ --zone=ZONE_A1 \ --network=lb-network \ --subnet=backend-subnet
Puedes especificar
--default-port
mientras creas el NEG o especificar un número de puerto para cada extremo, como se muestra en el siguiente paso.Agrega extremos al NEG zonal.
gcloud compute network-endpoint-groups update zonal-neg-a \ --zone=ZONE_A1 \ --add-endpoint='instance=vm-a1,port=80' \ --add-endpoint='instance=vm-a2,port=80'
Crea un NEG zonal en la zona
ZONE_A2
con extremosGCE_VM_IP_PORT
.gcloud compute network-endpoint-groups create zonal-neg-c \ --network-endpoint-type=GCE_VM_IP_PORT \ --zone=ZONE_A2 \ --network=lb-network \ --subnet=backend-subnet
Puedes especificar
--default-port
mientras creas el NEG o especificar un número de puerto para cada extremo, como se muestra en el siguiente paso.Agrega extremos al NEG zonal.
gcloud compute network-endpoint-groups update zonal-neg-c \ --zone=ZONE_A2 \ --add-endpoint='instance=vm-c1,port=80' \ --add-endpoint='instance=vm-c2,port=80'
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 extremos de red zonal.
- En Protocol, selecciona TCP.
- Configura el primer backend:
- En Backend nuevo, selecciona NEG zonal
zonal-neg-a
. - Conserva los valores predeterminados restantes y haz clic en Listo.
- En Backend nuevo, selecciona NEG zonal
- Configura el segundo backend:
- Haga clic en Agregar backend.
- En Nuevo backend, selecciona el grupo de instancias
zonal-neg-c
. - 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.
- En Puerto, ingresa
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 int-tcp-ip-address.
- En Número de puerto, ingresa
9090
. 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.
- Vuelve a verificar la configuración.
- Haz clic en Crear.
gcloud
Crea una verificación de estado regional para los backends.
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 el NEG zonal de la zona
ZONE_A1
al servicio de backend.gcloud compute backend-services add-backend internal-tcp-proxy-bs \ --network-endpoint-group=zonal-neg-a \ --network-endpoint-group-zone=ZONE_A1 \ --balancing-mode=CONNECTION \ --max-connections-per-endpoint=50 \ --region=REGION_A
Agrega el NEG zonal de la zona
ZONE_A2
al servicio de backend.gcloud compute backend-services add-backend internal-tcp-proxy-bs \ --network-endpoint-group=zonal-neg-c \ --network-endpoint-group-zone=ZONE_A2 \ --balancing-mode=CONNECTION \ --max-connections-per-endpoint=50 \ --region=REGION_A
Crea el proxy TCP de destino.
gcloud compute target-tcp-proxies create int-tcp-target-proxy \ --backend-service=internal-tcp-proxy-bs \ --region=REGION_A
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 puerto9090
. 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 \ --address=int-tcp-ip-address \ --ports=9090 \ --region=REGION_A \ --target-tcp-proxy=int-tcp-target-proxy \ --target-tcp-proxy-region=REGION_A
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:9090
¿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.
- Para configurar la supervisión del balanceador de cargas de red del proxy interno regional, consulta Usa la supervisión.
- Limpia la configuración del balanceador de cargas.