En este documento, se muestran dos opciones de configuración de muestra para un balanceador de cargas de aplicaciones regional externo 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.
Además de las configuraciones de ejemplo mencionadas en este documento, también puedes configurar una implementación de VPC compartida en la que el frontend y el mapa de URL del balanceador de cargas se creen en el proyecto host, y los buckets de backend, junto con los buckets de Cloud Storage, se creen en un proyecto de servicio. 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 regional 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 host y dos proyectos de servicio.
Roles obligatorios
Para obtener los permisos que necesitas para configurar un balanceador de cargas de aplicaciones externo regional en un entorno de VPC compartida con buckets de Cloud Storage, pídele a tu administrador que te otorgue los siguientes roles de IAM :
-
Para configurar la VPC compartida, haz lo siguiente:
Administrador de VPC compartida de Compute (
roles/compute.xpnAdmin) en el proyecto host -
Para proporcionar acceso a un administrador del proyecto de servicio para usar la red de VPC compartida, haz lo siguiente:
Usuario de red de Compute (
roles/compute.networkUser) en el proyecto host -
Para crear buckets de Cloud Storage:
Administrador de objetos de Storage (
roles/storage.objectAdmin) en el proyecto de servicio -
Para crear los recursos de balanceo de cargas, ve a:
Administrador de red de Compute (
roles/compute.networkAdmin) en el proyecto de servicio -
Para crear instancias de Compute Engine, ve a:
Administrador de instancias de Compute (
roles/compute.instanceAdmin.v1) en el proyecto de servicio -
Para crear y modificar certificados SSL de Compute Engine, haz lo siguiente:
Administrador de seguridad de Compute (
roles/compute.securityAdmin) en el proyecto de servicio -
Para crear y modificar certificados SSL del Administrador de certificados, debes tener el rol de Propietario del Administrador de certificados (
roles/certificatemanager.owner) en el proyecto de servicio. -
Para hacer referencia a buckets de backend en otros proyectos de servicio, haz lo siguiente:
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
Completa los siguientes pasos en el proyecto host para configurar un entorno de VPC compartida:
- Configura una red de VPC en modo personalizado.
- Configura una subred de solo proxy.
- Configura una 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.
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 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 red de VPC en modo personalizado
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.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.
Configura una subred de solo proxy
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.
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 Subred, haz clic en Agregar subred.
Ingresa la siguiente información:
- Nombre:
proxy-only-subnet-us - Región:
us-east1 - Propósito: Proxy administrado regional
- Rangos de direcciones IP:
10.129.0.0/23
- Nombre:
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_IDReemplaza
HOST_PROJECT_IDpor elGoogle Cloud ID del proyecto asignado al proyecto host.
Configura una VPC compartida en el proyecto host
Puedes habilitar un proyecto host de VPC compartida 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:
Después de completar los pasos anteriores, puedes realizar 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 externo 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 del balanceador de cargas de aplicaciones externo regional, 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 configuración 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 regional, 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.
- Copia contenido en los buckets de Cloud Storage.
- Haz que los buckets de Cloud Storage sean de acceso público.
Crea los 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 estas instrucciones para crear un segundo bucket en la región us-east1.
gcloud
Crea el primer bucket 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_IDCrea el segundo bucket también en la región
us-east1con el comandogcloud storage buckets create.gcloud storage buckets create gs://BUCKET2_NAME \ --default-storage-class=standard \ --location=us-east1 \ --uniform-bucket-level-access \ --project=SERVICE_PROJECT_ID
Reemplaza lo siguiente:
BUCKET1_NAMEyBUCKET2_NAME: Los nombres de tus buckets de Cloud StorageSERVICE_PROJECT_ID: ID del proyecto de Google Cloud asignado al proyecto de servicio
Copia contenido en los 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/
Reemplaza BUCKET1_NAME y BUCKET2_NAME por los nombres de tus buckets de Cloud Storage.
Haz que los buckets de Cloud Storage sean de acceso público
Para que todos los objetos de un bucket sean accesibles 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, haz clic en el nombre del bucket que deseas hacer público.
Selecciona la pestaña Permisos.
En la sección Permisos, haz clic en el botón Otorgar acceso. 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
Reemplaza BUCKET1_NAME y BUCKET2_NAME por los nombres de tus buckets de Cloud Storage.
Reserva la dirección IP del balanceador de cargas
Reserva una dirección IP externa estática para la regla de reenvío del balanceador de cargas.
Console
En la consola de Google Cloud , ve a la página Reserva una dirección estática.
En Nombre, ingresa un nombre para la dirección nueva.
En Versión de IP, selecciona IPv4.
En Tipo, selecciona Regional.
En Región, selecciona us-east1.
Deja la opción Conectado a configurada en Ninguna. Después de crear el balanceador de cargas, esta dirección IP se adjuntará a la regla de reenvío del balanceador de cargas.
Haz clic en Reservar si deseas reservar la dirección IP.
gcloud
Para reservar una dirección IP externa estática mediante
gcloud compute, usa el comandocompute addresses create.gcloud compute addresses create ADDRESS_NAME \ --region=us-east1 \ --project=SERVICE_PROJECT_IDReemplaza lo siguiente:
ADDRESS_NAME: Es el nombre que deseas 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.SERVICE_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
Reemplaza
ADDRESS_NAMEpor el nombre que le asignaste a la dirección IP.La dirección IP que se devuelve se denomina
RESERVED_IP_ADDRESSen las secciones posteriores.
Configura un recurso de certificado SSL
Para un balanceador de cargas de aplicaciones externo regional que usa HTTPS como 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 administrado por Google regional con autorización de DNS
- Implementa un certificado regional administrado por Google con CA Service
- Implementa un certificado autoadministrado regional
Después de crear el certificado, puedes adjuntarlo al proxy HTTPS de destino.
Recomendamos que uses un certificado administrado por Google.
Configura el balanceador de cargas con buckets de backend
En esta sección, se muestra cómo crear los siguientes recursos para un balanceador de cargas de aplicaciones externo regional:
- 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. La regla de reenvío tiene una dirección IP externa.
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 con el comando
gcloud compute backend-buckets create. Los buckets de backend tienen un esquema de balanceo de cargas deEXTERNAL_MANAGED.gcloud beta compute backend-buckets create backend-bucket-cats \ --gcs-bucket-name=BUCKET1_NAME \ --load-balancing-scheme=EXTERNAL_MANAGED \ --region=us-east1 \ --project=SERVICE_PROJECT_IDgcloud beta compute backend-buckets create backend-bucket-dogs \ --gcs-bucket-name=BUCKET2_NAME \ --load-balancing-scheme=EXTERNAL_MANAGED \ --region=us-east1 \ --project=SERVICE_PROJECT_IDReemplaza lo siguiente:
BUCKET1_NAMEyBUCKET2_NAME: Los nombres de los buckets de Cloud StorageSERVICE_PROJECT_ID: ID del proyecto Google Cloudasignado al proyecto de servicio
Crea un mapa de URL para enrutar las solicitudes entrantes al bucket de backend con el comando
gcloud 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 lo siguiente:
URL_MAP_NAME: el nombre del mapa de URLsSERVICE_PROJECT_ID: ID del proyecto Google Cloudasignado al proyecto de servicio
Configura las reglas de host y ruta de acceso del mapa de URL con el comando
gcloud 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_IDReemplaza lo siguiente:
URL_MAP_NAME: el nombre del mapa de URLsSERVICE_PROJECT_ID: ID del proyecto Google Cloudasignado al proyecto de servicio
Crea un proxy de destino con el comando
gcloud compute target-http-proxies create.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 lo siguiente:
TARGET_HTTP_PROXY_NAME: El nombre del proxy HTTP de destinoURL_MAP_NAME: el nombre del mapa de URLsSERVICE_PROJECT_ID: ID del proyecto Google Cloudasignado al proyecto de servicio
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=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.URL_MAP_NAME: el nombre del mapa de URLsCERTIFICATE_NAME: El nombre del certificado SSL del Administrador de certificadosSERVICE_PROJECT_ID: ID del proyecto Google Cloudasignado al proyecto de servicio
Crea una regla de reenvío con una dirección IP en la región
us-east1con el comandogcloud compute forwarding-rules create.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=EXTERNAL_MANAGED \ --network=projects/HOST_PROJECT_ID/global/networks/lb-network \ --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íoHOST_PROJECT_ID: Es el ID del proyecto Google Cloudasignado al proyecto host.RESERVED_IP_ADDRESS: la dirección IP reservadaTARGET_HTTP_PROXY_NAME: El nombre del proxy HTTP de destinoSERVICE_PROJECT_ID: ID del proyecto Google Cloudasignado al proyecto de servicio
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=EXTERNAL_MANAGED \ --network=projects/HOST_PROJECT_ID/global/networks/lb-network \ --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íoHOST_PROJECT_ID: Es el ID del proyecto Google Cloudasignado al proyecto host.RESERVED_IP_ADDRESS: la dirección IP reservadaTARGET_HTTPS_PROXY_NAME: Es el nombre del proxy HTTPS de destino.SERVICE_PROJECT_ID: ID del proyecto Google Cloudasignado al proyecto de servicio
Envía una solicitud HTTP al balanceador de cargas
Ahora que el servicio de balanceo de cargas está en ejecución, puedes enviar tráfico 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_IDReemplaza lo siguiente:
FORWARDING_RULE_NAME: el nombre de la regla de reenvíoSERVICE_PROJECT_ID: ID del proyecto Google Cloudasignado al proyecto de servicio
Copia la dirección IP que se devolvió para usarla como
FORWARDING_RULE_IP_ADDRESSen el siguiente paso.Realiza una solicitud HTTP a la dirección IP virtual (VIP) de la regla de reenvío 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 de la regla de reenvío del balanceador de cargas.
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 externos regionales 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 bucket de backend en un proyecto de servicio
- Regla de reenvío, proxy de destino y mapa de URL en un proyecto de servicio, y bucket 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 configurar los roles necesarios y un entorno de VPC compartida. Para obtener instrucciones, consulta las siguientes secciones al comienzo de esta página:
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.
El proceso para configurar los buckets de Cloud Storage y los buckets de backend es el siguiente:
- Crea los buckets de Cloud Storage.
- Copia contenido en los buckets de Cloud Storage.
- Haz que los buckets de Cloud Storage sean de acceso público.
- Crea depósitos de backend y dirígelos a los buckets de Cloud Storage.
Crea los buckets de Cloud Storage
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 estas instrucciones para crear un segundo bucket en la región us-east1.
gcloud
Crea el primer bucket 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_B_IDCrea el segundo bucket también en la región
us-east1con el comandogcloud storage buckets create.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_NAMEyBUCKET2_NAME: El nombre de tu bucket de Cloud StorageSERVICE_PROJECT_B_ID: Es el Google Cloud ID del proyecto asignado al proyecto de servicio B.
Copia contenido en los 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/
Reemplaza BUCKET1_NAME y BUCKET2_NAME por los nombres de tus buckets de Cloud Storage.
Haz que los buckets de Cloud Storage sean de acceso público
Para que todos los objetos de un bucket sean accesibles 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, haz clic en el nombre del bucket que deseas hacer público.
Selecciona la pestaña Permisos.
En la sección Permisos, haz clic en el botón Otorgar acceso. 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
Reemplaza BUCKET1_NAME y BUCKET2_NAME por los nombres de tus buckets de Cloud Storage.
Crea buckets de backend y dirígelos a los buckets de Cloud Storage
Para crear los buckets de backend, sigue estos pasos:
Crea dos buckets de backend con el comando
gcloud compute backend-buckets create. Los buckets de backend tienen un esquema de balanceo de cargas deEXTERNAL_MANAGED.gcloud beta compute backend-buckets create backend-bucket-cats \ --gcs-bucket-name=BUCKET1_NAME \ --load-balancing-scheme=EXTERNAL_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=EXTERNAL_MANAGED \ --region=us-east1 \ --project=SERVICE_PROJECT_B_IDReemplaza lo siguiente:
BUCKET1_NAMEyBUCKET2_NAME: Los nombres de los buckets de Cloud StorageSERVICE_PROJECT_ID: ID del proyecto Google Cloudasignado al proyecto de servicio
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, debes crear los siguientes componentes de balanceo de cargas de frontend:
- Es un recurso de certificado SSL que se adjunta al proxy de destino. Puedes seguir los pasos que se describen en la sección anterior para crear el certificado SSL.
- Una dirección IP para la regla de reenvío del balanceador de cargas Puedes seguir los pasos que se describen en la sección anterior para crear una dirección IP.
- Un mapa de URL que hace referencia a los buckets de backend en el proyecto de servicio B
- Un proxy de destino
- Una regla de reenvío con direcciones IP regionales. La regla de reenvío tiene una dirección IP externa.
Para crear el mapa de URL, el proxy de destino y la regla de reenvío, haz lo siguiente:
Crea 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_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_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
Crea un proxy de destino con el comando
gcloud compute target-http-proxies create.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 lo siguiente:
TARGET_HTTP_PROXY_NAME: El nombre del proxy HTTP de destinoURL_MAP_NAME: el nombre del mapa de URLsSERVICE_PROJECT_A_ID: ID del proyecto Google Cloudasignado al proyecto de servicio A
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: Es el nombre del proxy HTTPS de destino.URL_MAP_NAME: el nombre del mapa de URLsCERTIFICATE_NAME: El nombre del certificado SSL del Administrador de certificadosSERVICE_PROJECT_A_ID: ID del proyecto Google Cloudasignado al proyecto de servicio A
Crea una regla de reenvío con una dirección IP en la región
asia-east1con el comandogcloud compute forwarding-rules create.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=EXTERNAL_MANAGED \ --network=projects/HOST_PROJECT_ID/global/networks/lb-network \ --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íoHOST_PROJECT_ID: Es el ID del proyecto Google Cloudasignado al proyecto host.RESERVED_IP_ADDRESS: la dirección IP reservadaTARGET_HTTP_PROXY_NAME: El nombre del proxy HTTP de destinoSERVICE_PROJECT_A_ID: ID del proyecto Google Cloudasignado al proyecto de servicio A
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=EXTERNAL_MANAGED \ --network=projects/HOST_PROJECT_ID/global/networks/lb-network \ --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íoHOST_PROJECT_ID: Es el ID del proyecto Google Cloudasignado al proyecto host.RESERVED_IP_ADDRESS: la dirección IP reservadaTARGET_HTTPS_PROXY_NAME: Es el nombre del proxy HTTPS de destino.SERVICE_PROJECT_A_ID: ID del proyecto Google Cloudasignado al proyecto de servicio A
Otorga permiso al administrador del balanceador de cargas de Compute para usar el bucket de backend en el proyecto de servicio
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, puedes enviar tráfico 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_IDReemplaza lo siguiente:
FORWARDING_RULE_NAME: el nombre de la regla de reenvíoSERVICE_PROJECT_ID: ID del proyecto Google Cloudasignado al proyecto de servicio
Copia la dirección IP que se devolvió para usarla como
FORWARDING_RULE_IP_ADDRESSen el siguiente paso.Realiza una solicitud HTTP a la VIP de la regla de reenvío 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 de la regla de reenvío del balanceador de cargas.
¿Qué sigue?
- Descripción general del balanceador de cargas de aplicaciones externo
- Subredes de solo proxy para balanceadores de cargas basados en Envoy
- Administrar certificados
- Limpia una configuración de balanceo de cargas