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 i seguenti prodotti di serverless computing:
- App Engine
- Funzioni Cloud Run
- Cloud Run
L'integrazione di bilanciatori del carico delle applicazioni esterni API Gateway abilita e serverless per sfruttare tutte le funzionalità e Cloud Load Balancing. Per configurare un bilanciatore del carico delle applicazioni esterno per instradare il traffico in un API Gateway, consulta la Guida introduttiva il bilanciatore del carico delle applicazioni esterno Gateway API. Il supporto del bilanciatore del carico delle applicazioni esterno per API Gateway è attivo Anteprima.
NEG serverless ti consentono di utilizzare le app serverless Google Cloud con bilanciatori del carico delle applicazioni esterni. Dopo configurare un bilanciatore del carico con il backend NEG serverless, le richieste al carico vengono indirizzate al backend dell'app serverless.
Per saperne di più sui NEG serverless, leggi l'articolo sui NEG serverless Panoramica.
Prima di iniziare
- Esegui il deployment di un servizio App Engine, Cloud Run o Cloud Run.
- Se non lo hai già fatto, installa Google Cloud CLI.
- Configura le autorizzazioni.
- Aggiungi una risorsa del certificato SSL.
Esegui il deployment di un servizio App Engine, Cloud Run o Cloud Run
Le istruzioni riportate in questa pagina presuppongono che tu abbia già un Cloud Run, le funzioni di Cloud Run, o un servizio App Engine in esecuzione.
Per l'esempio in questa pagina, abbiamo utilizzato il comando Cloud Run Python
Guida rapida per eseguire il deployment di Cloud Run
nella regione us-central1
. Il resto di questa pagina mostra come impostare
un bilanciatore del carico delle applicazioni esterno che utilizza un backend NEG serverless per instradare le richieste
questo servizio.
Se non hai già eseguito il deployment di un'app serverless o se vuoi provare un per il NEG serverless con un'app di esempio, utilizza una delle seguenti guide rapide. Puoi Crea un'app serverless in qualsiasi regione, ma devi utilizzare la stessa regione in un secondo momento per creare il NEG serverless e il bilanciatore del carico.
Cloud Run
Per creare una semplice applicazione Hello World, pacchettizzala in un'immagine container, eseguire il deployment dell'immagine container in Cloud Run, consulta Guida rapida: creazione e deployment.
Se hai già caricato un container di esempio su Container Registry, consulta Guida rapida: deployment di un container di esempio predefinito.
Funzioni Cloud Run
Consulta Funzioni di Cloud Run: guida rapida di Python.
App Engine
Consulta le seguenti guide rapide di App Engine per Python 3:
Installa Google Cloud CLI
Installa Google Cloud CLI. Consulta la Panoramica di gcloud per informazioni concettuali e di installazione sullo strumento.
Se non hai mai eseguito gcloud CLI in precedenza, esegui prima
gcloud init
per inizializzare la directory gcloud.
Configura autorizzazioni
Per seguire questa guida, devi creare un NEG serverless e creare un del carico HTTP(S) 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 i componenti di networking e bilanciatore del carico | Amministratore di rete |
Crea e modifica i NEG | Amministratore istanze Compute |
Creare e modificare i certificati SSL | Amministratore sicurezza |
Prenotare un indirizzo IP esterno
Ora che i tuoi servizi sono in funzione, configura un IP esterno statico e globale utilizzato dai clienti 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.
Per Versione IP, seleziona IPv4.
In 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
Crea una risorsa del certificato SSL
Per creare un bilanciatore del carico HTTPS, devi aggiungere una risorsa del certificato SSL al front-end del bilanciatore del carico. Crea una risorsa del certificato SSL utilizzando un sistema SSL gestito da Google certificato o un certificato SSL autogestito.
Certificati gestiti da Google. Ti consigliamo di utilizzare i certificati gestiti da Google perché Google Cloud li ottiene, li gestisce e li rinnova automaticamente. Per creare un certificato gestito da Google, devi avere un dominio e i relativi record DNS per poter del certificato di cui eseguire il provisioning. Inoltre, devi aggiornare il record A del DNS del dominio in modo che punti a all'indirizzo IP del bilanciatore del carico creato nel passaggio precedente (
example-ip
). Per istruzioni dettagliate, consulta Utilizzo certificati.Certificati autofirmati. Se non vuoi configurare un dominio in questo puoi utilizzare un certificato SSL autofirmato per i test.
In questo esempio si presuppone che tu abbia già creato una risorsa del certificato SSL.
Se vuoi testare questa procedura senza creare una risorsa del certificato SSL (o un dominio come richiesto dai certificati gestiti da Google), puoi comunque utilizzare le istruzioni riportate 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 introduttiva di Cloud Run per Python per eseguire il deployment di un servizio Cloud Run.
Perché i controlli di integrità non sono supportati per i servizi di backend con 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
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.
- Per Pubblico o interno, seleziona Rivolto al pubblico (esterno) e fai clic su Avanti.
- Per Deployment globale o in una regione singola, seleziona Ideale per carichi di lavoro 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
- Inserisci
serverless-lb
come nome del bilanciatore del carico. - Tieni la finestra aperta per continuare.
Configurazione frontend
- Fai clic su Configurazione frontend.
- In Nome, inserisci un nome.
-
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.
- Fai clic su Fine.
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, è necessario disporre di un SSL di certificazione da utilizzare nel proxy HTTPS. Puoi creare una risorsa del certificato SSL utilizzando un sistema SSL gestito o un certificato SSL autogestito. Per creare un certificato gestito da Google, devi avere un dominio. La che il record A del dominio deve risolversi nell'indirizzo IP del (in questo esempio, example-ip). L'utilizzo dei certificati gestiti da Google è consigliato 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) Attiva 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 carico HTTP parziale aggiuntivo che utilizza lo stesso indirizzo IP del carico HTTPS e reindirizza le richieste HTTP Frontend HTTPS. Questa casella di controllo può essere selezionata solo quando 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 il campo 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 il campo modalità cache e Impostazioni TTL.
- Fai clic su Crea.
Regole di routing
Le regole di routing determinano come viene indirizzato il traffico. Per configurare di routing, devi configurare le regole dell'host e i matcher di percorso, di configurazione di un pod la mappa URL del bilanciatore del carico delle applicazioni esterno.
-
Fai clic su Regole host e percorso.
- Conserva gli host e i percorsi predefiniti. Per questo esempio, tutte le richieste al servizio di backend creato nel passaggio precedente.
Rivedi la configurazione
- Fai clic su Esamina e finalizza.
- Controlla tutte le impostazioni.
- (Facoltativo) Fai clic su Codice equivalente per visualizzare la richiesta API REST. che verrà utilizzato 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à. È
denominata
IP_ADDRESS
.
gcloud
- Crea un NEG serverless per la tua app serverless.
Per ulteriori 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 tramite sostituendo CACHE_MODE con uno dei seguenti:
CACHE_All_STATIC
(impostazione predefinita): memorizza automaticamente nella cache contenuti statici.USE_ORIGIN_HEADERS
: richiede l'impostazione dell'origine memorizzazione nella cache valida o intestazioni per memorizzare i contenuti nella cache.FORCE_CACHE_ALL
: memorizza nella cache tutti i contenuti, ignorando eventualiprivate
,no-store
o Istruzionino-cache
inCache-Control
intestazioni di risposta.
Per informazioni sulle direttive di memorizzazione nella cache che Cloud CDN e ciò che non viene memorizzato nella cache da Cloud CDN, consulta contenutie Non memorizzabili nella cache dei tuoi contenuti.
- Aggiungi il NEG serverless come backend del 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 di esempio ha come target un solo servizio di backend che rappresenta un singola app serverless, quindi non è necessario configurare regole host o matcher. Se hai più di un servizio di backend, puoi utilizzare l'host per indirizzare le richieste a servizi diversi in base al nome host, e puoi configurare matcher di percorso per indirizzare le richieste a diverse in base al percorso di richiesta.
-
Per creare un bilanciatore del carico HTTPS, devi avere un
Certificato SSL
risorsa da utilizzare nel proxy di destinazione HTTPS.
Puoi creare un protocollo SSL
di certificazione utilizzando un certificato SSL gestito da Google
un certificato SSL autogestito. Utilizzo dei certificati gestiti da Google
è consigliata 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 autogestita: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 di URL.
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 in questo passaggio caricherai anche il certificato.
gcloud compute target-https-proxies create TARGET_HTTPS_PROXY_NAME \ --ssl-certificates=SSL_CERTIFICATE_NAME \ --url-map=URL_MAP_NAME
- Creare 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
Connetti il tuo dominio al bilanciatore del carico
Dopo aver creato il bilanciatore del carico, prendi nota dell'indirizzo IP associato
dal bilanciatore del carico, ad esempio 30.90.80.100
. Per puntare il dominio verso
bilanciatore del carico, crea un record A
utilizzando il servizio di registrazione del dominio. Se
hai aggiunto più domini al tuo certificato SSL, devi aggiungere un record A
per ciascuno, puntando tutti all'indirizzo IP del bilanciatore 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 i 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 completare la procedura, in modo da poter iniziare utilizzando l'indirizzo IP a scopo di test.
Nella console Google Cloud, vai alla pagina Bilanciamento del carico.
Fai clic sul bilanciatore del carico appena creato.
Prendi nota dell'indirizzo IP del bilanciatore del carico.
Per un bilanciatore del carico HTTPS, puoi testare il bilanciatore del carico da un browser web dalla pagina
https://IP_ADDRESS
. SostituisciIP_ADDRESS
con indirizzo IP del bilanciatore del carico. Tu deve essere indirizzato alla home page del serviziohelloworld
.
Se non funziona e utilizzi un certificato gestito da Google, verifica che lo stato della risorsa del certificato sia ATTIVO. Per ulteriori informazioni informazioni, consulta Risorsa del certificato SSL gestito da Google .
Se hai utilizzato un certificato autofirmato per il 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 il IPv4 del bilanciatore del carico di sicurezza.
curl -v -o/dev/null https://IP_ADDRESS
Se utilizzi un certificato gestito da Google, testa il dominio che rimanda a all'indirizzo IP del bilanciatore del carico. Ad esempio:
curl -v -o/dev/null -k -s 'https://DOMAIN:443' --connect-to DOMAIN:443:IP_ADDRESS:443
Se utilizzi un certificato autofirmato, devi specificare anche il flag
-k
. L'opzione curl-k
consente a curl di funzionare se hai un certificato autofirmato. Devi usare solo Parametro-k
per testare il tuo sito. In circostanze normali, un certificato valido è un'importante misura di sicurezza e un certificato gli avvisi non devono essere ignorati.L'output deve contenere le intestazioni personalizzate
Cache-ID
eCache-Status
configurato per indicare se la risposta è stata fornita da cache:HTTP/2 200 cache-status: hit cache-id: SEA-b9fa975e
L'output contiene le intestazioni di risposta che indicano che è stata creata una cache hit, ovvero l'asset statico nell'app serverless è stato pubblicato all'utente da una cache perimetrale di Cloud CDN.
L'intestazione
cache-status
indica il valoredisabled
per le risposte che sono non memorizzati nella cache in Cloud CDN. Per le risposte memorizzate nella cache, il parametrocache-status
il valore dell'intestazione è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 per i quali non vuoi più utilizzare 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 seleziona Rimuovi.Fai clic su Rimuovi per confermare.
gcloud
gcloud compute backend-services update BACKEND_SERVICE_NAME
--no-enable-cdn
La disabilitazione di Cloud CDN non annulla o elimina definitivamente le cache. Se disattivare e riattivare Cloud CDN, la maggior parte o tutti i dati potrebbero comunque essere memorizzati nella cache. Per impedire che i contenuti vengano utilizzati dalle cache, devi annullare la loro validità.
Passaggi successivi
- Consulta la documentazione di Cloud CDN per scoprire di più sulla cache e determinano memorizzazione nella cache delle risposte.