Configura un'origine

Puoi configurare le origini per Media CDN in molti modi. Questa pagina mostra come configurare le origini.

Configura un bucket Cloud Storage come origine

Media CDN supporta i bucket Cloud Storage come backend per i contenuti. Ogni servizio può fare riferimento a più bucket configurando route per host, percorsi e altri attributi di richiesta.

I bucket Cloud Storage vengono configurati utilizzando l'URL del bucket, ad esempio gs://my-bucket, come indirizzo di origine durante la creazione di una risorsa di origine.

Console

  1. Nella console Google Cloud, vai alla pagina Origini di Media CDN.

    Vai a Origini

  2. Fai clic su Crea origine.

  3. Inserisci un nome per l'origine. Ad esempio: cloud-storage-origin.

  4. (Facoltativo) Inserisci una descrizione.

  5. In Indirizzo di origine, scegli Seleziona un bucket Google Cloud Storage.

  6. Vai al tuo bucket Cloud Storage e selezionalo.

  7. Per Cloud Storage, mantieni le impostazioni di protocollo e porta predefinite.

  8. (Facoltativo) Affinché gli override delle intestazioni della richiesta di origine abbiano la precedenza sulle intestazioni inviate dal client o manipolate da azioni di intestazione a livello di route, procedi nel seguente modo:

    1. Seleziona Abilita override origine.
    2. Nella sezione Intestazioni, specifica le intestazioni aggiungendo una o più coppie nome-valore.
  9. (Facoltativo) Seleziona un'origine di failover da provare nel caso in cui questa origine non sia raggiungibile. Puoi aggiornare questo campo in un secondo momento.

  10. Seleziona le condizioni di reindirizzamento.

  11. Seleziona riprova condizioni.

  12. Per Numero massimo di tentativi, seleziona il numero massimo di tentativi per riempire la cache da questa origine.

  13. (Facoltativo) Specifica i seguenti valori di timeout:

    1. In Timeout connessione, seleziona la durata massima di attesa prima che venga stabilita la connessione dell'origine.
    2. Per Timeout della risposta, seleziona la durata massima per consentire il completamento di una risposta.
    3. In Timeout lettura, seleziona la durata massima di attesa tra le letture di una singola connessione HTTP o di un singolo stream.
  14. (Facoltativo) Fai clic su Aggiungi etichetta e specifica una o più coppie chiave-valore.

  15. Fai clic su Crea origine.

gcloud

Usa il comando gcloud edge-cache origins create:

gcloud edge-cache origins create ORIGIN \
    --origin-address=ADDRESS

Sostituisci quanto segue:

  • ORIGIN: il nome della nuova origine
  • ADDRESS: il nome del bucket, ad esempio gs://my-bucket

Lo stesso vale se il bucket è multiregionale, a due regioni o a livello di regione.

Quando configuri un servizio, puoi instradare i contenuti video on demand a un bucket e i contenuti in live streaming a un secondo bucket. Questo è utile se hai diversi team che gestiscono ogni flusso di lavoro. Per ridurre la latenza di riempimento della cache, puoi instradare l'area geografica eu-media.example.com in modo simile a un bucket Cloud Storage multiregionale situato nell'UE e l'area geografica us-media.example.com (o una corrispondenza per percorso, intestazione o parametro di query) a un bucket di archiviazione basato negli Stati Uniti.

Bucket Media CDN.
Bucket Media CDN (fai clic per ingrandire).

Per i casi in cui la latenza di scrittura è fondamentale, ad esempio i live streaming a bassa latenza, puoi configurare un endpoint Cloud Storage a livello di regione il più vicino possibile agli utenti.

Autentica le richieste

Per verificare che una richiesta provenga da Media CDN, utilizza uno dei seguenti approcci supportati:

  • Verifica che l'indirizzo IP di connessione provenga dagli intervalli di riempimento della cache di Media CDN. Questi intervalli sono condivisi tra tutti i clienti, ma sono sempre utilizzati dalle risorse EdgeCacheService quando si connette a un'origine.
  • Aggiungi un'intestazione della richiesta personalizzata con un valore del token che convalidi sull'origine (ad esempio, un valore casuale di 16 byte). L'origine può quindi rifiutare le richieste che non includono questo valore.

Per informazioni su come impostare le intestazioni delle richieste per route, consulta intestazioni personalizzate.

Configura un protocollo di origine

Per le origini che supportano solo HTTPS (HTTP/1.1 su TLS) o HTTP/1.1 (senza TLS), imposta il campo protocol in modo esplicito procedendo nel seguente modo:

