Configurare un backend esterno

Questa guida utilizza un esempio per insegnare le nozioni di base sull'utilizzo di un backend esterno (a volte chiamato origine personalizzata) in un bilanciatore del carico HTTP(S) esterno. Un backend esterno è un endpoint esterno a Google Cloud. Quando utilizzi un backend esterno con un bilanciatore del carico HTTP(S) esterno, puoi migliorare le prestazioni utilizzando la memorizzazione nella cache di Cloud CDN.

I backend esterni non sono supportati con il bilanciatore del carico HTTP(S) esterno globale con funzionalità di gestione avanzata del traffico. Puoi utilizzare i backend esterni solo con il bilanciatore del carico HTTP(S) esterno globale (classico).

La guida illustra come configurare un bilanciatore del carico HTTP(S) esterno globale con un servizio di backend abilitato per Cloud CDN che esegue il proxy a un server di backend esterno all'indirizzo backend.example.com.

Nell'esempio, il bilanciatore del carico accetta le richieste HTTPS da client e le invia come HTTP/2 al backend esterno. In questo esempio si presuppone che il backend esterno supporti HTTP/2.

Altre opzioni sono quelle di configurare un bilanciatore del carico per accettare richieste HTTP o HTTP/2 e utilizzare HTTPS quando si eseguono il proxy delle richieste al backend esterno.

Questa guida presuppone che tu abbia già configurato un bilanciatore del carico e che stia aggiungendo un nuovo backend esterno.

Un'architettura di esempio ha il seguente aspetto:

Caso d'uso tipico per i backend esterni
Caso d'uso tipico per i backend esterni

Nel diagramma, www.example.com ha un frontend del bilanciatore del carico con l'indirizzo IP 120.1.1.1. In caso di fallimento della cache, le richieste degli utenti per /cart/id/1223515 vengono recuperate dal backend esterno tramite HTTP/2. Tutto il resto del traffico in entrata è diretto al servizio di backend Google Cloud con le VM di Compute Engine o al bucket di backend, in base alla mappa URL.

Prima di iniziare

Prima di seguire questa guida, acquisisci familiarità con quanto segue:

Autorizzazioni

Per seguire questa guida, devi creare un NEG Internet e creare o modificare un bilanciatore del carico HTTP(S) esterno in un progetto. Devi essere proprietario o editor del progetto oppure devono disporre di entrambi i ruoli IAM di Compute Engine elencati di seguito.

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

Configurazione di un bilanciatore del carico con un backend esterno

Questa guida illustra 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.
  • Aggiungere un NEG Internet come backend a un servizio di backend.
  • Definisci il traffico utente da mappare a questo servizio di backend configurando la mappa URL del bilanciatore del carico HTTP(S) esterno.
  • Inclusione degli intervalli IP necessari nella lista consentita.

Nell'esempio vengono create le seguenti risorse:

  • Una regola di forwarding con indirizzo IP 120.1.1.1 indirizza le richieste in arrivo a un proxy di destinazione.
    • Il networkTier della regola di forwarding deve essere PREMIUM.
  • Il proxy di destinazione controlla ogni richiesta a fronte della mappa URL per determinare il servizio di backend appropriato per la richiesta.
    • Per i backend esterni, il proxy di destinazione deve essere TargetHttpProxy o TargetHttpsProxy. In questo esempio viene utilizzato TargetHttpsProxy.
  • L'abilitazione di Cloud CDN (facoltativa) nel servizio di backend consente la memorizzazione nella cache e la gestione delle risposte dalle cache di Cloud CDN.
  • Questo esempio include un'intestazione della richiesta definita dall'utente, necessaria quando il backend esterno prevede un valore specifico per l'intestazione Host della richiesta HTTP.

La configurazione ha questo aspetto:

Cloud CDN con backend on-premise
Cloud CDN con backend on-premise

Creazione del NEG e dell'endpoint Internet

Console

  1. In Google Cloud Console, vai alla pagina Gruppi di endpoint di rete.

    Vai alla pagina 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 Gruppo di endpoint di rete (Internet).
  5. In Porta predefinita, inserisci 443.
  6. In Nuovo endpoint di rete, seleziona Nome di dominio e porta completi.
  7. Per il nome di dominio completo, inserisci backend.example.com.
  8. In Tipo di porta, seleziona Predefinito e verifica che Numero di 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 a cui è possibile raggiungere il backend esterno):

    gcloud compute network-endpoint-groups create example-fqdn-neg \
        --network-endpoint-type="internet-fqdn-port" --global
    
  2. Aggiungi l'endpoint al NEG. Se una porta non è specificata, la selezione della porta predefinita è la porta 80 (HTTP) o 443 (HTTPS; HTTP/2), a seconda del 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
    

Aggiunta di un backend esterno a un bilanciatore del carico

Il seguente esempio aggiorna un bilanciatore del carico esistente.

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

Console

