Configura un balanceador de cargas de aplicaciones externo global con un servicio de backend y un bucket de backend entre proyectos

En este documento, se muestra cómo crear un balanceador de cargas de aplicaciones externo global con un servicio de backend y un bucket de backend que se encuentran en un proyecto diferente al que se encuentran el frontend del balanceador de cargas y el mapa de URL. Este modelo de implementación se conoce como referencia de servicio entre proyectos.

En el ejemplo que se usa en este documento, no se usa un entorno de VPC compartida para configurar la referencia de servicio entre proyectos. Si deseas obtener más información para configurar la referencia de servicios entre proyectos en un entorno de VPC compartida, consulta Configura un balanceador de cargas de aplicaciones externo global con VPC compartida.

Antes de comenzar

Asegúrate de que tu configuración cumpla con los requisitos.

Permisos y roles de IAM obligatorios

Para seguir esta guía, debes tener los siguientes roles de IAM:

Tarea Función requerida
Crea un proyecto Rol de creador del proyecto (roles/resourcemanager.projectCreator)
Crea recursos de procesamiento Rol Compute Network Admin (roles/compute.networkAdmin)
Crea buckets de Cloud Storage Función de administrador de objetos de almacenamiento (roles/storage.objectAdmin)

Usa un recurso de otro proyecto

(En este ejemplo, el proyecto A hace referencia al servicio de backend y al bucket de backend que se encuentran en el proyecto B).

En este ejemplo, un administrador del proyecto B debe otorgar el rol de usuario de servicios del balanceador de cargas de Compute (roles/compute.loadBalancerServiceUser) al administrador del proyecto A para permitir el acceso al servicio de backend y al bucket de backend en el proyecto B. Este rol se puede otorgar a nivel del proyecto o del recurso.

Para obtener más información sobre cómo asignar este rol, consulta Otorga permisos al administrador del balanceador de cargas de Compute para usar el servicio de backend.

Crea Google Cloud proyectos

En el ejemplo de este documento, sigue las instrucciones dos veces para crear dos proyectos de Google Cloud .

Console

Para crear un proyecto nuevo, haz lo siguiente:

  1. Ve a la página Administrar recursos en la Google Cloud consola.

    Ir a Administrar recursos

    Los pasos restantes aparecen en la consola de Google Cloud .

  2. En la lista desplegable Seleccionar una organización, en la parte superior de la página, selecciona el recurso de la organización en la que deseas crear un proyecto. Si eres un usuario de prueba gratuita, omite este paso, ya que no aparece esta lista.
  3. Haz clic en Crear proyecto.
  4. En la ventana Proyecto nuevo que aparece, ingresa un nombre de proyecto y selecciona una cuenta de facturación según corresponda. El nombre de un proyecto solo puede contener letras, números, comillas simples, guiones, espacios o signos de exclamación, y debe tener entre 4 y 30 caracteres.
  5. Ingresa el recurso de la organización o la carpeta superior en el cuadro Ubicación. Ese recurso será el superior de la jerarquía del proyecto nuevo. Si aparece Sin organización como opción, puedes seleccionarla para crear tu proyecto nuevo como el nivel superior de su propia jerarquía de recursos.
  6. Cuando hayas terminado de ingresar los detalles del proyecto nuevo, haz clic en Crear.

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. Para crear un proyecto nuevo, usa el comando gcloud projects create:

    gcloud projects create PROJECT_ID
    

    En este comando, PROJECT_ID es el ID del proyecto que quieres crear. El ID de un proyecto debe comenzar con una letra minúscula, contener solo letras, dígitos y guiones ASCII, y tener entre 6 y 30 caracteres.

Descripción general de la configuración

Como se muestra en el siguiente diagrama, el frontend y el mapa de URL de un balanceador de cargas de aplicaciones externo global se crean en un proyecto que es diferente del servicio de backend y el bucket de backend del balanceador de cargas. Este tipo de implementación entre proyectos no usa un entorno de VPC compartida.

