Configura un bilanciatore del carico delle applicazioni classico con Cloud Run, App Engine o Cloud Functions

Questa pagina mostra come creare un bilanciatore del carico delle applicazioni esterno per instradare le richieste a backend serverless. In questo caso, il termine serverless si riferisce ai seguenti prodotti di serverless computing:

  • App Engine
  • Cloud Functions
  • Cloud Run

L'integrazione di Application Load Balancer esterni con il gateway API consente ai backend serverless di sfruttare tutte le funzionalità offerte da Cloud Load Balancing. Per configurare un bilanciatore del carico delle applicazioni esterno in modo da instradare il traffico a un gateway API, consulta la guida introduttiva a un bilanciatore del carico delle applicazioni esterno per il gateway API. Il supporto del bilanciatore del carico delle applicazioni esterno per il gateway API è in anteprima.

I NEG serverless ti consentono di utilizzare app serverless Google Cloud con bilanciatori del carico delle applicazioni esterni. Dopo aver configurato un bilanciatore del carico con il backend NEG serverless, le richieste al bilanciatore del carico vengono instradate al backend dell'app serverless.

Per saperne di più sui NEG serverless, leggi la panoramica sui NEG serverless.

Prima di iniziare

  1. Esegui il deployment di un servizio App Engine, Cloud Functions o Cloud Run.
  2. Se non lo hai già fatto, installa Google Cloud CLI.
  3. Configura le autorizzazioni.
  4. Aggiungi una risorsa del certificato SSL.

Esegui il deployment di un servizio App Engine, Cloud Functions o Cloud Run

Le istruzioni in questa pagina presuppongono che tu abbia già un servizio Cloud Run, Cloud Functions o App Engine in esecuzione.

Per l'esempio in questa pagina, abbiamo utilizzato la guida rapida di Cloud Run Python per eseguire il deployment di un servizio Cloud Run nella regione us-central1. Il resto di questa pagina mostra come configurare un Application Load Balancer esterno che utilizza un backend NEG serverless per instradare le richieste a questo servizio.

Se non hai già eseguito il deployment di un'app serverless o se vuoi provare un NEG serverless con un'app di esempio, utilizza una delle guide rapide riportate di seguito. Puoi creare un'app serverless in qualsiasi regione, ma in seguito devi utilizzare la stessa regione per creare il NEG serverless e il bilanciatore del carico.

Cloud Run

Per creare una semplice applicazione Hello World, pacchettizzarla in un'immagine container, quindi eseguire il deployment dell'immagine container in Cloud Run, consulta la Guida rapida: creazione e deployment.

Se hai già caricato un container di esempio nel Container Registry, consulta la Guida rapida: deployment di un container predefinito di esempio.

Cloud Functions

Consulta la guida rapida di Cloud Functions: Python.

App Engine

Consulta le seguenti guide rapide di App Engine per Python 3:

Installa Google Cloud CLI

Installa Google Cloud CLI. Consulta la pagina Panoramica di gcloud per informazioni concettuali e di installazione dello strumento.

Se non hai già eseguito gcloud CLI, esegui prima gcloud init per inizializzare la directory gcloud.

Configura le autorizzazioni

Per seguire questa guida, devi creare un NEG serverless e creare un bilanciatore del carico HTTP(S) esterno in un progetto. Devi essere un proprietario o un editor del progetto oppure disporre dei seguenti ruoli IAM di Compute Engine:

Attività Ruolo richiesto
Crea il bilanciatore del carico e i componenti di networking Amministratore rete
Creare e modificare NEG Amministratore istanze Compute
Creare e modificare i certificati SSL Amministratore sicurezza

Prenotare un indirizzo IP esterno

Ora che i tuoi servizi sono operativi, configura un indirizzo IP esterno statico e globale, che verrà utilizzato dai clienti per raggiungere il bilanciatore del carico.

Console

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

    Vai a Indirizzi IP esterni

  2. Fai clic su Prenota indirizzo IP statico esterno.

  3. In Nome, inserisci example-ip.

  4. In Livello di servizio di rete, seleziona Premium.

  5. Per Versione IP, seleziona IPv4.

  6. In Tipo, seleziona Globale.

  7. Fai clic su Prenota.

gcloud

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

Prendi nota dell'indirizzo IPv4 riservato:

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

Creazione di una risorsa del certificato SSL

