Media CDN te permite obtener contenido de tu infraestructura de origen, tanto si está alojado en Google Cloudcomo en otra nube o en un entorno on-premise.
Cada configuración puede tener uno o varios orígenes asociados. Las configuraciones de origen indican a Media CDN cómo conectarse a tu infraestructura, cuándo y cómo conmutar por error, reintentar y agotar el tiempo de espera, y qué protocolo usar al conectarse.
Los orígenes tienen las siguientes características:
- Los orígenes se pueden definir por host y por ruta, lo que permite que un solo recurso
EdgeCacheService
se asigne a varios orígenes que contengan, por ejemplo, manifiestos, segmentos de vídeo y otro contenido estático. - Se puede acceder a los orígenes a través de HTTP/2, HTTPS y HTTP/1.1 sin cifrar.
- Puede configurar reglas de cortafuegos para permitir solo direcciones IP de Google específicas, de modo que solo Media CDN pueda acceder a sus orígenes.
- Los reintentos y los comportamientos de conmutación por error se configuran por origen y pueden permitir que el servicio conmute por error en caso de errores graves (como un fallo de conectividad) o que vuelva a intentar la conexión en función de las respuestas HTTP
404 Not Found
o HTTP429 Too Many Requests
. - Se puede acceder a los recursos privados que se encuentran en Google Cloud o en las instalaciones locales configurando un balanceador de carga de aplicación externo como origen detrás de Media CDN.
- El comportamiento de seguimiento de redirecciones se configura por origen. Puedes habilitar Media CDN para que siga las redirecciones a otros servidores de origen.
Requisitos de origen
Para permitir que Media CDN almacene en caché respuestas de origen de más de 1 MiB, un origen debe incluir lo siguiente en los encabezados de respuesta de las solicitudes HEAD
y GET
, a menos que se especifique lo contrario:
- Un encabezado de respuesta HTTP
Last-Modified
oETag
(un validador). - Un encabezado HTTP
Date
válido. - Un encabezado
Content-Length
válido. - Encabezado de respuesta
Content-Range
en respuesta a una solicitudRange GET
. El encabezadoContent-Range
debe tener un valor válido con el formatobytes x-y/z
(dondez
es el tamaño del objeto).
El protocolo de origen predeterminado es HTTP/2. Si tus orígenes solo admiten HTTP/1.1, puedes definir el campo de protocolo explícitamente para cada origen.
Protección de origen
Media CDN ofrece una infraestructura perimetral de niveles profundos diseñada para minimizar activamente el relleno de la caché siempre que sea posible.
Hay tres capas principales de infraestructura de almacenamiento en caché:
- Cachés de extremo profundo, que sirven la mayoría del tráfico y descargan dentro de la red de un proveedor de servicios.
- El peering de Google, que está conectado a miles de proveedores de Internet y actúa como caché de nivel medio para las cachés de extremo y, en los casos en los que no están presentes en un proveedor de Internet determinado, como caché orientada al usuario.
- Cachés de larga cola de la red de Google que rellenan otras cachés de nivel inferior antes del origen. Estas cachés admiten un gran número de solicitudes, tienen una capacidad de almacenamiento considerable y actúan como un escudo de origen.
A continuación se muestra una descripción general de esta topología:
Media CDN proporciona blindaje de origen de forma predeterminada mediante un conjunto limitado de ubicaciones globales clave. El escudo de origen predeterminado funciona en función de la ubicación del usuario final y no del origen. Esta opción funciona bien y ofrece grandes ventajas de descarga cuando los usuarios finales y los servidores de origen se encuentran en la misma región y cuando los servidores de origen globales están ubicados en varias regiones.
Apantallamiento flexible
En los casos en los que tu origen esté centralizado en una región, pero tus usuarios estén distribuidos por todo el mundo, el comportamiento predeterminado de protección del origen, que se basa en la ubicación del usuario, puede ser inadecuado por los siguientes motivos:
- Aumenta la latencia de los fallos de caché cuando la ubicación de protección predeterminada está geográficamente lejos de tu origen centralizado
- Se ha reducido la carga de origen dispersando las solicitudes de llenado de caché en varias ubicaciones de protección predeterminadas globales en lugar de concentrarlas.
El protección flexible te ayuda a superar estas limitaciones configurando una región geográfica única y específica para la protección del origen, que normalmente se selecciona para que esté cerca de tu origen centralizado. El cifrado flexible dirige todas las solicitudes de relleno de la caché a través de las cachés de protección ubicadas en la región configurada o cerca de ella. De esta forma, se consolida la carga en tu origen a través de esas cachés centradas en la región.
Si configuras una región de protección flexible en la misma región geográfica que tu origen centralizado, puedes optimizar lo siguiente:
- Tasa de aciertos de caché en la capa de protección
- Descarga de origen
- Latencia de contenido que no está en caché y que no se puede almacenar en caché
- Estabilidad del rendimiento
El blindaje flexible es compatible con cualquier tipo de origen configurado en Media CDN.
Solicitar que se contraiga
La solicitud de compresión comprime de forma activa varias solicitudes de relleno de caché controladas por el usuario para la misma clave de caché en una sola solicitud de origen por nodo de periferia.
Todas las capas de almacenamiento en caché admiten la combinación de solicitudes (o fusión) para reducir aún más la carga del origen. Basado en cargas de trabajo reales observadas a gran escala:
- Más del 95% de las entradas en caché utilizan un nodo de caché de larga cola específico en la región para reducir los costes y la latencia de las entradas en caché.
- El llenado de la caché entre el origen y la infraestructura perimetral de Google se realiza por completo a través de la red troncal privada global de Google, lo que reduce la latencia de llenado de la caché y mejora la fiabilidad. Ambas ventajas son muy útiles para las cargas de trabajo de streaming en directo.
- Las cachés se rellenan entre sí cuando es ventajoso hacerlo, lo que reduce aún más las tasas de relleno de la caché.
- Media CDN tiene una capacidad de almacenamiento significativa en todas las cachés, lo que minimiza las tasas de expulsión incluso en el caso del contenido menos popular y de larga duración.
Los clientes pueden ver diferentes tasas de descarga en función de la configuración de su caché, la carga de usuarios, las cargas de trabajo (como el contenido en directo frente al contenido bajo demanda), la distribución de los usuarios y la cantidad de contenido de larga duración (tamaño total del corpus) que sirven a los usuarios de diferentes regiones.
Si se combina con la protección de origen, la fusión de solicitudes reduce aún más la carga del origen y las necesidades de ancho de banda de salida, y es el comportamiento predeterminado de Media CDN.
Las solicitudes contraídas tienen registrada tanto la solicitud visible para el cliente como la solicitud de relleno de caché (contraída). El líder de la sesión contraída se usa para hacer la solicitud de relleno del origen, lo que significa que el origen ve los encabezados (incluido el User-Agent) solo de ese cliente.
Las solicitudes que no comparten la misma clave de caché no se pueden contraer.
Conectividad de origen
En las siguientes secciones se describe cómo se conecta Media CDN a los orígenes, cómo se realizan las solicitudes HTTP y cómo puede autenticar las solicitudes.
Orígenes y protocolos admitidos
Media CDN admite directamente cualquier endpoint HTTP accesible públicamente como origen, incluidos los siguientes:
- Segmentos de Cloud Storage, incluidos los segmentos privados, mediante cuentas de servicio de Gestión de Identidades y Accesos
- Balanceadores de carga de aplicación externos
- Segmentos compatibles con Amazon S3, incluidos los segmentos privados que usan la versión 4 de la firma de AWS
- Otro almacenamiento de objetos disponible públicamente, como Azure Blob Storage
- Servidores web disponibles públicamente, como máquinas virtuales públicas u hosts on-premise
La conectividad a los orígenes se realiza a través de túneles seguros y la red troncal mundial de Google.
En la siguiente tabla se detallan los protocolos de origen admitidos.
Protocolo | Compatible | Se requiere SSL (TLS) |
---|---|---|
HTTP/2 | Sí (predeterminado) | Sí |
HTTPS (HTTP/1.1 sobre TLS) | Sí | Sí |
HTTP/1.1 | Sí | No |
Media CDN usa HTTP/2 (h2) para conectarse a un origen de forma predeterminada. Tanto HTTP/2 como HTTPS requieren un certificado TLS (SSL) válido y de confianza pública. Un certificado válido es aquel que no ha caducado, que está firmado por una autoridad de certificación pública y que tiene un nombre alternativo de la entidad receptora que coincide con el nombre de host enviado al origen.
Notas:
- Si tu origen no admite HTTP/2, puedes definir explícitamente el protocolo (por origen) como
HTTP
(HTTP/1.1) oHTTPS
(HTTP/1.1 a través de TLS). - Cuando se configura HTTPS o HTTP/1.1 como protocolo de origen, Media CDN no negocia un protocolo alternativo (como HTTP/2). Del mismo modo, al configurar HTTP/2, la conexión no vuelve a HTTP/1.1 para ser explícita sobre el comportamiento de la conectividad de origen.
- Media CDN usa automáticamente el puerto correcto en función del protocolo: el puerto
80
para HTTP o el puerto443
para HTTPS y HTTP/2.
Encabezados de solicitud de origen
Cuando se conecta a un origen, Media CDN usa de forma predeterminada el encabezado Host
de la solicitud del cliente.
En la siguiente tabla se indica lo que ve el origen en la solicitud entrante en diferentes situaciones de configuración:
Solicitud del cliente | EdgeCacheService.hostRewrite |
EdgeCacheOrigin.hostRewrite |
originAddress | Encabezado de host / SNI de TLS en el origen |
---|---|---|---|---|
media.example.com | Ninguno | Ninguno | backend.example.com | media.example.com |
media.example.com | service.example.com | Ninguno | backend.example.com | service.example.com |
media.example.com | Ninguno | origin.example.com | backend.example.com | origin.example.com |
media.example.com | service.example.com | origin.example.com | backend.example.com | origin.example.com |
media.example.com | service.example.com | origin.example.com | gs://vod-content-bucket | se define automáticamente en función del nombre del contenedor |
El origen principal y cualquier origen de conmutación por error ven el mismo encabezado de host si comparten la misma configuración de routeRule
o hostRewrite
.
Se ignorará cualquier ajuste de hostRewrite
cuando se use un segmento de Cloud Storage como origen, ya que los segmentos de Cloud Storage no admiten valores de encabezado de host alternativos. La cabecera Host se define automáticamente en función del nombre del contenedor.
El valor de SNI (indicación de nombre de servidor) de TLS en la solicitud (para solicitudes HTTP/3, HTTP/2 y HTTPS) se establece en el mismo valor que el encabezado de host enviado al origen.
Para obtener información sobre cómo reescribir encabezados de host para la configuración por ruta, consulta Configurar rutas de servicio. Para obtener información sobre cómo definir acciones de anulación por origen, consulta Conmutación por error de origen sin seguimiento de redirección.
Permitir que el origen reciba tráfico de Media CDN
Para reducir el riesgo de que se acceda a tu contenido sin autorización, usa una lista de permitidas de IPs en el origen para bloquear el acceso a todas las direcciones IP, excepto a los intervalos de direcciones IP específicos que Google usa para enviar solicitudes a orígenes externos. De esta forma, solo Media CDN puede conectarse a tus servidores de origen.
En la siguiente tabla se resumen los intervalos de direcciones IP de origen necesarios para las reglas de cortafuegos:
Tipo de dirección IP | Intervalo de IPs de origen de la solicitud |
---|---|
IPv4 | 136.124.4.0/22 |
IPv6 | 2001:4860:4864:a::/64 |
Usa la siguiente URL para acceder al archivo JSON que contiene los intervalos de direcciones IP asignados por Google actualizados.
https://www.gstatic.com/ipranges/mediacdn.json
Conmutación por error y tiempos de espera
En las siguientes secciones se describen estas opciones de configuración:
- Tiempos de espera: determina cuánto tiempo espera Media CDN para conectarse a tu origen o para que responda a una solicitud.
- Reintentos: determina si Media CDN reintenta una solicitud HTTP de origen a tu origen y en qué condiciones.
- Conmutación por error: determina si Media CDN intenta conectarse a un origen de conmutación por error si el primero no está disponible o devuelve un código de estado específico.
Tiempos de espera de origen
Los tiempos de espera te permiten configurar cuándo se activan los comportamientos de reintento y de conmutación por error del origen, así como cuándo se puede activar la conmutación por error del cliente posterior.
A continuación, se describen los tiempos de espera configurables que admite Media CDN:
connectTimeout
ymaxAttemptsTimeout
limitan el tiempo que tarda Media CDN en encontrar una respuesta útil.Ambos tiempos de espera incluyen el tiempo que tarda el origen en devolver las cabeceras y en determinar si se debe usar una conmutación por error o una redirección.
connectTimeout
se aplica de forma independiente a cada intento de origen, mientras quemaxAttemptsTimeout
incluye el tiempo necesario para conectarse en todos los intentos de origen, incluidas las conmutaciones por error y las redirecciones. Seguir una redirección cuenta como un intento adicional de conectarse al origen y se tiene en cuenta para elmaxAttempts
definido para el origen configurado.Cuando Media CDN recibe una respuesta que no es una redirección, como la de un origen de redirección o de failover, se aplican los valores
readTimeout
yresponseTimeout
. Los orígenes redirigidos usan los valoresconnectTimeout
,readTimeout
yresponseTimeout
configurados para elEdgeCacheOrigin
que ha encontrado la redirección.responseTimeout
yreadTimeout
controlan cuánto tiempo puede tardar una respuesta transmitida. Una vez que Media CDN determina que va a usar una respuesta upstream, niconnectTimeout
nimaxAttemptsTimeout
importan. En este punto, se aplicanreadTimeout
yresponseTimeout
.
Media CDN hace como máximo cuatro intentos de origen en todos los orígenes, independientemente del maxAttempts
definido por cada EdgeCacheOrigin
.
Media CDN usa el valor maxAttemptsTimeout
del primario
EdgeCacheOrigin
. Los valores de tiempo de espera por intento (connectTimeout
, readTimeout
y responseTimeout
) se configuran para el EdgeCacheOrigin
de cada intento.
En la siguiente tabla se describen los campos de tiempo de espera:
Campo | Predeterminado | Descripción |
---|---|---|
connectTimeout | 5 segundos | El tiempo máximo que puede tardar Media CDN desde que se inicia la solicitud al origen hasta que Media CDN determina si la respuesta se puede usar. En la práctica, El tiempo de espera debe ser un valor entre 1 y 15 segundos. |
maxAttemptsTimeout | 15 segundos | Tiempo máximo de todos los intentos de conexión al origen, incluidos los orígenes de conmutación por error, antes de devolver un error al cliente. Se devuelve un error HTTP 504 si se alcanza el tiempo de espera antes de que se devuelva una respuesta. El tiempo de espera debe ser un valor entre 1 y 30 segundos. Este ajuste define la duración total de todos los intentos de conexión de origen, incluidos los orígenes de conmutación por error, para limitar el tiempo total que tienen que esperar los clientes para que empiece a transmitirse el contenido. Solo se usa el primer valor de |
readTimeout | 15 segundos | Duración máxima que se espera entre lecturas de una única respuesta HTTP.
El |
responseTimeout | 30 segundos | Duración máxima que se permite para completar una respuesta. El tiempo de espera debe ser un valor entre 1 segundo y 120 segundos. La duración se mide desde el momento en que se reciben los primeros bytes del cuerpo. Si se alcanza este tiempo de espera antes de que se complete la respuesta, esta se trunca y se registra. |
Ten en cuenta los siguientes ejemplos:
Origin A
coincide con las solicitudes a "/segments/" y tiene un valormaxAttemptsTimeout
de5s
, un valormaxAttempts
de1
y un valorfailover_origin
deOrigin B
. El valor deconnectTimeout
es el predeterminado:5s
. Si intentas conectarte aOrigin A
y la conexión falla en 1 segundo debido a un certificado TLS no válido, te quedarán unos 4 segundos para conectarte correctamente aOrigin B
.Origin C
coincide con las solicitudes de "/manifests/*", tiene un valormaxAttemptsTimeout
de10s
, un valormaxAttempts
de3
yfailover_origin
no está configurado. El valor deconnectTimeout
es el predeterminado,5s
. Media CDN intenta conectarse aOrigin C
hasta tres veces, con un máximo de 10 segundos (el límite demaxAttemptsTimeout
) para establecer una conexión correcta.
Reintentar solicitudes de origen
Media CDN admite reintentos de origen, lo que permite volver a intentar las solicitudes al origen que no se hayan completado correctamente. Puedes especificar cuántas veces se puede volver a intentar la conexión con el origen actual antes de intentar conectarse a un origen de conmutación por error (si está configurado).
- Media CDN intenta acceder al origen principal hasta el valor
maxAttempts
configurado, que es1
de forma predeterminada. - Media CDN vuelve a intentar las conexiones de origen hasta un máximo de tres veces antes de fallar y devolver un error HTTP
502 Bad Gateway
al usuario. Esto incluye las conexiones de origen de conmutación por error, que se tienen en cuenta para el límite de tres. - Al configurar un recurso de origen, puede configurar un origen principal mediante el campo
originAddress
y, a continuación, unfailoverOrigin
opcional. ElfailoverOrigin
apunta a otro recurso de origen.
El retryConditions
de cada origen especifica qué tipos de errores activan un reintento:
Condición | Predeterminado | Descripción |
---|---|---|
CONNECT_FAILURE | ✔️ | Los reintentos en caso de fallos incluyen errores de enrutamiento, de handshake de DNS y TLS, y tiempos de espera de TCP/UDP. |
HTTP_5XX | Reintentar con cualquier código de estado HTTP 5xx . |
|
GATEWAY_ERROR | Es similar a 5xx , pero solo se aplica a los códigos de estado 502 , 503 o 504 . |
|
RETRIABLE_4XX | Vuelve a intentar la solicitud en el caso de los códigos de estado 4xx que se pueden volver a intentar, como 409 y 429 . |
|
NOT_FOUND | Reintenta la operación si se devuelve el código de estado HTTP 404 . |
|
FORBIDDEN | Reintenta la operación si se devuelve el código de estado HTTP 403 . |
Si necesitas comprobaciones de estado activas, round-robin o direccionamiento con reconocimiento de carga entre orígenes, puedes configurar un balanceador de carga de aplicación externo como origen principal.
Comportamiento de conmutación por error
En la siguiente tabla se describe cómo funciona la conmutación por error y qué respuesta observaría un cliente:
Situación | Conmutación por error configurada | Estado visible para el usuario |
---|---|---|
Media CDN intenta conectarse a tu origen y no recibe ninguna respuesta HTTP después de dos intentos (valor predeterminado). | No | HTTP 502 Bad Gateway |
Media CDN intenta conectarse a tu origen principal
y no lo consigue (error de handshake de TLS). Se hace un intento contra el origen de conmutación por error configurado, que devuelve un error HTTP 404 .
|
Sí | HTTP 404 Not Found |
Media CDN intenta conectarse a tu origen principal y al de failover, pero no recibe ningún código de estado HTTP. | Sí | HTTP 502 Bad Gateway |
Si Media CDN recibe un código de estado que coincide con alguno de los códigos retryConditions
configurados, como un error HTTP 404 Not Found
o HTTP 429 Too Many
Requests
, y las solicitudes posteriores de reintento y de conmutación por error del origen siguen fallando, se devuelve un error HTTP 502 Bad Gateway
al cliente una vez que se han agotado los intentos de origen.
Prácticas recomendadas para la conmutación por error de origen
Cuando configure varios orígenes para la conmutación por error o el balanceo de carga, compruebe que el contenido multimedia y los comportamientos de los encabezados Vary
, ETag
y Last-Modified
sean coherentes entre los orígenes.
Como práctica recomendada, configura la redirección de origen solo para los orígenes en los que confíes y que controles. Asegúrese de que confía en todos los orígenes de una cadena de redirección, ya que cada origen genera contenido que sirve su EdgeCacheService
.
Siguientes pasos
- Configurar un origen
- Usar un segmento privado compatible con Amazon S3 como origen
- Configurar rutas de servicio