I bilanciatori del carico di rete proxy classici di Google Cloud consentono utilizzare un unico indirizzo IP per tutti gli utenti del mondo. Bilanciatori del carico di rete proxy classico instradare automaticamente il traffico alle istanze di backend più vicine all'utente.
Questa pagina contiene le istruzioni per configurare un bilanciatore del carico di rete proxy classico con da un proxy TCP di destinazione e da un gruppo di istanze VM. Prima di iniziare, leggi la panoramica sul bilanciatore del carico di rete proxy esterno per i dettagli e informazioni su come funzionano questi bilanciatori del carico.
Panoramica della configurazione
Questo esempio mostra come configurare un bilanciatore del carico di rete proxy esterno per
è un servizio esistente in due regioni: A e B.
Ai fini dell'esempio, il servizio è un insieme di Apache
server configurati per rispondere sulla porta 110
. Molti browser non supportano
Consenti la porta 110
, quindi la sezione di test utilizza curl
.
In questo esempio, configuri quanto segue:
- Quattro istanze distribuite tra due regioni
- Gruppi di istanze, che contengono le istanze
- Un controllo di integrità per verificare l'integrità dell'istanza
- Un servizio di backend, che monitora le istanze e ne impedisce il funzionamento dal superamento della configurazione
- Il proxy TCP di destinazione
- Un indirizzo IPv4 statico esterno e una regola di forwarding che invia traffico utente al proxy
- Un indirizzo IPv6 statico esterno e una regola di forwarding che invia traffico utente al proxy
- Una regola firewall che consenta il traffico dal bilanciatore del carico di integrità per raggiungere le istanze
Dopo aver configurato il bilanciatore del carico, puoi testare la configurazione.
Autorizzazioni
Per seguire questa guida, devi essere in grado di creare istanze e modificare un in un progetto. Devi essere un progetto proprietario o editor oppure includono tutte le seguenti caratteristiche Ruoli IAM di Compute Engine:
Attività | Ruolo richiesto |
---|---|
Creazione di reti, subnet e componenti del bilanciatore del carico | Amministratore rete |
Aggiungi e rimuovi regole firewall | Amministratore sicurezza |
Creazione delle istanze | Amministratore istanze Compute |
Per ulteriori informazioni, consulta le seguenti guide:
Configura i backend dei gruppi di istanze
Questa sezione mostra come creare gruppi di istanze di base, aggiungere istanze e poi aggiungerle a un servizio di backend con un controllo di integrità. Un sistema di produzione normalmente userebbe sui gruppi di istanze gestite sui modelli di istanze, ma questo è più veloce per i test iniziali.
Configura istanze
A scopo di test, installa Apache su quattro istanze, due in ciascuna di due gruppi di istanze. In genere, i bilanciatori del carico di rete proxy esterni non vengono utilizzati per il traffico HTTP, ma il software Apache è comunemente usato per i test.
In questo esempio, le istanze vengono create con il tag tcp-lb
. Questo tag è
utilizzata in seguito dalla regola firewall.
Console
Crea istanze
Nella console Google Cloud, vai alla pagina Istanze VM.
Fai clic su Crea istanza.
Imposta Nome su
vm-a1
.Imposta la Regione su
REGION_A
.Imposta la Zona su
ZONE_A
.Fai clic su Opzioni avanzate.
Fai clic su Networking e configura il seguente campo:
- In Tag di rete, inserisci
tcp-lb
,allow-health-check-ipv6
.
- In Tag di rete, inserisci
Fai clic su Gestione. Inserisci lo script seguente nel Script di avvio.
sudo apt-get update sudo apt-get install apache2 -y sudo sed -i '/Listen 80/c\Listen 110' /etc/apache2/ports.conf sudo service apache2 restart echo '<!doctype html><html><body><h1>vm-a1</h1></body></html>' | sudo tee /var/www/html/index.html
Fai clic su Crea.
Crea vm-a2
con le stesse impostazioni, ad eccezione di
il seguente script nel campo Script di avvio:
sudo apt-get update sudo apt-get install apache2 -y sudo sed -i '/Listen 80/c\Listen 110' /etc/apache2/ports.conf sudo service apache2 restart echo '<!doctype html><html><body><h1>vm-a2</h1></body></html>' | sudo tee /var/www/html/index.html
Crea vm-b1
con le stesse impostazioni, ad eccezione di
Regione impostata su REGION_B
e
Zona impostata su ZONE_B
.
Inserisci il seguente script nel campo Script di avvio:
sudo apt-get update sudo apt-get install apache2 -y sudo sed -i '/Listen 80/c\Listen 110' /etc/apache2/ports.conf sudo service apache2 restart echo '<!doctype html><html><body><h1>vm-b1</h1></body></html>' | sudo tee /var/www/html/index.html
Crea vm-b2
con le stesse impostazioni, ad eccezione di
Regione impostata su REGION_B
e
Zona impostata su ZONE_B
.
Inserisci il seguente script nel campo Script di avvio:
sudo apt-get update sudo apt-get install apache2 -y sudo sed -i '/Listen 80/c\Listen 110' /etc/apache2/ports.conf sudo service apache2 restart echo '<!doctype html><html><body><h1>vm-b2</h1></body></html>' | sudo tee /var/www/html/index.html
gcloud
Crea
vm-a1
nella zonaZONE_A
gcloud compute instances create vm-a1 \ --image-family debian-12 \ --image-project debian-cloud \ --tags tcp-lb \ --zone ZONE_A \ --metadata startup-script="#! /bin/bash sudo apt-get update sudo apt-get install apache2 -y sudo sed -i '/Listen 80/c\Listen 110' /etc/apache2/ports.conf sudo service apache2 restart echo '<!doctype html><html><body><h1>vm-a1</h1></body></html>' | tee /var/www/html/index.html EOF"
Crea
vm-a2
nella zonaZONE_A
gcloud compute instances create vm-a2 \ --image-family debian-12 \ --image-project debian-cloud \ --tags tcp-lb \ --zone ZONE_A \ --metadata startup-script="#! /bin/bash sudo apt-get update sudo apt-get install apache2 -y sudo sed -i '/Listen 80/c\Listen 110' /etc/apache2/ports.conf sudo service apache2 restart echo '<!doctype html><html><body><h1>vm-a2</h1></body></html>' | tee /var/www/html/index.html EOF"
Crea
vm-b1
nella zonaZONE_B
gcloud compute instances create vm-b1 \ --image-family debian-12 \ --image-project debian-cloud \ --tags tcp-lb \ --zone ZONE_B \ --metadata startup-script="#! /bin/bash sudo apt-get update sudo apt-get install apache2 -y sudo sed -i '/Listen 80/c\Listen 110' /etc/apache2/ports.conf sudo service apache2 restart echo '<!doctype html><html><body><h1>vm-b1</h1></body></html>' | tee /var/www/html/index.html EOF"
Crea
vm-b2
nella zonaZONE_B
gcloud compute instances create vm-b2 \ --image-family debian-12 \ --image-project debian-cloud \ --tags tcp-lb \ --zone ZONE_B \ --metadata startup-script="#! /bin/bash sudo apt-get update sudo apt-get install apache2 -y sudo sed -i '/Listen 80/c\Listen 110' /etc/apache2/ports.conf sudo service apache2 restart echo '<!doctype html><html><body><h1>vm-b2</h1></body></html>' | tee /var/www/html/index.html EOF"
Crea gruppi di istanze
In questa sezione creerai un gruppo di istanze in ogni zona e aggiungerai le istanze.
Console
Nella console Google Cloud, vai alla pagina Gruppi di istanze.
Fai clic su Crea gruppo di istanze.
Fai clic su Nuovo gruppo di istanze non gestite.
Imposta il Nome su
instance-group-a
.Imposta la Zona su
ZONE_A
.In Mappatura delle porte, fai clic su Aggiungi porta. Un bilanciatore del carico invia il traffico a un gruppo di istanze attraverso un predefinita. Crea una porta denominata per mappare il traffico in entrata su una porta specifica numero.
- Imposta Nome porta su
tcp110
. - Imposta Numeri di porta su
110
.
- Imposta Nome porta su
In Istanze VM, seleziona
vm-a1
evm-a2
.Lascia invariate le altre impostazioni.
Fai clic su Crea.
Ripeti i passaggi, ma imposta i valori seguenti:
- Nome:
instance-group-b
- Regione:
REGION_B
- Zona:
ZONE_B
- Nome porta:
tcp110
- Numeri di porta:
110
- Istanze: vm-b1 e vm-b2.
- Nome:
gcloud
Crea il gruppo di istanze
instance-group-a
.gcloud compute instance-groups unmanaged create instance-group-a \ --zone ZONE_A
Crea una porta denominata per il gruppo di istanze.
gcloud compute instance-groups set-named-ports instance-group-a \ --named-ports tcp110:110 \ --zone ZONE_A
Aggiungi
vm-a1
evm-a2
ainstance-group-a
.gcloud compute instance-groups unmanaged add-instances instance-group-a \ --instances vm-a1,vm-a2 \ --zone ZONE_A
Crea il gruppo di istanze
us-ig2
.gcloud compute instance-groups unmanaged create instance-group-b \ --zone ZONE_B
Crea una porta denominata per il gruppo di istanze.
gcloud compute instance-groups set-named-ports instance-group-b \ --named-ports tcp110:110 \ --zone ZONE_B
Aggiungi
vm-b1
evm-b2
a instance-group-bgcloud compute instance-groups unmanaged add-instances instance-group-b \ --instances vm-b1,vm-b2 \ --zone ZONE_B
Ora hai un gruppo di istanze per regione. Ogni gruppo di istanze ha due istanze VM.
Crea una regola firewall per il bilanciatore del carico di rete proxy esterno
Configura il firewall in modo da consentire il traffico dal bilanciatore del carico e dall'integrità di controllo delle istanze. In questo caso, apriremo la porta TCP 110. L'integrità utilizzerà la stessa porta. Poiché il traffico tra il bilanciatore del carico e le istanze utilizzano IPv4, è necessario aprire solo gli intervalli IPv4.
Console
Nella console Google Cloud, vai alla pagina Criteri firewall.
Fai clic su Crea regola firewall.
Nel campo Nome, inserisci
allow-tcp-lb-and-health
.Seleziona una rete.
In Target, seleziona Tag di destinazione specificati.
Imposta Tag di destinazione su
tcp-lb
.Imposta Filtro di origine su Intervalli IPv4.
Imposta Intervalli IPv4 di origine su
130.211.0.0/22
,35.191.0.0/16
.In Protocolli e porte, imposta Protocolli e porte specificati su
tcp:110
.Fai clic su Crea.
gcloud
gcloud compute firewall-rules create allow-tcp-lb-and-health \ --source-ranges 130.211.0.0/22,35.191.0.0/16 \ --target-tags tcp-lb \ --allow tcp:110
Configura il bilanciatore del carico
Console
Avvia la configurazione
Nella console Google Cloud, vai alla pagina Bilanciamento del carico.
- Fai clic su Crea bilanciatore del carico.
- Per Tipo di bilanciatore del carico, seleziona Bilanciatore del carico di rete (TCP/UDP/SSL) e fai clic su Avanti.
- Per Proxy o passthrough, seleziona Bilanciatore del carico proxy 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.
- Per Generazione del bilanciatore del carico, seleziona proxy classico Bilanciatore del carico di rete e fai clic su Avanti.
- Fai clic su Configura.
Configurazione di base
Imposta il Nome su my-tcp-lb
.
Configurazione backend
- Fai clic su Configurazione backend.
- In Tipo di backend, seleziona Gruppi di istanze.
- In Protocollo, seleziona TCP.
- Configura il primo backend:
- In Nuovo backend, seleziona il gruppo di istanze
instance-group-a
. - Conserva i valori predefiniti rimanenti.
- In Nuovo backend, seleziona il gruppo di istanze
- Configura il secondo backend:
- Fai clic su Aggiungi backend.
- Seleziona il gruppo di istanze
instance-group-b
. - In Porta numeri, elimina
80
e aggiungi110
.
- Configura il controllo di integrità:
- In Controllo di integrità, seleziona Crea controllo di integrità.
- Imposta il Nome del controllo di integrità su
my-tcp-health-check
. - In Protocollo, seleziona TCP.
- Imposta Porta su
110
. - Conserva i valori predefiniti rimanenti.
- Fai clic su Salva e continua.
- Nella console Google Cloud, verifica che sia presente un segno di spunta accanto a Configurazione backend. In caso contrario, assicurati di aver completato tutti i passaggi.
Configurazione frontend
- Fai clic su Configurazione frontend.
- Aggiungi la prima regola di forwarding:
- Inserisci
my-tcp-lb-forwarding-rule
come nome. - In Protocollo, seleziona TCP.
- In Indirizzo IP, seleziona Crea indirizzo IP:
- .
- Inserisci
tcp-lb-static-ip
come nome. - Fai clic su Prenota.
- Inserisci
- Imposta Porta su
110
. - In questo esempio, non attivare il protocollo proxy perché non funziona con il software Apache HTTP Server. Per ulteriori informazioni consulta la sezione Protocollo proxy.
- Fai clic su Fine.
- Inserisci
- Aggiungi la seconda regola di forwarding:
- Fai clic su Aggiungi IP e porta frontend.
- Inserisci
my-tcp-lb-ipv6-forwarding-rule
come nome. - In Protocollo, seleziona TCP.
- Imposta Versione IP su
IPv6
. - In Indirizzo IP, fai clic su Crea indirizzo IP.
- Inserisci il nome
tcp-lb-ipv6-static-ip
. - Fai clic su Prenota.
- Inserisci il nome
- Imposta Porta su
110
. - In questo esempio, non attivare il protocollo proxy perché non funziona con il software Apache HTTP Server. Per ulteriori informazioni consulta la sezione Protocollo proxy.
- Fai clic su Fine.
Nella console Google Cloud, verifica che sia presente un segno di spunta accanto a Configurazione frontend. In caso contrario, assicurati di aver completato tutti i passaggi precedenti.
Esamina e finalizza
- Fai clic su Esamina e finalizza.
- Rivedi le impostazioni di configurazione del bilanciatore del carico.
- (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.
gcloud
- Creare un controllo di integrità.
gcloud compute health-checks create tcp my-tcp-health-check --port 110
- Crea un servizio di backend.
gcloud compute backend-services create my-tcp-lb \ --load-balancing-scheme EXTERNAL \ --global-health-checks \ --global \ --protocol TCP \ --health-checks my-tcp-health-check \ --timeout 5m \ --port-name tcp110
- Aggiungi gruppi di istanze al servizio di backend.
gcloud compute backend-services add-backend my-tcp-lb \ --global \ --instance-group instance-group-a \ --instance-group-zone ZONE_A \ --balancing-mode UTILIZATION \ --max-utilization 0.8
gcloud compute backend-services add-backend my-tcp-lb \ --global \ --instance-group instance-group-b \ --instance-group-zone ZONE_B \ --balancing-mode UTILIZATION \ --max-utilization 0.8
- Configurare un proxy TCP di destinazione. Se vuoi attivare
intestazione proxy, impostala su
PROXY_V1
anzichéNONE
.gcloud compute target-tcp-proxies create my-tcp-lb-target-proxy \ --backend-service my-tcp-lb \ --proxy-header NONE
- Prenota indirizzi IPv4 e IPv6 statici globali.
I tuoi clienti possono utilizzare questi indirizzi IP per raggiungere il tuo carico di lavoro un servizio bilanciato.
gcloud compute addresses create tcp-lb-static-ipv4 \ --ip-version=IPV4 \ --global
gcloud compute addresses create tcp-lb-static-ipv6 \ --ip-version=IPV6 \ --global
- Configura le regole di forwarding globali per i due indirizzi.
gcloud compute forwarding-rules create my-tcp-lb-ipv4-forwarding-rule \ --load-balancing-scheme EXTERNAL \ --global \ --target-tcp-proxy my-tcp-lb-target-proxy \ --address tcp-lb-static-ipv4 \ --ports 110
gcloud compute forwarding-rules create my-tcp-lb-ipv6-forwarding-rule \ --load-balancing-scheme EXTERNAL \ --global \ --target-tcp-proxy my-tcp-lb-target-proxy \ --address tcp-lb-static-ipv6 \ --ports 110
Testa il bilanciatore del carico
Ottieni l'indirizzo IP del bilanciatore del carico.
Per ottenere l'indirizzo IPv4, esegui questo comando:
gcloud compute addresses describe tcp-lb-static-ipv4
Per ottenere l'indirizzo IPv6, esegui questo comando:
gcloud compute addresses describe tcp-lb-static-ipv6
Invia traffico al bilanciatore del carico eseguendo . Sostituisci
LB_IP_ADDRESS
con l'indirizzo IPv4 o IPv6 del bilanciatore del carico.curl -m1 LB_IP_ADDRESS:110
Ad esempio, se l'indirizzo IPv6 assegnato è
[2001:db8:1:1:1:1:1:1/96]:110
, il comando dovrebbe avere questo aspetto:curl -m1 http://[2001:db8:1:1:1:1:1:1]:110
Se non riesci a raggiungere il bilanciatore del carico, prova i passaggi descritti in Risoluzione dei problemi di configurazione.
Opzioni di configurazione aggiuntive
Questa sezione espande l'esempio di configurazione per fornire alternative e e altre opzioni di configurazione. Tutte le attività sono facoltative. Puoi eseguirle in qualsiasi ordine.
Protocollo PROXY per conservare le informazioni di connessione del client
Il bilanciatore del carico di rete proxy termina le connessioni TCP da il client e crea nuove connessioni alle istanze. Per impostazione predefinita, le informazioni sull'IP e sulla porta del client originali non vengono conservate.
Per conservare e inviare le informazioni di connessione originali alle tue istanze, Attiva il protocollo PROXY versione 1. Questo protocollo invia un'intestazione aggiuntiva contenente l'origine Indirizzo IP, indirizzo IP di destinazione e numeri di porta per l'istanza come parte della richiesta.
Assicurati che le istanze di backend del bilanciatore del carico di rete del proxy siano in esecuzione che supportano le intestazioni di protocollo PROXY. Se i server non sono configurate per supportare le intestazioni del protocollo PROXY, le istanze di backend diverse.
Se imposti il protocollo PROXY per il traffico degli utenti, puoi impostarlo anche per il tuo
controlli di integrità. Se stai controllando lo stato di integrità e la pubblicazione
sulla stessa porta, imposta il valore --proxy-header
del controllo di integrità in modo che corrisponda
dell'impostazione del bilanciatore del carico.
L'intestazione del protocollo PROXY è in genere una singola riga di testo leggibile testo nel seguente formato:
PROXY TCP4 <client IP> <load balancing IP> <source port> <dest port>\r\n
L'esempio seguente mostra un protocollo PROXY:
PROXY TCP4 192.0.2.1 198.51.100.1 15221 110\r\n
Nell'esempio precedente, l'IP client è 192.0.2.1
, l'IP di bilanciamento del carico è
198.51.100.1
, la porta del client è 15221
e la porta di destinazione è 110
.
Se l'IP del client non è noto, il bilanciatore del carico genera un'intestazione del protocollo PROXY nel seguente formato:
PROXY UNKNOWN\r\n
Aggiorna l'intestazione del protocollo PROXY per il proxy di destinazione
L'esempio di configurazione del bilanciatore del carico in questa pagina mostra come Abilita l'intestazione del protocollo PROXY durante la creazione del bilanciatore del carico di rete proxy. Utilizza questi per modificare l'intestazione del protocollo PROXY per un proxy di destinazione esistente.
Console
Nella console Google Cloud, vai alla pagina Bilanciamento del carico.
- Fai clic su Modifica per il tuo carico. con il bilanciatore del carico di rete passthrough esterno regionale.
- Fai clic su Configurazione frontend.
- Modifica il valore del campo Protocollo proxy su On.
- Fai clic su Update (Aggiorna) per salvare le modifiche.
gcloud
Nel comando seguente, modifica il campo --proxy-header
e impostalo su
NONE
o PROXY_V1
, a seconda delle tue esigenze.
gcloud compute target-tcp-proxies update TARGET_PROXY_NAME \ --proxy-header=[NONE | PROXY_V1]
Configura l'affinità sessione
La configurazione di esempio crea un servizio di backend senza affinità sessione.
Queste procedure mostrano come aggiornare un servizio di backend per l'esempio in modo che il servizio di backend utilizzi l'affinità IP client dell'affinità cookie generato.
Quando è abilitata l'affinità IP client, il bilanciatore del carico indirizza una particolare delle richieste del client alla stessa VM di backend in base a un hash creato l'indirizzo IP del client e l'indirizzo IP del bilanciatore del carico (l'indirizzo IP esterno di una regola di forwarding esterna).
Console
Per abilitare l'affinità sessione IP client:
Nella console Google Cloud, vai alla pagina Bilanciamento del carico.
Fai clic su Backend.
Fai clic su my-tcp-lb (il nome del servizio di backend creato per questo esempio) e fai clic su Modifica.
Nella pagina Dettagli servizio di backend, fai clic su Avanzate. configurazione.
In Affinità sessione, seleziona IP client dal menu.
Fai clic su Aggiorna.
gcloud
Utilizza questo comando di Google Cloud CLI per aggiornare il backend my-tcp-lb
specificando l'affinità sessione IP client:
gcloud compute backend-services update my-tcp-lb \ --global \ --session-affinity=CLIENT_IP
API
Per impostare l'affinità sessione IP client, effettua una richiesta PATCH
alla
backendServices/patch
.
PATCH https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/us-west1/backendServices/my-tcp-lb
{
"sessionAffinity": "CLIENT_IP"
}
Abilita svuotamento della connessione
Puoi abilitare lo svuotamento della connessione sui servizi di backend per garantire il minimo agli utenti quando un'istanza che gestisce il traffico viene terminato, rimosso manualmente o rimosso da un gestore della scalabilità automatica. Per scoprire di più su per svuotamento della connessione, leggi Attivazione dello svuotamento della connessione documentazione.
Passaggi successivi
- Panoramica del bilanciatore del carico di rete proxy esterno
- Logging e monitoraggio del bilanciatore del carico di rete proxy
- Eseguire la pulizia di una configurazione di bilanciamento del carico