Questa pagina include due esempi per il bilanciatore del carico delle applicazioni classico:
- Configurare il routing basato su parametri di query
- Configurare il routing basato sulle intestazioni HTTP
Per configurare la gestione del traffico per l'Application Load Balancer esterno globale e per l'Application Load Balancer esterno regionale, consulta le seguenti pagine:
- Configurare la gestione del traffico per il bilanciatore del carico delle applicazioni esterno globale
- Configura la gestione del traffico per il bilanciatore del carico delle applicazioni esterno regionale
Prima di iniziare
- Leggi la panoramica della gestione del traffico per bilanciatori del carico delle applicazioni esterni.
- Devi conoscere l'API mappa URL.
Configurare il routing basato su parametri di query
Questo esempio mostra come utilizzare parametri di ricerca per eseguire test A/B mediante la corrispondenza sulla stringa di query.
Aggiungi due gruppi di istanza di backend
Affinché il routing sia utile, devi avere più backend.
Per configurare due backend, le VM devono trovarsi in due gruppi di istanze. Questa guida descrive come creare gruppi di istanze gestite con VM Linux su cui è in esecuzione Apache e come configurare il bilanciamento del carico.
I gruppi di istanze gestite forniscono VM che eseguono i server di backend di un bilanciatore del carico HTTP esterno. A scopo dimostrativo, i backend gestiscono i propri nomi host.
Per semplicità, i backend si trovano nella stessa regione. Se vuoi una configurazione in più regioni, devi avere configurato un modello di istanza per la seconda regione.
Console
Creare un modello di istanza. Nella console Google Cloud, vai alla pagina Modelli di istanza.
- Fai clic su Crea modello istanza.
- In Nome, inserisci
lb-backend-template
. - Assicurati che il disco di avvio sia impostato su un'immagine Debian, ad esempio
Debian GNU/Linux 12 (bookworm). Queste istruzioni utilizzano comandi disponibili solo su Debian, come
apt-get
. - Fai clic su Opzioni avanzate.
- Fai clic su Networking e configura il seguente campo:
- In Tag di rete, inserisci
allow-health-check
.
- In Tag di rete, inserisci
Fai clic su Gestione. Inserisci lo script che segue nel campo Script di avvio.
#! /bin/bash apt-get update apt-get install apache2 -y a2ensite default-ssl a2enmod ssl vm_hostname="$(curl -H "Metadata-Flavor:Google" \ http://metadata.google.internal/computeMetadata/v1/instance/name)" echo "Page served from: $vm_hostname" | \ tee /var/www/html/index.html systemctl restart apache2
Fai clic su Crea.
Creare un gruppo di istanze gestite. Vai alla pagina Gruppi di istanze nella console Google Cloud.
- Fai clic su Crea gruppo di istanze.
- Seleziona Nuovo gruppo di istanze gestite (stateless). Per ulteriori informazioni, consulta Gruppi di istanze gestite stateless o stateful.
- In Nome, inserisci
first-example-ig
. - In Località, seleziona Zona singola.
- In Regione, seleziona la regione che preferisci. Questo esempio utilizza
us-east1
. - In Zona, seleziona
us-east1-b
. - In Modello di istanza, seleziona il modello di istanza
lb-backend-template
. - In Numero massimo di istanze, inserisci
2
. - In Modalità di scalabilità automatica, seleziona
Off:do not autoscale
. - Fai clic su Crea.
Crea un altro gruppo di istanze gestite come questo. Assegna al secondo il nome second-example-ig
e basalo sul modello lb-backend-template
.
gcloud
Creare un modello di istanza.
gcloud compute instance-templates create lb-backend-template \ --region=us-east1 \ --network=default \ --subnet=default \ --tags=allow-health-check \ --image-family=debian-12 \ --image-project=debian-cloud \ --metadata=startup-script='#! /bin/bash apt-get update apt-get install apache2 -y a2ensite default-ssl a2enmod ssl vm_hostname="$(curl -H "Metadata-Flavor:Google" \ http://metadata.google.internal/computeMetadata/v1/instance/name)" echo "Page served from: $vm_hostname" | \ tee /var/www/html/index.html systemctl restart apache2'
Crea il primo gruppo di istanze gestite in base al modello.
gcloud compute instance-groups managed create first-example-ig \ --template=lb-backend-template --size=2 --zone=us-east1-b
Crea il secondo gruppo di istanze gestite in base al modello.
gcloud compute instance-groups managed create second-example-ig \ --template=lb-backend-template --size=2 --zone=us-east1-c
Configurazione di una regola firewall
In questo esempio, crei la regola firewall fw-allow-health-check
.
Si tratta di una regola in entrata che consente il traffico proveniente dai sistemi di controllo di integrità di Google Cloud (130.211.0.0/22
e 35.191.0.0/16
). Questo esempio utilizza il tag di destinazione allow-health-check
per identificare le VM.
Console
- Nella console Google Cloud, vai alla pagina Criteri firewall.
Vai a Criteri firewall - Fai clic su Crea regola firewall per creare la seconda regola firewall:
- Inserisci un nome per
fw-allow-health-check
. - In Rete, seleziona
Default
. - In Target, seleziona Tag di destinazione specificati.
- Compila il campo Tag di destinazione con
allow-health-check
. - Imposta Filtro di origine su Intervalli IPv4.
- Imposta Intervalli IPv4 di origine su
130.211.0.0/22
e35.191.0.0/16
. - In Protocolli e porte, seleziona Protocolli e porte specificati.
- Seleziona la casella di controllo TCP e inserisci
80
per i numeri di porta. - Fai clic su Crea.
gcloud
gcloud compute firewall-rules create fw-allow-health-check \ --network=default \ --action=allow \ --direction=ingress \ --source-ranges=130.211.0.0/22,35.191.0.0/16 \ --target-tags=allow-health-check \ --rules=tcp
Prenotazione di un indirizzo IP esterno
Ora che le istanze sono operative, configura un indirizzo IP esterno statico e globale che verrà utilizzato dai clienti per raggiungere il bilanciatore del carico.
Console
- Vai alla pagina Indirizzi IP esterni nella console Google Cloud.
Vai alla pagina Indirizzi IP esterni - Fai clic su Prenota indirizzo statico per prenotare un indirizzo IPv4.
- Assegna un nome di
lb-ipv4-1
. - Imposta il livello di rete su Standard.
- Imposta la versione IP su IPv4.
- Imposta il Tipo su Globale.
- Fai clic su Prenota.
- Assicurati che l'opzione Tipo sia impostata su Globale.
- Fai clic su Prenota.
gcloud
gcloud compute addresses create lb-ipv4-1 \ --ip-version=IPV4 \ --network-tier=PREMIUM \ --global
Prendi nota dell'indirizzo IPv4 riservato:
gcloud compute addresses describe lb-ipv4-1 \ --format="get(address)" \ --global
Configurazione dei backend del bilanciatore del carico
Console
Al momento, la console Google Cloud non è supportata per la configurazione del routing basato su intestazioni e parametri. Utilizza gcloud
o l'API.
gcloud
- Crea un controllo di integrità.
gcloud compute health-checks create http http-basic-check \ --port 80
- Crea il primo servizio di backend.
-
Per un bilanciatore del carico delle applicazioni esterno globale, utilizza il
comando gcloud CLI con
load-balancing-scheme=EXTERNAL_MANAGED
. Questa impostazione offre funzionalità di gestione del traffico avanzate. - Per un bilanciatore del carico delle applicazioni classico, utilizza
load-balancing-scheme=EXTERNAL
.
gcloud compute backend-services create service-a \ --load-balancing-scheme=LOAD_BALANCING_SCHEME \ --global-health-checks \ --protocol HTTP \ --health-checks http-basic-check \ --global
-
Per un bilanciatore del carico delle applicazioni esterno globale, utilizza il
comando gcloud CLI con
- Crea il secondo servizio di backend.
gcloud compute backend-services create service-b \ --load-balancing-scheme=LOAD_BALANCING_SCHEME \ --global-health-checks \ --protocol HTTP \ --health-checks http-basic-check \ --global
- Aggiungi il tuo primo gruppo di istanze come backend del primo servizio di backend.
gcloud compute backend-services add-backend service-a \ --balancing-mode=UTILIZATION \ --max-utilization=0.8 \ --capacity-scaler=1 \ --instance-group=first-example-ig \ --instance-group-zone=us-east1-b \ --global
- Aggiungi il secondo gruppo di istanze come backend del secondo servizio di backend.
gcloud compute backend-services add-backend service-b \ --balancing-mode=UTILIZATION \ --max-utilization=0.8 \ --capacity-scaler=1 \ --instance-group=second-example-ig \ --instance-group-zone=us-east1-c \ --global
Creazione della mappa URL
Console
Al momento, la console Google Cloud non è supportata per la configurazione del routing basato su intestazioni e parametri. Utilizza gcloud
o l'API.
gcloud
Crea un file YAML
/tmp/web-map-http.yaml
. SostituisciPROJECT_ID
con l'ID del tuo progetto.defaultService: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/service-a hostRules: - hosts: - '*' pathMatcher: path-matcher-1 name: web-map-http pathMatchers: - defaultService: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/service-a name: path-matcher-1 routeRules: - matchRules: - prefixMatch: / queryParameterMatches: - name: ABTest exactMatch: A priority: 0 service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/service-a - matchRules: - prefixMatch: / queryParameterMatches: - name: ABTest exactMatch: B priority: 1 service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/service-b selfLink: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/urlMaps/web-map-http tests: - description: Test routing for query ABTest with A host: example.com path: /?ABTest=A service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/service-a expectedOutputUrl: http://example.com/?ABTest=A - description: Test routing for query ABTest with B host: example.com path: /?ABTest=B service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/service-b expectedOutputUrl: http://example.com/?ABTest=B
Convalida la mappa URL.
gcloud compute url-maps validate --source /tmp/web-map-http.yaml
Se i test vengono superati e il comando restituisce un messaggio di esito positivo, salva le modifiche alla mappa degli URL.
Aggiorna la mappa URL.
gcloud compute url-maps import web-map-http \ --source /tmp/web-map-http.yaml \ --global
Creazione del proxy di destinazione e regola di forwarding
Console
Al momento, la console Google Cloud non è supportata per la configurazione del routing basato su intestazioni e parametri. Utilizza gcloud
o l'API.
gcloud
- Crea un proxy HTTP di destinazione per instradare le richieste alla mappa URL.
gcloud compute target-http-proxies create http-lb-proxy \ --url-map web-map-http
- Crea una regola di forwarding globale per instradare le richieste in entrata al proxy.
-
Per un bilanciatore del carico delle applicazioni esterno globale, utilizza il
comando gcloud CLI con
load-balancing-scheme=EXTERNAL_MANAGED
. Questa impostazione offre funzionalità di gestione del traffico avanzate. - Per un bilanciatore del carico delle applicazioni classico, utilizza
load-balancing-scheme=EXTERNAL
.
gcloud compute forwarding-rules create http-content-rule \ --load-balancing-scheme=LOAD_BALANCING_SCHEME \ --network-tier=PREMIUM \ --address=lb-ipv4-1 \ --global \ --target-http-proxy=http-lb-proxy \ --ports=80
-
Per un bilanciatore del carico delle applicazioni esterno globale, utilizza il
comando gcloud CLI con
Test
Prendi nota dell'indirizzo IPv4 riservato:
gcloud compute addresses describe lb-ipv4-1 \ --format="get(address)" \ --global
Testa questa configurazione eseguendo:
curl http://IP_ADDRESS?ABTest=A
curl http://IP_ADDRESS?ABTest=B
In un browser, apri
http://IP_ADDRESS?ABTest=A
e
http://IP_ADDRESS?ABTest=B
.
Configurare il routing basato sulle intestazioni HTTP
Questo esempio mostra come aggiungere e rimuovere intestazioni HTTP per eseguire il routing intelligente.
Prima di iniziare
Puoi utilizzare un bilanciatore del carico delle applicazioni esterno esistente o crearne uno nuovo.
Puoi utilizzare questa funzionalità con uno qualsiasi dei tipi di backend supportati. Questo esempio presuppone che tu stia utilizzando VM in un gruppo di istanze.
Per configurare un semplice bilanciatore del carico, consulta l'esempio basato su parametri di query riportato sopra.
Aggiornamento della mappa URL
Console
Al momento, la console Google Cloud non è supportata per la configurazione del routing basato su intestazioni e parametri. Utilizza gcloud
o l'API.
gcloud
Questo esempio mostra come utilizzare le intestazioni delle richieste HTTP per eseguire test A/B mediante la corrispondenza dei valori nelle intestazioni HTTP della richiesta.
Crea un file YAML
/tmp/web-map-http.yaml
. SostituisciPROJECT_ID
con l'ID del tuo progetto.defaultService: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/service-a kind: compute#urlMap name: web-map-http hostRules: - hosts: - '*' pathMatcher: path-matcher-1 pathMatchers: - defaultService: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/service-a name: path-matcher-1 routeRules: - matchRules: - prefixMatch: / headerMatches: - headerName: ABTest exactMatch: A priority: 0 service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/service-a - matchRules: - prefixMatch: / headerMatches: - headerName: ABTest exactMatch: B priority: 1 service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/service-b tests: - description: Test routing for query ABTest with A host: example.com path: / headers: - name: ABTest value: A service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/service-a - description: Test routing for query ABTest with B host: example.com path: / headers: - name: ABTest value: B service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/service-b
Convalida la mappa URL.
gcloud compute url-maps validate --source /tmp/web-map-http.yaml
Se i test vengono superati e il comando restituisce un messaggio di esito positivo, salva le modifiche alla mappa degli URL.
Aggiorna la mappa URL.
gcloud compute url-maps import web-map-http \ --source /tmp/web-map-http.yaml \ --global
Test
Utilizzando l'indirizzo IPv4 del bilanciatore del carico associato, testa questa configurazione eseguendo:
curl http://IP_ADDRESS -H "ABTest: A"
curl http://IP_ADDRESS -H "ABTest: B"