En este documento, se muestra una configuración de muestra para un balanceador de cargas de aplicaciones externo global con backends de grupos de instancias de VM en un entorno de VPC compartida.
En el ejemplo, los componentes de frontend y backend del balanceador de cargas se crean en un proyecto de servicio.
Si no deseas usar una red de VPC compartida, consulta Configura un balanceador de cargas de aplicaciones externo global con backends de grupos de instancias de VM.
Antes de comenzar
- Lee la descripción general de la VPC compartida.
- Lee la descripción general del balanceador de cargas de aplicaciones externo, incluida la sección sobre la arquitectura de la VPC compartida.
Permisos necesarios
La configuración de un balanceador de cargas en una red de VPC compartida requiere cierta configuración y aprovisionamiento iniciales por parte de un administrador. Después de la configuración inicial, el propietario de un proyecto de servicio puede realizar una de las siguientes acciones:
- Implementar todos los componentes del balanceador de cargas y sus backends en un proyecto de servicio.
- Implementar los componentes de backend del balanceador de cargas (backend y servicio de backend) en proyectos de servicio a los que puede hacer referencia un mapa de URL en otro servicio o proyecto host.
En esta sección, se resumen los permisos necesarios para seguir esta guía a fin de configurar un balanceador de cargas en una red de VPC compartida.
Configura la VPC compartida
Se requieren los siguientes roles para las siguientes tareas:
- Realizar tareas administrativas únicas, como configurar la VPC compartida y habilitar un proyecto host.
- Realizar tareas administrativas que se deben repetir cada vez que desees incorporar un proyecto de servicio nuevo. Esto incluye conectar el proyecto de servicio, aprovisionar y configurar recursos de red, y otorgar acceso al administrador del proyecto de servicio.
Estas tareas deben realizarse en el proyecto host de la VPC compartida. Recomendamos que el administrador de la VPC compartida también sea el propietario del proyecto host de la VPC compartida. Esto otorga de forma automática las funciones de administrador de red y administrador de seguridad.
Tarea | Función requerida |
---|---|
Configurar la VPC compartida, habilitar el proyecto host y otorgar acceso a los administradores del proyecto de servicio | Administrador de VPC compartida |
Crea subredes en el proyecto host de VPC compartida y otorga acceso a los administradores del proyecto de servicio | Administrador de redes |
Agrega y quita reglas de firewall | Administrador de seguridad |
Después de que se aprovisionan las subredes, el propietario del proyecto host debe otorgar el rol de usuario de red en el proyecto host a cualquier persona (generalmente, desarrolladores, administradores del proyecto de servicio o cuentas de servicio) que necesite usar estos recursos.
Tarea | Función requerida |
---|---|
Usar redes y subredes de VPC que pertenezcan al proyecto host | Usuario de red |
Esta función se puede otorgar a nivel de proyecto o para subredes individuales. Se recomienda que otorgues la función en subredes individuales. Otorgar el rol en el proyecto proporciona acceso a todas las subredes actuales y futuras en la red de VPC del proyecto host.
Implementa un balanceador de cargas y backends
Los administradores de proyectos de servicio necesitan los siguientes roles en el proyecto de servicio para crear recursos y backends de balanceo de cargas. Estos permisos se otorgan automáticamente al propietario o editor del proyecto de servicio.
Tarea | Función requerida |
---|---|
Crear componentes del balanceador de cargas | Administrador de redes |
Crea instancias | Administrador de instancias |
Crear y modificar certificados SSL | Administrador de seguridad |
Requisitos previos
En esta sección, debes realizar los siguientes pasos:
- Configurar la red y las subredes en el proyecto host
- Configurar la VPC compartida en el proyecto host.
No es necesario realizar los pasos de esta sección cada vez que quieras crear un balanceador de cargas nuevo. Sin embargo, debes asegurarte de tener acceso a los recursos descritos aquí antes de continuar con la creación del balanceador de cargas.
Configura la red y las subredes en el proyecto host
Necesitas una red de VPC compartida con una subred para los backends del balanceador de cargas.En este ejemplo, se usan la red de VPC, la región y la subred que se describen a continuación:
Red. La red se llama
lb-network
.Subred para backends del balanceador de cargas. Una subred llamada
lb-backend-subnet
en la regiónus-west1
usa10.1.2.0/24
para su rango de IP principal.
Configura la subred para los backends del balanceador de cargas
No es necesario realizar este paso cada vez que quieras crear un balanceador de cargas nuevo. Solo debes asegurarte de que el proyecto de servicio tenga acceso a una subred en la red de VPC compartida.Todos los pasos de esta sección deben realizarse en el proyecto host.
Consola
- 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:
- Configura el Modo de creación de subred como Personalizado.
En la sección Subred nueva, ingresa la siguiente información:
- Nombre:
lb-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
Crea una red de VPC 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ónus-west1
:gcloud compute networks subnets create lb-frontend-and-backend-subnet \ --network=lb-network \ --range=10.1.2.0/24 \ --region=us-west1
Otorga a los administradores de proyectos de servicio acceso a la subred de backend
Los administradores de proyectos de servicio requieren acceso a la subredlb-backend-subnet
para poder aprovisionar los backends del balanceador de cargas.
Un administrador de VPC compartida debe otorgar acceso a la subred de backend a los administradores del proyecto de servicio (o desarrolladores que implementan recursos y backends que usan la subred). Si deseas obtener instrucciones, consulta Administradores de proyectos de servicio para algunas subredes.
Configura reglas de firewall en el proyecto host
En este ejemplo, se usan las siguientes reglas de firewall:fw-allow-health-check
. Es una regla de entrada, aplicable a las instancias con balanceo de cargas, que permite 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 destinoload-balanced-backend
para identificar las instancias a las que debe aplicarse.
Todos los pasos de esta sección deben realizarse en el proyecto host.
Consola
En la consola de Google Cloud, ve a la página Políticas de firewall.
- Haz clic en Crear regla de firewall para crear la regla que permitirá las verificaciones de estado de Google Cloud:
- Nombre:
fw-allow-health-check
- Red:
lb-network
- Dirección del tráfico: entrada
- Acción si hay coincidencia: permitir
- Objetivos: etiquetas de destino especificadas
- Etiquetas de destino:
load-balanced-backend
- 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.
- Marca TCP e 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 usas
tcp:80
en el protocolo y el puerto, Google Cloud puede usar HTTP en el puerto80
a fin de contactar las VMs, pero no puede usar HTTPS en el puerto443
para comunicarse con ellas. - Haz clic en Crear.
gcloud
Crea la regla de firewall
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 para satisfacer 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=load-balanced-backend \ --rules=tcp
Configura la VPC compartida en el proyecto host
Este paso implica habilitar un proyecto host de VPC compartida, compartir subredes del proyecto host y conectar proyectos de servicio al proyecto host para que los proyectos de servicio puedan usar la red de VPC compartida. Para configurar una VPC compartida en el proyecto host, consulta las siguientes páginas:
En el resto de estas instrucciones, se supone que ya configuraste una VPC compartida. Esto incluye configurar políticas de IAM para tu organización y designar los proyectos host y de servicio.
No continúes hasta configurar la VPC compartida y habilitado los proyectos host y de servicio.
Configura un balanceador de cargas en el proyecto de servicio
Después de configurar la red de VPC en el proyecto host y configurar la VPC compartida, puedes cambiar tu atención al proyecto de servicio, en el que necesitas crear todos los componentes de balanceo de cargas (servicio de backend, mapa de URL, proxy de destino y regla de reenvío) y los backends.
En esta sección, se supone que realizaste los pasos de requisitos previos descritos en la sección anterior en el proyecto host. En esta sección, los componentes de frontend y backend del balanceador de cargas junto con los backends se crean en un proyecto de servicio.
En la siguiente figura, se muestran los componentes de un balanceador de cargas de aplicaciones externo global en un proyecto de servicio, que se conecta al proyecto host en una red de VPC compartida.
Estos pasos debe realizarlos el administrador del proyecto de servicio (o un desarrollador que opera dentro del proyecto de servicio) y no requieren participación del administrador del proyecto host. Los pasos de esta sección son similares a los pasos estándar para configurar un balanceador de cargas de aplicaciones externo global.
En el ejemplo de esta página, se configura de manera explícita una dirección IP reservada para la regla de reenvío del balanceador de cargas de aplicaciones externo global, en lugar de permitir que se asigne una dirección IP efímera. Recomendamos reservar direcciones IP para las reglas de reenvío.
Crea un backend de grupo de instancias administrado
El precursor de la creación de un grupo de instancias administrado es la creación de una plantilla de instancias, que es un recurso que puedes usar a fin de crear instancias de máquinas virtuales (VMs). Las cargas del tráfico de los clientes se balancean a las VMs de un grupo de instancias. El grupo de instancias administrado proporciona las VMs que ejecutan los servidores de backend de un balanceador de cargas de aplicaciones externo. En este ejemplo, los backends entregan sus propios nombres de host.
Consola
Crea una plantilla de instancias
En la consola de Google Cloud, ve a la página Plantillas de instancias de Compute Engine.
Haz clic en Crear plantilla de instancias.
En Nombre, ingresa
backend-template
.En la sección Disco de arranque, asegúrate de que el disco de arranque esté configurado en una imagen de Debian, como Debian GNU/Linux 10 (buster). Haz clic en Cambiar para cambiar la imagen si es necesario.
Expanda la sección Opciones avanzadas.
Expande la sección Herramientas de redes y, en el campo Etiquetas de red, ingresa
load-balanced-backend
.En Interfaces de red, selecciona Redes compartidas conmigo (del proyecto host:
HOST_PROJECT_ID
).En la lista Subred compartida, selecciona la subred
lb-backend-subnet
de la redlb-network
.Expande la sección Administración y, en el campo Automatización, especifica la siguiente 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.
Cree un grupo de instancias administrado
En la consola de Google Cloud, ve a la página Grupos de instancias de Compute Engine.
Haz clic en Crear grupo de instancias.
En las opciones, selecciona Nuevo grupo de instancias administrado (sin estado).
Para el nombre del grupo de instancias, ingresa
lb-backend
.En la lista Plantilla de instancias, selecciona la plantilla de instancias
backend-template
que creaste en el paso anterior.En la sección Ubicación, selecciona Zona única e ingresa los siguientes valores:
En Región, selecciona
us-west1
.En Zona, selecciona
us-west1-a
.
En la sección Ajuste de escala automático, ingresa los siguientes valores:
En Modo de ajuste de escala automático, selecciona Activado: agrega y quita instancias del grupo.
En Cantidad mínima de instancias, selecciona
2
.En Cantidad máxima de instancias, selecciona
3
.
En la sección Asignación de puertos, haz clic en Agregar puerto e ingresa los siguientes valores:
En Nombre del puerto, ingresa
http
.En Número de puerto, ingresa
80
.
Haz clic en Crear.
gcloud
Crea una plantilla de instancias:
gcloud compute instance-templates create backend-template \ --region=us-west1 \ --network=projects/HOST_PROJECT_ID/global/networks/lb-network \ --subnet=projects/HOST_PROJECT_ID/regions/us-west1/subnetworks/lb-backend-subnet \ --tags=load-balanced-backend \ --image-family=debian-10 \ --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' \ --project=SERVICE_PROJECT_ID
Crea un grupo de instancias administrado y selecciona la plantilla de instancias que creaste en el paso anterior:
gcloud compute instance-groups managed create lb-backend \ --zone=us-west1-a \ --size=2 \ --template=backend-template \ --project=SERVICE_PROJECT_ID
Agrega un puerto con nombre al grupo de instancias:
gcloud compute instance-groups set-named-ports lb-backend \ --named-ports=http:80 \ --zone=us-west1-a \ --project=SERVICE_PROJECT_ID
Crear una verificación de estado
Las verificaciones de estado son pruebas que confirman la disponibilidad de los backends. Crea una verificación de estado que use el protocolo HTTP y sondee el puerto 80
. Luego, adjuntarás esta verificación de estado al servicio de backend al que hace referencia el balanceador de cargas.
Consola
En la consola de Google Cloud, ve a la página Verificaciones de estado de Compute Engine.
Para el nombre de la verificación de estado, ingresa
lb-health-check
.Establece el Protocolo en HTTP.
Haz clic en Crear.
gcloud
Crea una verificación de estado de HTTP.
gcloud compute health-checks create http lb-health-check \ --use-serving-port \ --project=SERVICE_PROJECT_ID
Reserva la dirección IP del balanceador de cargas
Reserva una dirección IP externa estática global que se pueda asignar a la regla de reenvío del balanceador de cargas.
Consola
En la consola de Google Cloud, ve a la página Direcciones IP externas.
Haz clic en Reservar dirección IP externa estática.
En Nombre, ingresa
lb-ipv4-1
.En Nivel de servicio de red, establece Premium.
Configura Versión de IP como IPv4.
Establece Tipo en Global.
Haz clic en Reservar.
gcloud
Crea una dirección IP externa estática global.
gcloud compute addresses create lb-ipv4-1 \ --ip-version=IPV4 \ --network-tier=PREMIUM \ --global --project=SERVICE_PROJECT_ID
Configura un recurso de certificado SSL
Para un balanceador de cargas que use HTTPS como el protocolo de solicitud y respuesta, crea un recurso de certificado SSL como se describe en los siguientes recursos:
Recomendamos que uses un certificado administrado por Google.
En este ejemplo, se supone que creaste un certificado SSL llamado lb-ssl-cert
. El certificado SSL se adjunta al proxy de destino que crearás
en uno de los siguientes pasos.
Configura el balanceador de cargas
En esta sección, se muestra cómo crear los siguientes recursos para un balanceador de cargas de aplicaciones externo global:
- Servicio de backend con un grupo de instancias administrado como backend
- Mapa de URL
- Certificado SSL (obligatorio solo para el tráfico HTTPS)
- Proxy de destino
- Regla de reenvío
En este ejemplo, puedes usar HTTP o HTTPS como el protocolo de solicitud y respuesta entre el cliente y el balanceador de cargas. Para HTTPS, necesitas un recurso de certificado SSL a fin de configurar el proxy. Recomendamos que uses un certificado administrado por Google.
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 aplicaciones (HTTP/HTTPS) 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 globales y haz clic en Siguiente.
- En Generación de balanceadores de cargas, selecciona Balanceador de cargas de aplicaciones externo global y haz clic en Siguiente.
- Haz clic en Configurar.
Configuración básica
- Para el nombre del balanceador de cargas, ingresa
l7-xlb-shared-vpc
.
Configura el frontend del balanceador de cargas
Para el tráfico HTTP:
Haz clic en Configuración de frontend.
Para el
http-fw-rule
Nombre del balanceador de cargas, ingresa .En Protocolo, selecciona HTTP.
Configura Versión de IP como IPv4.
En Dirección IP, selecciona
lb-ipv4-1
, que es la dirección IP que reservaste antes.Establece el puerto en
80
para permitir el tráfico HTTP.Para completar la configuración de frontend, haz clic en Listo.
Verifica que haya una marca de verificación azul junto a Configuración de frontend antes de continuar.
Para el tráfico HTTPS:
Haz clic en Configuración de frontend.
Para el
https-fw-rule
Nombre del balanceador de cargas, ingresa .En Protocolo, selecciona HTTPS.
Configura Versión de IP como IPv4.
En Dirección IP, selecciona
lb-ipv4-1
, que es la dirección IP que reservaste antes.Establece el puerto en
443
para permitir el tráfico HTTPS.En la lista Certificado, selecciona el Certificado SSL que creaste.
Para completar la configuración de frontend, haz clic en Listo.
Verifica que haya una marca de verificación azul junto a Configuración de frontend antes de continuar.
Configura el backend
Haz clic en Configuración de backend.
En el menú Servicios y buckets de backend, haz clic en Crear un servicio de backend.
Para el nombre del servicio de backend, ingresa
lb-backend-service
.En Tipo de backend, selecciona Grupo de instancias.
Configura Protocolo como HTTP.
En el campo Puerto con nombre, ingresa
http
. Este es el mismo nombre de puerto que ingresaste cuando creaste el grupo de instancias administrado.Para agregar backends al servicio de backend, sigue estos pasos:
En la sección Backends, establece el grupo de instancias en
lb-backend
, que es el grupo de instancias administrado que creaste en un paso anterior.En Números de puerto, ingresa
80
.Para agregar el backend, haz clic en Listo.
Para agregar una verificación de estado, en la lista Verificación de estado, selecciona
lb-health-check
, que es la verificación de estado que creaste antes.Para crear el servicio de backend, haz clic en Crear.
Verifica que haya una marca de verificación azul junto a Configuración de backend antes de continuar.
Configura las reglas de enrutamiento
- Haga clic en Reglas de enrutamiento. Asegúrate de que
lb-backend-service
sea el servicio de backend predeterminado para los hosts y rutas de acceso no coincidentes.
Para obtener información sobre la administración del tráfico, consulta Configura la administración del tráfico.
Revise y finalice la configuración
Haz clic en Revisar y finalizar.
Revisa los parámetros de configuración del frontend y el backend del balanceador de cargas para asegurarte de que sean los esperados.
Haz clic en Crear y, luego, espera a que se cree el balanceador de cargas.
gcloud
Crea un servicio de backend para distribuir el tráfico entre backends:
gcloud compute backend-services create lb-backend-service \ --load-balancing-scheme=EXTERNAL_MANAGED \ --protocol=HTTP \ --port-name=http \ --health-checks=lb-health-check \ --global \ --project=SERVICE_PROJECT_ID
Agrega tu grupo de instancias como backend al servicio de backend:
gcloud compute backend-services add-backend lb-backend-service \ --instance-group=lb-backend \ --instance-group-zone=us-west1-a \ --global \ --project=SERVICE_PROJECT_ID
Crea un mapa de URL para enrutar las solicitudes entrantes al servicio de backend:
gcloud compute url-maps create lb-map \ --default-service=lb-backend-service \ --global \ --project=SERVICE_PROJECT_ID
Crea un proxy de destino.
Para el tráfico HTTP, crea un proxy HTTP de destino para enrutar las solicitudes al mapa de URL:
gcloud compute target-http-proxies create http-proxy \ --url-map=lb-map \ --global \ --project=SERVICE_PROJECT_ID
Para el tráfico HTTPS, crea un proxy HTTPS de destino a fin de enrutar las solicitudes al mapa de URL. El proxy es la parte del balanceador de cargas que contiene el certificado SSL para el balanceo de cargas de HTTPS, por lo que también debes cargar el certificado SSL en este paso:
gcloud compute target-https-proxies create https-proxy \ --url-map=lb-map \ --ssl-certificates=lb-ssl-cert --global \ --project=SERVICE_PROJECT_ID
Cree una regla de reenvío.
Para el tráfico HTTP, crea una regla de reenvío global a fin de enrutar las solicitudes entrantes al proxy de destino:
gcloud compute forwarding-rules create http-fw-rule \ --load-balancing-scheme=EXTERNAL_MANAGED \ --address=lb-ipv4-1 \ --global \ --target-http-proxy=http-proxy \ --ports=80 \ --project=SERVICE_PROJECT_ID
Para el tráfico HTTPS, crea una regla de reenvío global a fin de enrutar las solicitudes entrantes al proxy de destino:
gcloud compute forwarding-rules create https-fw-rule \ --load-balancing-scheme=EXTERNAL_MANAGED \ --address=lb-ipv4-1 \ --global \ --target-https-proxy=https-proxy \ --ports=443 \ --project=SERVICE_PROJECT_ID
Prueba el balanceador de cargas
Cuando el servicio de balanceo de cargas se esté ejecutando, puedes enviar tráfico a la regla de reenvío y ver cómo este se dispersa a las diferentes instancias.
Console
En la consola de Google Cloud, ve a la página Balanceo de cargas.
Haz clic en el balanceador de cargas que acabas de crear.
Toma nota de la dirección IP del balanceador de cargas. Esta dirección IP se denomina
LB_IP_ADDRESS
en los siguientes pasos.En la sección Backend, confirma que las VM estén en buen estado.
La columna En buen estado debe propagarse, lo que indica que las VMs están en buen estado (por ejemplo, si se crean dos instancias, deberías ver un mensaje que indica
2 of 2
con una marca de verificación verde junto a este). En caso contrario, primero vuelve a cargar la página. Puede tomar unos minutos que la consola de Google Cloud indique que las VMs están en buen estado. Si los backends no se muestran en buen estado después de unos minutos, revisa la configuración del firewall y la etiqueta de red asignada a tus VMs de backend.Después de que la consola de Google Cloud muestre que las instancias de backend están en buen estado, puedes probar el balanceador de cargas si apuntas el navegador web a
https://LB_IP_ADDRESS
(ohttp://LB_IP_ADDRESS
). ReemplazaLB_IP_ADDRESS
por la dirección IP del balanceador de cargas.Si usaste un certificado autofirmado para las pruebas de HTTPS, el navegador mostrará una advertencia. Debes indicar de manera explícita a tu navegador que acepte un certificado autofirmado.
El navegador debe renderizar una página con contenido que muestre el nombre de la instancia que entregó la página (por ejemplo,
Page served from: lb-backend-example-xxxx
). Si el navegador no renderiza esta página, revisa los parámetros de configuración en esta guía.
gcloud
Toma nota de la dirección IP que estaba reservada:
gcloud compute addresses describe IP_ADDRESS_NAME \ --format="get(address)" \ --global
Para probar el balanceador de cargas, apunta el navegador web hacia
https://LB_IP_ADDRESS
(o
http://LB_IP_ADDRESS
). Reemplaza
LB_IP_ADDRESS
por la dirección IP del balanceador de cargas.
Si usaste un certificado autofirmado para las pruebas de HTTPS, el navegador mostrará una advertencia. Debes indicar de manera explícita a tu navegador que acepte un certificado autofirmado.
Tu navegador debe renderizar una página con información mínima sobre la instancia de backend. Si el navegador no renderiza esta página, revisa las opciones de configuración que aparecen en esta guía.
¿Qué sigue?
- Obtén información sobre cómo solucionar problemas con un balanceador de cargas de aplicaciones externo global.
- Limpia tu configuración de balanceo de cargas.