Configura un bilanciatore del carico delle applicazioni classico con un backend esterno

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

La guida mostra come configurare un bilanciatore del carico delle applicazioni esterno globale con un servizio di backend abilitato per Cloud CDN che indirizzi le richieste a un server di backend esterno.

Prima di seguire questa guida, acquisisci familiarità con la documentazione relativa alla panoramica sui NEG internet, incluse le limitazioni.

Il seguente diagramma dell'architettura mostra un frontend di un Application Load Balancer esterno globale con un backend esterno.

Un Application Load Balancer esterno globale con un backend esterno.
Figura 1. Un Application Load Balancer esterno globale con un backend esterno (fai clic per ingrandire).

Autorizzazioni

Per seguire questa guida, devi creare un NEG internet e creare o modificare un bilanciatore del carico delle applicazioni esterno in un progetto. Devi essere un Proprietario o un Editor del progetto (roles/owner o roles/editor) oppure disporre di entrambi i seguenti ruoli IAM di Compute Engine.

Attività Ruolo richiesto
Creazione e modifica dei componenti del bilanciatore del carico Amministratore rete Compute
(roles/compute.networkAdmin)
Creare e modificare NEG Amministratore istanze Compute
(roles/compute.instanceAdmin)

Configura l'ambiente di backend esterno all'esterno di Google Cloud

Per configurare l'ambiente, consulta le sezioni seguenti.

Configura endpoint di rete

Configura un endpoint di rete per esporre il backend esterno a Google Cloud. Assicurati che l'endpoint, una combinazione IP:Porta o un nome di dominio completo (FQDN) e una porta, sia raggiungibile tramite internet. A questo endpoint viene successivamente fatto riferimento dal NEG internet.

Per i requisiti di configurazione dettagliati per gli endpoint NEG internet, consulta la panoramica sui NEG internet.

Consenti al backend esterno di ricevere traffico da Google Cloud

Per consentire alle richieste di Google Cloud di raggiungere il tuo backend esterno, devi inserire nella lista consentita gli intervalli di indirizzi IP che Google utilizza per inviare richieste ai backend esterni. Per cercare gli indirizzi IP che devono essere autorizzati a inviare traffico ai tuoi backend esterni, esegui una query sul record TXT DNS _cloud-eoips.googleusercontent.com utilizzando uno strumento come dig o nslookup.

Esempi:

  • Esegui questo comando nslookup:

    nslookup -q=TXT _cloud-eoips.googleusercontent.com 8.8.8.8
    

    L'output sarà simile al seguente:

    Non-authoritative answer:
    _cloud-eoips.googleusercontent.com    text = "v=spf1 ip4:34.96.0.0/20 ip4:34.127.192.0/18 ~all"
    

    Prendi nota degli intervalli CIDR che seguono ip4: e assicurati che questi intervalli siano consentiti dalle regole firewall o dagli elenchi di controllo dell'accesso (ACL) cloud configurati sul tuo backend esterno.

  • Esegui questo comando dig:

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

    L'output contiene due intervalli di indirizzi IP, come segue:

    34.96.0.0/20
    34.127.192.0/18
    

Configura il tuo ambiente Google Cloud

Crea il bilanciatore del carico delle applicazioni esterno globale con un backend NEG internet.

Prenotare un indirizzo IP esterno

Prenota un indirizzo IP esterno statico e globale che i client utilizzano per raggiungere la tua applicazione.

Console

  1. Nella console Google Cloud, vai alla pagina Indirizzi IP esterni.

    Vai a Indirizzi IP esterni

  2. Fai clic su Prenota indirizzo statico esterno per prenotare un indirizzo IPv4.

  3. Inserisci un nome.

  4. In Network Service Tiers, seleziona Premium.

  5. Per Versione IP, seleziona IPv4.

  6. In Tipo, seleziona Globale.

  7. Fai clic su Prenota.

gcloud

gcloud compute addresses create LB_IP_ADDRESS_NAME \
    --network-tier=PREMIUM \
    --ip-version=IPV4 \
    --global

Prendi nota dell'indirizzo IPv4 riservato:

gcloud compute addresses describe LB_IP_ADDRESS_NAME \
    --format="get(address)" \
    --global

Configura NEG 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 un nome.

  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 Porta e nome di dominio completi.

  7. Inserisci il Nome di dominio completo.

  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 è possibile raggiungere il backend esterno):

    gcloud compute network-endpoint-groups create INTERNET_NEG_NAME \
        --network-endpoint-type="internet-fqdn-port" \
        --global
    
  2. Aggiungi l'endpoint al NEG. Se non viene specificata alcuna porta, per impostazione predefinita viene selezionata 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 INTERNET_NEG_NAME \
        --add-endpoint="fqdn=FULLY_QUALIFIED_DOMAIN_NAME,port=443" \
        --global
    

