Configura un balanceador de cargas con depósitos de backend

Los depósitos de backend te permiten usar los depósitos de Google Cloud Storage con el balanceo de cargas de HTTP(S).

Usa un depósito de Cloud Storage como un backend del balanceador de cargas

Un balanceador de cargas de HTTP(S) externo usa un mapa de URL para dirigir el tráfico de las URL especificadas a un servicio de backend o a un depósito de backend. Un caso práctico es el siguiente:

  • Envía solicitudes de contenido dinámico, como datos, a un servicio de backend.
  • Envía solicitudes de contenido estático, como imágenes, a un depósito de backend.

En el siguiente diagrama, el balanceador de cargas envía tráfico mediante una ruta de acceso de /love-to-fetch/ a un depósito de Cloud Storage en la región europe-north. Todas las demás solicitudes van a un depósito de Cloud Storage en la región us-east.

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 depósitos de Cloud Storage. Después de configurar un balanceador de cargas con los depósitos de backend, las solicitudes a rutas de URL que comienzan con /love-to-fetch se envían al depósito europe-north de Cloud Storage, y todas las demás solicitudes se envían al depósito us-east 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]
    
    • [PROJECT_ID]: Es el proyecto que usarás para esta guía.

Permisos

Para seguir esta guía, debes crear un balanceador de cargas y depósitos 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
Crear componentes del balanceador de cargas Administrador de redes
Crear depósitos de Cloud Storage Administrador de objetos de almacenamiento

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

Prepara los depósitos y el contenido de Cloud Storage

El proceso para preparar los depósitos de Cloud Storage es el siguiente:

  • Se crean los depósitos.
  • Se copia el contenido en los depósitos.
  • Se proporciona acceso público a los depósitos.

Crea depósitos de Cloud Storage

Si tienes un depósito de Cloud Storage existente, puedes omitir el siguiente paso.

Cuando creas un depósito para usarlo como backend de un balanceo de cargas de HTTP(S), te recomendamos que elijas un depósito 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 depósito.
  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 depósito, 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 depósitos multirregionales.
    Ubicación En un depósito, selecciona us-east1
    . En el otro depósito, selecciona europe-north1.
    Clase de almacenamiento predeterminada Estándar
    Control de acceso Uniforme
  4. Haz clic en Crear.

  5. Anota los nombres de los depósitos 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 depósitos de Cloud Storage

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

  1. Ejecuta el siguiente comando en Cloud Shell y reemplaza las variables de nombres de depósitos por los nombres de tus depósitos 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 depósito para verificar que el archivo gráfico esté copiado.

Haz públicos los depósitos de Cloud Storage

Haz que los depósitos 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 depósitos. No incluyas información sensible en los depósitos 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 depósito. Para obtener más información, consulta Arquitectura de depósito recomendada.

Console

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

  1. En Cloud Console, abre el navegador de Cloud Storage.
    Abrir el navegador de Cloud Storage
  2. Navega al depósito y haz clic en la pestaña Permisos.
  3. Haz clic y selecciona Agregar miembros.
  4. En Nuevos miembros, ingresa allUsers.
  5. Para la función, selecciona Almacenamiento > Visualizador de objetos de almacenamiento.
  6. 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 depósitos 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 depósitos 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

  1. Ve a la página Balanceo de cargas en Google Cloud Console.
    Ir a la página Balanceo de cargas
  2. En Balanceo de cargas de HTTP(S), haz clic en Iniciar configuración.
  3. Selecciona De Internet a mis VM.
  4. Establece http-lb como el Nombre.

Configura el backend

  1. Haz clic en Configuración de backend.
  2. En Servicios y depósitos de backend, haz clic en Crear o seleccionar servicios y depósitos de backend. Luego, haz clic en Depósitos de backend > Crear un depósito de backend.
  3. En Nombre, establece cats.
  4. Haz clic en Explorar en Depósito de Cloud Storage.
  5. Selecciona tu BUCKET_1_NAME y haz clic en Seleccionar.
  6. Haz 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 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.

    Hosts Rutas Backend
    Todos los que no coincidan (predeterminado) Todas las que no coincidan (predeterminado) cats
    * /love-to-fetch/* dogs

Configura el frontend

  1. Haz 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
  3. Haz clic en Listo.

Revisa la configuración

  1. Haz clic en Revisar y finalizar.
  2. Revisa los Depósitos 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. Anota 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 \
    --gcs-bucket-name=BUCKET_1_NAME
gcloud compute backend-buckets create dogs \
    --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 \
    --address=example-ip \
    --global \
    --target-http-proxy=http-lb-proxy \
    --ports=80

Envía tráfico a tu depósito de backend

Ahora que ya configuraste 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. En la sección Backend, confirma que los depósitos de backend estén en buen estado. Debe haber una marca de verificación verde junto a los depósitos de backend. Si no ves esa marca, vuelve a cargar la página. Puede llevar unos minutos que Cloud Console indique que los backends están en buen estado.
  4. Después de que en Cloud Console se muestre que los depósitos de backend están en buen estado, puedes probar el balanceador de cargas mediante un navegador web y dirigirte a https://IP_ADDRESS/love-to-fetch/two-dogs.jpg y https://IP_ADDRESS/never-fetch/three-cats.jpg, 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 de curl para probar la respuesta de 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 depósitos de backend solo son compatibles con balanceadores de cargas de HTTP(S) externos.
  • Los depósitos de backend no son compatibles con Identity-Aware Proxy.

Próximos pasos