Per creare un bilanciatore del carico HTTPS, devi aggiungere una risorsa di certificato SSL al front-end del bilanciatore del carico. Crea una risorsa del certificato SSL utilizzando un certificato SSL gestito da Google o un certificato SSL autogestito.

  • Certificati gestiti da Google. È consigliabile utilizzare certificati gestiti da Google perché Google Cloud li ottiene, gestisce e rinnova automaticamente. Per creare un certificato gestito da Google, devi avere un dominio e i relativi record DNS per eseguire il provisioning del certificato. Se non hai ancora un dominio, puoi ottenerne uno da Google Domains. Per ulteriori informazioni, consulta la guida introduttiva all'utilizzo di Google Domains. Inoltre, devi aggiornare il record A DNS del dominio in modo che punti all'indirizzo IP del bilanciatore del carico creato nel passaggio precedente (example-ip). Per istruzioni dettagliate, consulta Utilizzo dei certificati gestiti da Google.

  • Certificati autofirmati. Se al momento non vuoi configurare un dominio, puoi utilizzare un certificato SSL autofirmato per i test.

Questo esempio presuppone che tu abbia già creato una risorsa del certificato SSL.

Se vuoi testare questo processo senza creare una risorsa del certificato SSL (o un dominio come richiesto dai certificati gestiti da Google), puoi comunque utilizzare le istruzioni in questa pagina per configurare un bilanciatore del carico HTTP.

Crea il bilanciatore del carico

Nel diagramma seguente, il bilanciatore del carico utilizza un backend NEG serverless per indirizzare le richieste a un servizio Cloud Run serverless. Per questo esempio, abbiamo utilizzato la guida rapida di Cloud Run Python per eseguire il deployment di un servizio Cloud Run.

Architettura del bilanciatore del carico delle applicazioni esterno per un'applicazione Cloud Run.
Architettura del bilanciatore del carico delle applicazioni esterno per un'applicazione Cloud Run (fai clic per ingrandire).

Poiché i controlli di integrità non sono supportati per i servizi di backend con backend di NEG serverless, non è necessario creare una regola firewall che consenta i controlli di integrità se il bilanciatore del carico ha solo backend NEG serverless.

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 di base

  1. Come nome del bilanciatore del carico, inserisci serverless-lb.
  2. Tieni la finestra aperta per continuare.

Configurazione frontend

  1. Fai clic su Configurazione frontend.
  2. Inserisci un nome in Nome.
  3. Per creare un bilanciatore del carico HTTPS, devi avere un certificato SSL (gcloud compute ssl-certificates list).

    Ti consigliamo di utilizzare un certificato gestito da Google, come descritto in precedenza.

  4. Per configurare un bilanciatore del carico delle applicazioni esterno, compila i campi come segue.

    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 example-ip
    Porta 443
    Certificato Seleziona un certificato SSL esistente o creane uno nuovo.

    Per creare un bilanciatore del carico HTTPS, devi avere 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). È consigliato 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 example-ip
    Porta 80
  5. Fai clic su Fine.

Configurazione backend

  1. Fai clic su Configurazione backend.
  2. Nell'elenco Servizi e bucket di backend, fai clic su Crea un servizio di backend.
  3. Inserisci un nome in Nome.
  4. In Tipo di backend, seleziona Gruppo di endpoint di rete serverless.
  5. Lascia invariato il valore Protocol. Questo parametro viene ignorato.
  6. Nella sezione Backend, per Nuovo backend, seleziona Crea gruppo di endpoint di rete serverless.
  7. Inserisci un nome in Nome.
  8. In Regione, seleziona us-central1, quindi Cloud Run.
  9. Seleziona Seleziona il nome del servizio.
  10. Nell'elenco Servizio, seleziona il servizio Cloud Run per cui vuoi creare un bilanciatore del carico.
  11. Fai clic su Crea.
  12. Nella sezione Nuovo backend, fai clic su Fine.
  13. Fai clic su Crea.

Regole di routing

Le regole di routing determinano come viene indirizzato il traffico. Per configurare il routing, devi impostare regole host e matcher percorso, che sono componenti di configurazione della mappa URL di un bilanciatore del carico delle applicazioni esterno.

  1. Fai clic su Regole host e percorso.

  2. Conserva gli host e i percorsi predefiniti. Per questo esempio, tutte le richieste vanno al servizio di backend creato nel passaggio precedente.

Revisione della configurazione

  1. Fai clic su Esamina e finalizza.
  2. Rivedi tutte le impostazioni.
  3. (Facoltativo) Fai clic su Codice equivalente per visualizzare la richiesta API REST che verrà utilizzata per creare il bilanciatore del carico.
  4. Fai clic su Crea.
  5. Attendi che la creazione del bilanciatore del carico sia completa.
  6. Fai clic sul nome del bilanciatore del carico (serverless-lb).
  7. Prendi nota dell'indirizzo IP del bilanciatore del carico, che utilizzerai nella prossima attività. È indicato come IP_ADDRESS.

