Configura l'archiviazione di oggetti di terze parti

Puoi utilizzare un backend esterno quando i contenuti sono ospitati on-premise o in un altro cloud. Il backend esterno ti consente di pubblicare i contenuti con Cloud CDN.

Questo documento illustra la procedura di configurazione di un oggetto di terze parti come Amazon Simple Storage Service (Amazon S3) o Azure Blob Storage, come server per Cloud CDN. I backend esterni e Cloud CDN funzionano con un bilanciatore del carico delle applicazioni esterno.

Architettura

Per creare il backend esterno, crea un gruppo di endpoint di rete internet (NEG) che punti al servizio di archiviazione di terze parti come backend per il bilanciatore del carico. NEG internet per i backend esterni.

Per configurare il bucket di archiviazione di terze parti come backend, devi seguire questi passaggi:

  1. Prepara il bucket di archiviazione di terze parti per la pubblicazione dei contenuti.
  2. Crea un NEG internet che utilizza il nome di dominio completo del bucket.
  3. Configura il bilanciatore del carico delle applicazioni esterno con il NEG internet come di un backend cloud.
  4. Testa la configurazione.

Prepara il bucket per la pubblicazione dei contenuti

Prima di iniziare la configurazione in Google Cloud, assicurati che il bucket sia configurato correttamente. Queste istruzioni presuppongono l'utilizzo di una del bucket Amazon S3 e di disporre delle autorizzazioni necessarie per apportare modifiche al il bucket Amazon S3 e gli oggetti.

  1. Assicurati che Il bucket Amazon S3 e gli oggetti al suo interno sono pubblici o che hai configurato autenticazione dell'origine privata per il bucket Amazon S3.

  2. Assicurati che i contenuti soddisfino i requisiti di memorizzazione nella cache elencati in Contenuti memorizzabili nella cache. Se devi aggiungere metadati degli oggetti, consulta la knowledge base di AWS, ad esempio Modifica dei metadati degli oggetti.

  3. Quando configuri, avrai bisogno dell'endpoint del bucket Amazon S3 (il nome di dominio completo) dal NEG internet. Per ottenere le informazioni dell'endpoint, segui le istruzioni fornite nella knowledge base AWS, ad esempio Accesso a un bucket. Puoi anche ottenere l'URL dell'endpoint Amazon S3 dalla pagina Panoramica dell'oggetto.

Crea un NEG internet che utilizza il nome host del bucket

Per semplicità, questo esempio utilizza il nome di dominio completo backend.example.com. Assicurati di sostituirlo con il FQDN del bucket di archiviazione di terze parti, che potrebbe avere un aspetto simile a http://unique-name-bucket.s3-us-west-1.amazonaws.com/.

Questa guida utilizza un esempio per descrivere le nozioni di base dell'utilizzo di un modello di (a volte denominato origine personalizzata) in un bilanciatore del carico delle applicazioni esterno. Un il backend esterno è un endpoint esterno a Google Cloud. Quando utilizzi un backend esterno con un bilanciatore del carico delle applicazioni esterno, puoi migliorare il rendimento utilizzando la memorizzazione nella cache di Cloud CDN.

La guida illustra i passaggi per configurare un bilanciatore del carico delle applicazioni esterno globale con un Servizio di backend abilitato per Cloud CDN che esegue il proxy server di backend esterno in backend.example.com.

In questo esempio, il bilanciatore del carico accetta le richieste HTTPS dai client proxy queste richieste come HTTPS al backend esterno. Questo esempio presuppone che il backend esterno supporti HTTPS.

Altre opzioni sono la configurazione di un bilanciatore del carico per accettare HTTP o HTTPS e utilizzare HTTPS durante il proxy delle richieste al backend esterno.

Questa guida presuppone che tu abbia già configurato un bilanciatore del carico aggiungendo un nuovo backend esterno. Per ulteriori informazioni, vedi Configura un bilanciatore del carico delle applicazioni classico con un gruppo di istanze gestite di backend.

La figura 1 mostra un'architettura di esempio.

Figura 1. Caso d'uso dei bucket S3 per i backend esterni.
Figura 1. caso d'uso dei bucket S3 per i backend esterni.

Nel diagramma, www.example.com ha un frontend del bilanciatore del carico con l'IP indirizzo 120.1.1.1. In caso di fallimento della cache, l'utente richiede I file /cart/id/1223515 vengono recuperati dal backend esterno tramite HTTPS. Tutti mentre l'altro traffico in entrata viene indirizzato al backend di Google Cloud con le VM di Compute Engine o il bucket di backend, in base Mappa URL.

