Un balanceador de carga de red de proxy externo regional es un balanceador de carga de capa 4 regional basado en proxy que te permite ejecutar y escalar el tráfico de tu servicio TCP en una sola región con una dirección IP regional externa. Estos balanceadores de carga distribuyen el tráfico TCP externo de Internet a los backends de la misma región.
En esta guía se incluyen instrucciones para configurar un balanceador de carga de red de proxy externo regional con un backend de grupo de puntos finales de red (NEG) por zonas.
Antes de empezar, consulta los siguientes documentos:
- Descripción general del balanceador de carga de red de proxy externo
- Información general sobre las NEGs por zonas
En este ejemplo, usaremos el balanceador de carga para distribuir el tráfico TCP entre las VMs de backend de dos NEGs de zona de la región A. En este ejemplo, el servicio es un conjunto de servidores Apache configurados para responder en el puerto 80.
En este ejemplo, configurará la implementación que se muestra en el siguiente diagrama.
Se trata de un balanceador de carga regional. Todos los componentes del balanceador de carga (grupo 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 del proyecto, o bien tener todos los roles de gestión de identidades y accesos de Compute Engine que se indican a continuación.
| Tarea | Rol necesario |
|---|---|
| Crear redes, subredes y componentes de balanceador de carga | Administrador de red de Compute
(roles/compute.networkAdmin) |
| Añadir y eliminar reglas de cortafuegos | Administrador de seguridad de Compute
(roles/compute.securityAdmin) |
| Crear instancias | Administrador de instancias de Compute
(roles/compute.instanceAdmin) |
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. Se trata de un balanceador de carga regional. El tráfico de la red de VPC se dirige al balanceador de carga si la fuente del tráfico se encuentra 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: una red de VPC en modo personalizado llamada
lb-networkSubred para back-ends: una subred llamada
backend-subneten la región A que usa10.1.2.0/24para su intervalo de direcciones IP principalSubred de proxies: una subred llamada
proxy-only-subneten la región A que usa10.129.0.0/23para su intervalo de direcciones IP principal
Crea la red y la subred de los back-ends
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, haga lo siguiente:
- Elige Personalizado en Modo de creación de subred.
- 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 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-networkde la regiónREGION_A, usa el comandogcloud compute networks subnets create:gcloud compute networks subnets create backend-subnet \ --network=lb-network \ --range=10.1.2.0/24 \ --region=REGION_A
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 región A 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.
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
Para crear la subred de solo proxy, usa el comando gcloud compute networks subnets
create:
gcloud compute networks subnets create proxy-only-subnet \
--purpose=REGIONAL_MANAGED_PROXY \
--role=ACTIVE \
--region=REGION_A \
--network=lb-network \
--range=10.129.0.0/23
Crear reglas de cortafuegos
En este ejemplo, se crean las siguientes reglas de cortafuegos:
fw-allow-health-check. Una regla de entrada, aplicable a las instancias Google Cloud que se están balanceando, que permite el tráfico del balanceador de carga y los sistemas de comprobación del estadoGoogle Cloud (130.211.0.0/22y35.191.0.0/16). En este ejemplo se usa la etiqueta de destinoallow-health-checkpara identificar las VMs de backend a las que se debe aplicar.fw-allow-ssh. Una regla de entrada que permite la conectividad SSH entrante en el puerto TCP22desde 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 de los sistemas desde los que inicia sesiones SSH. En este ejemplo se usa la etiqueta de destinoallow-sshpara identificar las máquinas virtuales a las que se debe aplicar.fw-allow-proxy-only-subnet. Una regla de cortafuegos de entradaallowpara la subred de solo proxy que permita que el balanceador de carga se comunique con las instancias de backend en el puerto TCP80. En este ejemplo se usa la etiqueta de destinoallow-proxy-only-subnetpara identificar las VMs de backend a las que se debe aplicar.
Consola
En la Google Cloud consola, ve a la página Políticas de cortafuegos.
Haga clic en Crear regla de cortafuegos y, a continuación, rellene los siguientes campos:
- Nombre:
fw-allow-health-check - Red:
lb-network - 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/22y35.191.0.0/16 - Protocolos y puertos:
- Elige Protocolos y puertos especificados.
- Seleccione la casilla TCP y, a continuación, introduzca
80en el 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 conexiones SSH entrantes:
- Nombre:
fw-allow-ssh - Red:
lb-network - Prioridad:
1000 - 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.
- Seleccione la casilla TCP y, a continuación, introduzca
22en el número de puerto.
- Nombre:
Haz clic en Crear.
Haz clic en Crear regla de cortafuegos por tercera vez para crear la regla que permita las 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 - 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.
- Seleccione la casilla TCP y, a continuación, introduzca
80en el número de puerto.
- Nombre:
Haz clic en Crear.
gcloud
Crea la regla
fw-allow-health-checkpara permitir que las comprobaciones del estado lleguen a las instancias de backend en el puerto TCP80: Google Cloudgcloud 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:80Crea la regla de cortafuegos
fw-allow-sshpara 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:22Crea una regla de cortafuegos de entrada para la subred de solo proxy que permita que el balanceador de carga se comunique con las 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
Reservar la dirección IP del balanceador de carga
Consola
En la Google Cloud consola, ve a la página Reservar una dirección estática.
Elige un nombre para la nueva dirección.
En Nivel de servicio de red, selecciona Estándar.
En Versión de IP, selecciona IPv4. No se admiten direcciones IPv6.
En Type (Tipo), selecciona Regional (Regional).
En Región, selecciona
REGION_A.Deje la opción Adjunto a configurada como Ninguno. Una vez que hayas creado el balanceador de carga, esta dirección IP se adjuntará a la regla de reenvío del balanceador de carga.
Haz clic en Reservar para reservar la dirección IP.
gcloud
Para reservar una dirección IP externa estática, usa el comando
gcloud compute addresses create:gcloud compute addresses create ADDRESS_NAME \ --region=REGION_A \ --network-tier=STANDARD
Sustituye
ADDRESS_NAMEpor el nombre que quieras asignar a esta dirección.Para ver el resultado, usa el comando
gcloud compute addresses describe:gcloud compute addresses describe ADDRESS_NAME
Configurar el NEG de zona
Configura un NEG de zona con endpoints de tipo GCE_VM_IP_PORT en la región A. Primero, crea las VMs y, a continuación, crea un NEG zonal y añade los puntos finales de red de las VMs al NEG.
Crear VMs
Consola
En la consola de Google Cloud , ve a la página Instancias de VM.
Haz clic en Crear instancia.
Asigna el valor
vm-a1a Nombre.En Región, selecciona
REGION_A.En Zona, selecciona
ZONE_A.En la sección Disco de arranque, asegúrate de que la opción Debian GNU/Linux 12 (bookworm) esté seleccionada para el disco de arranque. Haz clic en Elegir para cambiar la imagen si es necesario.
Haz clic en Advanced options (Opciones avanzadas).
Haga clic en Redes y, a continuación, configure los siguientes campos:
- En el caso de las etiquetas de red, introduce
allow-ssh,allow-health-checkyallow-proxy-only-subnet. - En Interfaces de red, selecciona lo siguiente:
- Red:
lb-network - Subred:
backend-subnet
- Red:
- En el caso de las 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.
Repite los pasos anteriores para crear tres VMs más. Usa las siguientes combinaciones de nombre y zona:
- Nombre:
vm-a2| Zona:ZONE_A - Nombre:
vm-b1| Zona:ZONE_B - Nombre:
vm-b2| Zona:ZONE_B
- 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 en ambas máquinas virtuales:
VM_NAME:vm-a1yZONE:ZONE_AVM_NAME:vm-a2yZONE:ZONE_AVM_NAME:vm-b1yZONE:ZONE_BVM_NAME:vm-b2yZONE:ZONE_B
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'
Crear los NEGs de zona
Consola
Crear un grupo de puntos finales de red por zonas
En la Google Cloud consola, ve a la página Grupos de endpoints de red.
Haz clic en Crear grupo de endpoints de red.
En Nombre, escribe
zonal-neg-a.En Tipo de grupo de puntos finales de red, selecciona Grupo de puntos finales de red (por zonas).
En Red, selecciona
lb-network.En Subred, selecciona
backend-subnet.En Zona, selecciona
ZONE_A.En Puerto predeterminado, introduce
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-b - Zona:
ZONE_B
- Nombre:
Añadir endpoints a los NEGs de zona
En la Google Cloud consola, ve a la página Grupos de endpoints de red.
Haga clic en el nombre del grupo de endpoints de red que ha creado en el paso anterior (por ejemplo,
zonal-neg-a).En la página Detalles del grupo de puntos finales de red, en la sección Puntos finales de red de este grupo, haz clic en Añadir punto final 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, introduce la dirección IP del nuevo endpoint de red. Para obtener la dirección IP, haz clic en Check primary IP addresses and alias IP range in nic0 (Comprobar las direcciones IP principales y el intervalo de IPs de alias en nic0).
- En Tipo de puerto, selecciona Predeterminado. El endpoint usa el puerto predeterminado
80para todos los endpoints del grupo de endpoints de red. Esto es suficiente para nuestro ejemplo porque el servidor Apache está atendiendo solicitudes en el puerto80. - Haz clic en Crear.
Haz clic en Añadir endpoint de red. Selecciona la segunda instancia de VM,
vm-a2, y repite los pasos anteriores para añadir sus endpoints azonal-neg-a.Repite todos los pasos de esta sección para añadir endpoints de
vm-b1yvm-b2azonal-neg-b.
gcloud
Crea un NEG zonal en la zona
ZONE_AconGCE_VM_IP_PORTendpoints:gcloud compute network-endpoint-groups create zonal-neg-a \ --network-endpoint-type=GCE_VM_IP_PORT \ --zone=ZONE_A \ --network=lb-network \ --subnet=backend-subnetPuedes especificar el
--default-portal crear el NEG o especificar un número de puerto para cada endpoint, como se muestra en el paso siguiente.Añade los endpoints al NEG de zona:
gcloud compute network-endpoint-groups update zonal-neg-a \ --zone=ZONE_A \ --add-endpoint='instance=vm-a1,port=80' \ --add-endpoint='instance=vm-a2,port=80'Crea un NEG zonal en la zona
ZONE_BconGCE_VM_IP_PORTendpoints:gcloud compute network-endpoint-groups create zonal-neg-b \ --network-endpoint-type=GCE_VM_IP_PORT \ --zone=ZONE_B \ --network=lb-network \ --subnet=backend-subnetPuedes especificar el
--default-portal crear el NEG o especificar un número de puerto para cada endpoint, como se muestra en el paso siguiente.Añade los endpoints al NEG de zona:
gcloud compute network-endpoint-groups update zonal-neg-b \ --zone=ZONE_B \ --add-endpoint='instance=vm-b1,port=80' \ --add-endpoint='instance=vm-b2,port=80'
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 Público (externo) y haz clic en Siguiente.
- Para la implementación global o en una sola región, 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-ext-tcp-lb. - En Región, selecciona
REGION_A. - En Red, selecciona
lb-network.
Reservar una subred de solo proxy
- 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.
Configurar los backends
- Haz clic en Configuración de backend.
- En la lista Tipo de backend, selecciona Grupo de endpoints de red zonales.
- En la lista Protocolo, selecciona TCP.
- Configura la comprobación del estado:
- En la lista Comprobación del estado, selecciona Crear comprobación del estado.
- En el campo Name (Nombre), introduce
tcp-health-check. - En la lista Protocolo, selecciona TCP.
- En el campo Puerto, introduce
80. - Haz clic en Crear.
- Configura el primer backend:
- En Nuevo backend, selecciona NEG por zonas
zonal-neg-a. - Conserva el resto de los valores predeterminados y haz clic en Hecho.
- En Nuevo backend, selecciona NEG por zonas
- Configura el segundo backend:
- Haz clic en Añadir backend.
- En Nuevo backend, selecciona el grupo de instancias
zonal-neg-b. - Conserva el resto de los valores predeterminados y haz clic en Hecho.
- Mantenga el resto de los 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.
Configurar el frontend
- Haz clic en Configuración de frontend.
- En Nombre, escribe
ext-tcp-forwarding-rule. - En Nivel de servicio de red, selecciona Estándar.
- En Dirección IP, selecciona
ext-tcp-ip-address. - En Número de puerto, introduce
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 Apache. Para obtener más información, consulta el protocolo 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.
- Comprueba tu configuración.
- Haz clic en Crear.
gcloud
Crea una comprobación del estado regional para los backends:
gcloud compute health-checks create tcp tcp-health-check \ --region=REGION_A \ --use-serving-portCrea un servicio de backend:
gcloud compute backend-services create external-tcp-proxy-bs \ --load-balancing-scheme=EXTERNAL_MANAGED \ --protocol=TCP \ --region=REGION_A \ --health-checks=tcp-health-check \ --health-checks-region=REGION_A
Añade la NEG zonal de la zona
ZONE_Aal servicio de backend:gcloud compute backend-services add-backend external-tcp-proxy-bs \ --network-endpoint-group=zonal-neg-a \ --network-endpoint-group-zone=ZONE_A \ --balancing-mode=CONNECTION \ --max-connections-per-endpoint=50 \ --region=REGION_A
Añade la NEG zonal de la zona
ZONE_Bal servicio de backend:gcloud compute backend-services add-backend external-tcp-proxy-bs \ --network-endpoint-group=zonal-neg-b \ --network-endpoint-group-zone=ZONE_B \ --balancing-mode=CONNECTION \ --max-connections-per-endpoint=50 \ --region=REGION_A
Crea el proxy TCP de destino:
gcloud compute target-tcp-proxies create ext-tcp-target-proxy \ --backend-service=external-tcp-proxy-bs \ --region=REGION_A
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 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 \ --network-tier=STANDARD \ --address=ext-tcp-ip-address \ --ports=9090 \ --region=REGION_A \ --target-tcp-proxy=ext-tcp-target-proxy \ --target-tcp-proxy-region=REGION_A
Probar el 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.
Obtén la dirección IP del balanceador de carga.
Para obtener la dirección IPv4, ejecuta el siguiente comando:
gcloud compute addresses describe ADDRESS_NAME
Envía tráfico a tu balanceador de carga ejecutando el siguiente comando. Sustituye
LB_IP_ADDRESSpor la dirección IPv4 de tu balanceador de carga.curl -m1 LB_IP_ADDRESS:9090
Siguientes pasos
- Convertir un balanceador de carga de red de proxy a IPv6
- Descripción general del balanceador de carga de red de proxy externo
- Registro y monitorización de balanceadores de carga de red de proxy.
- Añade un Private Service Connect.
- Limpiar la configuración del balanceador de carga.