gcloud

  1. Crea un NEG serverless per la tua app serverless.

    Per creare un NEG serverless con un servizio Cloud Run:

       gcloud compute network-endpoint-groups create SERVERLESS_NEG_NAME \
           --region=us-central1 \
           --network-endpoint-type=serverless  \
           --cloud-run-service=CLOUD_RUN_SERVICE_NAME
       
    Per ulteriori opzioni, consulta la guida di riferimento di gcloud per gcloud compute network-endpoint-groups create.
  2. Crea un servizio di backend.
       gcloud compute backend-services create BACKEND_SERVICE_NAME \
           --load-balancing-scheme=EXTERNAL \
           --global
       
  3. Aggiungi il NEG serverless come backend al servizio di backend:
       gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \
           --global \
           --network-endpoint-group=SERVERLESS_NEG_NAME \
           --network-endpoint-group-region=us-central1
       
  4. 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_NAME
       

    Questa mappa URL di esempio ha come target un solo servizio di backend che rappresenta una singola app serverless, quindi non è necessario configurare regole host o matcher percorso. Se hai più di un servizio di backend, puoi utilizzare le regole host per indirizzare le richieste a servizi diversi in base al nome host e configurare i matcher percorso per indirizzare le richieste a servizi diversi in base al percorso della richiesta.

  5. 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. È consigliabile utilizzare 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 autofirmato per i test.

    Per creare una risorsa del certificato SSL gestito 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
       
  6. 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
       

    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
       
  7. 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 \
           --load-balancing-scheme=EXTERNAL \
           --network-tier=PREMIUM \
           --address=example-ip \
           --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 \
           --load-balancing-scheme=EXTERNAL \
           --network-tier=PREMIUM \
           --address=example-ip \
           --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.

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

    Vai a Bilanciamento del carico

  2. Fai clic sul bilanciatore del carico appena creato.

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

  4. Per un bilanciatore del carico HTTP, puoi testare il bilanciatore del carico utilizzando un browser web visitando http://IP_ADDRESS. Sostituisci IP_ADDRESS con l'indirizzo IP del bilanciatore del carico. Il sistema ti reindirizzerà alla home page del servizio helloworld.

  5. Per un bilanciatore del carico HTTPS, puoi testarlo utilizzando un browser web visitando la pagina https://IP_ADDRESS. Sostituisci IP_ADDRESS con l'indirizzo IP del bilanciatore del carico. Il sistema ti reindirizzerà alla home page del servizio helloworld.
    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.
    Se hai utilizzato un certificato autofirmato per i test, il browser mostra un avviso. Devi indicare esplicitamente al tuo browser di accettare un certificato autofirmato. Fai clic sull'avviso per visualizzare la pagina effettiva.

Opzioni di configurazione aggiuntive

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.

Configura il bilanciamento del carico tra più regioni

Nell'esempio descritto in precedenza in questa pagina, è presente un solo servizio Cloud Run che funge da backend nella regione us-central1. Poiché il NEG serverless può puntare a un solo endpoint alla volta, il bilanciamento del carico non viene eseguito in più regioni. Il bilanciatore del carico delle applicazioni esterno funge solo da frontend e indirizza il traffico all'endpoint dell'app helloworld specificato. Tuttavia, potresti voler gestire la tua app Cloud Run da più regioni per migliorare la latenza dell'utente finale.

Se a un servizio di backend sono collegati diversi NEG serverless, il bilanciatore del carico bilancia il traffico inoltrando le richieste al NEG serverless nella regione più vicina disponibile. Tuttavia, i servizi di backend possono contenere un solo NEG serverless per regione. Per rendere il tuo servizio Cloud Run disponibile da più regioni, devi configurare il routing tra regioni. Dovresti essere in grado di utilizzare un singolo schema URL che funzioni in qualsiasi parte del mondo e che, al tempo stesso, gestisca le richieste degli utenti dalla regione più vicina all'utente.

Per configurare la gestione in più regioni, devi utilizzare il livello di rete Premium per assicurarti che tutti i deployment Cloud Run a livello di regione siano compatibili e pronti per gestire il traffico da qualsiasi regione.