En esta configuración, el mapa de URL enruta las solicitudes de contenido estático (/images/*) a un bucket de backend, mientras que todas las demás solicitudes se enrutan al servicio de backend predeterminado.

Un balanceador de cargas de aplicaciones interno entre regiones envía tráfico a un servicio de backend de Cloud Storage y a un bucket de backend que se encuentran en un proyecto diferente.
Implementación entre proyectos (haz clic para ampliar).

En la siguiente tabla, se proporciona una descripción general de los recursos que se crean en el proyecto A y el proyecto B. El frontend y el mapa de URL del balanceador de cargas se crean en el proyecto A, mientras que los componentes de backend se crean en el proyecto B.

Recursos creados en el proyecto A Recursos creados en el proyecto B
  • Dirección IP
  • Certificado SSL
  • Mapa de URL
  • Proxy de destino
  • Regla de reenvío
  • Red de VPC
  • Subred
  • Servicio de backend

    El servicio de backend hace referencia a las instancias de backend en un grupo de instancias. Los siguientes recursos se usan para crear las instancias de backend. A los efectos de este ejemplo, las instancias de backend se crean en una subred llamada lb-backend-subnet en la región us-west1.

    • Plantilla de instancias
    • Grupo de instancias
    • Verificación de estado
    • Regla de firewall
  • Bucket de backend
    • El bucket de backend hace referencia a un bucket de Cloud Storage.

En las siguientes secciones, configuraremos los diferentes recursos que se enumeran en la tabla anterior, comenzando por configurar una red de VPC y una subred para las VMs de backend del balanceador de cargas en el proyecto B.

Configura una red y una subred para las VMs de backend del balanceador de cargas en el proyecto B

A los efectos de este ejemplo, las VMs de backend se crean en la siguiente red y subred:

  • Red. La red es una red de VPC de modo personalizado llamada lb-network.

  • Subred para las VMs de backend del balanceador de cargas Una subred llamada lb-backend-subnet en la región us-west1 usa 10.1.2.0/24 en su rango de IP principal. Los rangos de direcciones IPv4 principales y secundarias de una subred son direcciones IPv4 internas regionales. Para obtener más información, consulta Rangos de IPv4 válidos.

Console

  1. En la consola de Google Cloud , ve a la página Redes de VPC.

    Ir a las redes de VPC

  2. Haz clic en Crear red de VPC.

  3. En Nombre, ingresa lb-network.

  4. En la sección Subredes, establece Modo de creación de subred como Personalizado.

  5. En la sección Subred nueva, ingresa la siguiente información:

    • Nombre: lb-backend-subnet
    • Selecciona una Región: us-west1
    • Rangos de direcciones IP: 10.1.2.0/24
  6. Haz clic en Listo.

  7. Haz clic en Crear.

gcloud

  1. Crea una red de VPC personalizada, llamada lb-network, con el comando gcloud compute networks create.

    gcloud compute networks create lb-network \
        --subnet-mode=custom \
        --project=PROJECT_B_ID
    
  2. Crea una subred en la red de VPC lb-network en la región us-west1 con el comando gcloud compute networks subnets create.

    gcloud compute networks subnets create lb-backend-subnet \
        --network=lb-network \
        --range=10.1.2.0/24 \
        --region=us-west1 \
        --project=PROJECT_B_ID
    

Configura un servicio de backend en el proyecto B

Para configurar un servicio de backend, debes hacer lo siguiente:

  • Crea una plantilla de instancias.
  • Crear un grupo de instancias
  • Crea una verificación de estado.
  • Crea una regla de firewall.
  • Crea un servicio de backend.

Crea una plantilla de instancias

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

  1. En la consola de Google Cloud , ve a la página Plantillas de instancias de Compute Engine.

    Ir a Plantillas de instancia

  2. Haz clic en Crear plantilla de instancias.

  3. En Nombre, ingresa backend-template.

  4. 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 12 (bookworm). Haz clic en Cambiar para cambiar la imagen si es necesario.

  5. Expanda la sección Opciones avanzadas.

  6. Expande Herramientas de redes y configura los siguientes campos:

    1. En Etiquetas de red, ingresa load-balanced-backend.
    2. En la sección Interfaces de red, configura los siguientes campos:
      • Red: lb-network
      • Subred: lb-backend-subnet
      • Tipo de pila IP: IPv4
    3. Haga clic en Listo
  7. Expande Administración. En el campo Secuencia de comandos de inicio, ingresa la siguiente secuencia de comandos:

    #! /bin/bash
    apt-get update
    apt-get install apache2 -y
    a2ensite default-ssl
    a2enmod ssl
    # Retrieve the instance name from metadata
    vm_hostname="$(curl -H "Metadata-Flavor:Google" \
    http://metadata.google.internal/computeMetadata/v1/instance/name)"
    # Create an index file
    echo "Page served from: $vm_hostname" | \
    tee /var/www/html/index.html
    # Restart Apache to apply changes
    systemctl restart apache2' \
    
  8. Haz clic en Crear.

gcloud

  1. Crea una plantilla de instancias.

    gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
        --region=us-west1 \
        --network=projects/PROJECT_B_ID/global/networks/lb-network \
        --subnet=projects/PROJECT_B_ID/regions/us-west1/subnetworks/lb-backend-subnet \
        --tags=load-balanced-backend \
        --image-family=debian-12 \
        --image-project=debian-cloud \
        --metadata=startup-script='#! /bin/bash
        apt-get update
        apt-get install apache2 -y
        a2ensite default-ssl
        a2enmod ssl
        # Retrieve the instance name from metadata
        vm_hostname="$(curl -H "Metadata-Flavor:Google" \
        http://metadata.google.internal/computeMetadata/v1/instance/name)"
        # Create an index file
        echo "Page served from: $vm_hostname" | \
        tee /var/www/html/index.html
        # Restart Apache to apply changes
        systemctl restart apache2' \
        --project=PROJECT_B_ID
    

Crea un grupo de instancias administrado

Console

  1. En la consola de Google Cloud , ve a la página Grupos de instancias de Compute Engine.

    Ir a Grupos de instancias

  2. Haz clic en Crear grupo de instancias.

  3. En las opciones, selecciona Nuevo grupo de instancias administrado (sin estado).

  4. Para el nombre del grupo de instancias, ingresa lb-backend.

  5. En la lista Plantilla de instancias, selecciona la plantilla de instancias backend-template que creaste en el paso anterior.

  6. 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.

  7. 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.

  8. 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.

  9. Haz clic en Crear.

gcloud

  1. Crea un grupo de instancias administrado y selecciona la plantilla de instancias que creaste en el paso anterior:

    gcloud compute instance-groups managed create INSTANCE_GROUP_NAME \
        --zone=us-west1-a \
        --size=2 \
        --template=INSTANCE_TEMPLATE_NAME \
        --project=PROJECT_B_ID
    
  2. Agrega un puerto con nombre al grupo de instancias:

    gcloud compute instance-groups set-named-ports INSTANCE_GROUP_NAME \
        --named-ports=http:80 \
        --zone=us-west1-a \
        --project=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

  1. En la consola de Google Cloud , ve a la página Verificaciones de estado de Compute Engine:

    Ir a Verificaciones de estado

  2. Para el nombre de la verificación de estado, ingresa lb-health-check.

  3. Establece el Protocolo en HTTP.

  4. 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=PROJECT_B_ID

Crea una regla de firewall

Para los sondeos de verificación de estado, debes crear una regla de firewall de permiso de entrada a nivel de la red, que para los fines de este ejemplo es lb-network. Esta regla de firewall permite que los sondeos de verificación de estado lleguen a tus instancias de backend. En este ejemplo, se usa la siguiente regla de firewall:

  • fw-allow-health-check. Es una regla de entrada, aplicable a las instancias con balanceo de cargas, que permite todo el tráfico de TCP de los sistemas de verificación de estado de Google Clouden 130.211.0.0/22 y 35.191.0.0/16. En este ejemplo, se usa la etiqueta de destino load-balanced-backend para identificar las instancias a las que se debe aplicar.

Console

  1. En la consola de Google Cloud , ve a la página Políticas de firewall.

    Ir a Políticas de firewall

  2. Haz clic en Crear regla de firewall para crear la regla que permite conexiones SSH entrantes en la VM del cliente:

    • Nombre: fw-allow-health-check
    • Red: lb-network
    • Dirección del tráfico: Entrada
    • Acción en caso de coincidencia: Permitir
    • Destinos: 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 y 35.191.0.0/16
    • Protocolos y puertos:
      • Elige Protocolos y puertos especificados.
      • Selecciona la casilla de verificación TCP y, luego, 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 para el protocolo y el puerto, Google Cloud puede usar HTTP en el puerto 80 para comunicarse con tus VMs, pero no puede usar HTTPS en el puerto 443 para comunicarse con ellas.
  3. Haz clic en Crear.

gcloud

  1. Crea la regla de firewall fw-allow-health-check para permitir las verificaciones de estado deGoogle 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 FIREWALL_RULE_NAME \
       --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 \
       --project=PROJECT_B_ID
    

Crear un servicio de backend

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

  1. En la consola de Google Cloud , ve a la página Balanceo de cargas.

    Ir a Balanceo de cargas

  2. Ve a la sección Backends.

  3. Haz clic en Crear servicio de backend.

  4. En Servicio de backend global, haz clic en el botón Crear junto a él.

  5. Para el nombre del servicio de backend, ingresa cross-ref-backend-service.

  6. En Tipo de backend, selecciona Grupo de instancias.

  7. Configura Protocolo como HTTP.

  8. En el campo Puerto con nombre, ingresa http. Este es el mismo nombre de puerto que ingresaste cuando creaste el grupo de instancias administrado.

  9. Para agregar backends al servicio de backend, sigue estos pasos:

    1. 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.

    2. En Números de puerto, ingresa 80.

    3. Para agregar el backend, haz clic en Listo.

  10. 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.

  11. Para crear el servicio de backend, haz clic en Crear.

gcloud

  1. Crea un servicio de backend global para distribuir el tráfico entre backends:

    gcloud compute backend-services create BACKEND_SERVICE_NAME \
        --load-balancing-scheme=EXTERNAL_MANAGED \
        --protocol=HTTP \
        --port-name=http \
        --health-checks=HEALTH_CHECK_NAME \
        --global \
        --project=PROJECT_B_ID
    
  2. Agrega tu grupo de instancias como backend al servicio de backend:

    gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \
        --instance-group=INSTANCE_GROUP_NAME \
        --instance-group-zone=us-west1-a \
        --global \
        --project=PROJECT_B_ID
    

Configura un bucket de backend en el proyecto B

Para crear un bucket de backend, debes hacer lo siguiente:

  1. Crea el bucket de Cloud Storage.
  2. Se copia el contenido en el bucket.
  3. Haz que el bucket sea de acceso público.
  4. Crea un bucket de backend y diríjalo al bucket de Cloud Storage.

Cree un bucket de Cloud Storage

Console

  1. En la Google Cloud consola, ve a la página Buckets de Cloud Storage.

    Ir a Buckets

  2. Haga clic en Crear.

  3. En el cuadro Asigna un nombre a tu bucket, ingresa un nombre global único que siga los lineamientos de nomenclatura.

  4. Haz clic en Elige dónde almacenar tus datos.

  5. Configura Tipo de ubicación como Región.

  6. En la lista de regiones, selecciona us-east1.

  7. Haz clic en Crear.

gcloud

  1. Crea un bucket en la región us-east1 con el comando gcloud storage buckets create.

    gcloud storage buckets create gs://BUCKET_NAME \
        --default-storage-class=standard \
        --location=us-east1 \
        --uniform-bucket-level-access \
        --project=PROJECT_B_ID
    

Reemplaza la variable BUCKET_NAME por el nombre de tu bucket de Cloud Storage.

Cómo copiar un archivo gráfico en tu bucket de Cloud Storage

Ejecuta el siguiente comando en Cloud Shell y reemplaza las variables de nombre de bucket por el nombre único de tu bucket de Cloud Storage para copiar el archivo gráfico de un bucket público de Cloud Storage a la carpeta images/ en tu propio bucket de Cloud Storage:

gcloud storage cp gs://gcp-external-http-lb-with-bucket/three-cats.jpg gs://BUCKET_NAME/images/

Haz que tu bucket de Cloud Storage sea legible 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:

  1. En la Google Cloud consola, ve a la página Buckets de Cloud Storage.

    Ir a Buckets

  2. En la lista de buckets, haz clic en el nombre del bucket que deseas hacer público.

  3. Selecciona la pestaña Permisos cerca de la parte superior de la página.

  4. En la sección Permisos, haz clic en el botón Otorgar acceso. Aparecerá el diálogo Otorgar acceso.

  5. En el campo Principales nuevas, ingresa allUsers.

  6. En el campo Seleccionar un rol, ingresa Storage Object Viewer en el cuadro de filtro y selecciona Visualizador de objetos de almacenamiento a partir de los resultados filtrados.

  7. Haz clic en Guardar.

  8. Haz clic en Permitir acceso público.

gcloud

Para otorgar a todos los usuarios acceso para ver objetos en tus buckets, ejecuta el comando buckets add-iam-policy-binding.

gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME --member=allUsers --role=roles/storage.objectViewer

Reemplaza las variables de nombre de bucket por los nombres de bucket únicos de Cloud Storage.

Crear un bucket de backend

Los buckets de backend funcionan como wrapper para los buckets de Cloud Storage que creaste antes. Dirigen el tráfico entrante a los buckets de Cloud Storage.

Console

  1. En la consola de Google Cloud , ve a la página Balanceo de cargas.

    Ir a Balanceo de cargas

  2. Ve a la sección Backends.

  3. Haz clic en Crear bucket de backend.

  4. Ingresa un nombre para tu bucket de backend.

  5. Selecciona un bucket de Cloud Storage al que dirigir tu bucket de backend.

  6. Haz clic en Crear.

gcloud

Crea un bucket de backend con el comando gcloud compute backend-buckets create en el proyecto B.

gcloud compute backend-buckets create BACKEND_BUCKET_NAME \
  --gcs-bucket-name=BUCKET_NAME \
  --project=PROJECT_B_ID

Configura los componentes de frontend del balanceador de cargas en el proyecto A

En esta sección, se muestra cómo configurar los siguientes componentes de frontend del balanceador de cargas en el proyecto 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

  1. En la consola de Google Cloud , ve a la página Direcciones IP de la VPC.

    Ir a Direcciones IP

  2. Haz clic en Reservar dirección IP externa estática.

  3. En Nombre, ingresa cross-ref-ip-address.

  4. En Nivel de servicio de red, establece Premium.

  5. Configura Versión de IP como IPv4.

  6. Establece Tipo en Global.

  7. Haz clic en Reservar.

gcloud

Crea una dirección IP externa estática global.

gcloud compute addresses create IP_ADDRESS_NAME \
    --ip-version=IPV4 \
    --network-tier=PREMIUM \
    --global \
    --project=PROJECT_A_ID

Configura un recurso de certificado SSL

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.

Crea un recurso de certificado SSL como se describe en la siguiente documentación:

Recomendamos que uses un certificado administrado por Google.

Después de crear el certificado, puedes adjuntarlo al proxy de destino HTTPS.

Configura los componentes de un balanceador de cargas de aplicaciones externo global

Console

Inicia tu configuración

  1. En la consola de Google Cloud , ve a la página Balanceo de cargas.

    Ir a Balanceo de cargas

  2. Haz clic en Crear balanceador de cargas.
  3. En Tipo de balanceador de cargas, selecciona Balanceador de cargas de aplicaciones (HTTP/HTTPS) y haz clic en Siguiente.
  4. En Orientado al público o interno, selecciona Orientado al público (externo) y haz clic en Siguiente.
  5. En Implementación global o de una sola región, selecciona Mejor para cargas de trabajo globales y haz clic en Siguiente.
  6. En Generación de balanceadores de cargas, selecciona Balanceador de cargas de aplicaciones externo global y haz clic en Siguiente.
  7. Haz clic en Configurar.

Configuración básica

  1. Ingresa un nombre para tu balanceador de cargas.
  2. Mantén la página abierta para continuar.

Configura el frontend

Para HTTP:

  1. Haz clic en Configuración de frontend.
  2. Ingresa un nombre para la regla de reenvío.
  3. Configura el Protocolo en HTTP.
  4. Selecciona la dirección IP que creaste en Reserva la dirección IP del balanceador de cargas.
  5. Configura el Puerto en 80.
  6. Haz clic en Listo.

Para HTTPS:

Si usas HTTPS entre el cliente y el balanceador de cargas, necesitas uno o más recursos de certificado SSL para configurar el proxy. Para obtener información sobre cómo crear recursos de certificados SSL, consulta Certificados SSL.

  1. Haz clic en Configuración de frontend.
  2. Ingresa un nombre para la regla de reenvío.
  3. En el campo Protocolo, selecciona HTTPS (includes HTTP/2).
  4. Selecciona la dirección IP que creaste en Reserva la dirección IP del balanceador de cargas.
  5. Asegúrate de que el Puerto esté establecido en 443 para permitir el tráfico HTTPS.
  6. Haz clic en la lista Certificado.
  7. Selecciona el nombre del certificado SSL que creaste antes.
  8. Haz clic en Listo.

Configure el backend

  1. Haga clic en Configuración de backend.
  2. Haz clic en Servicios de backend entre proyectos.
  3. En ID del proyecto, ingresa el ID del proyecto para el proyecto B.
  4. En la lista Seleccionar servicios de backend, selecciona el servicio de backend del proyecto B que deseas usar.
  5. Haz clic en OK.

Configura las reglas de enrutamiento

  1. Haz clic en Reglas de enrutamiento.

  2. En Modo, selecciona Regla avanzada de host y ruta de acceso.

  3. Selecciona Agregar regla de host y ruta de acceso.

  4. En el campo Hosts, ingresa * para que coincida con todos los nombres de host.

  5. En la sección Comparador de parches, ingresa la siguiente configuración de YAML.

    defaultService: projects/PROJECT_B_ID/global/backendServices/BACKEND_SERVICE_NAME
    name: PATH_MATCHER_NAME
    pathRules:
    - paths:
      - /images/*
      service: projects/PROJECT_B_ID/global/backendBuckets/BACKEND_BUCKET_NAME
    

    En este ejemplo, el comparador de rutas de acceso consta de una regla de ruta y un servicio predeterminado. La regla de ruta enruta todas las solicitudes a /images/* a un bucket de backend. Todas las demás solicitudes se enrutan al servicio de backend predeterminado.

  6. Haz clic en Listo.

Para obtener información sobre la administración del tráfico, consulta Descripción general de la administración del tráfico.

Revise y finalice la configuración

  1. Revisa los diferentes componentes del balanceador de cargas que configuraste en los pasos anteriores. Notarás que la sección Backends hace referencia al servicio de backend y al bucket de backend.

  2. Haz clic en Crear.

gcloud

Para crear los componentes de balanceo de cargas mencionados anteriormente con gcloud CLI, sigue estos pasos:

  1. Crea un mapa de URL con el comando gcloud compute url-maps create.

    gcloud compute url-maps create URL_MAP_NAME \
      --default-service=projects/PROJECT_B_ID/global/backendServices/BACKEND_SERVICE_NAME \
      --global \
      --project=PROJECT_A_ID
    
  2. Agrega un comparador de rutas de acceso para el mapa de URL. En este ejemplo, el comparador de rutas de acceso se compone de una regla de ruta de acceso y un servicio predeterminado. La regla de ruta enruta todas las solicitudes a /images/* a un bucket de backend. Todas las demás solicitudes se enrutan al servicio de backend predeterminado.

    gcloud compute url-maps add-path-matcher URL_MAP_NAME \
      --path-matcher-name=PATH_MATCHER_NAME \
      --default-service=projects/PROJECT_B_ID/global/backendServices/BACKEND_SERVICE_NAME  \
      --backend-bucket-path-rules=/images/*=projects/PROJECT_B_ID/global/backendBuckets/BACKEND_BUCKET_NAME
    
  3. 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 \
      --global \
      --project=PROJECT_A_ID
    

    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.

    gcloud compute target-https-proxies create TARGET_HTTPS_PROXY_NAME \
      --url-map=URL_MAP_NAME \
      --ssl-certificates=CERTIFICATE_NAME \
      --global \
      --project=PROJECT_A_ID
    

    Reemplaza CERTIFICATE_NAME por el nombre del certificado SSL.

  4. Crea una regla de reenvío global con el comando gcloud compute forwarding-rules create.

    Para el tráfico HTTP, crea las reglas de reenvío globales para enrutar las solicitudes entrantes al proxy de destino HTTP:

    gcloud compute forwarding-rules create HTTP_FORWARDING_RULE_NAME \
      --load-balancing-scheme=EXTERNAL_MANAGED \
      --address=IP_ADDRESS_NAME \
      --global \
      --target-http-proxy=TARGET_HTTP_PROXY_NAME \
      --ports=80 \
      --project=PROJECT_A_ID
    

    Para el tráfico HTTPS, crea las reglas de reenvío globales para enrutar las solicitudes entrantes al proxy de destino HTTPS:

    gcloud compute forwarding-rules create HTTPS_FORWARDING_RULE_NAME \
      --load-balancing-scheme=EXTERNAL_MANAGED \
      --address=IP_ADDRESS_NAME \
      --global \
      --target-https-proxy=TARGET_HTTPS_PROXY_NAME \
      --ports=443 \
      --project=PROJECT_A_ID
    

Prueba el balanceador de cargas

La configuración del balanceador de cargas puede tardar unos minutos. Luego, podrás enviarle una solicitud. En este ejemplo, la solicitud se envía a la regla de reenvío HTTP del balanceador de cargas.

Obtén la dirección IP de la regla de reenvío HTTP del balanceador de cargas.

gcloud compute forwarding-rules describe HTTP_FORWARDING_RULE_NAME \
    --global

Si diriges tu navegador a http://IP_ADDRESS, la solicitud se enruta al servicio de backend, que muestra una página con información mínima sobre la instancia de backend.

Sin embargo, si diriges tu navegador a http://IP_ADDRESS/images/three-cats.jpg, la solicitud a /images/* se enruta al bucket de backend, que muestra el archivo gráfico.

¿Qué sigue?