Questa pagina mostra come creare un bilanciatore del carico delle applicazioni esterno per instradare le richieste ai backend serverless. Il termine serverless si riferisce ai seguenti prodotti di calcolo serverless:
- App Engine
- Cloud Run Functions
- Cloud Run
L'integrazione dei bilanciatori del carico delle applicazioni esterni con API Gateway consente ai tuoi backend serverless di sfruttare tutte le funzionalità fornite da Cloud Load Balancing. Per configurare un bilanciatore del carico delle applicazioni esterno per instradare il traffico a un API Gateway, consulta Guida introduttiva a un bilanciatore del carico delle applicazioni esterno per API Gateway. Il supporto del bilanciatore del carico delle applicazioni esterno per API Gateway è in anteprima.
I NEG serverless ti consentono di utilizzare le app serverless con i bilanciatori del carico delle applicazioni esterni.Google Cloud Dopo aver configurato un bilanciatore del carico con il backend NEG serverless, le richieste al bilanciatore del carico vengono indirizzate al backend dell'app serverless.
Per saperne di più sui NEG serverless, leggi la panoramica dei NEG serverless.
Prima di iniziare
- Esegui il deployment di un servizio App Engine, Cloud Run Functions o Cloud Run.
- Se non l'hai ancora fatto, installa Google Cloud CLI.
- Configurare le autorizzazioni.
- Aggiungi una risorsa del certificato SSL.
Esegui il deployment di un servizio App Engine, Cloud Run Functions o Cloud Run
Le istruzioni riportate in questa pagina presuppongono che tu abbia già un servizio Cloud Run, Cloud Run 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 bilanciatore del carico delle applicazioni esterno che utilizza un backend NEG serverless per instradare le richieste a questo servizio.
Se non hai ancora eseguito il deployment di un'app serverless o se vuoi provare un NEG serverless con un'app di esempio, utilizza una delle seguenti guide rapide. Puoi creare un'app serverless in qualsiasi regione, ma devi utilizzare la stessa regione in un secondo momento per creare il bilanciatore del carico e il NEG serverless.
Cloud Run
Per creare una semplice applicazione Hello World, pacchettizzala in un'immagine container e poi esegui il deployment dell'immagine container in Cloud Run, consulta Guida rapida: crea ed esegui il deployment.
Se hai già caricato un container di esempio in Container Registry, consulta la Guida rapida: eseguire il deployment di un container di esempio preimpostato.
Cloud Run Functions
Vedi Cloud Run Functions: Guida rapida Python.
App Engine
Consulta le seguenti guide rapide di App Engine per Python 3:
Installa Google Cloud CLI
Installa Google Cloud CLI. Per informazioni concettuali e sull'installazione dello strumento, consulta la panoramica di gcloud.
Se non hai mai eseguito l'interfaccia alla gcloud CLI, esegui prima
gcloud init
per inizializzare la directory gcloud.
Configura autorizzazioni
Per seguire questa guida, devi creare un NEG serverless e un bilanciatore del carico HTTP(S) esterno in un progetto. Devi essere proprietario o editor di un progetto oppure disporre dei seguenti ruoli IAM di Compute Engine:
Attività | Ruolo richiesto |
---|---|
Crea bilanciatore del carico e componenti di rete | Amministratore di rete |
Creare e modificare i gruppi di annunci con targeting espanso | Compute Instance Admin |
Crea e modifica certificati SSL | Amministratore della sicurezza |
Prenotare un indirizzo IP esterno
Ora che i servizi sono operativi, configura un indirizzo IP esterno statico globale che i clienti utilizzano per raggiungere il bilanciatore del carico.
Console
Nella console Google Cloud , vai alla pagina Indirizzi IP esterni.
Fai clic su Prenota indirizzo IP statico esterno.
In Nome, inserisci
example-ip
.In Livello di servizio di rete, seleziona Premium.
In Versione IP, seleziona IPv4.
Per Tipo, seleziona Globale.
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
Sostituisci EXAMPLE_IP
con il nome dell'indirizzo IP.
Crea una risorsa del certificato SSL
Per creare un bilanciatore del carico HTTPS, devi aggiungere una risorsa certificato SSL al frontend 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. L'utilizzo di certificati gestiti da Google è consigliato perché Google Cloud ottiene, gestisce e rinnova questi certificati automaticamente. Per creare un certificato gestito da Google, devi disporre di un dominio e dei record DNS per quel dominio affinché il certificato venga sottoposto a provisioning.
Inoltre, devi aggiornare il record A DNS del dominio in modo che punti all'indirizzo IP del bilanciamento del carico creato nel passaggio precedente. Se hai più domini in un certificato gestito da Google, devi aggiornare i record DNS per tutti i domini e i sottodomini in modo che puntino all'indirizzo IP del load balancer. Per istruzioni dettagliate, vedi Utilizzo dei certificati gestiti da Google.
Certificati autofirmati. Se non vuoi configurare un dominio in questo momento, 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 questa procedura senza creare una risorsa certificato SSL (o un dominio come richiesto dai certificati gestiti da Google), puoi comunque utilizzare le istruzioni riportate in questa pagina per configurare un bilanciamento del carico HTTP.
Crea il bilanciatore del carico
Nel seguente diagramma, 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.
Poiché i controlli di integrità non sono supportati per i servizi di backend con backend 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
Seleziona il tipo di bilanciatore del carico
Nella console Google Cloud , vai alla pagina Bilanciamento del carico.
- Fai clic su Crea bilanciatore del carico.
- In Tipo di bilanciatore del carico, seleziona Bilanciatore del carico delle applicazioni (HTTP/HTTPS) e fai clic su Avanti.
- In Pubblico o interno, seleziona Pubblico (esterno) e fai clic su Avanti.
- In Deployment globale o in una regione singola, seleziona Ideale per workload globali e fai clic su Avanti.
- In Generazione del bilanciatore del carico, seleziona Bilanciatore del carico delle applicazioni classico e fai clic su Avanti.
- Fai clic su Configura.
Configurazione di base
- In corrispondenza del nome del bilanciatore del carico, inserisci
serverless-lb
. - Tieni aperta la finestra per continuare.
Configurazione frontend
- Fai clic su Configurazione frontend.
- In Nome, inserisci un nome.
-
Per creare un bilanciatore del carico HTTPS, devi disporre di
un certificato SSL
(
gcloud compute ssl-certificates list
).Ti consigliamo di utilizzare un certificato gestito da Google come descritto in precedenza.
- Fai clic su Fine.
Per configurare un bilanciatore del carico delle applicazioni esterno, compila i campi nel seguente modo.
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 disporre di una risorsa 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 essere risolto nell'indirizzo IP del bilanciatore del carico che hai creato in precedenza in questa procedura. L'utilizzo di certificati gestiti da Google è consigliato perché Google Cloud ottiene, gestisce e rinnova questi certificati automaticamente. Se non hai un dominio, puoi utilizzare un certificato SSL autofirmato per i test. |
(Facoltativo) Attiva il reindirizzamento da HTTP a HTTPS |
Utilizza questa casella di controllo per attivare i reindirizzamenti da HTTP a HTTPS.
Se selezioni questa casella di controllo, viene creato 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. |
Configurazione backend
- Fai clic su Configurazione backend.
- Nell'elenco Servizi e bucket di backend, fai clic su Crea un servizio di backend.
- In Nome, inserisci un nome.
- In Tipo di backend, seleziona Gruppo di endpoint di rete serverless.
- Lascia invariato Protocollo. Questo parametro viene ignorato.
- Nella sezione Backend, per Nuovo backend, seleziona Crea gruppo di endpoint di rete serverless.
- In Nome, inserisci un nome.
- Fai clic su Crea.
- Nella sezione Nuovo backend, fai clic su Fine.
- Seleziona Abilita Cloud CDN.
- (Facoltativo) Modifica le impostazioni della modalità cache e del TTL.
- Fai clic su Crea.
Regole di routing
Le regole di routing determinano come viene indirizzato il traffico. Per configurare il routing, devi configurare le regole host e i matcher percorso, che sono componenti di configurazione della mappa URL di un bilanciatore del carico delle applicazioni esterno.
-
Fai clic su Regole host e percorso.
- Mantieni gli host e i percorsi predefiniti. Per questo esempio, tutte le richieste vanno al servizio di backend creato nel passaggio precedente.
Revisione della configurazione
- Fai clic su Esamina e finalizza.
- Rivedi tutte le impostazioni.
- (Facoltativo) Fai clic su Codice equivalente per visualizzare la richiesta dell'API REST che verrà utilizzata per creare il bilanciatore del carico.
- Fai clic su Crea.
- Attendi che la creazione del bilanciatore del carico sia completa.
- Fai clic sul nome del bilanciatore del carico (serverless-lb).
- Prendi nota dell'indirizzo IP del bilanciatore del carico, che utilizzerai nella prossima attività. Viene
chiamato
IP_ADDRESS
.
gcloud
- Crea un NEG serverless per la tua app serverless.
Per altre opzioni, consulta la guida di riferimento
gcloud
pergcloud compute network-endpoint-groups create
. - Crea un servizio di backend.
gcloud compute backend-services create BACKEND_SERVICE_NAME \ --load-balancing-scheme=LOAD_BALANCING_SCHEME \ --global \ --enable-cdn \ --cache-mode=CACHE_MODE \ --custom-response-header='Cache-Status: {cdn_cache_status}' \ --custom-response-header='Cache-ID: {cdn_cache_id}'
Imposta la modalità cache sostituendo CACHE_MODE con una delle seguenti opzioni:
CACHE_All_STATIC
(impostazione predefinita): memorizza automaticamente nella cache i contenuti statici.USE_ORIGIN_HEADERS
: richiede che l'origine imposti intestazioni di memorizzazione nella cache valide per memorizzare i contenuti nella cache.FORCE_CACHE_ALL
: memorizza nella cache tutti i contenuti, ignorando eventuali direttiveprivate
,no-store
ono-cache
nelle intestazioni di rispostaCache-Control
.
Per informazioni sulle direttive di memorizzazione nella cache che Cloud CDN comprende e su ciò che non viene memorizzato nella cache da Cloud CDN, consulta Contenuti memorizzabili nella cache e Contenuti non memorizzabili nella cache.
- 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
- 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 ha come target un solo servizio di backend che rappresenta una singola app serverless, quindi non è necessario configurare regole host o matcher di 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 puoi configurare i matcher percorso per indirizzare le richieste a servizi diversi in base al percorso della richiesta.
-
Per creare un bilanciatore del carico HTTPS, devi disporre di una risorsa 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. L'utilizzo di certificati gestiti da Google
è consigliato perché Google Cloud 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: Per creare una risorsa del certificato SSL autogestito:gcloud compute ssl-certificates create SSL_CERTIFICATE_NAME \ --domains DOMAIN
gcloud compute ssl-certificates create SSL_CERTIFICATE_NAME \ --certificate CRT_FILE_PATH \ --private-key KEY_FILE_PATH
-
Crea un proxy HTTP(S) di destinazione per instradare le richieste alla mappa URL.
Per un bilanciatore del carico HTTPS, crea un proxy HTTPS di destinazione. Il proxy è la parte del bilanciatore del carico che contiene il certificato SSL per il bilanciamento del carico HTTPS, quindi devi caricare anche il tuo certificato in questo passaggio.
gcloud compute target-https-proxies create TARGET_HTTPS_PROXY_NAME \ --ssl-certificates=SSL_CERTIFICATE_NAME \ --url-map=URL_MAP_NAME
- Crea una regola di forwarding per instradare le richieste in entrata al proxy.
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
Collegare il 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 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, tutti indirizzati all'indirizzo IP del bilanciamento del carico. Ad esempio, per
creare 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 al suo indirizzo IP. Se hai configurato un dominio, puoi inviare traffico anche al nome di dominio. Tuttavia, la propagazione DNS può richiedere tempo per essere completata, quindi puoi iniziare utilizzando l'indirizzo IP per i test.
Nella console Google Cloud , vai alla pagina Bilanciamento del carico.
Fai clic sul bilanciatore del carico che hai appena creato.
Prendi nota dell'indirizzo IP del bilanciatore del carico.
Per un bilanciatore del carico HTTPS, puoi testare il bilanciatore del carico utilizzando un browser web andando all'indirizzo
https://IP_ADDRESS
. SostituisciIP_ADDRESS
con l'indirizzo IP del bilanciatore del carico. Dovresti essere indirizzato alla home page del serviziohelloworld
.
Se il problema persiste e utilizzi un certificato gestito da Google, verifica che lo stato della risorsa certificato sia ACTIVE. Per ulteriori informazioni, consulta Stato della risorsa certificato SSL gestito da Google.
Se hai utilizzato un certificato autofirmato per i test, il browser visualizza un avviso. Devi indicare esplicitamente al browser di accettare un certificato autofirmato. Fai clic sull'avviso per visualizzare la pagina effettiva.Per verificare le risposte della cache, utilizza 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 punta all'indirizzo IP del bilanciatore del carico. Ad esempio:
curl -v -o/dev/null https://IP_ADDRESS
Se utilizzi un certificato autofirmato, devi specificare anche il flag
-k
. Ad esempio:curl -v -o/dev/null -k -s 'https://DOMAIN:443' --connect-to DOMAIN:443:IP_ADDRESS:443
L'opzione curl
-k
consente a curl di funzionare se hai un certificato autofirmato. Devi utilizzare il parametro-k
solo per testare il tuo sito. In circostanze normali, un certificato valido è un'importante misura di sicurezza e gli avvisi relativi ai certificati non devono essere ignorati.L'output deve contenere le intestazioni personalizzate
Cache-ID
eCache-Status
che hai configurato per indicare se la risposta è stata pubblicata dalla cache:HTTP/2 200 cache-status: hit cache-id: SEA-b9fa975e
L'output contiene le intestazioni di risposta che indicano che si è verificato un hit della cache, il che significa che l'asset statico nell'app serverless è stato pubblicato per l'utente da una cache edge di Cloud CDN.
L'intestazione
cache-status
indica il valoredisabled
per le risposte che non sono memorizzate nella cache di Cloud CDN. Per le risposte memorizzate nella cache, il valore dell'intestazionecache-status
èhit
,miss
orevalidated
.
Disattivazione di Cloud CDN
Console
Disabilita Cloud CDN per un singolo servizio di backend
Nella console Google Cloud , vai alla pagina Cloud CDN.
Sul lato destro della riga dell'origine, fai clic su Menu
e poi seleziona Modifica.Deseleziona le caselle di controllo di tutti i servizi di backend che non vuoi che utilizzino Cloud CDN.
Fai clic su Aggiorna.
Rimuovi Cloud CDN per tutti i servizi di backend per un'origine
Nella console Google Cloud , vai alla pagina Cloud CDN.
Sul lato destro della riga dell'origine, fai clic su Menu
e poi seleziona Rimuovi.Fai clic su Rimuovi per confermare.
gcloud
gcloud compute backend-services update BACKEND_SERVICE_NAME
--no-enable-cdn
La disattivazione di Cloud CDN non invalida né elimina le cache. Se disattivi e riattivi Cloud CDN, la maggior parte o tutti i contenuti memorizzati nella cache potrebbero essere ancora memorizzati nella cache. Per impedire l'utilizzo dei contenuti da parte delle cache, devi invalidarli.
Passaggi successivi
- Consulta la documentazione di Cloud CDN per scoprire di più sulle modalità di cache e determinare la memorizzabilità nella cache delle tue risposte.