Prima di iniziare

Prima di seguire questa guida, acquisisci familiarità con i seguenti argomenti:

Autorizzazioni

Per seguire questa guida, devi creare un endpoint di rete internet gruppo (NEG) e creare o modificare un bilanciatore del carico delle applicazioni esterno in un progetto. Devi essere il proprietario o il proprietario di un progetto Editor oppure dovresti avere entrambe le i seguenti ruoli IAM di Compute Engine.

Attività Ruolo richiesto
Creare e modificare i componenti del bilanciatore del carico Amministratore rete
Creare e modificare i NEG Amministratore istanze Compute

Configurare un bilanciatore del carico con un backend esterno

Questa sezione mostra come configurare e testare un NEG internet.

Panoramica della configurazione

La configurazione di un NEG internet comporta quanto segue:

  • Definizione dell'endpoint internet in un NEG internet.
  • Aggiunta di un NEG internet come backend di un servizio di backend.
  • Definisci il traffico utente da mappare a questo servizio di backend configurando la mappa URL del bilanciatore del carico delle applicazioni esterno.
  • Inserire gli intervalli IP necessari nella lista consentita.

Questo esempio crea le seguenti risorse:

  • Una regola di forwarding con l'indirizzo IP 120.1.1.1 indirizza le richieste in arrivo a un proxy di destinazione.
    • Il networkTier della regola di inoltro deve essere PREMIUM.
  • Il proxy di destinazione controlla ogni richiesta a fronte della mappa URL per determinare il servizio di backend più appropriato per la richiesta.
    • Per i backend esterni, il proxy di destinazione deve essere TargetHttpProxy o TargetHttpsProxy. Questo nell'esempio utilizza TargetHttpsProxy.
  • Cloud CDN abilitato (facoltativo) sul servizio di backend consente nella cache e nella gestione delle risposte dalle cache di Cloud CDN.
  • Questo esempio include un personalizzato intestazione, necessaria quando il backend esterno prevede particolare per l'intestazione Host della richiesta HTTP.

La configurazione è simile alla seguente.

Figura 2. Cloud CDN con backend di un bucket Amazon S3.
Figura 2. Cloud CDN con backend di un bucket Amazon S3.

Crea il NEG e l'endpoint internet

Console

  1. Nella console Google Cloud, vai alla pagina Gruppi di endpoint di rete.

    Vai a Gruppi di endpoint di rete

  2. Fai clic su Crea gruppo di endpoint di rete.
  3. Inserisci il nome del gruppo di endpoint di rete: example-fqdn-neg.
  4. In Tipo di gruppo di endpoint di rete, seleziona Rete gruppo di endpoint (Internet).
  5. In Porta predefinita, inserisci 443.
  6. Per Nuovo endpoint di rete, seleziona Nome di dominio completo e predefinita.
  7. Per il nome di dominio completo, inserisci backend.example.com.
  8. In Tipo di porta, seleziona Predefinito e verifica che Numero porta sia 443.
  9. Fai clic su Crea.

gcloud

  1. Crea un NEG internet e imposta --network-endpoint-type su internet-fqdn-port (il nome host e la porta dove il backend esterno può essere raggiunto):

    gcloud compute network-endpoint-groups create example-fqdn-neg \
        --network-endpoint-type="internet-fqdn-port" --global
    
  2. Aggiungi il tuo endpoint al NEG. Se non viene specificata una porta, la porta la selezione predefinita è la porta 80 (HTTP) o 443 (HTTPS; HTTP/2), a seconda sul protocollo configurato nel servizio di backend. Assicurati di includere il flag --global:

    gcloud compute network-endpoint-groups update example-fqdn-neg \
        --add-endpoint="fqdn=backend.example.com,port=443" \
        --global
    
  3. Elenca il NEG internet creato:

    gcloud compute network-endpoint-groups list --global
    

    Output:

    NAME                LOCATION   ENDPOINT_TYPE        SIZE
    example-fqdn-neg    global     INTERNET_FQDN_PORT   1
    

  4. Elenca l'endpoint all'interno di quel NEG:

    gcloud compute network-endpoint-groups list-network-endpoints example-fqdn-neg \
        --global
    

    Output:

    INSTANCE   IP_ADDRESS   PORT   FQDN
                                   backend.example.com
    

Aggiungere un backend esterno a un bilanciatore del carico

L'esempio seguente aggiorna un bilanciatore del carico esistente.