Per configurare un bilanciatore del carico per più regioni:

  1. Configurare due servizi Cloud Run in regioni diverse. Supponiamo che tu abbia eseguito il deployment di due servizi Cloud Run: uno in una regione negli Stati Uniti e un altro in una regione in Europa.
  2. Crea un bilanciatore del carico delle applicazioni esterno con la seguente configurazione:
    1. Configura un servizio di backend globale con due NEG serverless:
      1. Crea il primo NEG nella stessa regione del servizio Cloud Run di cui è stato eseguito il deployment negli Stati Uniti.
      2. Creare il secondo NEG nella stessa regione del servizio Cloud Run di cui è stato eseguito il deployment in Europa.
    2. Imposta la configurazione frontend con il livello Premium di Network Service Tiers.

La configurazione risultante è mostrata nel diagramma seguente.

Routing a più regioni per applicazioni serverless.
Routing multiregionale per applicazioni serverless

Questa sezione si basa sulla configurazione del bilanciatore del carico descritta in precedenza in questa pagina, in cui è stato creato un NEG serverless nella regione us-central1 che punta a un servizio Cloud Run nella stessa regione. Presuppone inoltre che tu abbia creato un secondo servizio Cloud Run nella regione europe-west1. Il secondo NEG serverless creato punterà a questo servizio Cloud Run nella regione europe-west1.

In questo esempio, vengono completati i seguenti passaggi:

  1. Crea un secondo NEG serverless nella regione europe-west1.
  2. Collega il secondo NEG serverless al servizio di backend.

Per aggiungere un secondo NEG serverless a un servizio di backend esistente, segui questi passaggi.

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 di cui vuoi modificare il servizio di backend.

  3. Nella pagina Dettagli del bilanciatore del carico, fai clic su Modifica.

  4. Nella pagina Modifica bilanciatore del carico delle applicazioni esterno globale, fai clic su Configurazione backend.

  5. Nella pagina Configurazione backend, fai clic su Modifica per il servizio di backend che vuoi modificare.

  6. Nella sezione Backend, fai clic su Aggiungi un backend.

  7. Nell'elenco Gruppi di endpoint di rete serverless, seleziona Crea gruppo di endpoint di rete serverless.

  8. Inserisci un nome per il NEG serverless.

  9. In Regione, seleziona europe-west1.

  10. Per Tipo di gruppo di endpoint di rete serverless, seleziona Cloud Run ed esegui le seguenti operazioni:

    1. Scegli l'opzione Seleziona servizio.
    2. Nell'elenco Servizio, seleziona il servizio Cloud Run per cui vuoi creare un bilanciatore del carico.
  11. Fai clic su Crea.

  12. Nella pagina Nuovo backend, fai clic su Fine.

  13. Fai clic su Salva.

  14. Per aggiornare il servizio di backend, fai clic su Aggiorna.

  15. Per aggiornare il bilanciatore del carico, nella pagina Modifica bilanciatore del carico delle applicazioni esterno globale, fai clic su Aggiorna.

gcloud

  1. Creare un secondo NEG serverless nella stessa regione in cui viene eseguito il deployment del servizio Cloud Run.

    gcloud compute network-endpoint-groups create SERVERLESS_NEG_NAME_2 \
      --region=europe-west1 \
      --network-endpoint-type=SERVERLESS \
      --cloud-run-service=CLOUD_RUN_SERVICE_2
    

    Sostituisci quanto segue:

    • SERVERLESS_NEG_NAME_2: il nome del secondo NEG serverless
    • CLOUD_RUN_SERVICE_2: il nome del servizio Cloud Run
  2. Aggiungi il secondo NEG serverless come backend al servizio di backend.

    gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \
      --global \
      --network-endpoint-group=SERVERLESS_NEG_NAME_2 \
      --network-endpoint-group-region=europe-west1
    

    Sostituisci quanto segue:

    • BACKEND_SERVICE_NAME: il nome del servizio di backend
    • SERVERLESS_NEG_NAME_2: il nome del secondo NEG serverless

Usa una sottoscrizione push Pub/Sub autenticata con un deployment Cloud Run in più regioni

Per le richieste push autenticate, per impostazione predefinita Cloud Run prevede un campo del segmento di pubblico specifico per la regione. Nel caso di un deployment di Cloud Run in più regioni, se la richiesta push viene instradata a un servizio Cloud Run in un'altra regione, la verifica del token JWT non va a buon fine a causa di una mancata corrispondenza del pubblico.

Per aggirare questa limitazione specifica per regione:

  1. Configura un segmento di pubblico personalizzato identico per i deployment dei servizi in diverse regioni.
  2. Configura i messaggi push di Pub/Sub in modo che utilizzino il segmento di pubblico personalizzato come segmento di pubblico nel token JWT.

Configurare il routing a livello di regione