Console

  1. Nella console Google Cloud, vai alla pagina Origini di Media CDN.

    Vai a Origini

  2. Seleziona la tua origine e fai clic su Modifica.

  3. Come protocollo, seleziona HTTPS o HTTP. Per HTTP, specifica anche la porta come 80.

  4. Fai clic su Aggiorna origine.

gcloud

Usa il comando gcloud edge-cache origins update:

gcloud edge-cache origins update LEGACY_ORIGIN \
    --protocol=HTTPS

Se la tua origine supporta HTTP/2, non è necessario impostare il protocollo in modo esplicito.

Configura bucket Cloud Storage privati

Media CDN può estrarre contenuti da qualsiasi endpoint HTTP o HTTPS accessibile a internet. In alcuni casi, potrebbe essere necessario richiedere l'autenticazione per consentire a Media CDN solo di eseguire il pull dei contenuti e impedire l'accesso non autorizzato. Cloud Storage supporta questa operazione tramite le autorizzazioni IAM.

Per le origini Cloud Storage, segui questi passaggi:

  • Concedi all'account di servizio Media CDN l'autorizzazione IAM objectViewer sui bucket Cloud Storage che stai utilizzando come origini.
  • Rimuovi l'autorizzazione allUsers.
  • (Facoltativo) Rimuovi l'autorizzazione allAuthenticatedUsers.

Per modificare le autorizzazioni di un bucket Cloud Storage, devi disporre del ruolo IAM Storage Admin.

L'account di servizio Media CDN è di proprietà del progetto Media CDN e non verrà visualizzato nell'elenco degli account di servizio del progetto.

L'account di servizio ha il formato seguente e concede l'accesso solo alle risorse Media CDN nei progetti consentiti in modo esplicito.

service-PROJECT_NUM@gcp-sa-mediaedgefill.iam.gserviceaccount.com

Per concedere l'accesso a Media CDN a un bucket, concedi il ruolo objectViewer all'account di servizio:

gsutil iam ch \
serviceAccount:service-PROJECT_NUM@gcp-sa-mediaedgefill.iam.gserviceaccount.com:objectViewer gs://BUCKET

Per rimuovere tutte le autorizzazioni dal ruolo allUsers per il bucket specificato, esegui questo comando:

gsutil iam ch -d allUsers gs://BUCKET

Per convalidare la rimozione dell'accesso pubblico, apri una finestra in incognito nel browser e prova ad accedere a un oggetto bucket utilizzando https://storage.googleapis.com/BUCKET/object.ext.

Per consentire a EdgeCacheService risorse in un progetto di accedere a un bucket Cloud Storage in un altro progetto, puoi concedere all'account di servizio Media CDN del progetto l'accesso al bucket di archiviazione.

Per farlo, assicurati che PROJECT_NUM in service-PROJECT_NUM@gcp-sa-mediaedgefill.iam.gserviceaccount.com sia il numero del progetto con le risorse EdgeCacheService che richiedono l'accesso. Puoi ripetere questa operazione per più progetti, soprattutto se alcuni di questi ospitano diversi ambienti Media CDN (ad esempio di sviluppo, gestione temporanea o produzione) e un progetto separato contiene gli asset video o multimediali.

Puoi proteggere l'accesso all'origine di Cloud Storage senza abilitare le richieste firmate per quella route.

La configurazione di Cloud Storage privato non impedisce l'accesso diretto ai contenuti memorizzati nella cache da Media CDN. Per informazioni su come inviare richieste firmate a singoli utenti, consulta Richieste firmate.

Configura un bilanciatore del carico delle applicazioni esterno come origine

Se hai bisogno di un controllo di integrità attivo, di un reindirizzamento round-robin o di reindirizzamento sensibile al carico tra origini Compute Engine, GKE o on-premise, puoi configurare un bilanciatore del carico delle applicazioni esterno come origine.

Questo ti consente di configurare, ad esempio, i tuoi pacchetti per la creazione di live streaming dietro Media CDN o un gruppo di proxy Envoy gestiti da Cloud Service Mesh per la connessione alla tua infrastruttura on-premise.

I bilanciatori del carico consentono di configurare i backend per quanto segue:

Un'architettura che combina un'origine del bilanciatore del carico delle applicazioni esterno per la gestione di manifest video e un'origine di Cloud Storage per l'archiviazione dei segmenti è simile alla seguente, con due origini mappate a route diverse.