Crea il servizio di backend e aggiungi il NEG Internet

  1. In Google Cloud Console, vai alla pagina Bilanciamento del carico.

    Vai alla pagina Bilanciamento del carico

  2. Per aggiungere il servizio di backend a un bilanciatore del carico esistente, seleziona il bilanciatore del carico HTTP(S) esterno, fai clic su Menu e seleziona Modifica.
  3. Fai clic su Configurazione backend.
  4. Nel menu a discesa Crea o seleziona servizi di backend e bucket di backend, seleziona Servizi di backend > 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 HTTP/2.
  8. In Nuovo backend > Gruppo di endpoint di rete Internet, seleziona example-fqdn-neg, quindi fai clic su Fine.
  9. Seleziona Attiva Cloud CDN.
  10. (Facoltativo) Modifica le impostazioni di modalità cache e TTL.
  11. In Configurazioni avanzate, in Intestazioni delle richieste personalizzate, fai clic su Aggiungi intestazione.
    1. In Nome intestazione, inserisci Host.
    2. In Valore intestazione, inserisci backend.example.com.
  12. Fai clic su Crea.
  13. Per continuare, tieni aperta la finestra.

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 servizi Google Cloud nella colonna destra e una di queste è già compilata con la regola predefinita Any unmatched (default) per host e percorsi.
  3. Assicurati che sia presente una riga con images selezionato nella colonna a destra. 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 volevi creare.
  3. Se sembra tutto corretto, fai clic su Crea per creare il bilanciatore del carico HTTP(S) esterno.

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 una delle seguenti:

    • CACHE_All_STATIC: memorizza automaticamente nella cache i contenuti statici.

    • USE_ORIGIN_HEADERS (valore predefinito): richiede l'origine per impostare intestazioni di cache valide per memorizzare i contenuti nella cache.

    • FORCE_CACHE_ALL: memorizza nella cache tutti i contenuti, ignorando eventuali istruzioni private, no-store o no-cache nelle intestazioni delle risposte Cache-Control.

  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. Usa 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. Associa il nuovo servizio di backend alla mappa URL del bilanciatore del carico creando una nuova regola di corrispondenza per indirizzare le richieste a tale 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: nome della mappa URL esistente
    • GCP_SERVICE_EXAMPLE: il nome di un servizio di backend predefinito esistente
    • CUSTOM_ORIGIN_PATH_MATCHER_EXAMPLE: il nome di questa nuova regola del percorso
    • /CART/ID/1223515: il percorso
    • IMAGES: il nome del nuovo servizio di backend con il NEG Internet collegato

Inclusione nella lista consentita degli intervalli IP necessari

Per consentire a un bilanciatore del carico HTTP(S) esterno di inviare richieste al NEG Internet, devi eseguire una query sul record TXT DNS _cloud-eoips.googleusercontent.com utilizzando uno strumento come dig o nslookup.

Ad esempio, esegui il comando dig seguente:

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

Tieni presente gli intervalli IP e assicurati che questi intervalli siano consentiti dal firewall o dall'elenco di controllo di accesso al cloud (ACL).

Per ulteriori informazioni, consulta la sezione Richieste di autenticazione.

Collegare il dominio al bilanciatore del carico

Dopo aver creato il bilanciatore del carico, annota l'indirizzo IP associato al bilanciatore del carico, ad esempio 30.90.80.100. Per indirizzare il tuo dominio al bilanciatore del carico, crea un record A utilizzando il servizio di registrazione del dominio. Se hai aggiunto più domini al certificato SSL, devi aggiungere un record A per ciascuno, il tutto puntando all'indirizzo IP del bilanciatore del carico. Ad esempio, per creare record A per www.example.com e example.com:

NAME                  TYPE     DATA
www                   A        30.90.80.100
@                     A        30.90.80.100

Se utilizzi Google Domains, visita la pagina della guida di Google Domains per ulteriori informazioni.

Test del bilanciatore del carico HTTP(S) esterno

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

  1. Vai alla pagina Bilanciamento del carico in Google Cloud Console.
    Vai alla pagina Bilanciamento del carico
  2. Fai clic sul bilanciatore del carico 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 visitando la pagina http://IP_ADDRESS. Sostituisci IP_ADDRESS con l'indirizzo IP del bilanciatore del carico. Dovrebbe aprirsi la home page del servizio helloworld.

    Se hai creato un bilanciatore del carico HTTPS, puoi testarlo utilizzando un browser web dalla pagina https://IP_ADDRESS. Sostituisci IP_ADDRESS con l'indirizzo IP del bilanciatore del carico. Dovrebbe aprirsi la home page del servizio helloworld.

    Se non funziona e stai utilizzando un certificato gestito da Google, verifica che lo stato della risorsa del certificato sia ATTIVO. Per scoprire di più, consulta lo stato delle risorse 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, verifica il dominio che punta all'indirizzo IP del bilanciatore del carico. Ad esempio:

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

  5. (Facoltativo) Se utilizzi un dominio personalizzato, potresti dover attendere la propagazione delle impostazioni DNS aggiornate. Poi testa il tuo dominio (ad esempio backend.example.com) nel browser web.

    Per assistenza, consulta la sezione Risoluzione dei problemi relativi a backend esterno e NEG Internet.

Disabilitazione di Cloud CDN

Console

Disabilita Cloud CDN per un singolo servizio di backend

  1. In Google Cloud Console, vai alla pagina Cloud CDN.

    Vai alla pagina Cloud CDN

  2. Sul lato destro della riga di origine, fai clic su Menu e seleziona Modifica.
  3. Deseleziona le caselle di controllo dei servizi di backend da cui non vuoi più utilizzare Cloud CDN.
  4. Fai clic su Aggiorna.

Rimuovi Cloud CDN per tutti i servizi di backend per un'origine

  1. In Google Cloud Console, vai alla pagina Cloud CDN.

    Vai alla pagina Cloud CDN

  2. Sul lato destro della riga di origine, fai clic su Menu e seleziona Rimuovi.
  3. Fai clic su Rimuovi per confermare.

gcloud

gcloud compute backend-services update BACKEND_SERVICE_NAME \
    --no-enable-cdn

La disabilitazione di Cloud CDN non invalida o elimina definitivamente le cache. Se disattivi e riattivi Cloud CDN, la maggior parte dei contenuti memorizzati nella cache potrebbe essere comunque memorizzata nella cache. Per impedire che i contenuti vengano utilizzati dalle cache, devi invalidare tali contenuti.

Passaggi successivi