Spesso si devono soddisfare i requisiti di località dei dati per gestire le applicazioni da più regioni. Ad esempio, potresti voler assicurarti che le richieste effettuate dagli utenti europei vengano sempre gestite da una regione situata in Europa. Per configurarlo, devi avere uno schema di URL con URL distinti per gli utenti dell'UE e di altri paesi e indirizzare i tuoi utenti dell'UE agli URL dell'UE.

In questo scenario, puoi utilizzare la mappa URL per instradare le richieste da URL specifici alle regioni corrispondenti. Con una configurazione di questo tipo, le richieste destinate a una singola regione non vengono mai consegnate in un'altra. Ciò consente l'isolamento tra le regioni. Quando invece una regione non va a buon fine, le richieste non vengono instradate a un'altra. Questa configurazione quindi non aumenta la disponibilità del servizio.

Per configurare il routing a livello di regione, devi utilizzare il livello di rete Premium in modo da poter combinare regioni diverse in un'unica regola di forwarding.

Per configurare un bilanciatore del carico con routing a livello di regione:

  1. Configurare due servizi Cloud Run in regioni diverse. Supponiamo che tu abbia eseguito il deployment di due servizi Cloud Run: hello-world-eu in una regione europea e hello-world-us in una regione negli Stati Uniti.
  2. Crea un bilanciatore del carico delle applicazioni esterno con la seguente configurazione:
    1. Configura un servizio di backend con un NEG serverless in Europa. Il NEG serverless deve essere creato nella stessa regione del servizio Cloud Run di cui è stato eseguito il deployment in Europa.
    2. Configura un secondo servizio di backend con un altro NEG serverless negli Stati Uniti. Questo NEG serverless deve essere creato nella stessa regione del servizio Cloud Run di cui è stato eseguito il deployment negli Stati Uniti.
    3. Configura la mappa URL con le regole host e percorso appropriate in modo che un insieme di URL venga instradato al servizio di backend europeo, mentre tutte le richieste al servizio di backend degli Stati Uniti.
    4. Imposta la configurazione del frontend con il livello di rete Premium.

Il resto della configurazione può essere la stessa descritta in precedenza. La configurazione risultante dovrebbe avere il seguente aspetto:

Routing a livello di regione per le applicazioni serverless senza failover.
Routing a livello di regione per applicazioni serverless senza failover

Utilizza una maschera URL

Quando crei un NEG serverless, anziché selezionare un servizio Cloud Run specifico, puoi utilizzare una maschera URL per puntare a più servizi che operano nello stesso dominio. Una maschera URL è un modello dello schema dell'URL. Il NEG serverless utilizzerà questo modello per estrarre il nome del servizio dall'URL della richiesta in entrata e mappare la richiesta al servizio appropriato.

Le maschere URL sono particolarmente utili se il servizio è mappato a un dominio personalizzato anziché all'indirizzo predefinito fornito da Google Cloud per il servizio di cui è stato eseguito il deployment. Una maschera URL consente di scegliere come target più servizi e versioni con una singola regola anche quando la tua applicazione utilizza un pattern URL personalizzato.

Se non lo hai già fatto, leggi Panoramica sui NEG serverless: maschere URL.

Costruire una maschera URL

Per creare una maschera URL per il bilanciatore del carico, inizia con l'URL del tuo servizio. Per questo esempio, utilizzeremo un'app serverless di esempio in esecuzione su https://example.com/login. Questo è l'URL in cui verrà pubblicato il servizio login dell'app.

  1. Rimuovi http o https dall'URL. example.com/login è rimasto.
  2. Sostituisci il nome del servizio con un segnaposto per la maschera URL.
    1. Cloud Run: sostituisci il nome del servizio Cloud Run con il segnaposto <service>. Se al servizio Cloud Run è associato un tag, sostituisci il nome del tag con il segnaposto <tag>. In questo esempio, la maschera URL che ti rimane è example.com/<service>.
    2. Cloud Functions: sostituisci il nome della funzione con il segnaposto <function>. In questo esempio, la maschera URL che ti rimane è example.com/<function>.
    3. App Engine: sostituisci il nome del servizio con il segnaposto <service>. Se al servizio è associata una versione, sostituisci la versione con il segnaposto <version>. In questo esempio, la maschera URL che ti rimane è example.com/<service>.
    4. Gateway API: sostituisci il nome del gateway con il segnaposto <gateway>. In questo esempio, la maschera URL che ti rimane è example.com/<gateway>.
  3. (Facoltativo) Se il nome del servizio (o la funzione, la versione o il tag) può essere estratto dalla parte del percorso dell'URL, il dominio può essere omesso. La parte del percorso della maschera URL si distingue dal primo carattere /. Se / non è presente nella maschera URL, la maschera rappresenta solo l'host. Pertanto, per questo esempio, la maschera URL può essere ridotta a /<service>, /<gateway> o /<function>.

    Allo stesso modo, se il nome del servizio può essere estratto dalla parte host dell'URL, puoi omettere del tutto il percorso dalla maschera dell'URL.

    Puoi anche omettere tutti i componenti host o sottodomini che precedono il primo segnaposto, nonché tutti i componenti del percorso che seguono l'ultimo segnaposto. In questi casi, il segnaposto acquisisce le informazioni richieste per il componente.