Deployment della cache perimetrale.
Deployment della cache perimetrale (fai clic per ingrandire).

Per configurare un bilanciatore del carico delle applicazioni esterno come origine, devi creare una risorsa di origine con l'indirizzo IP o il nome host pubblico che rimandi alle regole di forwarding del bilanciatore del carico. È preferibile un nome host pubblico (nome di dominio), poiché è richiesto per un certificato SSL (TLS) e per le versioni HTTP moderne (HTTP/2 e HTTP/3).

Devi inoltre verificare quanto segue:

  • Il bilanciatore del carico ha una route che corrisponde al nome host utilizzato per la risorsa EdgeCacheService o che hai configurato un urlRewrite.hostRewrite per le route in cui il bilanciatore del carico è configurato come origine.
  • Il bilanciatore del carico dispone di un certificato SSL (TLS) pubblicamente attendibile per questi nomi host.

Ad esempio, se il nome di dominio pubblico che punta alla regola di forwarding del bilanciatore del carico è origin-packager.example.com, devi creare un'origine con originAddress impostato su questo nome.

Console

  1. Nella console Google Cloud, vai alla pagina Origini di Media CDN.

    Vai a Origini

  2. Fai clic su Crea origine.

  3. Inserisci un nome per l'origine. Ad esempio: load-balancer-origin.

  4. (Facoltativo) Inserisci una descrizione.

  5. Per Indirizzo di origine, scegli Specifica un FQDN o un indirizzo IP.

  6. Inserisci il nome di dominio completo o l'indirizzo IP del bilanciatore del carico Google Cloud.

  7. (Facoltativo) Seleziona un'origine di failover da provare nel caso in cui questa origine non sia raggiungibile. Puoi aggiornare questo campo in un secondo momento.

  8. Seleziona riprova condizioni.

  9. Per Numero massimo di tentativi, seleziona il numero massimo di tentativi per riempire la cache da questa origine.

  10. (Facoltativo) Specifica i seguenti valori di timeout:

    1. In Timeout connessione, seleziona la durata massima di attesa prima che venga stabilita la connessione dell'origine.
    2. Per Timeout della risposta, seleziona la durata massima per consentire il completamento di una risposta.
    3. In Timeout lettura, seleziona la durata massima di attesa tra le letture di una singola connessione HTTP o di un singolo stream.
  11. (Facoltativo) Fai clic su Aggiungi etichetta e specifica una o più coppie chiave-valore.

  12. Fai clic su Crea origine.

gcloud

Usa il comando gcloud edge-cache origins create:

gcloud edge-cache origins create LB_ORIGIN \
    --origin-address=LB_ADDRESS

Sostituisci quanto segue:

  • LB_ORIGIN: il nome dell'origine
  • LB_ADDRESS: il nome di dominio completo o indirizzo IP, ad esempio origin-packager.example.com

Se utilizzi l'indirizzo IP della regola di forwarding come indirizzo di origine o se non hai un certificato SSL collegato al bilanciatore del carico, puoi impostare il protocollo su HTTP per utilizzare le connessioni non criptate. Ti consigliamo di eseguire questa operazione solo per scopi di sviluppo o test.

Configura failover dell'origine

Le sezioni seguenti mostrano come configurare il comportamento di failover dell'origine.

Failover dell'origine senza reindirizzamento seguente

Di seguito è riportata una configurazione di base di failover EdgeCacheOrigin:

name: FAILOVER_ORIGIN
originAddress: FAILOVER_DOMAIN_NAME

Media CDN esegue un nuovo tentativo sull'origine principale della route per un massimo di tre tempi prima di tentare un'origine di failover. In questa configurazione, dopo aver provato l'origine principale tre volte, Media CDN tenta una singola richiesta a FAILOVER_ORIGIN. Se anche l'origine di failover non riesce a rispondere correttamente, Media CDN restituisce l'intera risposta dell'origine o, se non viene ricevuto alcun codice di stato, una risposta HTTP 502 Bad Gateway.

La latenza di riempimento della cache aumenta in base al numero di nuovi tentativi ed eventi di failover. L'aumento dei valori di timeout dell'origine (ad esempio connectTimeout) influisce ulteriormente sulla latenza di riempimento della cache perché aumenta il tempo di attesa di una risposta da parte di un server di origine sovraccarico o occupato.

