Configura un balanceador de cargas de HTTP(S) externo global con buckets de backend

Los buckets de backend son buckets de Cloud Storage para el balanceo de cargas de HTTP(S).

Usa buckets de Cloud Storage como backends del balanceador de cargas

Un balanceador de cargas HTTP(S) externo usa un mapa de URL para dirigir el tráfico de las URL especificadas a tus backends.

En el siguiente diagrama, el balanceador de cargas envía tráfico mediante una ruta de acceso de /video/* a un bucket de Cloud Storage llamado videos. Todas las demás solicitudes van a un bucket de Cloud Storage llamado website.

Distribución del tráfico a Cloud Storage (haz clic para ampliar)
Distribución del tráfico a Cloud Storage (haz clic para ampliar)

En este documento, se muestra cómo crear un balanceador de cargas de HTTP(S) externo para enrutar las solicitudes de contenido estático a buckets de Cloud Storage. Después de configurar un balanceador de cargas con los buckets de backend, las solicitudes a rutas de URL que comienzan con /love-to-fetch/ se envían al bucket de Cloud Storage BUCKET_2_NAME, y todas las demás solicitudes se envían al bucket de Cloud Storage BUCKET_1_NAME.

En este ejemplo, BUCKET_1_NAME se llama cats y BUCKET_2_NAME se llama dogs.

De forma predeterminada, Cloud Storage usa la misma caché que usa Cloud CDN. Si habilitas Cloud CDN en el bucket de backend, puedes usar los controles de Cloud CDN en tu contenido. Los controles de Cloud CDN incluyen, por ejemplo, los modos de almacenamiento en caché, las URL firmadas y la invalidación. Cloud CDN también te permite almacenar en caché contenido grande (más de 10 MB). Si no habilitas Cloud CDN en tu bucket de backend, solo puedes usar encabezados Cache-Control de origen para controlar el almacenamiento en caché del contenido más pequeño, como lo configuran los metadatos de Cloud Storage.

Antes de comenzar

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

Configura un proyecto predeterminado

  1. Si usas las herramientas de gcloud o gsutil, puedes instalarlas mediante las instrucciones del documento Guía de inicio rápido: Usa la herramienta de gsutil.
  2. Configura un proyecto predeterminado.

    Console

    a. Ve a la página principal en Google Cloud Console.
    Ir a la página principal de Google Cloud

    A la derecha de Google Cloud, selecciona un proyecto del menú desplegable.

    gcloud o gsutil

     gcloud config set project PROJECT_ID
    

    o

     gsutil config set project PROJECT_ID
    
    • <var>PROJECT_ID</var>: Es el proyecto que usarás para esta guía.

Permisos

Para seguir esta guía, debes crear un balanceador de cargas y buckets de Cloud Storage en un proyecto. Debes ser propietario o editor de un proyecto o tener las siguientes funciones de IAM de Compute Engine:

Tarea Función requerida
Crea componentes del balanceador de cargas Administrador de redes
Crea buckets de Cloud Storage Administrador de objetos de almacenamiento

Si deseas obtener más información, consulta las siguientes guías:

Configura un recurso de certificado SSL

Para un balanceador de cargas HTTPS, crea un recurso de certificado SSL como se describe a continuación:

Recomendamos que uses un certificado administrado por Google.

En este ejemplo, se supone que ya tienes un recurso de certificado SSL llamado www-ssl-cert.

Prepara los buckets y el contenido de Cloud Storage

El proceso para preparar los buckets de Cloud Storage es el siguiente:

  • Se crean los buckets.
  • Se copia el contenido en los buckets.
  • Se proporciona acceso público a los buckets.

Crea buckets de Cloud Storage

Si tienes un bucket de Cloud Storage existente, puedes omitir el siguiente paso.

Cuando creas un bucket para usarlo como backend de un balanceo de cargas de HTTP(S), te recomendamos que elijas un bucket multirregión, que replica de manera automática los objetos en varias regiones de Google Cloud. Esto puede mejorar la disponibilidad de tu contenido y la tolerancia a errores en tu aplicación.

Console

  1. En Cloud Console, abre el navegador de Cloud Storage.
    Abrir el navegador de Cloud Storage
  2. Haz clic en Crear bucket.
  3. Especifica los valores para los siguientes campos y deja los demás con sus valores predeterminados:

    Propiedad Valor (escribe el valor o selecciona una opción como se especifica)
    Nombre Para cada bucket, ingresa un nombre global único. Si el nombre que ingresas no es único, verás un mensaje en el que se te solicitará probar otro nombre.
    Tipo de ubicación Para este ejemplo, selecciona Región. En el caso de las implementaciones de producción, recomendamos los buckets multirregionales.
    Ubicación En un bucket, selecciona us-east1
    . En el otro bucket, selecciona europe-north1.
    Clase de almacenamiento predeterminada Estándar
    Control de acceso Uniforme
  4. Haz clic en Crear.

  5. Anota los nombres de los buckets de Cloud Storage recién creados para el siguiente paso, en el que se hace referencia a ellos como BUCKET_1_NAME y BUCKET_2_NAME.

gsutil

gsutil mb -p PROJECT_ID -c standard -l us-east1 -b on gs://BUCKET_1_NAME
gsutil mb -p PROJECT_ID -c standard -l europe-north1 -b on gs://BUCKET_2_NAME

Copia archivos gráficos en los buckets de Cloud Storage

Para poder probar la configuración, copia los archivos gráficos de un bucket público de Cloud Storage en tus propios bucket s de Cloud Storage.

  1. Ejecuta el siguiente comando en Cloud Shell y reemplaza las variables de nombres de buckets por los nombres de tus buckets de Cloud Storage:

    gsutil cp gs://gcp-external-http-lb-with-bucket/three-cats.jpg gs://BUCKET_1_NAME/never-fetch/
    
    gsutil cp gs://gcp-external-http-lb-with-bucket/two-dogs.jpg gs://BUCKET_2_NAME/love-to-fetch/
    
  2. En Cloud Console, haz clic en Actualizar bucket para verificar que el archivo gráfico esté copiado.

Haz públicos los buckets de Cloud Storage

Haz que los buckets de Cloud Storage sean legibles de forma pública. Con esta configuración, cualquier persona en Internet puede ver tus objetos y sus metadatos, excepto las LCA. Cualquier persona en Internet también puede generar una lista de los objetos en tus buckets. No incluyas información sensible en los buckets públicos.

Para reducir la probabilidad de exposición accidental de información sensible, no almacenes objetos públicos y datos sensibles en el mismo bucket. Para obtener más información, consulta Arquitectura de bucket recomendada.

Console

Otorga a todos los usuarios acceso para ver objetos en el bucket. Repite este procedimiento para cada bucket.

  1. En Cloud Console, abre el navegador de Cloud Storage.
    Abrir el navegador de Cloud Storage
  2. Navega al bucket y haz clic en la pestaña Permisos.
  3. Haga clic en Agregar.
  4. En Principales nuevas, ingresa allUsers.
  5. Para la función, selecciona Cloud Storage > Visualizador de objetos de Storage.
  6. Haz clic en Permitir acceso público.
  7. Haz clic en Guardar.

gsutil

gsutil iam ch allUsers:objectViewer gs://BUCKET_1_NAME
gsutil iam ch allUsers:objectViewer gs://BUCKET_2_NAME

Reserva una dirección IP externa

Ahora que tus buckets están en funcionamiento, configura una dirección IP externa, estática y global que tus clientes usarán para llegar al balanceador de cargas.

Este paso es opcional, pero se recomienda hacerlo, ya que una dirección IP externa estática proporciona una sola dirección a la que puedes apuntar tu dominio.

Console

  1. Ve a la página Direcciones IP externas en Google Cloud Console.
    Ir a la página Direcciones IP externas
  2. Haz clic en Reservar dirección estática para reservar una dirección IPv4.
  3. Asigna un Nombre de example-ip.
  4. Establece el nivel de red en Premium.
  5. Configura la Versión de IP como IPv4.
  6. Configura el Tipo como Global.
  7. Haz clic en Reservar.
  8. Asegúrate de que el Tipo esté configurado como Global.
  9. Haz clic en Reservar.

gcloud

gcloud compute addresses create example-ip \
    --network-tier=PREMIUM \
    --ip-version=IPV4 \
    --global

Préstale atención a la dirección IPv4 que estaba reservada:

gcloud compute addresses describe example-ip \
    --format="get(address)" \
    --global

Crea el balanceador de cargas de HTTP con buckets de backend

Si deseas crear un balanceador de cargas de HTTPS, debes agregar un recurso de certificado SSL al frontend del balanceador de cargas. Para obtener más información, consulta Descripción general de certificados SSL.

Console

Inicie la configuración
  1. En Google Cloud Console, ve a la página Balanceo de cargas.

    Ir a Balanceo de cargas
  2. En Balanceo de cargas de HTTP(S), haz clic en Iniciar configuración.
  3. Selecciona De Internet a mis VM y, luego, haz clic en Continuar.
  4. En Administración avanzada del tráfico, selecciona Balanceador de cargas de HTTP(S) clásico.
  5. Haga clic en Continuar.
  6. Configura el Nombre como “http-lb”.
Configura el backend
  1. Haga clic en Configuración de backend.
  2. En Servicios de backend y buckets de backend, haz clic en Crear o seleccionar servicios de backend y buckets de backend y en Buckets de backend > Crear un bucket de backend.
  3. Ingresa cats en Nombre.
  4. Haz clic en Explorar en Bucket de Cloud Storage.
  5. Selecciona tu BUCKET_1_NAME y haz clic en Seleccionar.
  6. Haga clic en Crear.

Repite este paso para crear dogs y navega a BUCKET_2_NAME.

Configura reglas de host y comparadores de rutas de acceso

Las reglas de host y los comparadores de rutas de acceso son componentes de configuración de un mapa de URL del balanceador de cargas de HTTP(S) externo.

  1. Haz clic en Reglas de host y de ruta de acceso.
  2. Para cats, no se pueden cambiar los hosts ni las rutas de acceso predeterminadas. Esto significa que todas las solicitudes no coincidentes se dirigen a cats.
  3. En dogs, ingresa * en el campo Hosts.
  4. En dogs, ingresa /love-to-fetch/* en el campo Rutas de acceso.
  5. Hosts Rutas Backend
    Todos los que no coincidan (predeterminado) Todas las que no coincidan (predeterminado) cats
    * /love-to-fetch/* dogs
Configura el frontend
  1. Haga clic en Configuración de frontend.
  2. Verifica que las siguientes opciones estén configuradas con estos valores:
    Propiedad Valor (escribe un valor o selecciona una opción como se especifica)
    Protocolo HTTP
    Nivel de servicio de red Premium
    Versión de IP IPv4
    Dirección IP example-ip
    Puerto 80

    Si deseas crear un balanceador de cargas de HTTPS en lugar de un balanceador de cargas de HTTP, debes tener un certificado SSL (gcloud compute ssl-certificates list) y debes completar los campos de la siguiente manera.

    Propiedad Valor (escribe un valor o selecciona una opción como se especifica)
    Protocolo HTTP(S)
    Nivel de servicio de red Premium
    Versión de IP IPv4
    Dirección IP example-ip
    Puerto 443
    Selecciona un certificado o crea uno nuevo
    (Opcional) Habilitar el redireccionamiento de HTTP a HTTPS Usa esta casilla de verificación para habilitar los redireccionamientos del puerto 80 al puerto 443.

    Si habilitas esta casilla de verificación, se creará un balanceador de cargas HTTP parcial adicional que usa la misma dirección IP que tu balanceador de cargas HTTPS y redirecciona las solicitudes HTTP al frontend de HTTPS del balanceador de cargas.

    Esta casilla de verificación solo se puede seleccionar cuando se selecciona el protocolo HTTPS y se usa una dirección IP reservada.

  3. Haga clic en Listo.
Revisa la configuración
  1. Haga clic en Revisar y finalizar.
  2. Revisa los Buckets de backend, las Reglas de host y de ruta de acceso y el Frontend.
  3. Haz clic en Crear.
  4. Espera a que se cree el balanceador de cargas.
  5. Haz clic en el nombre del balanceador de cargas (http-lb).
  6. Anote la dirección IP del balanceador de cargas para la siguiente tarea. Se hace referencia a ella como IP_ADDRESS.

gcloud

Configura el backend

    gcloud compute backend-buckets create cats \
        --load-balancing-scheme=EXTERNAL \
        --gcs-bucket-name=BUCKET_1_NAME
    

    gcloud compute backend-buckets create dogs \
        --load-balancing-scheme=EXTERNAL \
        --gcs-bucket-name=BUCKET_2_NAME
    

Configura el mapa de URL

    gcloud compute url-maps create http-lb \
        --default-backend-bucket=cats
    

    gcloud compute url-maps add-path-matcher http-lb \
        --path-matcher-name=path-matcher-2 \
        --new-hosts=* \
        --backend-bucket-path-rules="/love-to-fetch/*=dogs" \
        --default-backend-bucket=cats
    

Configura el proxy de destino

    gcloud compute target-http-proxies create http-lb-proxy \
        --url-map=http-lb
    

Configura la regla de reenvío

    gcloud compute forwarding-rules create http-lb-forwarding-rule \
        --load-balancing-scheme=EXTERNAL \
        --network-tier=PREMIUM \
        --address=example-ip \
        --global \
        --target-http-proxy=http-lb-proxy \
        --ports=80
    

Envía tráfico a tu bucket de backend

Varios minutos después de configurar el balanceador de cargas, puedes comenzar a enviar tráfico a la dirección IP del balanceador de cargas.

Console

  1. Ve a la página Balanceo de cargas en Google Cloud Console.
    Ir a la página Balanceo de cargas
  2. Haz clic en http-lb para expandir el balanceador de cargas que acabas de crear.
  3. Para probar tu balanceador de cargas mediante un navegador web, visita las siguientes URL, en las que IP_ADDRESS es la dirección IP del balanceador de cargas. Tu navegador debe renderizar páginas con contenido que muestren los archivos gráficos:

    • http://IP_ADDRESS/love-to-fetch/two-dogs.jpg
    • http://IP_ADDRESS/never-fetch/three-cats.jpg

gcloud

Usa el comando curl para probar la respuesta desde la URL. Reemplaza IP_ADDRESS por la dirección IPv4 del balanceador de cargas:

curl http://IP_ADDRESS/love-to-fetch/two-dogs.jpg
curl http://IP_ADDRESS/never-fetch/three-cats.jpg

Limitaciones

  • Los buckets de backend solo son compatibles con balanceadores de cargas de HTTP(S) externos globales y con balanceadores de cargas de HTTP(S) externos globales (clásico). No son compatibles con ningún balanceador de cargas de HTTP(S) regional ni ningún otro tipo de balanceador de cargas.
  • Los buckets de backend no son compatibles con Identity-Aware Proxy.

¿Qué sigue?