Ecco alcuni esempi che dimostrano queste regole:

Cloud Run

Questa tabella presuppone che tu abbia un dominio personalizzato denominato example.com e che tutti i tuoi servizi Cloud Run vengano mappati a questo dominio utilizzando un bilanciatore del carico delle applicazioni esterno.

Servizio, nome tag URL dominio personalizzato Maschera URL
service: login https://login-home.example.com/web <servizio>-home.example.com
service: login https://example.com/login/web example.com/<service> o /<service>
service: accesso, tag: test https://test.login.example.com/web <tag>.<servizio>.example.com
service: accesso, tag: test https://example.com/home/login/test example.com/home/<service>/<tag> o /home/<service>/<tag>
service: accesso, tag: test https://test.example.com/home/login/web <tag>.example.com/home/<servizio>

Cloud Functions

Questa tabella presuppone che tu abbia un dominio personalizzato denominato example.com e che tutti i tuoi servizi Cloud Functions vengano mappati a questo dominio.

Nome funzione URL dominio personalizzato Maschera URL
accedi https://example.com/login /<function>
accedi https://example.com/home/login /home/<function>
accedi https://login.example.com <function>.example.com
accedi https://login.home.example.com <function>.home.example.com

App Engine

Questa tabella presuppone che tu abbia un dominio personalizzato denominato example.com e che tutti i tuoi servizi App Engine vengano mappati a questo dominio.

Nome servizio, versione URL dominio personalizzato Maschera URL
service: login https://login.example.com/web <servizio>.example.com
service: login https://example.com/home/login/web example.com/home/<service> o /home/<service>
servizio: accesso, versione: test https://test.example.com/login/web <versione>.example.com/<servizio>
servizio: accesso, versione: test https://example.com/login/test example.com/<servizio>/<versione>

Gateway API

Questa tabella presuppone che tu disponga di un dominio personalizzato denominato example.com e che tutti i servizi del gateway API vengano mappati a questo dominio.

Nome gateway URL di dominio personalizzato API Gateway(anteprima) Maschera URL
accedi https://example.com/login /<gateway>
accedi https://example.com/home/login /home/<gateway>
accedi https://login.example.com <gateway>.example.com
accedi https://login.home.example.com <gateway>.home.example.com

Crea un NEG serverless con una maschera URL

Console

Per un nuovo bilanciatore del carico, puoi utilizzare lo stesso processo end-to-end descritto in precedenza in questo argomento. Quando configuri il servizio di backend, anziché selezionare un servizio specifico, inserisci una maschera URL.

Se hai già un bilanciatore del carico, puoi modificare la configurazione del backend e fare in modo che il punto NEG serverless punti a una maschera URL anziché a un servizio specifico.

Per aggiungere un NEG serverless basato su maschera URL a un servizio di backend esistente:

  1. Vai alla pagina Bilanciamento del carico nella console Google Cloud.
    Vai alla pagina Bilanciamento del carico
  2. Fai clic sul nome del bilanciatore del carico di cui vuoi modificare il servizio di backend.
  3. Nella pagina Dettagli del bilanciatore del carico, fai clic su Modifica .
  4. Nella pagina Modifica bilanciatore del carico delle applicazioni esterno globale, fai clic su Configurazione backend.
  5. Nella pagina Configurazione backend, fai clic su Modifica in corrispondenza del servizio di backend che vuoi modificare.
  6. Fai clic su Aggiungi backend.
  7. Seleziona Crea gruppo di endpoint di rete serverless.
    1. In Nome, inserisci helloworld-serverless-neg.
    2. In Regione, seleziona us-central1.
    3. In Tipo di gruppo di endpoint di rete serverless, seleziona la piattaforma in cui sono state create le tue app (o i tuoi servizi o le tue funzioni) serverless.
      1. Seleziona Utilizza maschera URL.
      2. Inserisci una maschera per l'URL. Per istruzioni su come creare una maschera URL, consulta la sezione Costruzione di una maschera URL.
      3. Fai clic su Crea.
  8. Nella sezione Nuovo backend, fai clic su Fine.
  9. Fai clic su Update (Aggiorna).