Crea il bilanciatore del carico

Console

Avvia la configurazione

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

    Vai a Bilanciamento del carico

  2. Fai clic su Crea bilanciatore del carico.
  3. In Tipo di bilanciatore del carico, seleziona Bilanciatore del carico delle applicazioni (HTTP/HTTPS) e fai clic su Avanti.
  4. In Pubblico o interno, seleziona Per il pubblico (esterno) e fai clic su Avanti.
  5. In Deployment a regione singola o globale, seleziona Ideale per carichi di lavoro globali e fai clic su Avanti.
  6. In Generazione del bilanciatore del carico, seleziona Bilanciatore del carico delle applicazioni classico e fai clic su Avanti.
  7. Fai clic su Configura.

Configurazione frontend

  1. Fai clic su Configurazione frontend.
  2. Inserisci un nome.
  3. Per creare un bilanciatore del carico HTTPS, devi avere un certificato SSL. Ti consigliamo di utilizzare un certificato gestito da Google.

    Verifica che le seguenti opzioni siano configurate con questi valori.

    Proprietà Valore (digita un valore o seleziona un'opzione come specificato)
    Protocollo HTTPS
    Livello di servizio di rete Premium
    Versione IP IPv4
    Indirizzo IP Seleziona l'indirizzo IP creato nel passaggio Prenotare un indirizzo IP esterno.
    Porta 443
    Certificato

    Seleziona un certificato SSL esistente o creane uno nuovo.

    Per creare un bilanciatore del carico HTTPS, devi disporre di una risorsa del certificato SSL da utilizzare nel proxy HTTPS. Puoi creare una risorsa del certificato SSL utilizzando un certificato SSL gestito da Google o un certificato SSL autogestito.

    Per creare un certificato gestito da Google, devi avere un dominio. Il record A del dominio deve risolversi nell'indirizzo IP del bilanciatore del carico (in questo esempio, example-ip). Ti consigliamo di utilizzare i certificati gestiti da Google perché Google Cloud ottiene, gestisce e rinnova automaticamente questi certificati. Se non hai un dominio, puoi utilizzare un certificato SSL autofirmato per i test.

    (Facoltativo) Abilita il reindirizzamento da HTTP a HTTPS

    Utilizza questa casella di controllo per attivare i reindirizzamenti da HTTP a HTTPS.

    L'attivazione di questa casella di controllo crea un bilanciatore del carico HTTP parziale aggiuntivo che utilizza lo stesso indirizzo IP del bilanciatore del carico HTTPS e reindirizza le richieste HTTP al frontend HTTPS del bilanciatore del carico.

    Questa casella di controllo può essere selezionata solo quando è selezionato il protocollo HTTPS e viene utilizzato un indirizzo IP riservato.

    Se vuoi testare questo processo senza configurare una risorsa del certificato SSL (o un dominio come richiesto dai certificati gestiti da Google), puoi configurare un bilanciatore del carico HTTP.

    Per creare un bilanciatore del carico HTTP, verifica che le seguenti opzioni siano configurate con questi valori:

    Proprietà Valore (digita un valore o seleziona un'opzione come specificato)
    Protocollo HTTP
    Livello di servizio di rete Premium
    Versione IP IPv4
    Indirizzo IP Seleziona l'indirizzo IP creato nel passaggio Prenotare un indirizzo IP esterno.
    Porta 80
  4. Fai clic su Fine.

Configurazione backend

  1. Fai clic su Configurazione backend.
  2. Fai clic su Servizi e bucket di backend.
  3. Fai clic su Crea un servizio di backend.
  4. Inserisci un nome.
  5. In Tipo di backend, seleziona Gruppo di endpoint di rete internet.
  6. In Protocollo, seleziona il protocollo che intendi utilizzare dal bilanciatore del carico al NEG internet. Per questo esempio, seleziona HTTP/2.
  7. In Backend, nella finestra Nuovo backend, seleziona il NEG internet creato nel passaggio precedente.
  8. Fai clic su Crea.

Esamina e finalizza

  1. Fai clic su Esamina e finalizza.
  2. Se è tutto a posto, fai clic su Crea.

gcloud

  1. Crea un servizio di backend:
      gcloud compute backend-services create BACKEND_SERVICE \
          --global
      
  2. Aggiungi il NEG internet al servizio di backend:
      gcloud compute backend-services add-backend BACKEND_SERVICE \
          --network-endpoint-group=INTERNET_NEG_NAME \
          --global-network-endpoint-group \
          --global
       
  3. Crea una mappa URL per instradare le richieste in entrata al servizio di backend:
      gcloud compute url-maps create URL_MAP_NAME \
          --default-service=BACKEND_SERVICE \
          --global
      
  4. Esegui questo passaggio solo se vuoi creare un bilanciatore del carico HTTPS. Questo passaggio non è obbligatorio per i bilanciatori del carico HTTP.

    Per creare un bilanciatore del carico HTTPS, devi avere una risorsa di certificato SSL da utilizzare nel proxy di destinazione HTTPS. Puoi creare una risorsa del certificato SSL utilizzando un certificato SSL gestito da Google o un certificato SSL autogestito. Consigliamo di utilizzare i certificati gestiti da Google perché Google Cloud li ottiene, gestisce e rinnova automaticamente questi certificati.

    Per creare un certificato gestito da Google, devi avere un dominio. Se non hai un dominio, puoi utilizzare un certificato SSL autogestito per i test.

    Per creare una risorsa del certificato SSL gestita da Google:
      gcloud compute ssl-certificates create SSL_CERTIFICATE_NAME \
          --domains DOMAIN
      
    Per creare una risorsa del certificato SSL autogestito:
      gcloud compute ssl-certificates create SSL_CERTIFICATE_NAME \
          --certificate CRT_FILE_PATH \
          --private-key KEY_FILE_PATH
      
  5. Crea un proxy HTTP(S) di destinazione per instradare le richieste alla mappa degli URL.

    Per un bilanciatore del carico HTTP, crea un proxy di destinazione HTTP:

      gcloud compute target-http-proxies create TARGET_HTTP_PROXY_NAME \
          --url-map=URL_MAP_NAME \
          --global
      

    Per un bilanciatore del carico HTTPS, crea un proxy di destinazione HTTPS. Il proxy è la parte del bilanciatore del carico che contiene il certificato SSL per il bilanciamento del carico HTTPS, quindi caricherai anche il certificato in questo passaggio.

      gcloud compute target-https-proxies create TARGET_HTTPS_PROXY_NAME \
          --ssl-certificates=SSL_CERTIFICATE_NAME \
          --url-map=URL_MAP_NAME \
          --global
      

    Sostituisci quanto segue:

    • TARGET_HTTP_PROXY_NAME: il nome del proxy HTTP di destinazione.
    • TARGET_HTTPS_PROXY_NAME: il nome del proxy HTTPS di destinazione.
    • SSL_CERTIFICATE_NAME: il nome del certificato SSL.
    • URL_MAP_NAME: il nome della mappa URL.
  6. Crea una regola di forwarding per instradare le richieste in entrata al proxy.

    Per un bilanciatore del carico HTTP:

      gcloud compute forwarding-rules create HTTP_FORWARDING_RULE_NAME \
          --address=LB_IP_ADDRESS_NAME \
          --target-http-proxy=TARGET_HTTP_PROXY_NAME \
          --global \
          --ports=80
      

    Per un bilanciatore del carico HTTPS:

      gcloud compute forwarding-rules create HTTPS_FORWARDING_RULE_NAME \
          --address=LB_IP_ADDRESS_NAME \
          --target-https-proxy=TARGET_HTTPS_PROXY_NAME \
          --global \
          --ports=443
      

Connetti il tuo dominio al bilanciatore del carico

Dopo aver creato il bilanciatore del carico, prendi nota dell'indirizzo IP associato al bilanciatore del carico, ad esempio 30.90.80.100. Per puntare 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, tutti puntati all'indirizzo IP del bilanciatore del carico. Ad esempio, per creare i record A per www.example.com e example.com, utilizza 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 record.

Testa il bilanciatore del carico

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 traffico anche al nome di dominio. Tuttavia, il completamento della propagazione DNS può richiedere del tempo, quindi puoi iniziare utilizzando l'indirizzo IP per i test.

Console

  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. Invia traffico al bilanciatore del carico.

    • Se hai creato un bilanciatore del carico HTTP, puoi verificarlo visitando http://IP_ADDRESS. Sostituisci IP_ADDRESS con l'indirizzo IP del bilanciatore del carico. Dovresti essere indirizzato all'applicazione in esecuzione nel backend esterno.

    • Se hai creato un bilanciatore del carico HTTPS, puoi verificarlo visitando https://IP_ADDRESS. Sostituisci IP_ADDRESS con l'indirizzo IP del bilanciatore del carico. Dovresti essere indirizzato all'applicazione in esecuzione nel backend esterno.

    Se non funziona e stai utilizzando un certificato gestito da Google, verifica che lo stato della risorsa di certificato sia ATTIVO. Per ulteriori informazioni, vedi Stato delle risorse del certificato SSL gestito da Google.

    In alternativa, puoi utilizzare curl dalla riga di comando della 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://www.example.com:443' --resolve www.example.com:443:IP_ADDRESS
    

  5. (Facoltativo) Se utilizzi un dominio personalizzato, potresti dover attendere la propagazione delle impostazioni DNS aggiornate. Quindi, verifica il dominio nel browser web.

    Per assistenza con la risoluzione dei problemi, consulta Risolvere i problemi relativi a backend esterno e NEG internet.

Configurazione aggiuntiva

Questa sezione espande l'esempio di configurazione per fornire opzioni di configurazione alternative e aggiuntive. Tutte le attività sono facoltative. Puoi eseguirle in qualsiasi ordine.

Abilita Cloud CDN

Quando Cloud CDN è abilitato, il bilanciatore del carico delle applicazioni esterno invia le richieste al backend NEG internet solo in caso di fallimento della cache di Cloud CDN.

Console

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

    Vai a Bilanciamento del carico.

  2. Fai clic sul nome del bilanciatore del carico da modificare.

  3. Fai clic su Modifica.

  4. Fai clic su Configurazione backend.

  5. Per il servizio di backend con il backend NEG internet, fai clic su Modifica.

  6. Seleziona Abilita Cloud CDN.

  7. (Facoltativo) Modifica le impostazioni di modalità cache e TTL.

  8. Fai clic su Update (Aggiorna).

  9. Per esaminare le modifiche, fai clic su Rivedi e finalizza e poi su Aggiorna.

gcloud

  • Per abilitare Cloud CDN nel servizio di backend, utilizza il seguente comando:
      gcloud compute backend-services update BACKEND_SERVICE \
          --global \
          --enable-cdn \
          --cache-mode=CACHE_MODE
      

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

    • CACHE_All_STATIC: memorizza automaticamente nella cache i contenuti statici.
    • USE_ORIGIN_HEADERS (predefinito): richiede che l'origine imposti intestazioni di memorizzazione nella cache valide per memorizzare nella cache i contenuti.
    • FORCE_CACHE_ALL: memorizza nella cache tutti i contenuti, ignorando eventuali istruzioni private, no-store o no-cache nelle intestazioni di risposta Cache-Control.

Utilizza un'intestazione personalizzata per autenticare le richieste

Per autenticare le richieste inviate al tuo backend esterno, puoi impostare un'intestazione personalizzata per indicare che la richiesta proviene da un bilanciatore del carico di Google Cloud. Ad esempio, puoi configurare il backend esterno in modo che preveda un valore specifico per l'intestazione Host della richiesta HTTP e puoi configurare il servizio di backend in modo che imposti l'intestazione Host su quel valore previsto.

Segui questi passaggi per configurare il servizio di backend in modo da aggiungere un'intestazione Host personalizzata a ogni richiesta.

Console

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

    Vai a Bilanciamento del carico.

  2. Fai clic sul nome del bilanciatore del carico da modificare.

  3. Fai clic su Modifica.

  4. Fai clic su Configurazione backend.

  5. Per il servizio di backend con il backend NEG internet, fai clic su Modifica.

  6. Fai clic su Configurazioni avanzate.

  7. Per Intestazioni delle richieste personalizzate, fai clic su Aggiungi intestazione:

    1. In Nome intestazione, inserisci Host.
    2. In Valore intestazione, inserisci FQDN_NEG_ENDPOINT.
  8. Fai clic su Update (Aggiorna).

  9. Per esaminare le modifiche, fai clic su Rivedi e finalizza e poi su Aggiorna.

gcloud

  • Utilizza il seguente comando per configurare il servizio di backend in modo da aggiungere un'intestazione "Host" personalizzata a ogni richiesta.
      gcloud compute backend-services update BACKEND_SERVICE \
          --custom-request-header "Host: HEADER_VALUE" \
          --global
      

Assicurati di aver anche configurato il backend esterno in modo che preveda un'intestazione Host, in modo che possa autenticare le richieste in entrata.

Per informazioni generali sulle intestazioni delle richieste personalizzate, consulta Configurare le intestazioni delle richieste personalizzate. Per altri metodi di autenticazione, vedi Autenticare le richieste al backend esterno.

Abilita IAP sul bilanciatore del carico delle applicazioni esterno

Nota: IAP non è compatibile con Cloud CDN.

Puoi configurare IAP in modo che venga attivato o disattivato (impostazione predefinita). Se l'opzione è abilitata, devi fornire valori per oauth2-client-id e oauth2-client-secret.

Per abilitare IAP, aggiorna il servizio di backend in modo da includere il flag --iap=enabled con oauth2-client-id e oauth2-client-secret.

gcloud compute backend-services update BACKEND_SERVICE_NAME \
    --iap=enabled,oauth2-client-id=ID,oauth2-client-secret=SECRET \
    --global

Passaggi successivi