En este documento, se muestran dos opciones de 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 primer ejemplo, los componentes de frontend y backend del balanceador de cargas se crean en un proyecto de servicio.
- En el segundo ejemplo, los componentes de frontend y el mapa de URL del balanceador de cargas se crean en un proyecto de servicio, mientras que el servicio de backend y los backends del balanceador de cargas se crean en un proyecto de servicio diferente. Este tipo de implementación, en el que el mapa de URL de un proyecto hace referencia a un servicio de backend en otro proyecto, se conoce como referencia del servicio entre proyectos.
Ambos ejemplos requieren la misma configuración inicial para otorgar permisos, configurar la red y la subred en el proyecto host y configurar la VPC compartida antes de comenzar a crear balanceadores de cargas.
Estas no son las únicas opciones de configuración de VPC compartida compatibles con el balanceador de cargas de aplicaciones externo global. Para obtener más información sobre otras arquitecturas válidas de VPC compartida, consulta Arquitecturas de VPC compartida.
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 |
Servicios de backend entre proyectos de referencia
Si tu balanceador de cargas necesita hacer referencia a los servicios de backend de otros proyectos de servicio, también conocidos como referencias del servicio entre proyectos, los administradores del balanceador de cargas requerirán el siguiente rol en el proyecto de servicio en el que se crea el servicio de backend.
Tarea | Función requerida |
---|---|
Permisos para usar servicios en otros proyectos | Usuario de servicios del balanceador de cargas |
Este rol se puede otorgar a nivel de proyecto o para servicios de backend individuales. Para obtener instrucciones sobre cómo otorgar este rol, consulta el ejemplo de referencia de proyecto entre proyectos en esta página.
Para obtener más información sobre IAM, consulta las siguientes guías:
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.
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:
- 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-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.
Console
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.
Después de completar los pasos definidos en esta sección de requisitos previos, puedes realizar una de las siguientes configuraciones:
Configura un balanceador de cargas en el proyecto de servicio
Configura un balanceador de cargas con un servicio de backend entre proyectos
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.
Console
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.
Console
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.
Console
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.
Configura un balanceador de cargas con un servicio de backend entre proyectos
En el ejemplo anterior de esta página, se muestra cómo configurar una implementación de VPC compartida en la que todos los componentes del balanceador de cargas y sus backends se crean en un proyecto de servicio.
Los balanceadores de cargas de aplicaciones externos globales también te permiten configurar implementaciones de VPC compartida en las que un mapa de URL de un proyecto host o de servicio puede hacer referencia a servicios de backend (y backends) ubicados en varios proyectos de servicio en entornos de VPC compartida. Esto se conoce como referencia de servicio entre proyectos.
Puedes usar los pasos en esta sección como referencia para configurar cualquiera de las combinaciones compatibles que se enumeran aquí:
- Regla de reenvío, proxy de destino y mapa de URL en el proyecto host, y servicio de backend en un proyecto de servicio
- Regla de reenvío, mapa de URL y proxy de destino en un proyecto de servicio, y backend de servicio en otro proyecto de servicio
Requisitos de configuración
Si aún no lo hiciste, debes completar todos los pasos de requisitos previos para configurar la VPC compartida y configurar la red, las subredes y las reglas firewall necesarias para este ejemplo. Para obtener instrucciones, consulta las siguientes secciones al comienzo de esta página:
- Permisos necesarios para configurar la VPC compartida
- Configuración de los requisitos en el proyecto host
En esta configuración, la regla de reenvío, el proxy de destino y el mapa de URL se encuentran en un proyecto de servicio, y el servicio de backend y los backends se encuentran en otro proyecto de servicio.
- En el proyecto de servicio B, configurarás los siguientes recursos de backend:
- Backend de grupo de instancias administrado
- Verificación de estado
- Servicio de backend global
- En el proyecto de servicio A, configurarás los siguientes recursos de frontend:
- Dirección IP
- Certificado SSL
- Mapa de URL
- Proxy de destino
- Regla de reenvío
En la siguiente figura, se muestra un balanceador de cargas de aplicaciones externo global en el que el servicio de backend del balanceador de cargas en un proyecto de servicio hace referencia a un mapa de URL en otro proyecto de servicio.
El servicio entre proyectos que hace referencia a un balanceador de cargas de aplicaciones externo global no requiere que las instancias de backend sean parte de la misma red de VPC ni una red de VPC compartida.
En este ejemplo, las VMs de backend en el proyecto de servicio son parte de la red de VPC compartida que se crea en el proyecto host. Sin embargo, también puedes configurar una red de VPC independiente (es decir, una red de VPC no compartida), junto con las reglas de firewall necesarias, en un proyecto de servicio. Luego, puedes crear instancias de backend (por ejemplo, un grupo de instancias) que formen parte de esta red de VPC independiente. Después de crear las instancias de backend, puedes seguir los pasos restantes, como se muestra en este ejemplo, para crear un servicio de backend en el proyecto de servicio y conectarlo a un mapa de URL en otro proyecto de servicio mediante el uso de referencias de servicio entre proyectos.
Configura los componentes de backend del balanceador de cargas en el proyecto de servicio B
En esta sección, debes configurar los siguientes recursos de backend en el proyecto de servicio B:
- Grupo de instancias administrado
- Verificación de estado
- Servicio de backend global
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.
Console
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_B_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_B_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_B_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.
Console
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_B_ID
Crea un servicio de backend global.
Crea un servicio de backend global para distribuir el tráfico entre backends. Como parte de este paso, debes asignar la verificación de estado que creaste al servicio de backend y agregar el grupo de instancias como backend al servicio de backend.
Console
En la consola de Google Cloud, ve a la página Balanceo de cargas.
Ve a la sección Backends.
Haz clic en Crear servicio de backend.
En Servicio de backend global, haz clic en el botón Crear junto a él.
Para el nombre del servicio de backend, ingresa
cross-ref-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.
gcloud
Crea un servicio de backend global para distribuir el tráfico entre backends:
gcloud compute backend-services create cross-ref-backend-service \ --load-balancing-scheme=EXTERNAL_MANAGED \ --protocol=HTTP \ --port-name=http \ --health-checks=lb-health-check \ --global \ --project=SERVICE_PROJECT_B_ID
Agrega tu grupo de instancias como backend al servicio de backend:
gcloud compute backend-services add-backend cross-ref-backend-service \ --instance-group=lb-backend \ --instance-group-zone=us-west1-a \ --global \ --project=SERVICE_PROJECT_B_ID
Otorga permisos al administrador del balanceador de cargas para usar el servicio de backend
Si quieres que los balanceadores de cargas hagan referencia a los servicios de backend en otros proyectos de servicio, el administrador del balanceador de cargas debe tener el permiso compute.backendServices.use
. Para otorgar este permiso, puedes usar el rol predefinido de IAM llamado Usuario de servicios del balanceador de cargas de Compute (roles/compute.loadBalancerServiceUser
). El administrador del proyecto de servicio debe otorgar este rol, que puede aplicarse a nivel del proyecto o a nivel del servicio de backend individual.
Este paso no es necesario si ya otorgaste los permisos necesarios a nivel de servicio de backend mientras creas el servicio de backend. Puedes omitir esta sección o continuar leyendo para obtener información sobre cómo otorgar acceso a todos los servicios de backend en este proyecto, de modo que no tengas que otorgar acceso cada vez que crees un servicio de backend nuevo.
En este ejemplo, un administrador del proyecto de servicio B debe ejecutar uno de los siguientes comandos para otorgar el permiso compute.backendServices.use
a un administrador del balanceador de cargas del proyecto de servicio A. Esto se puede hacer a nivel de proyecto (para todos los servicios de backend del proyecto) o por servicio de backend.
Console
Permisos a nivel del proyecto
Sigue estos pasos para otorgar permisos a todos los servicios de backend del proyecto.
Necesitas los permisos compute.backendServices.setIamPolicy
y resourcemanager.projects.setIamPolicy
para completar este paso.
En la consola de Google, ve a la página Servicios de balanceo de cargas compartidos.
En la sección Todos los permisos del servicio de backend (permisos a nivel de proyecto), selecciona tu proyecto.
Si el panel de permisos no es visible, haz clic en Mostrar panel de permisos. El panel Permisos a nivel de proyecto se abrirá a la derecha.
Haz clic en
Agregar principal.En Nuevas principales, ingresa la dirección de correo electrónico del principal o algún otro identificador.
En Función, selecciona el rol Usuario de servicios de balanceador de cargas de Compute en la lista desplegable.
Opcional: Agrega una condición a la función.
Haz clic en Guardar.
Permisos a nivel de recurso para servicios de backend individuales
Usa los siguientes pasos para otorgar permisos a servicios de backend individuales en tu proyecto.
Necesitas el permiso compute.backendServices.setIamPolicy
para completar este paso.
En la consola de Google, ve a la página Servicios de balanceo de cargas compartidos.
En la sección Permisos de servicio de backend individuales (permisos a nivel de recurso), selecciona el servicio de backend al que deseas otorgar acceso.
Haz clic en
Agregar principal.En Nuevas principales, ingresa la dirección de correo electrónico del principal o algún otro identificador.
En Función, selecciona el rol Usuario de servicios de balanceador de cargas de Compute en la lista desplegable.
Haz clic en Guardar.
gcloud
Permisos a nivel del proyecto
Sigue estos pasos para otorgar permisos a todos los servicios de backend del proyecto.
Necesitas los permisos compute.backendServices.setIamPolicy
y resourcemanager.projects.setIamPolicy
para completar este paso.
gcloud projects add-iam-policy-binding SERVICE_PROJECT_B_ID \ --member="user:LOAD_BALANCER_ADMIN" \ --role="roles/compute.loadBalancerServiceUser"
Permisos a nivel de recurso para servicios de backend individuales
A nivel de servicio de backend, los Administradores de proyectos de servicio pueden usar cualquiera de los siguientes comandos para otorgar el rol Usuario de servicios del balanceador de cargas de Compute (roles/compute.loadBalancerServiceUser
).
Necesitas el permiso compute.backendServices.setIamPolicy
para completar este paso.
gcloud projects add-iam-policy-binding SERVICE_PROJECT_B_ID \ --member="user:LOAD_BALANCER_ADMIN" \ --role="roles/compute.loadBalancerServiceUser" \ --condition='expression=resource.name=="projects/SERVICE_PROJECT_B_ID/regions/us-west1/backend-services/BACKEND_SERVICE_NAME",title=Shared VPC condition'
o
gcloud compute backend-services add-iam-policy-binding BACKEND_SERVICE_NAME \ --member="user:LOAD_BALANCER_ADMIN" \ --role="roles/compute.loadBalancerServiceUser" \ --project=SERVICE_PROJECT_B_ID \ --region=us-west1
Para usar estos comandos, reemplaza LOAD_BALANCER_ADMIN
por la principal del usuario, por ejemplo, test-user@gmail.com
.
También puedes configurar los permisos de IAM para que solo se apliquen a un subconjunto de servicios de backend regionales mediante condiciones y la especificación de atributos de condición.
Configura los componentes de frontend del balanceador de cargas en el proyecto de servicio A
En esta sección, debes configurar los siguientes recursos de frontend en el proyecto de servicio A:
- Dirección IP
- Certificado SSL
- Mapa de URL
- Proxy de destino
- Regla de reenvío
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.
Console
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
cross-ref-ip-address
.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 cross-ref-ip-address \ --ip-version=IPV4 \ --network-tier=PREMIUM \ --global \ --project=SERVICE_PROJECT_A_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.
Crea los componentes de frontend
Console
La consola de Google Cloud no es compatible con el backend entre proyectos. La consola de Google Cloud no es compatible con la referencia del servicio de backend entre proyectos. Sin embargo, puedes hacer referencia al servicio de backend en el proyecto de servicio B desde el mapa de URL en el proyecto de servicio A mediante Google Cloud CLI.
gcloud
Opcional: Antes de crear un balanceador de cargas con servicios de backend de referencia cruzada, descubre si se puede hacer referencia a los servicios de backend a los que deseas hacer referencia mediante un mapa de URL:
gcloud compute backend-services list-usable \ --global \ --project=SERVICE_PROJECT_B_ID
Crea un mapa de URL para enrutar las solicitudes entrantes al servicio de backend:
gcloud compute url-maps create cross-ref-url-map \ --default-service=projects/SERVICE_PROJECT_B_ID/global/backendServices/cross-ref-backend-service \ --global \ --project=SERVICE_PROJECT_A_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 cross-ref-http-proxy \ --url-map=cross-ref-url-map \ --global \ --project=SERVICE_PROJECT_A_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 cross-ref-https-proxy \ --url-map=cross-ref-url-map \ --ssl-certificates=lb-ssl-cert --global \ --project=SERVICE_PROJECT_A_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 cross-ref-http-forwarding-rule \ --load-balancing-scheme=EXTERNAL_MANAGED \ --address=cross-ref-ip-address \ --global \ --target-http-proxy=cross-ref-http-proxy \ --ports=80 \ --project=SERVICE_PROJECT_A_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 cross-ref-https-forwarding-rule \ --load-balancing-scheme=EXTERNAL_MANAGED \ --address=cross-ref-ip-address \ --global \ --target-https-proxy=cross-ref-https-proxy \ --ports=443 \ --project=SERVICE_PROJECT_A_ID
Prueba el balanceador de cargas
La configuración del balanceador de cargas puede tomar varios minutos. Cuando el servicio de balanceo de cargas se esté ejecutando, puedes enviar tráfico a la regla de reenvío en el proyecto de servicio A y ver cómo este se dispersa a las diferentes instancias de VM en proyecto de servicio B.
Console
En la consola de Google Cloud, ve a la página Balanceo de cargas en el proyecto de servicio A.
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.Para probar el balanceador de cargas, apunta el navegador web hacia
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 --project=SERVICE_PROJECT_A_ID
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?
- Restringe cómo se usan las funciones de VPC compartida, como las referencias de servicios entre proyectos, en tu proyecto mediante restricciones de las políticas de la organización para Cloud Load Balancing.
- 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.