gcloud: Cloud Run

Per creare un NEG serverless con una maschera URL di esempio example.com/<service>:

gcloud compute network-endpoint-groups create helloworld-neg-mask \
  --region=us-central1 \
  --network-endpoint-type=serverless \
  --cloud-run-url-mask="example.com/<service>"

gcloud: funzioni Cloud Functions

Per creare un NEG serverless con una maschera URL di esempio example.com/<service>:

gcloud compute network-endpoint-groups create helloworld-neg-mask \
 --region=us-central1 \
 --network-endpoint-type=serverless \
 --cloud-function-url-mask="example.com/<service>"

gcloud: App Engine

Per creare un NEG serverless con una maschera URL di esempio example.com/<service>:

gcloud compute network-endpoint-groups create helloworld-neg-mask \
  --region=us-central1 \
  --network-endpoint-type=serverless \
  --app-engine-url-mask="example.com/<service>"

gcloud: API Gateway

Per creare un NEG serverless con una maschera URL di esempio example.com/<gateway>:

gcloud beta compute network-endpoint-groups create helloworld-neg-mask \
  --region=us-central1 \
  --network-endpoint-type=serverless \
  --serverless-deployment-platform=apigateway.googleapis.com \
  --serverless-deployment-resource=my-gateway \
  --serverless-deployment-url-mask="example.com/<gateway>"

Per scoprire in che modo il bilanciatore del carico gestisce i problemi relativi alla mancata corrispondenza delle maschere URL, consulta Risoluzione dei problemi relativi ai NEG serverless.

Sposta il tuo dominio personalizzato affinché venga gestito dal bilanciatore del carico delle applicazioni esterno

Se le tue app di serverless computing vengono mappate a domini personalizzati, potresti voler aggiornare i record DNS in modo che il traffico inviato agli URL di dominio personalizzati esistenti di Cloud Run, Cloud Functions, gateway API o App Engine venga instradato tramite il bilanciatore del carico.

Ad esempio, se hai un dominio personalizzato chiamato example.com e tutti i tuoi servizi Cloud Run sono mappati a questo dominio, devi aggiornare il record DNS per example.com in modo che punti all'indirizzo IP del bilanciatore del carico.

Prima di aggiornare i record DNS, puoi testare la configurazione localmente forzando la risoluzione DNS locale del dominio personalizzato all'indirizzo IP del bilanciatore del carico. Per eseguire il test localmente, modifica il file /etc/hosts/ sulla tua macchina locale in modo che punti example.com all'indirizzo IP del bilanciatore del carico oppure utilizza il flag curl --resolve per forzare curl a utilizzare l'indirizzo IP del bilanciatore del carico per la richiesta.

Quando il record DNS per example.com viene risolto nell'indirizzo IP del bilanciatore del carico HTTP(S), le richieste inviate a example.com iniziano a essere instradate tramite il bilanciatore del carico. Il bilanciatore del carico le invia al servizio di backend pertinente in base alla mappa URL. Inoltre, se il servizio di backend è configurato con una maschera URL, il NEG serverless utilizza la maschera per instradare la richiesta al servizio Cloud Run, Cloud Functions, Gateway API o App Engine appropriato.

Abilita Cloud CDN

L'abilitazione di Cloud CDN per il tuo servizio Cloud Run consente di ottimizzare la distribuzione dei contenuti memorizzando nella cache i contenuti vicini ai tuoi utenti.

Puoi abilitare Cloud CDN sui servizi di backend utilizzati dagli Application Load Balancer esterni globali utilizzando il comando gcloud compute backend-services update.

gcloud compute backend-services update helloworld-backend-service 
--enable-cdn
--global

Cloud CDN è supportato per i servizi di backend con backend Cloud Run, Cloud Functions, API Gateway e App Engine.

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

Abilita Google Cloud Armor

Google Cloud Armor è un prodotto per la sicurezza che fornisce protezione contro gli attacchi DDoS (Distributed Denial of Service) a tutti i bilanciatori del carico proxy GCLB. Google Cloud Armor fornisce inoltre criteri di sicurezza configurabili per i servizi accessibili tramite un bilanciatore del carico delle applicazioni esterno. Per informazioni sui criteri di sicurezza di Google Cloud Armor per i bilanciatori del carico delle applicazioni esterni, consulta la panoramica dei criteri di sicurezza di Google Cloud Armor.