L'esempio seguente mostra una configurazione che invia richieste di riempimento a MY_ORIGIN. In base alla configurazione, Media CDN esegue un nuovo tentativo in caso di errori di connessione (ad esempio errori DNS, TCP o TLS), risposte HTTP 5xx dall'origine o HTTP404 Not Found. Dopo due tentativi, viene eseguito il failover su FAILOVER_ORIGIN.

Vengono effettuati al massimo quattro tentativi nelle origini configurate: il tentativo originale più fino a tre tentativi. Puoi configurare un valore maxAttempts per origine al fine di determinare quanti nuovi tentativi vengono eseguiti prima di tentare il failover.

name: MY_ORIGIN
originAddress: DOMAIN_NAME
maxAttempts: 2 # the number of attempts to make before trying the failoverOrigin
failoverOrigin: FAILOVER_ORIGIN
# what conditions trigger a retry or failover
retryConditions:
- CONNECT_FAILURE
- HTTP_5xx # any HTTP 5xx response
- NOT_FOUND # retry on a HTTP 404
timeout:
  maxAttemptsTimeout: 10s # set a deadline for all retries and failover

Se l'origine richiede una riscrittura o una modifica dell'intestazione dell'host specifiche dell'origine, utilizza il seguente esempio di configurazione di originOverrideAction per impostarle:

name: FAILOVER_ORIGIN
originAddress: "FAILOVER_ORIGIN_HOST"
originOverrideAction:
  urlRewrite:
    hostRewrite: "FAILOVER_ORIGIN_HOST"
  headerAction:
    requestHeadersToAdd:
    - headerName: "Authorization"
      headerValue: "AUTH-KEY"
      replace: true

Di seguito è riportata una configurazione completata:

name: MY_ORIGIN
originAddress: DOMAIN_NAME
maxAttempts: 2 # the number of attempts to make before trying the failoverOrigin
failoverOrigin: FAILOVER_ORIGIN
# what conditions trigger a retry or failover
retryConditions:
- CONNECT_FAILURE
- HTTP_5xx # any HTTP 5xx response
- NOT_FOUND # retry on a HTTP 404
timeout:
  maxAttemptsTimeout: 10s # set a deadline for all retries and failover
name: FAILOVER_ORIGIN
originAddress: "FAILOVER_ORIGIN_HOST"
originOverrideAction:
  urlRewrite:
    hostRewrite: "FAILOVER_ORIGIN_HOST"
  headerAction:
    requestHeadersToAdd:
    - headerName: "Authorization"
      headerValue: "AUTH-KEY"
      replace: true

Nell'esempio precedente, l'impostazione originOverrideAction.hostRewrite ha la precedenza su qualsiasi riscrittura delle intestazioni esistente configurata sulle route che puntano a questa origine.

Puoi utilizzare requestHeadersToAdd intestazioni univoche per origine richieste da quella particolare origine. Un caso d'uso comune aggiunge intestazioni Authorization statiche. Poiché queste manipolazioni delle intestazioni vengono eseguite durante la richiesta di origine, le intestazioni aggiunte per origine sostituiscono o aggiungono alle intestazioni esistenti con lo stesso nome campo. Per impostazione predefinita, Media CDN esegue l'aggiunta alle intestazioni esistenti. Per sostituire le intestazioni esistenti, imposta headerAction.replace su true.

Failover dell'origine con reindirizzamento seguente

Ad esempio, supponi di aver configurato le seguenti risorse EdgeCacheOrigin e che le route della risorsa EdgeCacheService siano configurate in modo da utilizzare PrimaryOrigin per il riempimento della cache:

name: PrimaryOrigin
originAddress: "primary.example.com"
maxAttempts: 2
failoverOrigin: "SecondaryOrigin"
retryConditions: [CONNECT_FAILURE]
originRedirect:
  redirectConditions: [FOUND, TEMPORARY_REDIRECT]
name: SecondaryOrigin
originAddress: "secondary.example.com"
maxAttempts: 3
originRedirect:
  redirectConditions: [FOUND, TEMPORARY_REDIRECT]

In questo esempio, quando Media CDN esegue un riempimento della cache, Media CDN legge la configurazione di PrimaryOrigin e risponde di conseguenza.

Supponiamo che Media CDN si connetta a primary.example.com nel tentativo n. 1 di contattare l'origine. Se primary.example.com restituisce una risposta positiva, Media CDN utilizza questa risposta per il riempimento della cache.