Nel bilanciatore del carico esistente, il servizio predefinito è Google Cloud completamente gestito di Google Cloud. L'esempio modifica la mappa URL esistente aggiungendo un'espressione di corrispondenza del percorso che invia tutte le richieste per cart/id/1223515 al servizio di backend images, associato al NEG di internet.

Console

Crea il servizio di backend e aggiungi il NEG internet

  1. Nella console Google Cloud, vai alla pagina Bilanciamento del carico.

    Vai a Bilanciamento del carico

  2. Per aggiungere il servizio di backend a un bilanciatore del carico esistente, seleziona il bilanciatore del carico delle applicazioni classico, fai clic Menu, e poi seleziona Modifica.
  3. Fai clic su Configurazione backend.
  4. Nella sezione Servizi di backend e dei bucket di backend, seleziona Crea un servizio di backend.
  5. Imposta il nome del servizio di backend su images.
  6. In Tipo di backend, seleziona Gruppo di endpoint di rete internet.
  7. Seleziona il protocollo che intendi utilizzare dal bilanciatore del carico al NEG internet. Per questo esempio, seleziona HTTPS.
  8. In Nuovo backend > Gruppo di endpoint di rete internet, seleziona example-fqdn-neg, quindi fai clic su Fine.
  9. Seleziona Abilita Cloud CDN.
  10. (Facoltativo) Modifica la modalità cache e Impostazioni TTL.
  11. In Configurazioni avanzate, fai clic su Aggiungi intestazione in Intestazioni delle richieste personalizzate.
    1. In Nome intestazione, inserisci Host.
    2. In Valore intestazione, inserisci backend.example.com.
  12. Fai clic su Crea.
  13. Tieni la finestra aperta per continuare.

Collega il servizio di backend a una mappa URL esistente

  1. Fai clic su Regole host e percorso.
  2. La prima o le prime righe contengono i servizi Google Cloud nella colonna di destra e una di queste è già compilata con la regola predefinitaAny unmatched (default) per Host e Percorsi.
  3. Assicurati che nella colonna di destra sia selezionata una riga con images. Se non esiste, fai clic su Aggiungi regola host e percorso e seleziona images. Compila gli altri campi come segue:
    1. In Host, inserisci *.
    2. In Percorsi, inserisci /cart/id/1223515.

Esamina e finalizza

  1. Fai clic su Esamina e finalizza.
  2. Confronta le impostazioni con ciò che intendevi creare.
  3. Se è tutto corretto, fai clic su Aggiorna.

gcloud

  1. Crea un nuovo servizio di backend per il NEG:

    gcloud compute backend-services create images \
       --global \
       --enable-cdn \
       --cache-mode=CACHE_MODE \
       --protocol=HTTP2
    

    Imposta la modalità cache sostituendo CACHE_MODE con uno dei seguenti:

    • CACHE_ALL_STATIC: memorizza automaticamente nella cache dati statici contenuti

    • USE_ORIGIN_HEADERS (predefinito): richiede che l'origine sia impostata su valido di memorizzazione nella cache per memorizzare i contenuti nella cache

    • FORCE_CACHE_ALL: memorizza nella cache tutti i contenuti, ignorando eventuali private, Istruzioni no-store o no-cache nella risposta Cache-Control intestazioni

  2. Configura il servizio di backend per aggiungere l'intestazione della richiesta personalizzata Host: backend.example.com alla richiesta:

    gcloud compute backend-services update images \
       --custom-request-header "Host: backend.example.com" --global
    
  3. Utilizza il comando backend-services add-backend per aggiungere il NEG internet al servizio di backend:

    gcloud compute backend-services add-backend images \
      --network-endpoint-group "example-fqdn-neg" \
      --global-network-endpoint-group \
      --global
    
  4. Collega il nuovo servizio di backend alla mappa URL del bilanciatore del carico creando una nuova regola di corrispondenza per indirizzare le richieste a quel backend:

    gcloud compute url-maps add-path-matcher EXAMPLE_URL_MAP \
      --default-service=GCP_SERVICE_EXAMPLE \
      --path-matcher-name=CUSTOM_ORIGIN_PATH_MATCHER_EXAMPLE \
      --backend-service-path-rules=/CART/ID/1223515=IMAGES
    

    Sostituisci quanto segue:

    • EXAMPLE_URL_MAP: il nome del tuo esistente Mappa URL
    • GCP_SERVICE_EXAMPLE: il nome di un elemento esistente servizio di backend predefinito
    • CUSTOM_ORIGIN_PATH_MATCHER_EXAMPLE: il nome di questa nuova regola percorso,
    • /CART/ID/1223515: il percorso
    • IMAGES: il nome del nuovo servizio di backend con il NEG internet collegato

