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.
Esta guía contiene instrucciones para configurar un balanceador de cargas de red del proxy externo regional con un backend de grupo de extremos de red (NEG) zonal.
Antes de comenzar, revisa los siguientes documentos:
- Descripción general del balanceador de cargas de red del proxy externo
- Descripción general de los NEG zonales
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 us-west1
. 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 implementación que se muestra en el siguiente diagrama.
Este 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 todos las siguientes roles de IAM de Compute Engine.
Tarea | Función requerida |
---|---|
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:
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 es un balanceador de cargas 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-network
Subred para backends: una subred llamada
backend-subnet
en la regiónus-west1
que usa10.1.2.0/24
en su rango de direcciones IP principalSubred para proxies: una subred llamada
proxy-only-subnet
en la regiónus-west1
que usa10.129.0.0/23
en su rango de direcciones 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.
Haz clic en Crear red de VPC.
En Nombre, ingresa
lb-network
.En la sección Subredes, haz lo siguiente:
- 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:
us-west1
- 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-network
en la regiónus-west1
, usa el comandogcloud compute networks subnets create
:gcloud compute networks subnets create backend-subnet \ --network=lb-network \ --range=10.1.2.0/24 \ --region=us-west1
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 us-west1
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
us-west1
.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=us-west1 \ --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 VMs de backend a las que se debe aplicar.fw-allow-ssh
. Una regla de entrada que permita 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 sistemas desde los que inicias 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
. Una regla de firewall de entradaallow
para la subred de solo proxy que permite 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 y, luego, completa los siguientes campos:
- Nombre:
fw-allow-health-check
- Red:
lb-network
- 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.
- Nombre:
Haz clic en Crear.
Haz clic en Crear regla de firewall por segunda vez 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 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 tercera vez para crear la regla a fin de permitir conexiones entrantes de 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 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 el número de puerto.
- 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 el 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
Console
En la consola de Google Cloud, 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
us-west1
.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=us-west1 \ --network-tier=STANDARD
Reemplaza
ADDRESS_NAME
por 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
Configura el NEG zonal
Configura un NEG zonal con extremos de tipo GCE_VM_IP_PORT
en la región us-west1
. Primero, crea las VMs y, luego, crea un NEG zonal y agrega los extremos de red de las VMs al NEG.
Crea las VM
Console
En la consola de Google Cloud, ve a la página Instancias de VM.
Haz clic en Crear instancia.
Establece el Nombre como
vm-a1
.En Región, selecciona
us-west1
.En Zona, selecciona
us-west1-a
.En la sección Disco de arranque, asegúrate de que el sistema operativo Debian y la versión 10 (buster) estén seleccionados como opciones de 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 pasos anteriores para crear tres VMs más. Usa las siguientes combinaciones de nombre y zona:
- Nombre:
vm-a2
| Zona:us-west1-a
- Nombre:
vm-c1
| Zona:us-west1-c
- Nombre:
vm-c2
| Zona:us-west1-c
- Nombre:
gcloud
Para crear las VMs, usa el comando gcloud compute instances create
dos veces. Usa las siguientes combinaciones para VM_NAME
y ZONE
. El contenido de la secuencia de comandos es idéntico para ambas VMs:
VM_NAME
:vm-a1
yZONE
:us-west1-a
VM_NAME
:vm-a2
yZONE
:us-west1-a
VM_NAME
:vm-c1
yZONE
:us-west1-c
VM_NAME
:vm-c2
yZONE
:us-west1-c
gcloud compute instances create VM_NAME \ --zone=ZONE \ --image-family=debian-10 \ --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
Crea un grupo de extremos de red zonal
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
us-west1-a
.En Puerto predeterminado, ingresa
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:
us-west1-c
- 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 creaste en el paso anterior (por ejemplo,
zonal-neg-a
).En la página Detalles del grupo de extremos de red, en la sección Extremos de red en este grupo, haz clic en Agregar extremo de red.
Selecciona una instancia de VM (por ejemplo,
vm-a1
).En la sección Interfaz de red, se muestran el nombre, la zona y la subred de la VM.
- En Dirección IP, ingresa la dirección IP del extremo de red nuevo. Para obtener la dirección IP, haz clic en Verificar direcciones IP principales y rango de alias de IP en nic0.
- En Tipo de puerto, selecciona Predeterminado. El extremo usa el puerto predeterminado
80
para todos los extremos en el 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 en Agregar extremo de red. Selecciona la segunda instancia de VM,
vm-a2
, y repite los pasos anteriores 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
us-west1-a
con extremosGCE_VM_IP_PORT
:gcloud compute network-endpoint-groups create zonal-neg-a \ --network-endpoint-type=GCE_VM_IP_PORT \ --zone=us-west1-a \ --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=us-west1-a \ --add-endpoint='instance=vm-a1,port=80' \ --add-endpoint='instance=vm-a2,port=80'
Crea un NEG zonal en la zona
us-west1-c
con extremosGCE_VM_IP_PORT
:gcloud compute network-endpoint-groups create zonal-neg-c \ --network-endpoint-type=GCE_VM_IP_PORT \ --zone=us-west1-c \ --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=us-west1-c \ --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 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
us-west1
. - En Red, selecciona
lb-network
.
Reserva 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
. - Haga clic en Agregar.
Configura los backends
- Haz 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:
- Haz 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, seleccione Crear una verificación de estado.
- Establece el nombre de la verificación de estado como
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.
Configura el frontend
- Haz clic en Configuración de frontend.
- En Nombre, ingresa
ext-tcp-forwarding-rule
. - En Subred, selecciona
backend-subnet
. - En Dirección IP, selecciona
ext-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 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 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.
- Haga clic en Crear.
gcloud
Crea una verificación de estado regional para los backends:
gcloud compute health-checks create tcp tcp-health-check \ --region=us-west1 \ --use-serving-port
Crea un servicio de backend:
gcloud compute backend-services create external-tcp-proxy-bs \ --load-balancing-scheme=EXTERNAL_MANAGED \ --protocol=TCP \ --region=us-west1 \ --health-checks=tcp-health-check \ --health-checks-region=us-west1
Agrega el NEG zonal de la zona
us-west1-a
al servicio de backend:gcloud compute backend-services add-backend external-tcp-proxy-bs \ --network-endpoint-group=zonal-neg-a \ --network-endpoint-group-zone=us-west1-a \ --balancing-mode=CONNECTION \ --max-connections-per-endpoint=50 \ --region=us-west1
Agrega el NEG zonal de la zona
us-west1-c
al servicio de backend.gcloud compute backend-services add-backend external-tcp-proxy-bs \ --network-endpoint-group=zonal-neg-c \ --network-endpoint-group-zone=us-west1-c \ --balancing-mode=CONNECTION \ --max-connections-per-endpoint=50 \ --region=us-west1
Crea el proxy TCP de destino:
gcloud compute target-tcp-proxies create ext-tcp-target-proxy \ --backend-service=external-tcp-proxy-bs \ --region=us-west1
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 ext-tcp-forwarding-rule \ --load-balancing-scheme=EXTERNAL_MANAGED \ --network=lb-network \ --subnet=backend-subnet \ --address=ext-tcp-ip-address \ --ports=9090 \ --region=us-west1 \ --target-tcp-proxy=ext-tcp-target-proxy \ --target-tcp-proxy-region=us-west1
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_ADDRESS
por la dirección IPv4 del balanceador de cargas:curl -m1 LB_IP_ADDRESS:9090
¿Qué sigue?
- Para obtener información sobre cómo funcionan los balanceadores de cargas de red del proxy externos, consulta la descripción general del balanceador de cargas de red del proxy externo.
- Para configurar el registro y la supervisión de tu balanceador de cargas, consulta Registro y supervisión del balanceador de cargas de red de proxy.
- Para obtener información sobre cómo agregar un backend de Private Service Connect a un balanceador de cargas de red del proxy externo, consulta Agrega un Private Service Connect.
- Para borrar los recursos que creaste a fin de que no se te facturen en el futuro, consulta Limpia la configuración del balanceador de cargas.