Questa guida utilizza un esempio per descrivere i principi di base dell'utilizzo di un backend esterno (a volte chiamato origine personalizzata) in un bilanciatore del carico delle applicazioni esterno. Un backend esterno è un endpoint esterno a Google Cloud. Quando utilizzi un backend esterno con un bilanciatore del carico delle applicazioni esterno, puoi migliorare il rendimento utilizzando la memorizzazione nella cache di Cloud CDN.
La guida illustra la procedura per configurare un bilanciatore del carico delle applicazioni esterno globale con un servizio di backend abilitato per Cloud CDN che esegue il proxy per un server di backend esterno all'indirizzo backend.example.com
.
Nell'esempio, il bilanciatore del carico accetta le richieste HTTPS dai client e le proxy come HTTPS al backend esterno. Questo esempio presuppone che il backend esterno supporti HTTPS.
Altre opzioni sono configurare un bilanciatore del carico in modo che accetti richieste HTTP o HTTPS e utilizzare HTTPS per il proxy delle richieste al backend esterno.
Questa guida presuppone che tu abbia già configurato un bilanciatore del carico e che aggiunga un nuovo backend esterno. Per saperne di più, consulta Configurare un bilanciatore del carico delle applicazioni classico con un backend di gruppo di istanze gestite.
La Figura 1 mostra un'architettura di esempio.
Nel diagramma, www.example.com
ha un frontend del bilanciatore del carico con l'indirizzo IP 120.1.1.1
. In caso di mancata fallimento della cache, le richieste degli utenti per/cart/id/1223515
vengono recuperate dal backend esterno tramite HTTPS. Tutto
l'altro traffico in entrata viene indirizzato al servizio di backend Google Cloud con VM Compute Engine o al bucket di backend, in base alla mappa URL.
Prima di iniziare
Prima di seguire questa guida, acquisisci familiarità con quanto segue:
Panoramica dei gruppi di endpoint di rete internet, che include le limitazioni.
Autorizzazioni
Per seguire questa guida, devi creare un gruppo di endpoint di rete (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 oppure devi disporre di entrambi i seguenti ruoli IAM di Compute Engine.
Attività | Ruolo richiesto |
---|---|
Creare e modificare i componenti del bilanciatore del carico | Amministratore di rete |
Creare e modificare i NEG | Amministratore istanze Compute |
Configurare un bilanciatore del carico con un backend esterno
Questa sezione mostra come configurare e testare un NEG su internet.
Panoramica della configurazione
La configurazione di un NEG internet prevede i seguenti passaggi:
- Definizione dell'endpoint internet in un NEG internet.
- Aggiunta di un NEG internet come backend a un servizio di backend.
- Definire il traffico utente da mappare a questo servizio di backend configurando la mappa URL del bilanciatore del carico delle applicazioni esterno.
- Inserire nella lista consentita gli intervalli IP necessari.
Questo esempio crea le seguenti risorse:
- Una regola di forwarding con l'indirizzo IP
120.1.1.1
indirizza le richieste in arrivo a un proxy di destinazione. - Il
networkTier
della regola di forwarding deve esserePREMIUM
. - Il proxy di destinazione controlla ogni richiesta in base alla mappa URL per determinare il servizio di backend appropriato per la richiesta.
- Per i backend esterni, il proxy di destinazione deve essere
TargetHttpProxy
oTargetHttpsProxy
. Questo esempio utilizzaTargetHttpsProxy
. - Cloud CDN abilitato (facoltativo) sul servizio di backend consente di memorizzare nella cache e pubblicare le risposte dalle cache di Cloud CDN.
- Questo esempio include un'intestazione personalizzata, che è obbligatoria quando il backend esterno si aspetta un valore specifico per l'intestazione
Host
della richiesta HTTP.
La configurazione è la seguente.
Crea il NEG e l'endpoint internet
Console
- Nella console Google Cloud, vai alla pagina Gruppi di endpoint di rete.
- Fai clic su Crea gruppo di endpoint di rete.
- Inserisci il nome del gruppo di endpoint di rete:
example-fqdn-neg
. - Per Tipo di gruppo di endpoint di rete, seleziona Gruppo di endpoint di rete (internet).
- In Porta predefinita, inserisci
443
. - In Nuovo endpoint di rete, seleziona Nome di dominio e porta completi.
- Per il FQDN, inserisci
backend.example.com
. - In Tipo di porta, seleziona Predefinito e verifica che Numero porta sia
443
. - Fai clic su Crea.
gcloud
Crea un NEG internet e imposta
--network-endpoint-type
suinternet-fqdn-port
(il nome host e la porta su cui è possibile raggiungere il backend esterno):gcloud compute network-endpoint-groups create example-fqdn-neg \ --network-endpoint-type="internet-fqdn-port" --global
Aggiungi il tuo endpoint al NEG. Se non viene specificata una porta, la selezione della porta è impostata su
80
(HTTP) o443
(HTTPS; HTTP/2) in base al protocollo configurato nel servizio di backend. Assicurati di includere il flag--global
:gcloud compute network-endpoint-groups update example-fqdn-neg \ --add-endpoint="fqdn=backend.example.com,port=443" \ --global
Elenca il NEG internet creato:
gcloud compute network-endpoint-groups list --global
Output:
NAME LOCATION ENDPOINT_TYPE SIZE example-fqdn-neg global INTERNET_FQDN_PORT 1
Elenca l'endpoint all'interno del NEG:
gcloud compute network-endpoint-groups list-network-endpoints example-fqdn-neg \ --global
Output:
INSTANCE IP_ADDRESS PORT FQDN backend.example.com
Aggiungere un backend esterno a un bilanciatore del carico
L'esempio seguente aggiorna un bilanciatore del carico esistente.
Nel bilanciatore del carico esistente, il servizio predefinito è un servizio Google Cloud. L'esempio modifica la mappa URL esistente aggiungendo un'espressione di corrispondenza del percorso che invia tutte le richieste di cart/id/1223515
al servizio di backend images
, associato al NEG di internet.
Console
Crea il servizio di backend e aggiungi il NEG internet
- Nella console Google Cloud, vai alla pagina Bilanciamento del carico.
- Per aggiungere il servizio di backend a un bilanciatore del carico esistente, selezionate il bilanciatore del carico delle applicazioni classico, fai clic su Menu e poi su Modifica.
- Fai clic su Configurazione backend.
- Nel menu Servizi e bucket di backend, seleziona Crea un servizio di backend.
- Imposta il nome del servizio di backend su
images
. - In Tipo di backend, seleziona Gruppo di endpoint di rete internet.
- Seleziona il protocollo che intendi utilizzare dal bilanciatore del carico al NEG internet. Per questo esempio, seleziona HTTPS.
- In Nuovo backend > Gruppo di endpoint di rete internet, seleziona
example-fqdn-neg
e poi fai clic su Fine. - Seleziona Attiva Cloud CDN.
- (Facoltativo) Modifica le impostazioni della modalità cache e del TTL.
- In Configurazioni avanzate, fai clic su Aggiungi intestazione in Intestazioni delle richieste personalizzate.
- In Nome intestazione, inserisci
Host
. - In Valore intestazione, inserisci
backend.example.com
.
- In Nome intestazione, inserisci
- Fai clic su Crea.
- Tieni aperta la finestra per continuare.
Collega il servizio di backend a una mappa URL esistente
- Fai clic su Regole host e percorso.
- La prima o le prime righe contengono i servizi Google Cloud nella colonna di destra e una di queste è già compilata con la regola predefinita
Any unmatched (default)
per Host e Percorsi. - Assicurati che nella colonna corretta sia selezionata una riga con
images
. Se non esiste, fai clic su Aggiungi regola host e percorso e selezionaimages
. Compila gli altri campi come segue:- In Host, inserisci
*
. - In Percorsi, inserisci
/cart/id/1223515
.
- In Host, inserisci
Esamina e finalizza
- Fai clic su Esamina e finalizza.
- Confronta le impostazioni con ciò che intendevi creare.
- Se è tutto a posto, fai clic su Aggiorna.
gcloud
Crea un nuovo servizio di backend per il NEG:
gcloud compute backend-services create images \ --global \ --enable-cdn \ --cache-mode=CACHE_MODE \ --protocol=HTTP2
Imposta la modalità cache sostituendo CACHE_MODE con una delle seguenti opzioni:
CACHE_ALL_STATIC
: memorizza automaticamente nella cache i contenuti staticiUSE_ORIGIN_HEADERS
(valore predefinito): richiede all'origine di impostare intestazioni di memorizzazione nella cache valide per memorizzare nella cache i contenutiFORCE_CACHE_ALL
: memorizza nella cache tutti i contenuti, ignorando eventuali direttiveprivate
,no-store
ono-cache
negli intestazioni di rispostaCache-Control
Configura il servizio di backend in modo da aggiungere l'intestazione della richiesta personalizzata
Host: backend.example.com
alla richiesta:gcloud compute backend-services update images \ --custom-request-header "Host: backend.example.com" --global
Utilizza il comando
backend-services add-backend
per aggiungere il NEG internet al servizio di backend:gcloud compute backend-services add-backend images \ --network-endpoint-group "example-fqdn-neg" \ --global-network-endpoint-group \ --global
Collega il nuovo servizio di backend alla mappa URL del bilanciatore del carico creando una nuova regola di corrispondenza per indirizzare le richieste a quel backend:
gcloud compute url-maps add-path-matcher EXAMPLE_URL_MAP \ --default-service=GCP_SERVICE_EXAMPLE \ --path-matcher-name=CUSTOM_ORIGIN_PATH_MATCHER_EXAMPLE \ --backend-service-path-rules=/CART/ID/1223515=IMAGES
Sostituisci quanto segue:
EXAMPLE_URL_MAP
: il nome della mappa URL esistenteGCP_SERVICE_EXAMPLE
: il nome di un servizio di backend predefinito esistenteCUSTOM_ORIGIN_PATH_MATCHER_EXAMPLE
: il nome di questa nuova regola del percorso/CART/ID/1223515
: il percorsoIMAGES
: il nome del nuovo servizio di backend con il NEG internet collegato
Aggiungi alla lista consentita gli intervalli IP necessari
Per consentire a un bilanciatore del carico delle applicazioni esterno di inviare richieste al tuo NEG internet, devi eseguire una query sul record TXT DNS _cloud-eoips.googleusercontent.com
utilizzando uno strumento come dig
o nslookup
.
Ad esempio, esegui il seguente comando dig
:
dig TXT _cloud-eoips.googleusercontent.com | grep -Eo 'ip4:[^ ]+' | cut -d':' -f2
L'output contiene due intervalli IP, come segue:
34.96.0.0/20
34.127.192.0/18
Prendi nota degli intervalli IP e assicurati che siano consentiti dal firewall o dall'elenco di controllo dell'accesso (ACL) cloud.
Per ulteriori informazioni, consulta la sezione Autenticazione delle richieste.
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 tuo certificato SSL, devi aggiungere un record A
per ciascuno, che rimandi 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 record.
Testa il bilanciatore del carico delle applicazioni esterno
Ora che hai configurato il bilanciatore del carico, puoi iniziare a inviare traffico al suo indirizzo IP. Se hai configurato un dominio, puoi anche inviare traffico al nome di dominio. Tuttavia, la propagazione DNS può richiedere del 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.
Se hai creato un bilanciatore del carico HTTP, puoi testarlo utilizzando un browser web all'indirizzo
http://IP_ADDRESS
. SostituisciIP_ADDRESS
con l'indirizzo IP del bilanciatore del carico. Dovresti visualizzare la home page del serviziohelloworld
.Se hai creato un bilanciatore del carico HTTPS, puoi testarlo utilizzando un browser web all'indirizzo
https://IP_ADDRESS
. SostituisciIP_ADDRESS
con l'indirizzo IP del bilanciatore del carico. Dovresti visualizzare la home page del serviziohelloworld
.Se il problema persiste e utilizzi un certificato gestito da Google, verifica che lo stato della risorsa del certificato sia ACTIVE. Per ulteriori informazioni, consulta lo stato della risorsa del certificato SSL gestito da Google.
In alternativa, puoi utilizzare
curl
dalla riga di comando della tua macchina locale. SostituisciIP_ADDRESS
con l'indirizzo IPv4 del bilanciatore del carico.Se utilizzi un certificato gestito da Google, testa il dominio che rimanda all'indirizzo IP del bilanciatore del carico. Ad esempio:
curl -s 'https://www.example.com:443' --resolve www.example.com:443:IP_ADDRESS
(Facoltativo) Se utilizzi un dominio personalizzato, potrebbe essere necessario attendere la propagazione delle impostazioni DNS aggiornate. Quindi, testa il tuo dominio (ad esempio,
backend.example.com
) nel browser web.Per assistenza nella risoluzione dei problemi, consulta la sezione Risoluzione dei problemi relativi a NEG di backend ed internet esterni.
Disattivare Cloud CDN
Console
Nella console Google Cloud, vai alla pagina Bilanciamento del carico.
Fai clic sul nome del bilanciatore del carico da modificare.
Fai clic su
Modifica.Fai clic su Configurazione backend.
Per il servizio di backend con il backend NEG internet, fai clic su
Modifica.Deseleziona la casella di controllo Abilita Cloud CDN.
Per rivedere le modifiche, fai clic su Rivedi e finalizza e poi su Aggiorna.
gcloud
gcloud compute backend-services update BACKEND_SERVICE_NAME \ --no-enable-cdn
La disattivazione di Cloud CDN non comporta l'annullamento della convalida o l'eliminazione delle 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 che i contenuti vengano utilizzati dalle cache, devi annullare la loro validità.
Passaggi successivi
- Per verificare se Cloud CDN serve risposte dalla cache, consulta Log e metriche per la memorizzazione nella cache.
- Per scoprire quali contenuti sono memorizzabili nella cache o meno, consulta la Panoramica della memorizzazione nella cache.
- Per trovare i punti di presenza GFE, consulta Località delle cache.