Aggiungi alla lista consentita gli intervalli IP necessari

Per consentire a un bilanciatore del carico delle applicazioni esterno di inviare richieste al NEG internet, devi esegui una query sul record TXT DNS _cloud-eoips.googleusercontent.com usando uno strumento come dig o nslookup.

Ad esempio, esegui questo comando dig:

dig TXT _cloud-eoips.googleusercontent.com | grep -Eo 'ip4:[^ ]+' | cut -d':' -f2

L'output contiene due intervalli IP, come segue:

34.96.0.0/20
34.127.192.0/18

Prendi nota degli intervalli IP e assicurati che siano consentiti dal firewall o dall'elenco di controllo dell'accesso (ACL) cloud.

Per ulteriori informazioni, consulta la sezione Autenticazione richieste.

Connetti il tuo dominio al bilanciatore del carico

Dopo aver creato il bilanciatore del carico, prendi nota dell'indirizzo IP associato dal bilanciatore del carico, ad esempio 30.90.80.100. Per puntare il dominio verso bilanciatore del carico, crea un record A utilizzando il servizio di registrazione del dominio. Se hai aggiunto più domini al tuo certificato SSL, devi aggiungere un record A per ciascuno, che rimandi all'indirizzo IP del bilanciatore del carico. Ad esempio, per crea record A per www.example.com e example.com, usa quanto segue:

NAME                  TYPE     DATA
www                   A        30.90.80.100
@                     A        30.90.80.100

Se utilizzi Cloud DNS come provider DNS, consulta Aggiungere, modificare ed eliminare i record.

Testa il bilanciatore del carico delle applicazioni esterno

Ora che hai configurato il bilanciatore del carico, puoi iniziare a inviare all'indirizzo IP del bilanciatore del carico. Se hai configurato un dominio, puoi anche inviare traffico al nome di dominio. Tuttavia, la propagazione DNS può richiedere del tempo per essere completata, quindi puoi iniziare utilizzando l'indirizzo IP per i test.

  1. Nella console Google Cloud, vai alla pagina Bilanciamento del carico.

    Vai a Bilanciamento del carico

  2. Fai clic sul bilanciatore del carico che hai appena creato.

  3. Prendi nota dell'indirizzo IP del bilanciatore del carico.

  4. Se hai creato un bilanciatore del carico HTTP, puoi testarlo utilizzando un browser web all'indirizzo http://IP_ADDRESS. Sostituisci IP_ADDRESS con indirizzo IP del bilanciatore del carico. Tu deve essere indirizzato alla home page del servizio helloworld.

    Se hai creato un bilanciatore del carico HTTPS, puoi testarlo utilizzando un browser web all'indirizzo https://IP_ADDRESS. Sostituisci IP_ADDRESS con indirizzo IP del bilanciatore del carico. Tu deve essere indirizzato alla home page del servizio helloworld.

    Se non funziona e utilizzi un certificato gestito da Google, verifica che lo stato della risorsa del certificato sia ATTIVO. Per ulteriori informazioni informazioni, consulta Risorsa del certificato SSL gestito da Google .

    In alternativa, puoi utilizzare curl dalla riga di comando della tua macchina locale. Sostituisci IP_ADDRESS con l'indirizzo IPv4 del bilanciatore del carico.

    Se utilizzi un certificato gestito da Google, testa il dominio che rimanda a all'indirizzo IP del bilanciatore del carico. Ad esempio:

    curl -s 'https://www.example.com:443' --resolve www.example.com:443:IP_ADDRESS
    

  5. (Facoltativo) Se utilizzi un dominio personalizzato, potresti dover attendere il ha aggiornato le impostazioni DNS per la propagazione. Quindi, testa il tuo dominio (ad esempio backend.example.com) nel browser web.

    Per assistenza con la risoluzione dei problemi, vedi Risoluzione dei problemi relativi a backend esterno e internet Problemi relativi al NEG.

Testa Cloud CDN

Test 1: collegamento diretto all'endpoint del bucket

Questo test utilizza i comandi time e wget da una VM. L'esempio scarica /cart/id/1223515/image.jpg dal bucket backend.example.com.

Dall'output, puoi vedere che la richiesta complessiva richiede 780 ms. Questo è il per recuperare un'immagine di 3,3 MB direttamente da Amazon S3.

