Configurar un segmento de backend

Cloud CDN aprovecha el balanceador de carga de aplicación externo global o el balanceador de carga de aplicación clásico que elijas para proporcionar enrutamiento, comprobaciones del estado y compatibilidad con direcciones IP anycast. Como los balanceadores de carga de aplicaciones externos globales pueden tener varios tipos de instancias de backend (instancias de VM de Compute Engine, pods de Google Kubernetes Engine, cubos de Cloud Storage o backends externos fuera de Google Cloud), puedes elegir en qué backends (orígenes) habilitar Cloud CDN.

En esta guía de configuración se explica cómo crear un balanceador de carga de aplicación externo con Cloud CDN habilitado. En el ejemplo se usan los siguientes recursos:

  • Red de nube privada virtual (VPC) predeterminada
  • Un mapa de URLs predeterminado
  • Una dirección IP externa reservada
  • Un segmento de Cloud Storage como backend
  • Un único segmento de backend de balanceador de carga que actúa como contenedor del segmento de Cloud Storage

Un backend bucket admite lo siguiente:

  • Segmentos de Cloud Storage de cualquier clase de almacenamiento, incluidos los segmentos multirregionales
  • Políticas de Cloud CDN para almacenar contenido en caché en el perímetro global de Google

Para saber cómo funciona Cloud CDN, consulta la información general sobre Cloud CDN.

De forma predeterminada, Cloud Storage utiliza la misma caché que Cloud CDN. Si habilitas Cloud CDN en el backend, puedes usar los controles de Cloud CDN en tu contenido. Los controles de Cloud CDN incluyen, por ejemplo, modos de caché, URLs firmadas e invalidación. Cloud CDN también te permite almacenar en caché contenido de gran tamaño (más de 10 MB). Si no habilitas Cloud CDN en tu segmento de backend, solo podrás usar los encabezados Cache-Controlde origen para controlar el almacenamiento en caché de contenido más pequeño, tal como se define en los metadatos de Cloud Storage.

Backends del balanceador de carga

Un balanceador de carga de aplicaciones externo usa un mapa de URLs para dirigir el tráfico de URLs especificadas a servicios especificados. En la siguiente tabla se resumen los tipos de back-ends en los que puedes alojar contenido y servicios.

Configuración de backend del balanceador de carga Tipo de contenido habitual Tipos de backend
Servicio de backend Dinámicos (como los datos)
  • Grupos de instancias sin gestionar
  • Grupos de instancias administradas
  • Grupos de puntos finales de red internos a Google Cloud
  • Grupos de puntos finales de red externos a Google Cloud
Segmento de backend Estático (como imágenes)
  • Segmentos de Cloud Storage (que se explican en esta página)

Antes de empezar

Consola

  1. En la Google Cloud consola, ve a la página Inicio.

    Ve a la Google Cloud página principal.

  2. A la derecha de Google Cloud, selecciona un proyecto en el menú desplegable.

gcloud

     gcloud config set project PROJECT_ID
   

Sustituye PROJECT_ID por el ID de tu proyecto. Google Cloud

Terraform

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID
   

Opcional: Usar direcciones BYOIP

Con la función de utilizar tu propia dirección IP (BYOIP), puedes importar tus propias direcciones públicas a Google Cloud para usar las direcciones con recursos de Google Cloud . Por ejemplo, si importa sus propias direcciones IPv4, puede asignar una a la regla de reenvío al configurar el balanceador de carga. Cuando sigas las instrucciones de este documento para crear el balanceador de carga de aplicaciones externo, proporciona la dirección BYOIP como dirección IP.

Para obtener más información sobre cómo usar BYOIP, consulta el artículo Utilizar tus propias direcciones IP.

Crea un segmento de Cloud Storage

Si tienes un segmento de Cloud Storage que aún no se ha asignado a un balanceador de carga, puedes ir al siguiente paso.

Cuando creas un segmento de Cloud Storage para usarlo como backend de un balanceador de carga de aplicaciones externo con Cloud CDN, te recomendamos que elijas un segmento multirregional, que replica automáticamente los objetos en varias regiones Google Cloud . De esta forma, se puede mejorar la disponibilidad del contenido y la tolerancia a fallos de la aplicación.

Consola

  1. En la Google Cloud consola, abre la página Segmentos de Cloud Storage.

    Abre la página Cubos.

  2. Haz clic en Crear segmento.
  3. Especifique los valores de los campos de la siguiente tabla y deje el resto con los valores predeterminados.

    Propiedad Valor (escribe el valor o selecciona una opción según se especifique)
    Nombre Asigna un nombre único a cada segmento. Si el nombre que introduces no es único, verás un mensaje para que pruebes con otro.
    Tipo de ubicación Multirregional
    Ubicación Seleccione una región, como us (varias regiones de Estados Unidos).
    Clase de almacenamiento predeterminada Estándar
    Control de acceso Uniform
  4. Haz clic en Crear.

  5. Anota el nombre del segmento de Cloud Storage que acabas de crear para el siguiente paso.

gcloud

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

Terraform

Para crear un segmento, usa el google_storage_bucket recurso.

# Cloud Storage bucket
resource "random_id" "bucket_prefix" {
  byte_length = 8
}

resource "google_storage_bucket" "default" {
  name                        = "${random_id.bucket_prefix.hex}-my-bucket"
  location                    = "us-east1"
  uniform_bucket_level_access = true
  storage_class               = "STANDARD"
  // delete bucket and contents on destroy.
  force_destroy = true
  // Assign specialty files
  website {
    main_page_suffix = "index.html"
    not_found_page   = "404.html"
  }
}

