Questa pagina fornisce una panoramica delle funzionalità di gestione del traffico disponibili per l'Application Load Balancer classico. Questa pagina è dedicata al bilanciatore del carico delle applicazioni classico . Se utilizzi un bilanciatore del carico in una modalità diversa con il supporto dell'insieme espanso di funzionalità di gestione del traffico, consulta una delle seguenti pagine:
L'Application Load Balancer classico supporta la funzionalità di gestione del traffico che ti consente di utilizzare le seguenti funzionalità:
- Indirizzamento del traffico. Instrada il traffico in modo intelligente in base ai parametri HTTP(S):
- Azioni sul traffico. Esegui azioni basate su richiesta:
- Norme relative al traffico. Ottimizza il comportamento del bilanciamento del carico:
Queste funzionalità vengono configurate utilizzando la mappa URL del bilanciatore del carico. Per sfondo informazioni, consulta i seguenti argomenti:
Componenti per la gestione del traffico
A livello generale, i bilanciatori del carico delle applicazioni esterni forniscono la gestione del traffico utilizzando mappe URL globali.
Il bilanciatore del carico fornisce le seguenti azioni principali che si escludono a vicenda:
- Indirizza le richieste a un servizio di backend
- Eseguire un reindirizzamento
Quando configuri un bilanciatore del carico, puoi configurare un'azione di riscrittura dell'URL prima che il bilanciatore del carico invii richieste al servizio di backend o al bucket di backend.
Le riscritture o i reindirizzamenti possono essere applicati a tre livelli nella mappa degli URL:
- In
pathRule
, dove l'azione viene applicata quando viene trovata una corrispondenza per un percorso - In corrispondenza di
pathMatcher
in cui viene eseguita l'azione quando non viene trovato alcun percorso per questopathMatcher
- In
urlMap
in cui l'azione viene applicata quando nessuno degli host specificate in una qualsiasi delle regole host
L'utilizzo di routeRules
in un pathMatcher
è un'alternativa all'utilizzo di pathRules
.
pathRules
e routeRules
non possono essere visualizzati entrambi nello stesso pathMatcher
.
A differenza di pathRules
, dove l'ordine non è importante, routeRules
vengono esaminati in
ordine. Un routeRule
può testare il percorso dell'URL, le intestazioni HTTP e la query sull'URL
parametri.
Esempi di casi d'uso
La gestione del traffico risponde a molti casi d'uso. Questa sezione fornisce alcuni esempi di alto livello.
Riscritture
Le riscritture degli URL consentono di presentare agli utenti esterni URL diversi dagli URL utilizzati dai tuoi servizi.
Una riscrittura dell'URL separa un URL da una risorsa. Puoi tradurre da URL facili da ricordare, che sono più facili da usare e ricordare per gli utenti, trasformandoli in URL adatti ai motori di ricerca, che sono più facili da trovare per i motori di ricerca, o in URL specifici per l'implementazione interna.
La funzionalità di riscrittura dell'URL effettua le seguenti operazioni:
- Legge l'URL in arrivo nella richiesta.
- Sostituisce l'host, il percorso o sia l'host sia il percorso, trasformando URL prima di indirizzare il traffico al servizio di backend o al bucket di backend.
Nel diagramma seguente:
- Un utente in Giappone invia una richiesta per l'URL
www.mydomain.com/static/images/someimage.jpg
. - Quando la richiesta raggiunge il bilanciatore del carico delle applicazioni esterno, il bilanciatore del carico utilizza
nella mappa URL per riscrivere l'URL in
www.myorigin.com/august_snapshot/images/someimage.jpg
. - (Facoltativo) In questo esempio, la mappa URL invia la richiesta a un backend esterno.
Per un esempio di configurazione, consulta Riscrive.
Reindirizzamenti
Con i reindirizzamenti URL, puoi reindirizzare le richieste dei client da un URL a un altro URL.
Sono incluse le seguenti funzionalità:
- Reindirizza tutte le richieste HTTP alle richieste HTTPS.
- Reindirizza a un URL diverso formato modificando l'host, il percorso o entrambe le parti dell'URL e rimuovendo o mantenendo i parametri di query.
- Scegli quali codici di risposta di reindirizzamento emettere.
Utilizza i reindirizzamenti URL per le seguenti funzionalità:
- Fornisci l'abbreviazione dell'URL. Gli URL rivolti ai clienti possono essere resi notevolmente più brevi. Il servizio invia un reindirizzamento alla pagina web con l'URL lungo.
- Evita i link inaccessibili quando le pagine web vengono spostate o diventano obsolete.
- Consente a più nomi di dominio appartenenti allo stesso proprietario di fare riferimento a un singolo sito web.
- Evita le difficoltà e le inefficienze della configurazione di soluzioni alternative sul server di backend per supportare il reindirizzamento necessario.
- Riduci la latenza. I reindirizzamenti creati all'edge possono comportare una latenza inferiore rispetto ai reindirizzamenti creati negli endpoint di backend.
I reindirizzamenti da HTTP a HTTPS ti aiutano inoltre a:
- Soddisfa i requisiti di conformità (ad esempio HIPAA) per il traffico criptato.
- Reindirizza le richieste utilizzando HTTPS anziché rifiutare le richieste inviate con protocollo HTTP.
- Migliora il profilo di sicurezza della tua applicazione reindirizzando il traffico al bilanciatore del carico di livello 7, anziché implementare il reindirizzamento presso il server di backend.
Nel seguente diagramma:
- Un utente in Giappone invia una richiesta
GET http://example.com/img1
. - In base al reindirizzamento definito nella mappa URL, il bilanciatore del carico invia un reindirizzamento
HTTP/1.1 302 Found Location: https://example.com/img1
, reindirizzando la richiesta HTTP a una richiesta HTTPS. - Il browser dell'utente invia una richiesta
GET https://example.com/img1
.
Per un esempio di configurazione, consulta Reindirizzamenti.
Codici di risposta supportati
I codici di risposta di reindirizzamento supportati sono elencati nella tabella.
Codice risposta | Numero | Note |
---|---|---|
MOVED_PERMANENTLY_DEFAULT | 301 | |
TROVATO | 302 | |
PERMANENT_REDIRECT | 308 | In questo caso, il metodo di richiesta viene mantenuto. |
TEMPORARY_REDIRECT | 307 | In questo caso, il metodo di richiesta viene mantenuto. |
SEE_OTHER | 303 |
Routing basato su intestazioni e parametri
Il routing basato su intestazioni e parametri consente a un bilanciatore del carico di eseguire il routing decisioni basate su intestazioni HTTP e parametri di ricerca dell'URL.
Con questa funzionalità puoi semplificare l'architettura cloud senza eseguire il deployment livelli aggiuntivi di proxy (NGINX, ad esempio) per eseguire il routing.
Puoi utilizzare il bilanciatore del carico delle applicazioni esterno per:
- test A/B
- Assegnare i clienti a diversi insiemi di servizi in esecuzione sui backend
- Offrire pagine ed esperienze diverse in base a diverse categorie di i dispositivi da cui hanno origine le richieste
Dopo aver selezionato un pathMatcher
in base alla stringa host, il routeRules
in
pathMatcher
seleziona un percorso dell'URL. Per ulteriori informazioni, consulta la panoramica delle mappe di URL.
Esempio: configurare i test A/B con il routing basato su parametri di query
L'esempio seguente mostra come eseguire test A/B tramite la corrispondenza nella stringa di query per specificare l'esperimento e l'input.
Supponiamo di voler assicurarti che le richieste vengano gestite come segue:
- Tutte le richieste con il valore del parametro query
A
vanno al servizio di backend chiamatoBackendServiceForProcessingOptionA
. - Tutte le richieste con il valore parametro di query
B
vanno al servizio di backend chiamatoBackendServiceForProcessingOptionB
.
Questi requisiti sono riassunti nella tabella seguente.
Richiesta | Servizio di backend |
---|---|
http://test.mydomain.com?ABTest=A |
BackendServiceForProcessingOptionA |
http://test.mydomain.com?ABTest=B |
BackendServiceForProcessingOptionB |
Per configurare questa opzione nella sitemap URL globale, puoi creare le seguenti impostazioni.
Corrispondenza | Azione |
---|---|
pathMatchers[].routeRules[].matchRules[].queryParameterMatches[].name = ABTest pathMatchers[].routeRules[].matchRules[].queryParameterMatches[].exactMatch = A |
pathMatchers[].routeRules[].service = BackendServiceForProcessingOptionA |
pathMatchers[].routeRules[].matchRules[].queryParameterMatches[].name = ABTest pathMatchers[].routeRules[].matchRules[].queryParameterMatches[].exactMatch = B |
pathMatchers[].routeRules[].service = BackendServiceForProcessingOptionB |
Per un esempio di configurazione, consulta Basate su intestazioni e basate su parametri di routing.
Routing delle richieste ai backend
Il backend per il tuo traffico viene determinato utilizzando un approccio in due fasi:
Il bilanciatore del carico seleziona un servizio di backend con backend. I backend possono essere:
- Istanze di macchine virtuali (VM) Compute Engine in un'istanza non gestita gruppo
- VM di Compute Engine in un gruppo di istanze gestite
- Container mediante un nodo Google Kubernetes Engine (GKE) in un ambiente gruppo di endpoint di rete (NEG)
- Backend esterni a Google Cloud in un NEG internet
- Cloud Storage nei bucket di backend
- Funzioni App Engine, Cloud Run o servizi Cloud Run in un NEG serverless
Il bilanciatore del carico sceglie un servizio di backend in base alle regole definite in una mappa URL globale.
Il servizio di backend seleziona un'istanza di backend in base ai criteri definiti in un servizio di backend globale.
Quando configuri il routing, puoi scegliere tra le seguenti modalità:
- Test di host e percorso semplici utilizzando
pathRules
- Test avanzati delle richieste con
routeRules
Per ogni mappa URL, puoi scegliere di utilizzare regole host e percorso semplici o regole avanzate per host, percorso e route. Le due modalità si escludono a vicenda. Ogni sitemap può contenere una sola modalità o l'altra.
Regola semplice per host e percorso
In una regola host e percorso semplice, le mappe URL funzionano come descritto nella sezione Mappa URL Panoramica.
Il seguente diagramma mostra il flusso logico di una regola host e percorso semplice.
Una richiesta viene inizialmente valutata utilizzando le regole host. Un host è il dominio
specificato dalla richiesta. Se la richiesta host
corrisponde a una delle voci in
Nel campo hosts
, viene utilizzato il matcher del percorso associato.
Quindi, viene valutato il matcher di percorso. Le regole percorso vengono valutate long-path-matches-first ed è possibile specificare le regole di percorso in qualsiasi ordine. Una volta trovata la corrispondenza più specifica, la richiesta viene indirizzata al dal servizio di backend corrispondente. Se la richiesta non corrisponde, il valore predefinito di servizio di backend.
Una tipica regola host e percorso semplice potrebbe avere il seguente aspetto:
dove il traffico video viene indirizzato a video-backend-service
e tutto il resto del traffico viene indirizzato
a web-backend-service
.
$ gcloud compute url-maps describe ext-https-map
defaultService: global/backendServices/web-backend-service
hostRules:
- hosts:
- '*'
pathMatcher: pathmap
name: ext-https-map
pathMatchers:
- defaultService: global/backendServices/web-backend-service
name: pathmap
pathRules:
- paths:
- /video
- /video/*
service: global/backendServices/video-backend-service
Per un esempio di configurazione, vedi Hosting del tuo percorso di apprendimento.
Regola avanzata per host, percorso e route
Le regole avanzate per host, percorso e route forniscono opzioni di configurazione aggiuntive rispetto alle semplici regole di host e percorso. Queste opzioni consentono di attivare modelli di gestione del traffico e anche modificare parte della semantica. Ad esempio: le regole di route vengono eseguite in ordine (anziché utilizzando la semantica più lunga-path-matches-first).
Come nell'esempio precedente di regola host e percorso semplice, puoi configurare la gestione avanzata del traffico utilizzando una mappa URL globale, ma anziché utilizzare pathMatchers[].pathRules[]
, utilizza pathMatchers[].routeRules[]
.
Le sezioni seguenti descrivono i componenti delle regole avanzate per host, percorso e route.
Regole host
Quando una richiesta raggiunge il bilanciatore del carico, il campo host
della richiesta viene
valutato in base al valore hostRules
definito nella mappa URL. Ogni regola host è costituita da un elenco di uno o più host e da un singolo corrispondenze dei percorsi (pathMatcher
). Se non sono definiti hostRules
, la richiesta viene indirizzata a defaultService
.
Per ulteriori informazioni, consulta i hostRules[]
e defaultService
nel
documentazione globale dell'API Mappa URL.
Matcher percorso
Dopo che una richiesta corrisponde a una regola host, il bilanciatore del carico valuta il corrispondente matcher dei percorsi per l'host.
Un'associazione di percorsi è composta dai seguenti componenti:
- Una o più regole di percorso (
pathRules
) o regole di route (routeRules
). Una regola predefinita che viene eseguita quando non ci sono altri servizi di backend corrispondenti. La regola ha le seguenti opzioni mutuamente esclusive:
- Un servizio predefinito specifica il servizio di backend predefinito a cui instradare quando non esistono altri servizi di backend corrispondenti.
- Un reindirizzamento predefinito specifica l'URL a cui reindirizzare quando non sono presenti altre corrispondenze per i servizi di backend.
Quando il bilanciatore del carico è configurato per un servizio predefinito, può inoltre essere configurato per riscrivere l'URL prima di inviare la richiesta al predefinito.
Per ulteriori informazioni, vedi pathMatchers[]
, pathMatchers[].pathRules[]
e
pathMatchers[].routeRules[]
nell'API mappa URL globale
documentazione.
Regole percorso
Le regole percorso (pathRules
) specificano uno o più percorsi dell'URL, ad esempio /
o /video
.
Le regole percorso sono in genere destinate al tipo di routing semplice basato su host e percorso descritto in precedenza.
Per ulteriori informazioni, consulta pathRules[]
nella documentazione dell'API mappa degli URL globali.
Regole di route
Una regola di routing (routeRules
) associa le informazioni di una richiesta in entrata e prende una decisione di routing in base alla corrispondenza.
Le regole di routing possono contenere una serie di regole di corrispondenza (matchRules
) e di azioni di routing (routeAction
) diverse.
Una regola di corrispondenza valuta la richiesta in arrivo in base al percorso, alle intestazioni e ai parametri di query della richiesta HTTP(S). Le regole di corrispondenza supportano vari tipi di corrispondenze (ad es. la corrispondenza del prefisso), così come i modificatori (ad es. insensibilità). In questo modo, ad esempio, puoi inviare richieste HTTP(S) a un insieme di backend in base alla presenza di un'intestazione HTTP definita in base alle tue esigenze.
Per un elenco dettagliato delle opzioni supportate da matchRules
, consulta matchRules[]
nella documentazione dell'API mappa URL globale.
Se hai più regole di route, il bilanciatore del carico le esegue in ordine, il che ti consente di specificare una logica personalizzata per la corrispondenza, il routing e altre azioni.
All'interno di una determinata regola di route, quando viene effettuata la prima corrispondenza, il bilanciatore del carico si arresta valutare le regole di corrispondenza e le altre eventuali regole di corrispondenza rimanenti vengono ignorate.
Google Cloud esegue le seguenti azioni:
- Cerca la prima regola di corrispondenza che corrisponde alla richiesta.
- Interrompe la visualizzazione di qualsiasi altra regola di corrispondenza.
- Applica le azioni nelle azioni route corrispondenti.
Le regole di routing hanno diversi componenti, come descritto nella tabella seguente.
Componente regola percorso (API field name ) |
Descrizione |
---|---|
Priorità (priority ) |
Un numero compreso tra 0 e 2147483647 (ovvero (2^31)-1) assegnato a una
regola di routing all'interno di un determinato corrispondere percorso per determinare l'ordine di
valutazione della regola di routing. La priorità più alta è 0 . La priorità più bassa è
2147483647 .
Ad esempio, una regola con priorità 4 viene valutata prima di una
regola con priorità 25 . La prima regola che corrisponde
verrà applicata la richiesta.
I numeri di priorità possono avere spazi; non devono essere contigui. Non puoi creare più regole con la stessa priorità. |
Descrizione (description ) |
Una descrizione facoltativa di massimo 1024 caratteri. |
Servizio (service ) |
L'URL completo o parziale della risorsa del servizio di backend a cui viene indirizzato il traffico se viene trovata una corrispondenza per questa regola. |
Regole di corrispondenza (matchRules ) |
Una o più regole che vengono valutate in base alla richiesta. Questi
matchRules possono corrispondere a tutti o a un sottoinsieme degli attributi HTTP
della richiesta, ad esempio il percorso, le intestazioni HTTP e i parametri di query (GET).All'interno di un matchRule , tutti i criteri corrispondenti
deve essere soddisfatto affinché routeActions di routeRule
hanno effetto. Se un routeRule ha più
matchRules , il routeActions del
routeRule vengono applicati quando una richiesta corrisponde a uno degli
matchRules di routeRule .
|
Azione route (routeAction ) |
Consente di specificare un'azione di riscrittura dell'URL da eseguire quando la regola di corrispondenza vengono soddisfatti i criteri. |
Azione di reindirizzamento (urlRedirect ) |
Puoi configurare un'azione per rispondere con un reindirizzamento HTTP quando i criteri della regola di corrispondenza sono soddisfatti. Questo campo non può essere utilizzato insieme a un'azione di percorso. |
Per ulteriori informazioni, consulta i seguenti campi nella documentazione dell'API mappa di URL globale:
routeRules[]
routeRules[].priority
routeRules[].description
routeRules[].service
routeRules[].matchRules[]
routeRules[].routeAction
routeRules[].urlRedirect
Regole delle corrispondenze
Le regole di corrispondenza (matchRules
) corrispondono a uno o più attributi di una richiesta e prendono
azioni specificate nella regola di route. Il seguente elenco fornisce alcuni esempi
di attributi della richiesta che possono essere abbinati utilizzando le regole di corrispondenza:
Host: un nome host è la parte del nome di dominio di un URL. ad esempio la porzione del nome host dell'URL
http://example.net/video/hd
èexample.net
. Nella richiesta, il nome host proviene dall'intestazioneHost
, mostrato in questo comando curl di esempio, dove10.1.2.9
è il bilanciamento del carico Indirizzo IP:curl -v http://10.1.2.9/video/hd --header 'Host: example.com'
I percorsi seguono il nome host, ad esempio
/images
. La regola può specificare se deve corrispondere l'intero percorso o solo la parte iniziale.Altri parametri di richiesta HTTP, ad esempio le intestazioni HTTP, che consentono i cookie così come i parametri di ricerca (variabili GET). Tieni presente che la corrispondenza delle espressioni regolari per i valori dell'intestazione non è supportata.
Per un elenco completo delle regole di corrispondenza supportate, consulta
pathMatchers[].routeRules[].matchRules[]
nella documentazione dell'API mappa di URL globale.
Configurazione della gestione del traffico
Puoi utilizzare la console Google Cloud, gcloud
o l'API Cloud Load Balancing per
e configurare la gestione del traffico. Nell'ambiente di configurazione scelto,
e configurare la gestione del traffico
usando le configurazioni YAML.
Per assistenza nella scrittura di questi file YAML, puoi utilizzare le seguenti risorse:
La documentazione globale dell'API Mappa URL
Fornisce un elenco completo dei campi, inclusa la semantica relativa a relazioni, limitazioni e cardinalità.
Esempi nella pagina di configurazione della gestione del traffico: