Cloud CDN aprovecha tu elección del balanceador de cargas de aplicaciones externo global o el balanceador de cargas de aplicaciones clásico para proporcionar enrutamiento, verificación de estado y asistencia de IP anycast. Debido a que los balanceadores de cargas de aplicaciones externos globales pueden tener varios tipos de instancias de backend, instancias de VM de Compute Engine, Pods de Google Kubernetes Engine, buckets 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 muestra cómo crear un balanceador de cargas de aplicaciones externo con Cloud CDN habilitado. En el ejemplo, se usan los siguientes recursos:
- La red predeterminada de nube privada virtual (VPC)
- Un mapa de URL predeterminado
- Una dirección IP externa reservada
- Un bucket de Cloud Storage como backend
- Un bucket de backend del balanceador de cargas único que actúa como un wrapper alrededor del bucket de Cloud Storage
Un bucket de backend admite lo siguiente:
- Buckets de Cloud Storage de cualquier clase de almacenamiento, incluidos los buckets multirregionales
- Políticas de Cloud CDN para almacenar en caché el contenido en el extremo global de Google
Si deseas obtener información para saber cómo funciona Cloud CDN, consulta la Descripción general de Cloud CDN.
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.
Backends del balanceador de cargas
Un balanceador de cargas de aplicaciones externo usa un mapa de URL para dirigir el tráfico de las URLs especificadas a los servicios especificados. En la siguiente tabla, se resumen los tipos de backends en los que puedes alojar contenido y servicios.
Configuración de backend del balanceador de cargas | Tipo de contenido multimedia típico | Tipos de backend |
---|---|---|
Servicio de backend | Dinámico (como datos) |
|
Bucket de backend | Estático (como imágenes) |
|
Antes de comenzar
- Si usas HTTPS para el frontend, crea un certificado SSL, ya sea autoadministrado o administrado por Google. Recomendamos que uses un certificado administrado por Google.
- Si usas Google Cloud CLI, consulta Descubre el almacenamiento de objetos con la herramienta de gcloud para instalarlo.
Console
- En la consola de Google Cloud, ve a la página principal.
- A la derecha de Google Cloud, selecciona un proyecto del menú desplegable.
gcloud
gcloud config set project PROJECT_ID
Reemplaza PROJECT_ID
por el ID del proyecto de Google Cloud.
Terraform
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Cree un bucket de Cloud Storage
Si tienes un bucket de Cloud Storage existente que aún no se asignó a un balanceador de cargas, puedes pasar al siguiente paso.
Cuando creas un bucket de Cloud Storage para usarlo como backend de un balanceador de cargas de aplicaciones externo con Cloud CDN, te recomendamos que elijas un bucket multirregional, que replica de forma 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
- En la consola de Google Cloud, abre la página Buckets de Cloud Storage.
- Haz clic en Crear bucket.
Especifica los valores para los campos de la siguiente tabla y deja los demás en 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 para probar con otro nombre. Tipo de ubicación Multirregional Ubicación Selecciona una región, como us (varias regiones en Estados Unidos). Clase de almacenamiento predeterminada Estándar Control de acceso Uniforme Haz clic en Crear.
Anota el nombre del bucket 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 bucket, usa el recurso google_storage_bucket
.
Si deseas obtener más información para aplicar o quitar una configuración de Terraform, consulta los comandos básicos de Terraform.
Cómo copiar un archivo gráfico en tu bucket de Cloud Storage
Para que puedas probar la configuración, copia un archivo gráfico de un bucket público de Cloud Storage en tu propio bucket de Cloud Storage.
gcloud
Ejecuta el siguiente comando en Cloud Shell. Reemplaza BUCKET_NAME
por el nombre de tu bucket único 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" } }
Como alternativa, para subir un objeto, usa el recurso google_storage_bucket_object
.
Si deseas obtener más información para aplicar o quitar una configuración de Terraform, consulta los comandos básicos de Terraform.
En la consola de Google Cloud, haz clic en Actualizar para verificar que se copió el archivo gráfico.
Haz que tu bucket de Cloud Storage sea público
En este ejemplo, se muestra cómo hacer que tu bucket de Cloud Storage tenga acceso público de lectura. Este es el enfoque recomendado para el contenido público. Con esta configuración, cualquier persona en Internet puede ver y enumerar tus objetos y sus metadatos, sin incluir las LCA. Para reducir el riesgo de exposición de datos no deseada, por lo general, debes dedicar buckets de Cloud Storage específicos para objetos públicos.
Las siguientes son alternativas para hacer público un bucket de Cloud Storage completo:
Usa las carpetas administradas para hacer que una parte de tu bucket sea legible de forma pública.
Haz que los objetos individuales sean legibles de forma pública. No recomendamos este enfoque, ya que usa un sistema de permisos específico y heredado de Cloud Storage.
Usa URL firmadas.
En el siguiente procedimiento, se otorga a todos los usuarios acceso para ver los objetos de tu bucket de Cloud Storage, lo que hace que el bucket tenga acceso público de lectura.
Console
- En la consola de Google Cloud, abre la página Buckets de Cloud Storage.
- Navega al bucket y haz clic en la pestaña Permisos.
- Haz clic en Agregar principales.
- En Principales nuevas, ingresa
allUsers
. - Para la función, selecciona Cloud Storage > Visualizador de objetos de Storage.
- Haz clic en Guardar.
gcloud
gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME --member=allUsers --role=roles/storage.objectViewer
Terraform
Para que tu bucket de Cloud Storage sea público, usa el recurso google_storage_bucket_iam_member
.
Si deseas obtener más información para aplicar o quitar una configuración de Terraform, consulta los comandos básicos de Terraform.
Reservar una dirección IP externa
Ahora que el bucket de Cloud Storage está en funcionamiento, configura una dirección IP externa estática global que tus clientes usen 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
- En la consola de Google Cloud, ve a la página Direcciones IP externas.
- Para reservar una dirección IPv4, haz clic en Reservar dirección estática.
- Asigna un Nombre de
example-ip
. - Establece el Nivel de servicio de red en Premium.
- Configura la Versión de IP como IPv4.
- Configura el Tipo como Global.
- Haz clic en Reservar.
gcloud
gcloud compute addresses create example-ip \ --network-tier=PREMIUM \ --ip-version=IPV4 \ --global
Tome nota de la dirección IPv4 que estaba reservada:
gcloud compute addresses describe example-ip \ --format="get(address)" \ --global
Terraform
Para reservar una dirección IP, usa el recurso google_compute_global_address
.
Si deseas obtener más información para aplicar o quitar una configuración de Terraform, consulta los comandos básicos de Terraform.
Crea el balanceador de cargas de aplicaciones externo
En este procedimiento, crearás el bucket de backend del balanceador de cargas, que funciona como wrapper para tu bucket de Cloud Storage. Cuando creas o editas un bucket de backend, puedes habilitar Cloud CDN.
Console
Inicia el proceso de configuración del balanceador de cargas de aplicaciones externo
- En la consola de Google Cloud, ve a la página Balanceo de cargas.
- En Balanceo de cargas de HTTP(S), haz clic en Iniciar configuración.
- Selecciona De Internet a mis VM y, luego, haz clic en Continuar.
- En Administración avanzada del tráfico, selecciona una de las siguientes opciones:
- Para los balanceadores de cargas de aplicaciones clásicos, selecciona Balanceador de cargas de HTTP(S) clásico.
- Para los balanceadores de cargas de aplicaciones globales externos, selecciona Balanceador de cargas HTTP(S) con administración avanzada de tráfico.
- Establece el Nombre en
http-lb
y, luego, ve al paso siguiente.
Configura el backend y habilita Cloud CDN
Crea el bucket de backend del balanceador de cargas, que funciona como wrapper para el bucket de Cloud Storage. Cuando creas o editas un bucket de backend, puedes habilitar Cloud CDN.
- Haz clic en Configuración de backend.
- En Servicios y buckets de backend, haz clic en Crear o seleccionar servicios y buckets de backend. A continuación, haz clic en Buckets de backend > Crear un bucket de backend.
- Configura el campo Nombre como
cat-backend-bucket
. No es necesario que este nombre sea único a nivel global, y puede ser diferente al nombre del bucket real de Cloud Storage. - En bucket de Cloud Storage, haz clic en Explorar.
- Selecciona el
BUCKET_NAME
único global de Cloud Storage que creaste y, a continuación, haz clic en Seleccionar. Haz clic en Habilitar Cloud CDN.
Modifica la configuración del modo de almacenamiento en caché y de TTL (opcional).
Haga clic en Crear.
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 aplicaciones externo.
En Reglas de host y ruta, puedes mantener la configuración predeterminada.
Para ver un ejemplo de configuración personalizada, consulta Agrega buckets de backend a balanceadores de cargas.
Para obtener más información sobre las reglas de host y los comparadores de rutas de acceso, consulta la Descripción general de los mapas de URL.
Configura el frontend
- Haz clic en Configuración de frontend.
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 HTTPS Nivel de servicio de red Premium Versión de IP IPv4 Dirección IP example-ip
Puerto 443 Certificado Selecciona un certificado o crea uno nuevo Haz clic en Listo.
Revisa la configuración
- Haz clic en Revisar y finalizar.
- Revisa los Buckets de backend, las Reglas de host y ruta de acceso y las secciones sobre Frontend.
- Haga clic en Crear.
- Espera a que se cree el balanceador de cargas.
- Haz clic en el nombre del balanceador de cargas (http-lb).
- 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 cat-backend-bucket \ --gcs-bucket-name=BUCKET_NAME \ --enable-cdn \ --cache-mode=CACHE_MODE
Para establecer el modo de almacenamiento en caché, reemplaza CACHE_MODE por uno de los siguientes valores:
CACHE_ALL_STATIC
oUSE_ORIGIN_HEADERS
: Usa los encabezados configurados según los metadatos de control de caché en Cloud Storage. Cloud Storage siempre proporciona un encabezadoCache-Control
a Cloud CDN. Si no se elige un valor de forma explícita, se envía un valor predeterminado.FORCE_CACHE_ALL
: Almacena en caché todo el contenido, sin importar las directivasprivate
,no-store
ono-cache
en los encabezados de respuestaCache-Control
que envía Cloud Storage.
Configura el mapa de URL
gcloud compute url-maps create http-lb \ --default-backend-bucket=cat-backend-bucket
Configura el proxy de destino
gcloud compute target-http-proxies create http-lb-proxy \ --url-map=http-lb
Configura la regla de reenvío
-
Para un balanceador de cargas de aplicaciones externo global, usa el comando de la CLI de gcloud con
load-balancing-scheme=EXTERNAL_MANAGED
. Esta configuración ofrece capacidad avanzada de administración de tráfico. - Para un balanceador de cargas de aplicaciones clásico, usa
load-balancing-scheme=EXTERNAL
.
gcloud compute forwarding-rules create http-lb-forwarding-rule \ --load-balancing-scheme=LOAD_BALANCING_SCHEME \ --network-tier=PREMIUM \ --address=example-ip \ --global \ --target-http-proxy=http-lb-proxy \ --ports=80
Terraform
Configura el backend
Para configurar el backend, usa el recurso google_compute_backend_bucket
.
Configura el mapa de URL
Para configurar el backend, usa el recurso google_compute_url_map
.
Configura el proxy de destino
Para configurar el proxy de destino, usa el recurso google_compute_target_http_proxy
o el recurso google_compute_target_https_proxy
.
Configura la regla de reenvío
Para configurar la regla de reenvío, usa el recurso google_compute_global_forwarding_rule
.
- Para un balanceador de cargas de aplicaciones externo global, usa
load_balancing_scheme="EXTERNAL_MANAGED"
. Esta configuración ofrece capacidad avanzada de administración de tráfico. - Para un balanceador de cargas de aplicaciones clásico, usa
load_balancing_scheme="EXTERNAL"
.
Si deseas obtener más información para aplicar o quitar una configuración de Terraform, consulta los comandos básicos de Terraform.
Envía tráfico a tu bucket de backend
Después de crear la regla de reenvío global, la configuración puede demorar varios minutos en propagarse a nivel mundial. Después de varios minutos, puedes comenzar a enviar tráfico a la dirección IP del balanceador de cargas.
Console
- En la consola de Google Cloud, ve a la página Balanceo de cargas.
Haz clic en
http-lb
para expandir el balanceador de cargas que acabas de crear.En la sección Backend, confirma que el bucket de backend esté en buen estado. Debe haber una marca de verificación verde junto al bucket de backend. En caso contrario, primero vuelve a cargar la página. Puede llevar unos minutos que la consola de Cloud indique que los backends están en buen estado.
Después de que en la consola de Cloud se muestre que el bucket de backend está en buen estado, puedes probar tu balanceador de cargas con un navegador web en
http://IP_ADDRESS/never-fetch/three-cats.jpg
. ReemplazaIP_ADDRESS
por la dirección IP del balanceador de cargas. Tu navegador debe renderizar una página con contenido que muestre el archivo gráfico.
gcloud
Usa el comando curl
para probar la respuesta desde la URL. Reemplaza IP_ADDRESS
por la dirección IPv4 del balanceador de cargas.
Toma nota de la dirección IPv4 que estaba reservada:
gcloud compute addresses describe example-ip \ --format="get(address)" \ --global
Envía una solicitud curl como la siguiente:
curl http://IP_ADDRESS/never-fetch/three-cats.jpg
Verifica que Cloud CDN funcione
Si vuelves a cargar la página http://IP_ADDRESS/never-fetch/three-cats.jpg
varias veces seguidas y con rapidez, deberían existir varios aciertos de caché.
En la siguiente entrada de registro, se muestra un acierto de caché. Para ver los aciertos de caché en la consola de Google Cloud, abre el Explorador de registros y filtra por el nombre de la regla de reenvío.
Abrir el Explorador de registros
Explorador de registros
{ insertId: "1oek5rg3l3fxj7" jsonPayload: { @type: "type.googleapis.com/google.cloud.loadbalancing.type.LoadBalancerLogEntry" cacheId: "SFO-fbae48ad" statusDetails: "response_from_cache" } httpRequest: { requestMethod: "GET" requestUrl: "http://LOAD_BALANCER_IP_ADDRESS/never-fetch/three-cats.jpg" requestSize: "577" status: 254 responseSize: "157" userAgent: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36" remoteIp: "CLIENT_IP_ADDRESS" cacheHit: true cacheLookup: true } resource: { type: "http_load_balancer" labels: { zone: "global" url_map_name: "URL_MAP_NAME" forwarding_rule_name: "FORWARDING_RULE_NAME" target_proxy_name: "TARGET_PROXY_NAME" backend_service_name: "" project_id: "PROJECT_ID" } } timestamp: "2020-06-08T23:41:25.078651Z" severity: "INFO" logName: "projects/PROJECT_ID/logs/requests" trace: "projects/PROJECT_ID/traces/241d69833e64b3bf83fabac8c873d992" receiveTimestamp: "2020-06-08T23:41:25.588272510Z" spanId: "7b6537d3672e08e1" }
Console
- En la consola de Google Cloud, ve a la página Balanceo de cargas.
Haz clic en
http-lb
para expandir el balanceador de cargas que acabas de crear.En la sección Backend, confirma que el bucket de backend esté en buen estado. Debe haber una marca de verificación verde junto al bucket de backend. En caso contrario, primero vuelve a cargar la página. Puede llevar unos minutos que la consola de Cloud indique que los backends están en buen estado.
Después de que en la consola de Cloud se muestre que el bucket de backend está en buen estado, puedes probar tu balanceador de cargas con un navegador web en
http://IP_ADDRESS/never-fetch/three-cats.jpg
. ReemplazaIP_ADDRESS
por la dirección IP del balanceador de cargas. Tu navegador debe renderizar una página con contenido que muestre el archivo gráfico.
gcloud
Usa el comando curl
para probar la respuesta desde la URL. Reemplaza IP_ADDRESS
por la dirección IPv4 del balanceador de cargas.
Toma nota de la dirección IPv4 que estaba reservada:
gcloud compute addresses describe example-ip \ --format="get(address)" \ --global
Envía una solicitud curl como la siguiente:
curl -D- -o /dev/null /dev/null http://IP_ADDRESS/never-fetch/three-cats.jpg
El contenido se recupera de Cloud Storage, se almacena en caché con Cloud CDN y, luego, se valida y se vuelve a recuperar cuando vence o se expulsa de la caché.
El contenido de la caché tiene un encabezado Age
mayor que cero.
El contenido que debe actualizarse antes que el TTL se puede invalidar y volver a recuperar desde Cloud Storage.
Inhabilita Cloud CDN
Console
Inhabilita Cloud CDN para un solo bucket de backend
- En la consola de Google Cloud, ve a la página Cloud CDN.
- En el lado derecho de la fila de origen, haz clic en Menú y, luego, selecciona Editar.
- Desmarca las casillas de verificación de los buckets de backend que deseas que dejen de usar Cloud CDN.
- Haz clic en Actualizar.
Quita Cloud CDN de todos los buckets de backend de un origen
- En la consola de Google Cloud, ve a la página Cloud CDN.
- En el lado derecho de la fila de origen, haz clic en Menú y, luego, selecciona Quitar.
- Para confirmar la acción, haz clic en Quitar.
gcloud
gcloud compute backend-buckets update BACKEND_BUCKET_NAME \ --no-enable-cdn
Inhabilitar Cloud CDN no invalida ni borra definitivamente las memorias caché. Si desactivas Cloud CDN y vuelves a activarlo, es probable que la mayor parte del contenido almacenado en caché, o todo ese contenido, aún siga almacenado en caché. Para evitar que las memorias caché usen el contenido, debes invalidarlo.
Próximos pasos
- Para obtener información sobre qué contenido se almacena en caché, consulta Descripción general del almacenamiento en caché.
- Para usar Cloud CDN en GKE, consulta Funciones de Ingress.
- Para verificar si Cloud CDN entrega respuestas desde la caché, consulta Visualiza registros.
- Para obtener información sobre problemas y soluciones comunes, consulta Soluciona problemas.
- Si deseas configurar las políticas de filtrado y control de acceso para tu contenido, consulta Políticas de seguridad de Edge.