Para saber cómo aplicar o quitar una configuración de Terraform, consulta Comandos básicos de Terraform.

Copiar un archivo gráfico en tu segmento de Cloud Storage

Para que puedas probar la configuración, copia un archivo gráfico de un segmento de Cloud Storage público a tu propio segmento de Cloud Storage.

gcloud

Ejecuta el siguiente comando en Cloud Shell. Sustituye BUCKET_NAME por el nombre único de tu segmento de Cloud Storage:

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

Terraform

Para copiar el objeto, usa local-exec Provisioner con el comando gcloud storage cp.

resource "null_resource" "upload_image" {
  provisioner "local-exec" {
    command = "gcloud storage cp gs://gcp-external-http-lb-with-bucket/three-cats.jpg gs://${google_storage_bucket.default.name}/never-fetch/ --recursive"
  }
}

También puede usar el recurso google_storage_bucket_object para subir un objeto.

# image object for testing, try to access http://<your_lb_ip_address>/test.jpg
resource "google_storage_bucket_object" "test_image" {
  name = "test-object"
  # Uncomment and add valid path to an object.
  #  source       = "/path/to/an/object"
  #  content_type = "image/jpeg"

  # Delete after uncommenting above source and content_type attributes
  content      = "Data as string to be uploaded"
  content_type = "text/plain"

  bucket = google_storage_bucket.default.name
}

Para saber cómo aplicar o quitar una configuración de Terraform, consulta Comandos básicos de Terraform.

En la Google Cloud consola, haz clic en Actualizar para comprobar que el archivo gráfico se haya copiado.

Hacer público un segmento de Cloud Storage

En este ejemplo, se hace que tu segmento de Cloud Storage sea de lectura pública. Este es el enfoque recomendado para el contenido público. Con este ajuste, cualquier usuario de Internet puede ver y enumerar tus objetos y sus metadatos, excepto las ACLs. Para reducir el riesgo de que los datos se expongan de forma accidental, normalmente debes dedicar segmentos de Cloud Storage específicos a los objetos públicos.

Estas son algunas alternativas a la hora de hacer público un segmento de Cloud Storage:

El siguiente procedimiento concede a todos los usuarios acceso para ver objetos en tu segmento de Cloud Storage, lo que hace que el segmento sea de lectura pública.

Consola

  1. En la Google Cloud consola, abre la página Segmentos de Cloud Storage.

    Abre la página Cubos.

  2. Ve al segmento y haz clic en la pestaña Permisos.
  3. Haz clic en Añadir principales.
  4. En Principales nuevos, introduce allUsers.
  5. En el campo "Rol", selecciona Cloud Storage > Visor de objetos de Storage.
  6. Haz clic en Guardar.

gcloud

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

Terraform

Para hacer público tu segmento de Cloud Storage, usa el recurso google_storage_bucket_iam_member.

# make bucket public
resource "google_storage_bucket_iam_member" "default" {
  bucket = google_storage_bucket.default.name
  role   = "roles/storage.objectViewer"
  member = "allUsers"
}

Para saber cómo aplicar o quitar una configuración de Terraform, consulta Comandos básicos de Terraform.

Reservar una dirección IP externa

Ahora que tu segmento de Cloud Storage está en funcionamiento, configura una dirección IP externa estática global que tus clientes usan para llegar a tu balanceador de carga.

Este paso es opcional, pero recomendable, ya que una dirección IP externa estática proporciona una única dirección a la que dirigir tu dominio.

Consola

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

    Ir a la página Direcciones IP externas

  2. Para reservar una dirección IPv4, haz clic en Reservar dirección estática.
  3. Asigne un Nombre de example-ip.
  4. Configure el Nivel de servicio de red como Premium.
  5. Configura IPv4 (versión de IP) como IPv4.
  6. En Tipo, seleccione Global.
  7. Haz clic en Reservar.

gcloud

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

Anota la dirección IPv4 que se ha reservado:

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

Terraform

Para reservar una dirección IP, usa el recurso google_compute_global_address.

# reserve IP address
resource "google_compute_global_address" "default" {
  name = "example-ip"
}

Para saber cómo aplicar o quitar una configuración de Terraform, consulta Comandos básicos de Terraform.

Crear el balanceador de carga de aplicación externo

En este procedimiento, creará el segmento de backend del balanceador de carga, que actuará como contenedor de su segmento de Cloud Storage. Cuando crees o edites un backend bucket, puedes habilitar Cloud CDN.

Consola

Iniciar el proceso de configuración del balanceador de carga de aplicación externo

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

    Ir a la página Balanceo de carga

  2. En Balanceo de carga de HTTP y HTTPS, haz clic en Iniciar configuración.
  3. Seleccione De Internet a mis VMs y, a continuación, haga clic en Continuar.
  4. En Gestión avanzada del tráfico, seleccione una de las siguientes opciones:
    • En el caso de los balanceadores de carga de aplicación clásicos, selecciona Balanceador de carga HTTP(S) clásico.
    • En el caso de los balanceadores de carga de aplicaciones externos globales, selecciona Balanceador de carga HTTP(S) con gestión avanzada del tráfico.
  5. Asigna el valor http-lb a Nombre y, a continuación, ve al paso siguiente.

Configurar el backend y habilitar Cloud CDN

Crea el segmento de backend del balanceador de carga, que actúa como contenedor del segmento de Cloud Storage. Cuando creas o editas un backend de tipo cubeta, puedes habilitar Cloud CDN.

  1. Haz clic en