Questa guida utilizza un esempio per descrivere i concetti di base dell'utilizzo di un backend esterno (detto anche origine personalizzata) in un bilanciatore del carico delle applicazioni esterno. Un backend esterno è un endpoint esterno a Google Cloud. Utilizzando un backend esterno con un bilanciatore del carico delle applicazioni esterno, puoi migliorare le prestazioni mediante l'uso della memorizzazione nella cache di Cloud CDN.
La guida descrive nel dettaglio come configurare un bilanciatore del carico delle applicazioni esterno globale con un servizio di backend abilitato per Cloud CDN che funge da proxy a un server di backend esterno all'indirizzo backend.example.com.
Nell'esempio, il bilanciatore del carico accetta richieste HTTPS dai client e le invia tramite proxy HTTPS al backend esterno. Questo esempio presuppone che il backend esterno supporti HTTPS.
Un'altra opzione potrebbe essere configurare un bilanciatore del carico in modo che accetti richieste HTTP o HTTPS e utilizzare HTTPS per inviare le richieste tramite proxy al backend esterno.
Questa guida presuppone che tu abbia già configurato un bilanciatore del carico e stia aggiungendo un nuovo backend esterno. Per saperne di più, consulta Configura un bilanciatore del carico delle applicazioni classico con un backend del 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 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 di 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 gli argomenti seguenti:
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 avere il ruolo di proprietario o editor del progetto oppure disporre di entrambi i ruoli IAM di Compute Engine riportati di seguito.
| Attività | Ruolo richiesto |
|---|---|
| Creare e modificare i componenti del bilanciatore del carico | Network Admin |
| Creare e modificare i NEG | Compute Instance Admin |
Configura un bilanciatore del carico con un backend esterno
Questa sezione mostra come configurare e testare un NEG internet.
Panoramica della configurazione
La configurazione di un NEG internet consiste nelle seguenti operazioni:
- Definizione dell'endpoint internet in un NEG internet.
- Aggiunta di un NEG internet come backend a un servizio di backend.
- Definizione del traffico utente da mappare a questo servizio di backend configurando la mappa URL del bilanciatore del carico delle applicazioni esterno.
- Inserimento degli intervalli IP necessari nella lista consentita.
Questo esempio crea le seguenti risorse:
- Una regola di forwarding con l'indirizzo IP
120.1.1.1indirizza le richieste in arrivo a un proxy di destinazione. - Il
networkTierdella regola di forwarding deve esserePREMIUM. - Il proxy di destinazione controlla ogni richiesta rispetto alla mappa URL per determinare il servizio di backend appropriato per la richiesta.
- Per i backend esterni, il proxy di destinazione deve essere
TargetHttpProxyoTargetHttpsProxy. Questo esempio utilizzaTargetHttpsProxy. - Cloud CDN abilitato (facoltativo) sul servizio di backend consente la memorizzazione nella cache e la gestione delle risposte dalle cache di Cloud CDN.
- Questo esempio include un'intestazione personalizzata, che è obbligatoria quando il backend esterno prevede un valore specifico per l'intestazione
Hostdella richiesta HTTP.
La configurazione è simile alla 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 nome di dominio completo, 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-typesuinternet-fqdn-port(il nome host e la porta su cui è raggiungibile il backend esterno):gcloud compute network-endpoint-groups create example-fqdn-neg \ --network-endpoint-type="internet-fqdn-port" --globalAggiungi l'endpoint al NEG. Se non viene specificata una porta, per impostazione predefinita viene selezionata la porta
80(HTTP) o443(HTTPS; HTTP/2) a seconda del 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" \ --globalElenca 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 \ --globalOutput:
INSTANCE IP_ADDRESS PORT FQDN backend.example.com
Aggiungi 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 matcher di percorso che invia tutte le richieste per cart/id/1223515 al servizio di backend images, che è associato al NEG 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, seleziona il bilanciatore del carico delle applicazioni classico, fai clic su Menu, quindi seleziona 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-nege poi fai clic su Fine. - Seleziona Abilita Cloud CDN.
- (Facoltativo) Modifica le impostazioni della modalità cache e del TTL.
- In Configurazioni avanzate, fai clic su Aggiungi intestazione nella sezione Intestazioni della richiesta personalizzate.
- In Nome intestazione, inserisci
Host. - In Valore intestazione, inserisci
backend.example.com.
- In Nome intestazione, inserisci
- Fai clic su Crea.
- Lasci aperta la finestra per continuare.
Collega il servizio di backend a una mappa URL esistente
- Fai clic su Regole host e percorso.
- La prima riga o le prime righe hanno i servizi Google Cloud nella colonna a destra e una di queste è già compilata con la regola predefinita
Any unmatched (default)per Host e Percorsi. - Assicurati che nella colonna a destra sia presente una riga che contiene
images. Se non è presente, 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 quelle che volevi creare.
- Se è tutto corretto, 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 uno dei seguenti valori:
CACHE_ALL_STATIC: memorizza automaticamente nella cache i contenuti staticiUSE_ORIGIN_HEADERS(valore predefinito): richiede che l'origine imposti intestazioni di memorizzazione nella cache valide per memorizzare i contenuti nella cacheFORCE_CACHE_ALL: memorizza nella cache tutti i contenuti, ignorando le direttiveprivate,no-storeono-cachenelle intestazioni della rispostaCache-Control
Configura il servizio di backend per aggiungere l'intestazione della richiesta personalizzata
Host: backend.example.comalla richiesta:gcloud compute backend-services update images \ --custom-request-header "Host: backend.example.com" --global
Utilizza il comando
backend-services add-backendper 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 di percorso/CART/ID/1223515: il percorsoIMAGES: il nome del nuovo servizio di backend con il NEG internet collegato
Inserisci nella 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 questo comando dig:
dig TXT _cloud-eoips.googleusercontent.com | grep -Eo 'ip4:[^ ]+' | cut -d':' -f2
L'output contiene i due intervalli IP seguenti:
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) al cloud.
Per saperne di più, consulta Autenticazione delle richieste.
Connetti il dominio al bilanciatore del carico
Dopo aver creato il bilanciatore del carico, prendi nota dell'indirizzo IP associato, 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 in modo che puntino tutti all'indirizzo IP del bilanciatore del carico. Ad esempio, per creare record A per www.example.com e example.com, utilizza:
NAME TYPE DATA www A 30.90.80.100 @ A 30.90.80.100
Se utilizzi Cloud DNS come provider DNS, consulta Aggiungi, modifica ed elimina record.
Testa il bilanciatore del carico delle applicazioni esterno
Ora che hai configurato il bilanciatore del carico, puoi iniziare a inviare traffico all'indirizzo IP corrispondente. Se hai configurato un dominio, puoi inviare traffico anche al nome di dominio. Tuttavia, il completamento della propagazione DNS può richiedere tempo, quindi puoi iniziare utilizzando l'indirizzo IP per il 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_ADDRESScon l'indirizzo IP del bilanciatore del carico. Dovrebbe aprirsi automaticamente 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_ADDRESScon l'indirizzo IP del bilanciatore del carico. Dovrebbe aprirsi automaticamente la home page del serviziohelloworld.Se questa procedura non funziona e utilizzi un certificato gestito da Google, verifica che lo stato della risorsa certificato sia ACTIVE. Per saperne di più, consulta Stato della risorsa certificato SSL gestito da Google.
In alternativa, puoi utilizzare
curldalla riga di comando della tua macchina locale. SostituisciIP_ADDRESScon 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 -s 'https://www.example.com:443' --resolve www.example.com:443:IP_ADDRESS
(Facoltativo) Se utilizzi un dominio personalizzato, potresti dover attendere che le impostazioni DNS aggiornate vengano propagate. Dopodiché, testa il tuo dominio (ad esempio,
backend.example.com) nel browser web.Per assistenza nella risoluzione dei problemi, consulta Risoluzione dei problemi relativi al backend esterno e ai NEG internet.
Disabilita 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 del NEG internet, fai clic su Modifica.
Deseleziona la casella di controllo Abilita Cloud CDN.
Per rivedere le modifiche, fai clic su Esamina e finalizza, quindi su Aggiorna.
gcloud
gcloud compute backend-services update BACKEND_SERVICE_NAME \
--no-enable-cdn
La disattivazione di Cloud CDN non annulla la convalida né elimina definitivamente i contenuti delle cache. Se disattivi e riattivi Cloud CDN, quasi tutti o tutti i contenuti memorizzati nella cache potrebbero rimanere nella cache. Per impedire che i contenuti vengano utilizzati dalle cache, devi annullarne la convalida.
Passaggi successivi
- Per verificare se Cloud CDN gestisce le risposte dalla cache, consulta Log e metriche per la memorizzazione nella cache.
- Per scoprire quali contenuti sono memorizzabili nella cache o meno, consulta Panoramica della memorizzazione nella cache.
- Per trovare i punti di presenza (POP) di GFE, consulta Località delle cache.