time wget backend.example.com/cart/id/1223515/image.jpg
--2020-06-26 18:22:46--  backend.example.com/cart/id/1223515/image.jpg
Resolving backend.example.com (backend.example.com)... 52.219.120.233
Connecting to backend.example.com (backend.example.com)|52.219.120.233|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 3447106 (3.3M) [image/jpeg]
Saving to: '/cart/id/1223515/image.jpg.47'
/cart/id/1223515/image.jpg.47                                                 100%[==============================================================================================================================================>]   3.29M  6.25MB/s    in 0.5s
2020-06-26 18:22:47 (6.25 MB/s) - '/cart/id/1223515/image.jpg.47' saved [3447106/3447106]
real    0m0.780s
user    0m0.003s
sys     0m0.012s

Test 2: prima richiesta tramite Cloud CDN

Questo test utilizza l'indirizzo IP del bilanciatore del carico per recuperare /cart/id/1223515/image.jpg. Poiché questa è la prima richiesta, dovrebbe essere un'errore e Cloud CDN dovrebbe recuperare l'immagine dall'origine, è Amazon S3. Dall'output, puoi vedere che la richiesta ha richiesto 844 ms.

time wget http://LOAD_BALANCER_IP_ADDRESS/cart/id/1223515/image.jpg
--2020-06-26 18:19:27--  http://LOAD_BALANCER_IP_ADDRESS/cart/id/1223515/image.jpg
Connecting to LOAD_BALANCER_IP_ADDRESS:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 3447106 (3.3M) [image/jpeg]
Saving to: '/cart/id/1223515/image.jpg.44'
/cart/id/1223515/image.jpg.44                                                 100%[==============================================================================================================================================>]   3.29M  8.23MB/s    in 0.4s
2020-06-26 18:19:28 (8.23 MB/s) - '/cart/id/1223515/image.jpg.44' saved [3447106/3447106]
real    0m0.844s
user    0m0.003s
sys     0m0.012s

Test 3: seconda richiesta tramite CDN

Ora effettueremo un'altra richiesta utilizzando l'IP del bilanciatore del carico. Questa volta dovrebbe ricevere una risposta memorizzata nella cache, quindi dovrebbe essere più veloce dei primi due test.

Stiamo nuovamente utilizzando lo stesso IP LB LOAD_BALANCER_IP_ADDRESS. Da vediamo che la richiesta ha richiesto solo 18 ms.

time wget http://LOAD_BALANCER_IP_ADDRESS/cart/id/1223515/image.jpg
--2020-06-26 18:19:29--  http://LOAD_BALANCER_IP_ADDRESS/cart/id/1223515/image.jpg
Connecting to LOAD_BALANCER_IP_ADDRESS:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 3447106 (3.3M) [image/jpeg]
Saving to: '/cart/id/1223515/image.jpg.45'
/cart/id/1223515/image.jpg.45                                                 100%[==============================================================================================================================================>]   3.29M  --.-KB/s    in 0.008s
2020-06-26 18:19:29 (423 MB/s) - '/cart/id/1223515/image.jpg.45' saved [3447106/3447106]
real    0m0.018s
user    0m0.001s
sys     0m0.010s

Verifica mediante i log

I log di Cloud CDN sono associati al bilanciatore del carico delle applicazioni esterno a cui sono collegati i backend abilitati per Cloud CDN. Utilizzando i log, puoi verificare se una richiesta è un successo o un fallimento. Puoi scoprire di più Log di Cloud CDN in Visualizzazione dei log.

Limitazioni

  • Il bucket di terze parti e gli oggetti devono essere pubblici. In alternativa, puoi di mantenere privati il bucket e gli oggetti se configuri l'autenticazione dell'origine privata. I backend esterni non supportano altri metodi per l'autenticazione dei contenuti, come o cookie firmati.

  • Quando utilizzi un servizio di backend esterno che prevede un determinato valore per l'intestazione Host della richiesta HTTP, devi configurare il servizio di backend in modo da impostare l'intestazione Host sul valore previsto. Se non configuri un cluster richiesta, un servizio di backend conserva l'intestazione Host che utilizzato per la connessione al bilanciatore del carico delle applicazioni esterno di Google Cloud. Per informazioni generali sulle intestazioni personalizzate, consulta Configura le intestazioni delle richieste personalizzate. Per un esempio specifico, vedi Configurazione di un bilanciatore del carico con un backend esterno.

Passaggi successivi