Supponiamo ora che primary.example.com restituisca un 302 Found Redirect HTTP a Location: b.example.com. Quindi, nel tentativo n. 2 di contattare l'origine, Media CDN segue il reindirizzamento a b.example.com. In questo caso, Media CDN esegue le seguenti operazioni:

  • Se b.example.com restituisce una risposta positiva, Media CDN la utilizza per il riempimento della cache.
  • Se b.example.com restituisce un reindirizzamento o una risposta di errore, Media CDN esegue il failover sul SecondaryOrigin configurato. Questo perché, in questo esempio, PrimaryOrigin è configurato per due maxAttempts.

Se Media CDN esegue il failover su SecondaryOrigin, Media CDN utilizza la configurazione SecondaryOrigin e tenta di connettersi a secondary.example.com. Si tratta del tentativo n. 1 di contattare l'origine e del 3 in generale.

In questo caso, Media CDN esegue le seguenti operazioni:

  • Se secondary.example.com restituisce una risposta positiva, Media CDN utilizza questa risposta per il riempimento della cache.
  • Se secondary.example.com restituisce un 302 Found Redirect HTTP a Location: c.example.com, Media CDN tenta di contattare c.example.com. In questo esempio, si tratta del tentativo 2 per SecondaryOrigin e del tentativo 4 complessivo.

Se il tentativo di contattare c.example.com restituisce una risposta riuscita, Media CDN utilizza questa risposta per il riempimento della cache. Se il tentativo restituisce un reindirizzamento che Media CDN è configurato per seguire, Media CDN restituisce un errore HTTP 502 Bad Gateway perché ha esaurito il numero massimo di tentativi di contattare un'origine. Media CDN effettua al massimo quattro tentativi in tutte le origini, indipendentemente dalle configurazioni di EdgeCacheOrigin. Infine, se Media CDN non riesce a contattare c.example.com, Media CDN restituisce una risposta 504 Gateway Timeout o 502 Bad Gateway.

Se hai bisogno del controllo di integrità, del round robin o del reindirizzamento con riconoscimento del carico tra origini, puoi configurare un bilanciatore del carico delle applicazioni esterno come origine principale.

Configura i seguenti reindirizzamenti delle origini

Media CDN supporta i seguenti reindirizzamenti restituiti dalla tua origine internamente durante il riempimento della cache, anziché restituire le risposte di reindirizzamento direttamente al client. Se Media CDN è configurato per seguire i reindirizzamenti delle origini, Media CDN recupera i contenuti dalla posizione di reindirizzamento prima di memorizzare nella cache e restituire la risposta reindirizzata al client. Media CDN segue i reindirizzamenti tra domini.

Come best practice, configura il reindirizzamento delle origini solo per le origini che ritieni attendibili e controllate. Assicurati di considerare attendibile ogni origine in una catena di reindirizzamento, perché ognuna produce contenuti pubblicati da EdgeCacheService.

Per abilitare i seguenti reindirizzamenti delle origini, aggiungi la configurazione seguente alla risorsa EdgeCacheOrigin:

name: MY_ORIGIN
originAddress: "DOMAIN_NAME"
maxAttempts: 2
originRedirect:
  redirectConditions: [FOUND, TEMPORARY_REDIRECT]

Media CDN utilizza il protocollo specificato nei reindirizzamenti per raggiungere tutti i server. Assicurati che tutti i server a cui Media CDN possa essere reindirizzato per supportare i protocolli richiesti. In particolare, se il protocollo è impostato su HTTPS, HTTP/2 o HTTP/3, Media CDN non utilizza le connessioni HTTP/1.1 per seguire i reindirizzamenti non sicuri. L'intestazione host inviata all'origine reindirizzata corrisponde all'URL reindirizzato. Media CDN segue un singolo reindirizzamento per EdgeCacheOrigin tentativo prima di restituire la risposta finale o di valutare le condizioni di nuovo tentativo o failover.

L'impostazione redirectConditions specifica quali codici di risposta HTTP fanno sì che Media CDN segua un reindirizzamento per ogni origine.

Condizione Descrizione
MOVED_PERMANENTLY Segui il reindirizzamento per il codice di risposta HTTP 301
FOUND Segui il reindirizzamento per il codice di risposta HTTP 302
SEE_OTHER Segui il reindirizzamento per il codice di risposta HTTP 303
TEMPORARY_REDIRECT Segui il reindirizzamento per il codice di risposta HTTP 307
PERMANENT_REDIRECT Segui il reindirizzamento per il codice di risposta HTTP 308

Risoluzione dei problemi relativi alle origini

Se un'origine non si comporta come previsto, scopri come risolvere i problemi relativi alle origini.

Passaggi successivi