En este documento, se muestran dos opciones de configuración de muestra para configurar unregional internal Application Load Balancer en un entorno de VPC compartida con buckets de Cloud Storage:
- En el primer ejemplo, se crean todos los componentes y backends del balanceador de cargas en un proyecto de servicio.
- En el segundo ejemplo, se crean los componentes de frontend y el mapa de URL del balanceador de cargas en un proyecto de servicio, mientras que el bucket de backend y los buckets de Cloud Storage del balanceador de cargas se crean en un proyecto de servicio diferente.
Ambos ejemplos requieren la misma configuración inicial para otorgar los roles necesarios y configurar una VPC compartida antes de que puedas comenzar a crear balanceadores de cargas.
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 regional internal Application Load Balancer con buckets de Cloud Storage.
Antes de comenzar
Asegúrate de que tu configuración cumpla con los requisitos.
Crear proyectos de Google Cloud
Crea Google Cloud proyectos para un proyecto host y dos proyectos de servicio.
Roles obligatorios
Para obtener los permisos que necesitas para configurar un regional internal Application Load Balancer en un entorno de VPC compartida con buckets de Cloud Storage, pídele a tu administrador que te otorgue los siguientes roles de IAM:
-
Configurar la VPC compartida, habilitar el proyecto host y otorgar acceso a los administradores del proyecto de servicio:
Administrador de VPC compartida de Compute (
roles/compute.xpnAdmin) en el proyecto host -
Agregar y quitar reglas de firewall:
Administrador de seguridad de Compute (
roles/compute.securityAdmin) en el proyecto host -
Acceso a un administrador del proyecto de servicio para usar la red de VPC compartida:
Usuario de la red de Compute (
roles/compute.networkUser) en el proyecto host -
Crea los recursos de balanceo de cargas:
Administrador de red de Compute (
roles/compute.networkAdmin) en el proyecto de servicio -
Crear instancias de Compute Engine:
Administrador de instancias de Compute (
roles/compute.instanceAdmin.v1) en el proyecto de servicio -
Crear y modificar certificados SSL de Compute Engine:
Administrador de seguridad de Compute (
roles/compute.securityAdmin) en el proyecto de servicio -
Crear y modificar certificados SSL del Administrador de certificados:
Propietario del Administrador de certificados (
roles/certificatemanager.owner) en el proyecto de servicio -
Habilita los buckets de backend de referencia del balanceador de cargas desde otros proyectos de servicio:
Usuario de servicios del balanceador de cargas de Compute (
roles/compute.loadBalancerServiceUser) en el proyecto de servicio
Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.
También puedes obtener los permisos necesarios a través de roles personalizados o cualquier otro rol predefinido.
Configura un entorno de VPC compartida
Para configurar un entorno de VPC compartida, completa los siguientes pasos en el proyecto host:
- Configura la red de VPC en el proyecto host.
- Configura la subred de solo proxy en el proyecto host.
- Configura una regla de firewall en el proyecto host.
- Configurar la VPC compartida en el proyecto host.
No es necesario que realices 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.
En este ejemplo, se usan la siguiente red de VPC, región y subred de solo proxy:
Red. Es una red de VPC de modo personalizado con el nombre
lb-network.Subred para el balanceador de cargas. Una subred llamada
subnet-usen la regiónus-east1usa10.1.2.0/24para su rango de IP principal.Subred para proxies de Envoy. Una subred llamada
proxy-only-subnet-usen la regiónus-east1usa10.129.0.0/23para su rango de IP principal.
Configura una VPC para el proyecto host
Configura una VPC en modo personalizado para el proyecto host y crea una subred en la misma región en la que necesitas configurar la regla de reenvío de tus balanceadores de cargas.
No es necesario que realices 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 (además de la subred de solo proxy).
Console
En la consola de Google Cloud , ve a la página Redes de VPC.
Haga clic en Crear red de VPC.
En el campo Nombre, ingresa
lb-network.En Modo de creación de subred, selecciona Personalizado.
En la sección Subred nueva, proporciona la siguiente información:
- En el campo Nombre, ingresa
subnet-us. - En la lista Región, selecciona
us-east1. - En el campo Rango de IPv4, ingresa
10.1.2.0/24. - Haz clic en Listo.
- En el campo Nombre, ingresa
Haz clic en Crear.
gcloud
Crea una red de VPC personalizada, llamada
lb-network, con el comandogcloud compute networks create.gcloud compute networks create lb-network \ --subnet-mode=custom \ --project=HOST_PROJECT_IDReemplaza
HOST_PROJECT_IDpor elGoogle Cloud ID del proyecto asignado al proyecto que está habilitado como proyecto host en un entorno de VPC compartida.Crea una subred en la red de VPC
lb-networken la regiónus-east1con el comandogcloud compute networks subnets create.gcloud compute networks subnets create subnet-us \ --network=lb-network \ --range=10.1.2.0/24 \ --region=us-east1 \ --project=HOST_PROJECT_ID
Configura la subred de solo proxy en el proyecto host
Una subred de solo proxy proporciona un conjunto de direcciones IP que Google Cloud usa para ejecutar proxies de Envoy en tu nombre. Los proxies finalizan las conexiones del cliente y crean conexiones nuevas a los backends.
Todos los balanceadores de cargas regionales basados en Envoy usan esta subred de solo proxy en la misma región de la red de VPC. Solo puede haber una subred de solo proxy activa para un propósito determinado, por región y por red.
En este ejemplo, creamos una subred de solo proxy en la región us-east1.
Console
En la consola de Google Cloud , ve a la página Redes de VPC.
Haz clic en el nombre de la red de VPC que creaste.
En la pestaña Subredes, haz clic en Agregar subred y proporciona la siguiente información:
- En el campo Nombre, ingresa
proxy-only-subnet-us. - En la lista Región, selecciona
us-east1. - En Propósito, selecciona Regional Managed Proxy.
- En el campo Rango de IPv4, ingresa
10.129.0.0/23.
- En el campo Nombre, ingresa
Haz clic en Agregar.
gcloud
Crea una subred de solo proxy en la región
us-east1con el comandogcloud compute networks subnets create.gcloud compute networks subnets create proxy-only-subnet-us \ --purpose=REGIONAL_MANAGED_PROXY \ --role=ACTIVE \ --region=us-east1 \ --network=lb-network \ --range=10.129.0.0/23 \ --project=HOST_PROJECT_ID
Configura una regla de firewall en el proyecto host
En este ejemplo, se usa la regla de firewall de entrada fw-allow-ssh que permite la conectividad SSH entrante en el puerto TCP 22 desde cualquier dirección. Puedes elegir un rango de IP de origen más restrictivo para esta regla. Por ejemplo, puedes especificar solo los rangos de IP del sistema desde el que inicias sesiones SSH. En este ejemplo, se usa la etiqueta de destino allow-ssh para identificar las máquinas virtuales (VMs) a las que se aplica la regla de firewall. Sin estas reglas de firewall, la regla predeterminada de denegación de entrada bloquea el tráfico entrante a las instancias de backend.
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 deGoogle Cloud .
Proporciona la siguiente información:
- En el campo Nombre, ingresa
fw-allow-ssh. - En la lista Red, selecciona lb-network.
- En Dirección del tráfico, selecciona Ingress.
- En Acción en caso de coincidencia, selecciona Permitir.
- En la lista Destinos, selecciona Etiquetas de destino especificadas.
- En el campo Etiquetas de destino, ingresa
allow-ssh. - En la lista Filtro de fuente, selecciona Rangos de IPv4.
- En el campo Rangos de IPv4 de origen, ingresa
0.0.0.0/0. - En Protocolos y puertos, selecciona Puertos y protocolos especificados.
- Selecciona la casilla de verificación TCP y, luego, ingresa
22como el Número de puerto.
- En el campo Nombre, ingresa
Haz clic en Crear.
gcloud
Crea la regla de firewall
fw-allow-sshpara permitir la conectividad SSH a las VM con la etiqueta de redallow-ssh. Cuando omitessource-ranges,Google Cloud interpreta que la regla significa cualquier fuente.gcloud compute firewall-rules create fw-allow-ssh \ --network=lb-network \ --action=allow \ --direction=ingress \ --target-tags=allow-ssh \ --rules=tcp:22 \ --project=HOST_PROJECT_ID
Configura la VPC compartida en el proyecto host
Habilita un proyecto host de VPC compartida y conecta 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:
Después de completar los pasos anteriores, completa una de las siguientes configuraciones:
- Configura un balanceador de cargas en el proyecto de servicio
- Configura un balanceador de cargas con una configuración entre proyectos
Configura un balanceador de cargas en el proyecto de servicio
En este ejemplo, se crea un balanceador de cargas de aplicaciones regional internal Application Load Balancer en el que todos los componentes de balanceo de cargas (regla de reenvío, proxy de destino, mapa de URL y bucket de backend) y los buckets de Cloud Storage se crean en el proyecto de servicio.
Los recursos de redes de regional internal Application Load Balancer, como la subred de solo proxy, se crean en el proyecto host.
En esta sección, se muestra cómo configurar el balanceador de cargas y los backends.
En los ejemplos de esta página, se configura de manera explícita una dirección IP reservada para la regla de reenvío del regional internal Application Load Balancer, en lugar de permitir que se asigne una dirección IP efímera. Recomendamos reservar direcciones IP para las reglas de reenvío.
Configura tus buckets de Cloud Storage
El proceso para configurar tus buckets de Cloud Storage es el siguiente:
- Crea los buckets de Cloud Storage.
- Se copia el contenido en los buckets.
- Haz que los buckets sean legibles de forma pública.
Crea buckets de Cloud Storage
En este ejemplo, crearás dos buckets de Cloud Storage en la región us-east1.
Console
- En la consola de Google Cloud , ve a la página Buckets de Cloud Storage.
Haga clic en Crear.
En la sección Primeros pasos, ingresa un nombre global único que siga los lineamientos de nomenclatura.
Haz clic en Elige dónde almacenar tus datos.
Configura Tipo de ubicación como Región.
En la lista de regiones, selecciona us-east1.
Haz clic en Crear.
Haz clic en Buckets para volver a la página Buckets de Cloud Storage. Usa las instrucciones anteriores para crear un segundo bucket en la región us-east1.
gcloud
Crea los buckets en la región
us-east1con el comandogcloud storage buckets create.gcloud storage buckets create gs://BUCKET1_NAME \ --default-storage-class=standard \ --location=us-east1 \ --uniform-bucket-level-access \ --project=SERVICE_PROJECT_ID
gcloud storage buckets create gs://BUCKET2_NAME \ --default-storage-class=standard \ --location=us-east1 \ --uniform-bucket-level-access \ --project=SERVICE_PROJECT_IDReemplaza lo siguiente:
BUCKET1_NAME: Es el nombre de tu primer bucket de Cloud Storage.BUCKET2_NAME: Es el nombre de tu segundo bucket de Cloud Storage.SERVICE_PROJECT_ID: ID del proyecto de Google Cloud asignado al proyecto de servicio
Copia contenido en tus buckets de Cloud Storage
Para completar los buckets de Cloud Storage, copia un archivo gráfico de un bucket público de Cloud Storage en tus propios buckets de Cloud Storage.
gcloud storage cp gs://gcp-external-http-lb-with-bucket/three-cats.jpg gs://BUCKET1_NAME/love-to-purr/
gcloud storage cp gs://gcp-external-http-lb-with-bucket/two-dogs.jpg gs://BUCKET2_NAME/love-to-fetch/
Haz que los buckets de Cloud Storage sean legibles de forma pública
Para que todos los objetos de un bucket sean legibles para todos en la Internet pública,
otorga a la principal allUsers el rol de visualizador de objetos de Storage
(roles/storage.objectViewer).
Console
A fin de otorgar a todos los usuarios acceso para ver objetos en tus buckets, repite el siguiente procedimiento para cada bucket:
- En la consola de Google Cloud , ve a la página Buckets de Cloud Storage.
En la lista de buckets, selecciona la casilla de verificación de cada bucket que deseas hacer público.
Haz clic en el botón Permisos. Aparecerá el diálogo Permissions.
En el cuadro de diálogo Permisos, haz clic en el botón Agregar principal. Aparecerá el cuadro de diálogo Otorgar acceso.
En el campo Principales nuevas, ingresa
allUsers.En el campo Seleccionar un rol, ingresa
Storage Object Vieweren el cuadro de filtro y selecciona Visualizador de objetos de Storage a partir de los resultados filtrados.Haz clic en Guardar.
Haz clic en Permitir acceso público.
gcloud
Ejecuta el comando buckets add-iam-policy-binding para otorgar a todos los usuarios acceso para ver objetos en tus buckets.
gcloud storage buckets add-iam-policy-binding gs://BUCKET1_NAME \
--member=allUsers \
--role=roles/storage.objectViewer
gcloud storage buckets add-iam-policy-binding gs://BUCKET2_NAME \
--member=allUsers \
--role=roles/storage.objectViewer
Reservar una nueva dirección IP interna estática
Reserva una dirección IP interna estática para la regla de reenvío del balanceador de cargas. Para obtener más información, consulta Reserva una dirección IP interna estática.
Console
En la consola de Google Cloud , ve a la página Reserva una dirección IP interna y estática.
En el campo Nombre, ingresa un nombre para la nueva dirección.
En la lista Versión de IP, selecciona IPv4.
En la lista Red, selecciona lb-network.
En la lista Subred, selecciona subnet-us.
En Región, selecciona us-east1.
En la lista Dirección IP estática, selecciona Asignar de forma automática. Después de crear el balanceador de cargas, esta dirección IP se adjunta a la regla de reenvío del balanceador de cargas.
Haz clic en Reservar si deseas reservar la dirección IP.
gcloud
Para reservar una dirección IP interna estática con
gcloud compute, usa el comandocompute addresses create.gcloud compute addresses create ADDRESS_NAME \ --region=REGION \ --subnet=subnet-us \ --project=SERVICE_PROJECT_IDReemplaza lo siguiente:
ADDRESS_NAME: el nombre que quieres asignar a esta dirección IP.REGION: La región en la que deseas reservar esta dirección. Esta región debe ser la misma que la del balanceador de cargas. Por ejemplo,us-east1SERVICE_PROJECT_ID: Es el ID del proyecto Google Cloudasignado al proyecto de servicio.
Usa el comando
compute addresses describepara ver el resultado:gcloud compute addresses describe ADDRESS_NAME
Copia la dirección IP que se devolvió para usarla como
RESERVED_IP_ADDRESSen las secciones posteriores.
Configura un recurso de certificado SSL
Para un regional internal Application Load Balancer que usa HTTPS como el protocolo de solicitud y respuesta, puedes crear un recurso de certificado SSL con un certificado SSL de Compute Engine o un certificado del Administrador de certificados.
Para este ejemplo, crea un recurso de certificado SSL con el Administrador de certificados, como se describe en uno de los siguientes documentos:
- Implementa un certificado regional administrado por Google con CA Service
- Implementa un certificado administrado por Google regional con autorización de DNS
- Implementa un certificado autoadministrado regional
Después de crear el certificado, puedes adjuntarlo al proxy HTTPS de destino.
Recomendamos usar un certificado administrado por Google para reducir la sobrecarga operativa, como los riesgos de seguridad asociados con la administración manual de certificados.
Configura el balanceador de cargas con buckets de backend
En esta sección, se muestra cómo crear los siguientes recursos para unregional internal Application Load Balancer:
- Dos buckets de backend Los buckets de backend actúan como wrapper para los buckets de Cloud Storage que creaste anteriormente.
- Mapa de URL
- Proxy de destino
- Una regla de reenvío con direcciones IP regionales. A la regla de reenvío se le asigna una dirección IP de la subred creada para las reglas de reenvío del balanceador de cargas. Si intentas asignar una dirección IP a la regla de reenvío desde la subred de solo proxy, la creación de la regla de reenvío fallará.
En este ejemplo, puedes usar HTTP o HTTPS como el protocolo de solicitud y respuesta entre el cliente y el balanceador de cargas. Si quieres crear un balanceador de cargas de HTTPS, debes agregar un recurso de certificado SSL al frontend del balanceador de cargas.
Para crear los componentes de balanceo de cargas mencionados anteriormente con gcloud CLI, sigue estos pasos:
Crea dos buckets de backend en la región
us-east1con el comandogcloud beta compute backend-buckets create. Los buckets de backend tienen un esquema de balanceo de cargas deINTERNAL_MANAGED.gcloud beta compute backend-buckets create backend-bucket-cats \ --gcs-bucket-name=BUCKET1_NAME \ --load-balancing-scheme=INTERNAL_MANAGED \ --region=us-east1 \ --project=SERVICE_PROJECT_IDgcloud beta compute backend-buckets create backend-bucket-dogs \ --gcs-bucket-name=BUCKET2_NAME \ --load-balancing-scheme=INTERNAL_MANAGED \ --region=us-east1 --project=SERVICE_PROJECT_IDCrea un mapa de URL para enrutar las solicitudes entrantes al bucket de backend con el comando
gcloud beta compute url-maps create.gcloud beta compute url-maps create URL_MAP_NAME \ --default-backend-bucket=backend-bucket-cats \ --region=us-east1 \ --project=SERVICE_PROJECT_IDReemplaza
URL_MAP_NAMEpor el nombre del mapa de URL.Configura las reglas de host y ruta de acceso del mapa de URL con el comando
gcloud beta compute url-maps add-path-matcher.En este ejemplo, el bucket de backend predeterminado es
backend-bucket-cats, que controla todas las rutas de acceso que existen dentro de él. Sin embargo, cualquier solicitud dirigida ahttp://FORWARDING_RULE_IP_ADDRESS/love-to-fetch/two-dogs.jpgusa el backend debackend-bucket-dogs. Por ejemplo, si la carpeta/love-to-fetch/también existe en tu backend predeterminado (backend-bucket-cats), el balanceador de cargas prioriza el backendbackend-bucket-dogsporque hay una regla de ruta específica para/love-to-fetch/*.gcloud beta compute url-maps add-path-matcher URL_MAP_NAME \ --path-matcher-name=path-matcher-pets \ --new-hosts=* \ --backend-bucket-path-rules="/love-to-fetch/*=backend-bucket-dogs" \ --default-backend-bucket=backend-bucket-cats \ --region=us-east1 \ --project=SERVICE_PROJECT_IDCrea un proxy de destino con el comando
gcloud compute target-http-proxies create.HTTP
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 TARGET_HTTP_PROXY_NAME \ --url-map=URL_MAP_NAME \ --region=us-east1 \ --project=SERVICE_PROJECT_IDReemplaza
TARGET_HTTP_PROXY_NAMEpor el nombre del proxy HTTP de destino.HTTPS
Para el tráfico HTTPS, crea un proxy HTTPS de destino para 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. Después de crear el certificado, puedes adjuntarlo al proxy de destino HTTPS.
Para adjuntar un certificado del Administrador de certificados, ejecuta el siguiente comando:
gcloud compute target-https-proxies create TARGET_HTTPS_PROXY_NAME \ --url-map=URL_MAP_NAME \ --certificate-manager-certificates=CERTIFICATE_NAME \ --region=us-east1 \ --project=SERVICE_PROJECT_IDReemplaza lo siguiente:
TARGET_HTTPS_PROXY_NAME: Es el nombre del proxy HTTPS de destino.CERTIFICATE_NAME: Es el nombre del certificado SSL que creaste con el Administrador de certificados.
Crea una regla de reenvío con una dirección IP en la región
us-east1con el comandogcloud compute forwarding-rules create.Reservar una dirección IP es opcional para una regla de reenvío de HTTP. Sin embargo, debes reservar una dirección IP para una regla de reenvío de HTTPS.
En este ejemplo, se asocia una dirección IP efímera con la regla de reenvío HTTP del balanceador de cargas. Una dirección IP efímera permanece constante mientras exista la regla de reenvío. Si necesitas borrar la regla de reenvío y volver a crearla, es posible que esta reciba una nueva dirección IP.
HTTP
Para el tráfico HTTP, crea una regla de reenvío regional para enrutar las solicitudes entrantes al proxy HTTP de destino:
gcloud compute forwarding-rules create FORWARDING_RULE_NAME \ --load-balancing-scheme=INTERNAL_MANAGED \ --network=projects/HOST_PROJECT_ID/global/networks/lb-network \ --subnet=subnet-us \ --subnet-region=us-east1 \ --address=RESERVED_IP_ADDRESS --ports=80 \ --region=us-east1 \ --target-http-proxy=TARGET_HTTP_PROXY_NAME \ --target-http-proxy-region=us-east1 \ --project=SERVICE_PROJECT_IDReemplaza lo siguiente:
FORWARDING_RULE_NAME: el nombre de la regla de reenvíoRESERVED_IP_ADDRESS: La dirección IP reservada que copiaste en la sección Reserva una dirección IP interna estática
HTTPS
Para el tráfico HTTPS, crea una regla de reenvío regional para enrutar las solicitudes entrantes al proxy HTTPS de destino:
gcloud compute forwarding-rules create FORWARDING_RULE_NAME \ --load-balancing-scheme=INTERNAL_MANAGED \ --network=projects/HOST_PROJECT_ID/global/networks/lb-network \ --subnet=subnet-us \ --subnet-region=us-east1 \ --address=RESERVED_IP_ADDRESS \ --ports=443 \ --region=us-east1 \ --target-https-proxy=TARGET_HTTPS_PROXY_NAME \ --target-https-proxy-region=us-east1 \ --project=SERVICE_PROJECT_IDReemplaza lo siguiente:
FORWARDING_RULE_NAME: el nombre de la regla de reenvíoRESERVED_IP_ADDRESS: La dirección IP reservada que copiaste en la sección Reserva una dirección IP interna estática
Envía una solicitud HTTP al balanceador de cargas
Ahora que el servicio de balanceo de cargas está en ejecución, envía una solicitud desde una VM de cliente interna a la regla de reenvío del balanceador de cargas.
Obtén la dirección IP de la regla de reenvío del balanceador de cargas, que se encuentra en la región
us-east1.gcloud compute forwarding-rules describe FORWARDING_RULE_NAME \ --region=us-east1 \ --project=SERVICE_PROJECT_IDCopia la dirección IP que se devolvió para usarla como
FORWARDING_RULE_IP_ADDRESS.Crea una VM de cliente en la región
us-east1.gcloud compute instances create client-a \ --image-family=debian-12 \ --image-project=debian-cloud \ --network=lb-network \ --subnet=subnet-us \ --zone=us-east1-c \ --tags=allow-sshEstablece una conexión SSH a la VM del cliente.
gcloud compute ssh client-a --zone=us-east1-c
En este ejemplo, el regional internal Application Load Balancer tiene una dirección IP virtual (VIP) de frontend en la región
us-east1de la red de VPC. Realiza una solicitud HTTP a la VIP en esa región con curl.curl http://FORWARDING_RULE_IP_ADDRESS/love-to-purr/three-cats.jpg --output three-cats.jpg
curl http://FORWARDING_RULE_IP_ADDRESS/love-to-fetch/two-dogs.jpg --output two-dogs.jpg
Reemplaza
FORWARDING_RULE_IP_ADDRESSpor la dirección IP que copiaste en el primer paso.
Configura un balanceador de cargas con una configuración 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 el proyecto de servicio.
Los balanceadores de cargas de aplicaciones regionales internos 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 buckets de backend ubicados en varios proyectos de servicio en entornos de VPC compartida.
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 buckets de backend en un proyecto de servicio
- Regla de reenvío, proxy de destino y mapa de URL en un proyecto de servicio, y buckets de backend en otro proyecto de servicio
En esta sección, se describe la última configuración como ejemplo.
Descripción general de la configuración
En este ejemplo, se configura un balanceador de cargas con su frontend y backend en dos proyectos de servicio diferentes.
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 de esta página:
- Configura los roles necesarios para configurar una VPC compartida
- Configura un entorno de VPC compartida
Configura los buckets de Cloud Storage y los buckets de backend en el proyecto de servicio B
Todos los pasos de esta sección deben realizarse en el proyecto de servicio B.
Para crear un bucket de backend, debes hacer lo siguiente:
- Crea los buckets de Cloud Storage.
- Copia contenido en el bucket.
- Haz que los buckets sean legibles de forma pública.
- Crea un bucket de backend y dirígelo al bucket de Cloud Storage.
Crea buckets de Cloud Storage
En este ejemplo, crea el bucket de Cloud Storage en la región us-east1.
Console
- En la consola de Google Cloud , ve a la página Buckets de Cloud Storage.
Haga clic en Crear.
En la sección Primeros pasos, ingresa un nombre global único que siga los lineamientos de nomenclatura.
Haz clic en Elige dónde almacenar tus datos.
Configura Tipo de ubicación como Región.
En la lista de regiones, selecciona us-east1.
Haz clic en Crear.
Haz clic en Buckets para volver a la página Buckets de Cloud Storage. Usa las instrucciones anteriores para crear un segundo bucket en la región us-east1.
gcloud
Crea los buckets en la región us-east1 con el comando gcloud storage buckets create.
gcloud storage buckets create gs://BUCKET1_NAME \
--default-storage-class=standard \
--location=us-east1 \
--uniform-bucket-level-access \
--project=SERVICE_PROJECT_B_ID
gcloud storage buckets create gs://BUCKET2_NAME \
--default-storage-class=standard \
--location=us-east1 \
--uniform-bucket-level-access \
--project=SERVICE_PROJECT_B_ID
Reemplaza lo siguiente:
BUCKET1_NAME: El nombre de tu primer bucket de Cloud StorageBUCKET2_NAME: Es el nombre de tu segundo bucket de Cloud Storage.SERVICE_PROJECT_B_ID: Es el Google Cloud ID del proyecto asignado al proyecto de servicio B.
Copia archivos gráficos en tus buckets de Cloud Storage
Para que puedas probar la configuración, copia un archivo gráfico de un bucket público de Cloud Storage en tus propios buckets de Cloud Storage.
gcloud storage cp gs://gcp-external-http-lb-with-bucket/three-cats.jpg gs://BUCKET1_NAME/love-to-purr/
gcloud storage cp gs://gcp-external-http-lb-with-bucket/two-dogs.jpg gs://BUCKET2_NAME/love-to-fetch/
Haz que los buckets de Cloud Storage sean legibles de forma pública
Para que todos los objetos de un bucket sean legibles para todos en la Internet pública,
otorga a la principal allUsers el rol de visualizador de objetos de Storage
(roles/storage.objectViewer).
Console
A fin de otorgar a todos los usuarios acceso para ver objetos en tus buckets, repite el siguiente procedimiento para cada bucket:
- En la consola de Google Cloud , ve a la página Buckets de Cloud Storage.
En la lista de buckets, selecciona la casilla de verificación de cada bucket que deseas hacer público.
Haz clic en el botón Permisos. Aparecerá el diálogo Permissions.
En el cuadro de diálogo Permisos, haz clic en el botón Agregar principal. Aparecerá el cuadro de diálogo Otorgar acceso.
En el campo Principales nuevas, ingresa
allUsers.En el campo Seleccionar un rol, ingresa
Storage Object Vieweren el cuadro de filtro y selecciona Visualizador de objetos de Storage a partir de los resultados filtrados.Haz clic en Guardar.
Haz clic en Permitir acceso público.
gcloud
Ejecuta el comando buckets add-iam-policy-binding para otorgar a todos los usuarios acceso para ver objetos en tus buckets.
gcloud storage buckets add-iam-policy-binding gs://BUCKET1_NAME \
--member=allUsers \
--role=roles/storage.objectViewer
gcloud storage buckets add-iam-policy-binding gs://BUCKET2_NAME \
--member=allUsers \
--role=roles/storage.objectViewer
Configura el balanceador de cargas con buckets de backend
Para crear los buckets de backend, sigue estos pasos:
Crea dos buckets de backend en la región
us-east1con el comandogcloud beta compute backend-buckets create. Los buckets de backend tienen un esquema de balanceo de cargas deINTERNAL_MANAGED.gcloud beta compute backend-buckets create backend-bucket-cats \ --gcs-bucket-name=BUCKET1_NAME \ --load-balancing-scheme=INTERNAL_MANAGED \ --region=us-east1 \ --project=SERVICE_PROJECT_B_IDgcloud beta compute backend-buckets create backend-bucket-dogs \ --gcs-bucket-name=BUCKET2_NAME \ --load-balancing-scheme=INTERNAL_MANAGED \ --region=us-east1 --project=SERVICE_PROJECT_B_ID
Configura los componentes de frontend del balanceador de cargas en el proyecto de servicio A
Todos los pasos de esta sección deben realizarse en el proyecto de servicio A.
En el proyecto de servicio A, crea los siguientes componentes de balanceo de cargas de frontend:
- Configura un recurso de certificado SSL que esté adjunto al proxy de destino. Para obtener más información, consulta Configura un recurso de certificado SSL en este documento.
- Crea y reserva una dirección IP interna estática para la regla de reenvío del balanceador de cargas. Para obtener más información, consulta Reserva una dirección IP interna estática en este documento.
Crea un mapa de URL para enrutar las solicitudes entrantes al bucket de backend en el proyecto de servicio B con el comando
gcloud beta compute url-maps create.gcloud beta compute url-maps create URL_MAP_NAME \ --default-backend-bucket=backend-bucket-cats \ --region=us-east1 \ --project=SERVICE_PROJECT_A_IDReemplaza lo siguiente:
URL_MAP_NAME: el nombre del mapa de URLsSERVICE_PROJECT_A_ID: ID del proyecto Google Cloudasignado al proyecto de servicio A
Configura las reglas de host y ruta de acceso del mapa de URL con el comando
gcloud beta compute url-maps add-path-matcher.En este ejemplo, el bucket de backend predeterminado es
backend-bucket-cats, que controla todas las rutas de acceso que existen dentro de él. Sin embargo, cualquier solicitud dirigida ahttp://FORWARDING_RULE_IP_ADDRESS/love-to-fetch/two-dogs.jpgusa el backend debackend-bucket-dogs. Por ejemplo, si la carpeta/love-to-fetch/también existe en tu backend predeterminado (backend-bucket-cats), el balanceador de cargas prioriza el backendbackend-bucket-dogsporque hay una regla de ruta específica para/love-to-fetch/*.gcloud beta compute url-maps add-path-matcher URL_MAP_NAME \ --path-matcher-name=path-matcher-pets \ --new-hosts=* \ --backend-bucket-path-rules="/love-to-fetch/*=projects/SERVICE_PROJECT_B_ID/regional/backendBuckets/backend-bucket-dogs" \ --default-backend-bucket=projects/SERVICE_PROJECT_B_ID/regional/backendBuckets/backend-bucket-cats \ --region=us-east1 --project=SERVICE_PROJECT_A_IDCrea un proxy de destino con el comando
gcloud compute target-http-proxies create.HTTP
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 TARGET_HTTP_PROXY_NAME \ --url-map=URL_MAP_NAME \ --region=us-east1 \ --project=SERVICE_PROJECT_A_IDReemplaza
TARGET_HTTP_PROXY_NAMEpor el nombre del proxy HTTP de destino.HTTPS
Para el tráfico HTTPS, crea un proxy HTTPS de destino para 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. Después de crear el certificado, puedes adjuntarlo al proxy HTTPS de destino.
Para adjuntar un certificado del Administrador de certificados, ejecuta el siguiente comando:
gcloud compute target-https-proxies create TARGET_HTTPS_PROXY_NAME \ --url-map=lb-map \ --certificate-manager-certificates=CERTIFICATE_NAME \ --region=us-east1 \ --project=SERVICE_PROJECT_A_IDReemplaza lo siguiente:
TARGET_HTTPS_PROXY_NAME: El nombre del proxy HTTPS de destinoCERTIFICATE_NAME: Es el nombre del certificado SSL que creaste con el Administrador de certificados.
Crea una regla de reenvío con una dirección IP en la región
us-east1con el comandogcloud compute forwarding-rules create.Reservar una dirección IP es opcional para una regla de reenvío de HTTP. Sin embargo, debes reservar una dirección IP para una regla de reenvío de HTTPS.
En este ejemplo, se asocia una dirección IP efímera con la regla de reenvío HTTP del balanceador de cargas. Una dirección IP efímera permanece constante mientras exista la regla de reenvío. Si necesitas borrar la regla de reenvío y volver a crearla, es posible que esta reciba una nueva dirección IP.
HTTP
Para el tráfico HTTP, crea una regla de reenvío regional para enrutar las solicitudes entrantes al proxy HTTP de destino:
gcloud compute forwarding-rules create FORWARDING_RULE_NAME \ --load-balancing-scheme=INTERNAL_MANAGED \ --network=projects/HOST_PROJECT_ID/global/networks/lb-network \ --subnet=subnet-us \ --address=RESERVED_IP_ADDRESS --ports=80 \ --region=us-east1 \ --target-http-proxy=TARGET_HTTP_PROXY_NAME \ --target-http-proxy-region=us-east1 \ --project=SERVICE_PROJECT_A_IDReemplaza lo siguiente:
FORWARDING_RULE_NAME: el nombre de la regla de reenvíoRESERVED_IP_ADDRESS: la dirección IP reservada
HTTPS
Para el tráfico HTTPS, crea una regla de reenvío regional para enrutar las solicitudes entrantes al proxy HTTPS de destino:
gcloud compute forwarding-rules create FORWARDING_RULE_NAME \ --load-balancing-scheme=INTERNAL_MANAGED \ --network=projects/HOST_PROJECT_ID/global/networks/lb-network \ --subnet=subnet-us \ --address=RESERVED_IP_ADDRESS \ --ports=443 \ --region=us-east1 \ --target-https-proxy=TARGET_HTTPS_PROXY_NAME \ --target-https-proxy-region=us-east1 \ --project=SERVICE_PROJECT_A_IDReemplaza lo siguiente:
FORWARDING_RULE_NAME: el nombre de la regla de reenvíoRESERVED_IP_ADDRESS: la dirección IP reservada
Otorga permiso al administrador del balanceador de cargas de Compute para usar el bucket de backend
Si quieres que los balanceadores de cargas hagan referencia a los buckets de backend en otros proyectos de servicio, el administrador del balanceador de cargas debe tener el permiso compute.backendBuckets.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 de servicio o a nivel del bucket de backend individual.
En este ejemplo, un administrador del proyecto de servicio B debe ejecutar uno de los siguientes comandos para otorgar el permiso compute.backendBuckets.use a un administrador del balanceador de cargas del proyecto de servicio A. Esto se puede hacer a nivel de proyecto (para todos los buckets de backend del proyecto) o por bucket de backend.
Console
Permisos a nivel del proyecto
Sigue estos pasos para otorgar permisos a todos los buckets de backend de tu proyecto.
Necesitas los permisos compute.regionBackendBuckets.setIamPolicy y resourcemanager.projects.setIamPolicy para completar este paso.
En la consola de Google Cloud , dirígete a la página IAM.
Elige tu proyecto.
Haz clic en Otorgar acceso.
En el campo Principales nuevas, ingresa la dirección de correo electrónico de la principal o algún otro identificador.
En la sección Asignar roles, haz clic en Agregar roles.
En el diálogo Seleccionar roles, ingresa
Compute Load Balancer Services Useren el campo Buscar roles.Selecciona la casilla de verificación Usuario de servicios del balanceador de cargas de Compute.
Haz clic en Aplicar.
Opcional: Agrega una condición a la función.
Haz clic en Guardar.
Permisos a nivel de recurso para buckets de backend individuales
Sigue estos pasos para otorgar permisos a buckets de backend individuales en tu proyecto.
Necesitas el permiso compute.regionBackendBuckets.setIamPolicy para completar este paso.
En la consola de Google Cloud , ve a la página Backends.
En la lista de backends, selecciona el bucket de backend al que deseas otorgar acceso y haz clic en Permisos.
Haz clic en Agregar principal.
En el campo Principales nuevas, ingresa la dirección de correo electrónico de la principal o algún otro identificador.
En la lista Seleccionar un rol, selecciona Usuario de servicios de balanceador de cargas de Compute.
Haz clic en Guardar.
gcloud
Permisos a nivel del proyecto
Sigue estos pasos para otorgar permisos a todos los buckets de backend de tu proyecto.
Necesitas los permisos compute.regionBackendBuckets.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"
Reemplaza lo siguiente:
SERVICE_PROJECT_B_ID: ID del proyecto Google Cloudasignado al proyecto de servicio BLOAD_BALANCER_ADMIN: Es el principal al que se agregará la vinculación.
Permisos a nivel de recurso para buckets de backend individuales
A nivel del bucket 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):
- Comando
gcloud projects add-iam-policy-binding - Comando
gcloud compute backend-buckets add-iam-policy-binding
Usa el comando gcloud projects add-iam-policy-binding para otorgar el rol de usuario de servicios de balanceador de cargas de Compute.
Necesitas el permiso compute.regionBackendBuckets.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/REGION/backendBuckets/BACKEND_BUCKET_NAME",title=Shared VPC condition'
SERVICE_PROJECT_B_ID: ID del proyecto Google Cloudasignado al proyecto de servicio BLOAD_BALANCER_ADMIN: Es el principal al que se agregará la vinculación.REGION: Es la región de Google Cloud en la que se encuentra el bucket de backend.BACKEND_BUCKET_NAME: Es el nombre del bucket de backend.
gcloud compute backend-buckets add-iam-policy-binding para otorgar el rol de usuario de servicios de balanceador de cargas de Compute.
gcloud compute backend-buckets add-iam-policy-binding BACKEND_BUCKET_NAME \
--member="user:LOAD_BALANCER_ADMIN" \
--role="roles/compute.loadBalancerServiceUser" \
--project=SERVICE_PROJECT_B_ID \
--region=REGION
Envía una solicitud HTTP al balanceador de cargas
Ahora que el servicio de balanceo de cargas está en ejecución, envía una solicitud desde una VM de cliente interna a la regla de reenvío del balanceador de cargas.
Obtén la dirección IP de la regla de reenvío del balanceador de cargas, que se encuentra en la región
us-east1.gcloud compute forwarding-rules describe FORWARDING_RULE_NAME \ --region=us-east1 \ --project=SERVICE_PROJECT_A_IDCopia la dirección IP que se devolvió para usarla como
FORWARDING_RULE_IP_ADDRESS.Crea una VM de cliente en la región
us-east1.gcloud compute instances create client-a \ --image-family=debian-12 \ --image-project=debian-cloud \ --network=lb-network \ --subnet=subnet-us \ --zone=us-east1-c \ --tags=allow-sshEstablece una conexión SSH a la VM del cliente.
gcloud compute ssh client-a --zone=us-east1-c
En este ejemplo, el regional internal Application Load Balancer tiene una VIP de frontend en la región
us-east1en la red de VPC. Realiza una solicitud HTTP a la VIP en esa región con curl.curl http://FORWARDING_RULE_IP_ADDRESS/love-to-purr/three-cats.jpg --output three-cats.jpg
curl http://FORWARDING_RULE_IP_ADDRESS/love-to-fetch/two-dogs.jpg --output two-dogs.jpg
Reemplaza
FORWARDING_RULE_IP_ADDRESSpor la dirección IP que copiaste en el primer paso.
¿Qué sigue?
- Descripción general de la VPC compartida
- Descripción general del balanceador de cargas de aplicaciones interno
- Subredes de solo proxy para balanceadores de cargas basados en Envoy
- Administrar certificados
- Limpia una configuración de balanceo de cargas