Se usi Cloud Functions, puoi assicurarti che le richieste inviate agli URL predefiniti vengano bloccate utilizzando l'impostazione internal-and-gclb in entrata.

Se utilizzi Cloud Run, puoi assicurarti che le richieste inviate a URL predefiniti o a qualsiasi altro dominio personalizzato configurato tramite Cloud Run vengano bloccate limitando il traffico in entrata al "bilanciamento del carico interno e cloud".

Se utilizzi App Engine, puoi utilizzare i controlli in entrata in modo che la tua app riceva solo le richieste inviate dal bilanciatore del carico (e dal VPC, se lo utilizzi).

Senza le impostazioni di traffico in entrata corrette, gli utenti possono utilizzare l'URL predefinito dell'applicazione serverless per bypassare il bilanciatore del carico, i criteri di sicurezza di Google Cloud Armor, i certificati SSL e le chiavi private che vengono trasmesse attraverso il bilanciatore del carico.

(Facoltativo) Configura un criterio di sicurezza del backend predefinito. Il criterio di sicurezza predefinito limita il traffico oltre una soglia configurata dall'utente. Per ulteriori informazioni sui criteri di sicurezza predefiniti, consulta la panoramica della limitazione di frequenza.

  1. Per disattivare il criterio di sicurezza predefinito di Google Cloud Armor, seleziona None nel menu dell'elenco dei criteri di sicurezza del backend.
  2. Nella sezione Sicurezza, seleziona Criterio di sicurezza predefinito.
  3. Nel campo Nome criterio, accetta il nome generato automaticamente o inserisci un nome per il criterio di sicurezza.
  4. Nel campo Conteggio richieste, accetta il conteggio delle richieste predefinito o inserisci un numero intero compreso tra 1 e 10,000.
  5. Nel campo Intervallo, seleziona un intervallo.
  6. Nel campo Chiave di applicazione forzata, scegli uno dei seguenti valori: Tutti, Indirizzo IP o Indirizzo IP X-Forwarded-For. Per maggiori informazioni su queste opzioni, consulta Identificazione dei client per la limitazione di frequenza.

Abilita logging e monitoraggio

Puoi abilitare, disabilitare e visualizzare i log per un servizio di backend di un bilanciatore del carico delle applicazioni esterno. Quando si utilizza la console Google Cloud, il logging è abilitato per impostazione predefinita per i servizi di backend con backend NEG serverless. Puoi utilizzare gcloud per disabilitare il logging per ciascun servizio di backend in base alle esigenze. Per le istruzioni, consulta Logging.

Il bilanciatore del carico esporta anche i dati di monitoraggio in Cloud Monitoring. Le metriche di monitoraggio possono essere utilizzate per valutare la configurazione, l'utilizzo e le prestazioni di un bilanciatore del carico. Le metriche possono essere usate anche per risolvere i problemi e migliorare l'utilizzo delle risorse. Per le istruzioni, consulta Monitoring.

Elimina un NEG serverless

Impossibile eliminare un gruppo di endpoint di rete se è collegato a un servizio di backend. Prima di eliminare un NEG, assicurati che sia scollegato dal servizio di backend.

Console

  1. Per assicurarti che il NEG serverless che vuoi eliminare non sia attualmente utilizzato da nessun servizio di backend, vai alla scheda Servizi di backend nel menu Bilanciamento del carico avanzato.
    Vai alla scheda Servizi di backend
  2. Se il NEG serverless è attualmente in uso:
    1. Fai clic sul nome del servizio di backend che utilizza il NEG serverless.
    2. Fai clic su Modifica .
    3. Nell'elenco dei backend, fai clic su per rimuovere il backend del NEG serverless dal servizio di backend.
    4. Fai clic su Salva.
  3. Vai alla pagina Gruppo di endpoint di rete nella console Google Cloud.
    Vai alla pagina Gruppo di endpoint di rete
  4. Seleziona la casella di controllo relativa al NEG serverless da eliminare.
  5. Fai clic su Elimina.
  6. Fai di nuovo clic su Elimina per confermare.

gcloud

Per rimuovere un NEG serverless da un servizio di backend, devi specificare la regione in cui è stato creato il NEG. Devi specificare anche il flag --global perché helloworld-backend-service è una risorsa globale.

gcloud compute backend-services remove-backend helloworld-backend-service \
    --network-endpoint-group=helloworld-serverless-neg \
    --network-endpoint-group-region=us-central1 \
    --global

Per eliminare il NEG serverless:

gcloud compute network-endpoint-groups delete helloworld-serverless-neg \
    --region=us-central1

Passaggi successivi