Un bilanciatore del carico di rete proxy esterno regionale è un bilanciatore del carico di livello 4 regionale basato su proxy che ti consente di eseguire e scalare il traffico del servizio TCP in una singola regione dietro un indirizzo IP regionale esterno. Questi bilanciatori del carico distribuiscono il traffico TCP esterno da internet ai backend nella stessa regione.
Questa guida contiene istruzioni per configurare un bilanciatore del carico di rete proxy esterno regionale con un backend del gruppo di istanze gestite (MIG).
Prima di iniziare, leggi la panoramica del bilanciatore del carico di rete proxy esterno.
In questo esempio, utilizzeremo il bilanciatore del carico per distribuire il traffico TCP tra le VM di backend in due gruppi di istanze gestite a livello di zona nella regione A. Ai fini dell'esempio, il servizio è un insieme di server Apache configurati per rispondere sulla porta 110. Molti browser non consentono la porta 110, pertanto la
sezione di test utilizza curl.
In questo esempio, configurerai il deployment mostrato nel seguente diagramma.
Un bilanciatore del carico di rete proxy esterno regionale è un bilanciatore del carico regionale. Tutti i componenti del bilanciatore del carico (gruppoistanza di backendd, servizio di backend, proxy di destinazione e regola di forwarding) devono trovarsi nella stessa regione.
Autorizzazioni
Per seguire questa guida, devi essere in grado di creare istanze e modificare una rete in un progetto. Devi essere un proprietario o un editor del progetto oppure devi disporre di tutti i seguenti ruoli IAM di Compute Engine.
| Attività | Ruolo richiesto | 
|---|---|
| Crea reti, subnet e componenti del bilanciatore del carico | Compute Network Admin
       ( roles/compute.networkAdmin) | 
| Aggiungere e rimuovere regole firewall | Compute Security Admin
       ( roles/compute.securityAdmin) | 
| Creazione delle istanze | Compute Instance Admin
       ( roles/compute.instanceAdmin) | 
Per ulteriori informazioni, consulta le seguenti guide:
Configura la rete e le subnet
Hai bisogno di una rete VPC con due subnet, una per i backend del bilanciatore del carico e l'altra per i proxy del bilanciatore del carico. Questo bilanciatore del carico è regionale. Il traffico all'interno della rete VPC viene indirizzato al bilanciatore del carico se l'origine del traffico si trova in una subnet nella stessa regione del bilanciatore del carico.
Questo esempio utilizza la seguente rete VPC, regione e subnet:
- Rete:una rete VPC in modalità personalizzata denominata - lb-network
- Subnet per i backend:una subnet denominata - backend-subnetnella regione A che utilizza- 10.1.2.0/24per il suo intervallo di indirizzi IP primario
- Subnet per i proxy:una subnet denominata - proxy-only-subnetnella regione B che utilizza- 10.129.0.0/23per il suo intervallo di indirizzi IP primario
Crea la rete e le subnet
Console
- Nella console Google Cloud , vai alla pagina Reti VPC. 
- Fai clic su Crea rete VPC. 
- In Nome, inserisci - lb-network.
- Nella sezione Subnet, imposta Modalità di creazione subnet su Personalizzata. 
- Crea una subnet per i backend del bilanciatore del carico. Nella sezione Nuova subnet, inserisci le seguenti informazioni: - Nome: backend-subnet
- Regione: REGION_A
- Intervallo di indirizzi IP: 10.1.2.0/24
 
- Nome: 
- Fai clic su Fine. 
- Fai clic su Crea. 
gcloud
- Per creare la rete VPC personalizzata, utilizza il comando - gcloud compute networks create:- gcloud compute networks create lb-network --subnet-mode=custom 
- Per creare una subnet nella rete - lb-networknella regione- REGION_A, utilizza il comando- gcloud compute networks subnets create:- gcloud compute networks subnets create backend-subnet \ --network=lb-network \ --range=10.1.2.0/24 \ --region=REGION_A
Crea la subnet solo proxy
Una subnet solo proxy fornisce un insieme di indirizzi IP che Google utilizza per eseguire i proxy Envoy per tuo conto. I proxy terminano le connessioni dal client e creano nuove connessioni ai backend.
Questa subnet solo proxy viene utilizzata da tutti i bilanciatori del carico basati su Envoy nella regione A della rete VPC lb-network.
Console
Se utilizzi la console Google Cloud , puoi attendere e creare la subnet solo proxy in un secondo momento nella pagina Bilanciamento del carico.
Se vuoi creare subito la subnet solo proxy, segui questi passaggi:
- Nella console Google Cloud , vai alla pagina Reti VPC. 
- Fai clic sul nome della rete VPC: - lb-network.
- Fai clic su Aggiungi subnet. 
- In Nome, inserisci - proxy-only-subnet.
- In Regione, seleziona - REGION_A.
- Imposta Scopo su Proxy gestito a livello di regione. 
- In Intervallo di indirizzi IP, inserisci - 10.129.0.0/23.
- Fai clic su Aggiungi. 
gcloud
Per creare la subnet solo proxy, utilizza il comando gcloud compute networks subnets
create:
gcloud compute networks subnets create proxy-only-subnet \
    --purpose=REGIONAL_MANAGED_PROXY \
    --role=ACTIVE \
    --region=REGION_A \
    --network=lb-network \
    --range=10.129.0.0/23
Crea regole firewall
In questo esempio, crei le seguenti regole firewall:
- fw-allow-ssh. Una regola in entrata, applicabile alle istanze con bilanciamento del carico, che consente la connettività SSH in entrata sulla porta TCP- 22da qualsiasi indirizzo. Puoi scegliere un intervallo IP di origine più restrittivo per questa regola. Ad esempio, puoi specificare solo gli intervalli IP del sistema da cui avvii le sessioni SSH. Questo esempio utilizza il tag target- allow-ssh.
- fw-allow-health-check.Una regola in entrata, applicabile alle istanze con bilanciamento del carico, che consente tutto il traffico TCP dai sistemi di controllo di integrità Google Cloud(in- 130.211.0.0/22e- 35.191.0.0/16). Questo esempio utilizza il tag di destinazione- allow-health-check.
- fw-allow-proxy-only-subnet. Una regola Ingress che consente alle connessioni dalla subnet solo proxy di raggiungere i backend.
Senza queste regole firewall, la regola default-deny per il traffico in entrata blocca il traffico in ingresso verso le istanze di backend.
I tag di destinazione definiscono le istanze di backend. Senza i tag di destinazione, le regole firewall si applicano a tutte le istanze di backend nella rete VPC. Quando crei le VM di backend, assicurati di includere i tag di destinazione specificati, come mostrato in Creare un gruppo di istanze gestite.
Console
- Nella console Google Cloud , vai alla pagina Policy firewall. 
- Fai clic su Crea regola firewall per creare la regola che consente le connessioni SSH in entrata. Completa i seguenti campi: - Nome: fw-allow-ssh
- Rete: lb-network
- Direzione del traffico: in entrata
- Azione in caso di corrispondenza: Consenti
- Target: Tag di destinazione specificati
- Tag di destinazione: allow-ssh
- Filtro di origine: intervalli IPv4
- Intervalli IPv4 di origine: 0.0.0.0/0
- Protocolli e porte:
- Scegli Protocolli e porte specificati.
- Seleziona la casella di controllo TCP, quindi inserisci 22per il numero di porta.
 
 
- Nome: 
- Fai clic su Crea. 
- Fai clic su Crea regola firewall una seconda volta per creare la regola per consentire i controlli di integritàGoogle Cloud : - Nome: fw-allow-health-check
- Rete: lb-network
- Direzione del traffico: in entrata
- Azione in caso di corrispondenza: Consenti
- Target: Tag di destinazione specificati
- Tag di destinazione: allow-health-check
- Filtro di origine: intervalli IPv4
- Intervalli IPv4 di origine: 130.211.0.0/22e35.191.0.0/16
- Protocolli e porte: - Scegli Protocolli e porte specificati.
- Seleziona la casella di controllo TCP, quindi inserisci 80per il numero di porta.
 - Come best practice, limita questa regola solo ai protocolli e alle porte che corrispondono a quelli utilizzati dal controllo di integrità. Se utilizzi - tcp:80per il protocollo e la porta, Google Cloud può utilizzare HTTP sulla porta- 80per contattare le tue VM, ma non può utilizzare HTTPS sulla porta- 443per contattarle.
 
- Nome: 
- Fai clic su Crea. 
- Fai clic su Crea regola firewall una terza volta per creare la regola che consente ai server proxy del bilanciatore del carico di connettersi ai backend: - Nome: fw-allow-proxy-only-subnet
- Rete: lb-network
- Direzione del traffico: in entrata
- Azione in caso di corrispondenza: Consenti
- Target: Tag di destinazione specificati
- Tag di destinazione: allow-proxy-only-subnet
- Filtro di origine: intervalli IPv4
- Intervalli IPv4 di origine: 10.129.0.0/23
- Protocolli e porte:
- Scegli Protocolli e porte specificati.
- Seleziona la casella di controllo TCP, quindi inserisci 80per il numero di porta.
 
 
- Nome: 
- Fai clic su Crea. 
gcloud
- Crea la regola firewall - fw-allow-sshper consentire la connettività SSH alle VM con il tag di rete- allow-ssh. Se ometti- source-ranges, Google Cloud interpreta la regola come qualsiasi origine.- gcloud compute firewall-rules create fw-allow-ssh \ --network=lb-network \ --action=allow \ --direction=ingress \ --target-tags=allow-ssh \ --rules=tcp:22
- Crea la regola - fw-allow-health-checkper consentire i controlli di integrità Google Cloud. Questo esempio consente tutto il traffico TCP dai probe di controllo di integrità. Tuttavia, puoi configurare un insieme più ristretto di porte per soddisfare le tue esigenze.- gcloud compute firewall-rules create fw-allow-health-check \ --network=lb-network \ --action=allow \ --direction=ingress \ --source-ranges=130.211.0.0/22,35.191.0.0/16 \ --target-tags=allow-health-check \ --rules=tcp:80
- Crea la regola - fw-allow-proxy-only-subnetper consentire ai proxy Envoy della regione di connettersi ai tuoi backend. Imposta- --source-rangessugli intervalli allocati della subnet solo proxy. In questo esempio,- 10.129.0.0/23.- gcloud compute firewall-rules create fw-allow-proxy-only-subnet \ --network=lb-network \ --action=allow \ --direction=ingress \ --source-ranges=10.129.0.0/23 \ --target-tags=allow-proxy-only-subnet \ --rules=tcp:80
Prenota l'indirizzo IP del bilanciatore del carico
Prenota un indirizzo IP statico per il bilanciatore del carico.
Console
- Nella console Google Cloud , vai alla pagina Prenota un indirizzo statico. 
- Scegli un nome per il nuovo indirizzo. 
- In Livello di servizio di rete, seleziona Standard. 
- In Versione IP, seleziona IPv4. Gli indirizzi IPv6 non sono supportati. 
- Per Tipo, seleziona A livello di regione. 
- In Regione, seleziona - REGION_A.
- Lascia l'opzione Collegato a impostata su Nessuno. Dopo aver creato il bilanciatore del carico, questo indirizzo IP viene collegato alla regola di forwarding del bilanciatore del carico. 
- Fai clic su Prenota per prenotare l'indirizzo IP. 
gcloud
- Per prenotare un indirizzo IP esterno statico, utilizza il comando - gcloud compute addresses create:- gcloud compute addresses create ADDRESS_NAME \ --region=REGION_A \ --network-tier=STANDARD- Sostituisci - ADDRESS_NAMEcon il nome che vuoi assegnare a questo indirizzo.
- Per visualizzare il risultato, utilizza il comando - gcloud compute addresses describe:- gcloud compute addresses describe ADDRESS_NAME 
Creare un gruppo di istanze gestite
Questa sezione mostra come creare due backend del gruppo di istanze gestite (MIG) nella regione A per il bilanciatore del carico. Il MIG fornisce istanze VM che eseguono i server Apache di backend per questo esempio. In genere, un bilanciatore del carico di rete proxy esterno regionale non viene utilizzato per il traffico HTTP, ma il software Apache viene comunemente utilizzato per i test.
Console
Crea un modello di istanza
- Nella console Google Cloud , vai alla pagina Template di istanza. 
- Fai clic su Crea modello istanza. 
- In Nome, inserisci - ext-reg-tcp-proxy-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 i seguenti campi: - Per Tag di rete, inserisci allow-ssh,allow-health-checkeallow-proxy-only-subnet.
- In Interfacce di rete, seleziona quanto segue:
- Rete: lb-network
- Subnet: backend-subnet
 
- Rete: 
 
- Per Tag di rete, inserisci 
- Fai clic su Gestione. Inserisci il seguente script 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. 
Crea un gruppo di istanze gestite
- Nella console Google Cloud , vai alla pagina Gruppi di istanze. 
- Fai clic su Crea gruppo di istanze. 
- Seleziona Nuovo gruppo di istanze gestite (stateless). Per saperne di più, vedi Crea un MIG con dischi stateful. 
- In Nome, inserisci - mig-a.
- In Località, seleziona Zona singola. 
- In Regione, seleziona - REGION_A.
- In Zona, seleziona - ZONE_A.
- In Modello di istanza, seleziona - ext-reg-tcp-proxy-backend-template.
- Specifica il numero di istanze che vuoi creare nel gruppo. - Per questo esempio, specifica le seguenti opzioni per la scalabilità automatica: - Per la Modalità di scalabilità automatica, seleziona Off:do not autoscale.
- In Numero massimo di istanze, inserisci 2.
 
- Per la Modalità di scalabilità automatica, seleziona 
- Per Mappatura delle porte, fai clic su Aggiungi porta. - In Nome porta, inserisci tcp80.
- In Numero porta, inserisci 80.
 
- In Nome porta, inserisci 
- Fai clic su Crea. 
- Per creare un secondo gruppo di istanze gestite, ripeti i passaggi Crea un gruppo di istanze gestite e utilizza le seguenti impostazioni: - Nome: mig-b
- Zona: ZONE_B
 - Mantieni invariate tutte le altre impostazioni. 
- Nome: 
gcloud
Le istruzioni di Google Cloud CLI in questa guida presuppongono che tu stia utilizzando
Cloud Shell o un altro ambiente con bash installato.
- Per creare un template di istanza VM con il server HTTP, utilizza il comando - gcloud compute instance-templates create:- gcloud compute instance-templates create ext-reg-tcp-proxy-backend-template \ --region=REGION_A \ --network=lb-network \ --subnet=backend-subnet \ --tags=allow-ssh,allow-health-check,allow-proxy-only-subnet \ --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 un gruppo di istanze gestite nella zona - ZONE_A:- gcloud compute instance-groups managed create mig-a \ --zone=ZONE_A \ --size=2 \ --template=ext-reg-tcp-proxy-backend-template
- Crea un gruppo di istanze gestite nella zona - ZONE_B:- gcloud compute instance-groups managed create mig-b \ --zone=ZONE_B \ --size=2 \ --template=ext-reg-tcp-proxy-backend-template
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.
- In 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.
- In Pubblico o interno, seleziona Pubblico (esterno) e fai clic su Avanti.
- In Deployment globale o in una regione singola, seleziona Ideale per workload regionali e fai clic su Avanti.
- Fai clic su Configura.
Configurazione di base
- In Nome, inserisci my-ext-tcp-lb.
- In Regione, seleziona REGION_A.
- In Rete, seleziona lb-network.
Riservare una subnet solo proxy
- Fai clic su Prenota.
- Nel campo Nome, inserisci proxy-only-subnet.
- Nel campo Intervallo di indirizzi IP, inserisci 10.129.0.0/23.
- Fai clic su Aggiungi.
Configura i backend
- Fai clic su Configurazione backend.
- Nell'elenco Tipo di backend, seleziona Gruppo di istanze.
- Nell'elenco Protocollo, seleziona TCP.
- Nel campo Porta denominata, inserisci tcp80.
- Configura il controllo di integrità:
- Nell'elenco Controllo di integrità, seleziona Crea un controllo di integrità.
- Nel campo Nome, inserisci tcp-health-check.
- Nell'elenco Protocollo, seleziona TCP.
- Nel campo Porta, inserisci 80.
- Fai clic su Crea.
 
- Configura il primo backend:
- In Nuovo backend, seleziona il gruppo di istanze mig-a.
- In Numeri di porta, inserisci 80.
- Mantieni i restanti valori predefiniti e fai clic su Fine.
 
- In Nuovo backend, seleziona il gruppo di istanze 
- Configura il secondo backend:
- Fai clic su Aggiungi backend.
- In Nuovo backend, seleziona il gruppo di istanze mig-b.
- In Numeri di porta, inserisci 80.
- Mantieni i restanti valori predefiniti e fai clic su Fine.
 
- Mantieni i restanti valori predefiniti e fai clic su Salva.
- 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.
Configura il frontend
- Fai clic su Configurazione frontend.
- In Nome, inserisci ext-reg-tcp-forwarding-rule.
- In Livello di servizio di rete, seleziona Standard.
- In Indirizzo IP, seleziona l'indirizzo IP prenotato in precedenza: LB_IP_ADDRESS
- In Numero porta, inserisci 110. La regola di forwarding inoltra solo i pacchetti con una porta di destinazione corrispondente.
- In Protocollo proxy, seleziona Off perché il protocollo PROXY non funziona con il software Apache HTTP Server. Per saperne di più, consulta 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.
- Controlla le impostazioni di configurazione del bilanciatore del carico.
- (Facoltativo) Fai clic su Codice equivalente per visualizzare la richiesta dell'API REST utilizzata per creare il bilanciatore del carico.
- Fai clic su Crea.
gcloud
- Crea un controllo di integrità a livello di regione: - gcloud compute health-checks create tcp tcp-health-check \ --region=REGION_A \ --use-serving-port
- Crea un servizio di backend: - gcloud compute backend-services create ext-reg-tcp-proxy-bs \ --load-balancing-scheme=EXTERNAL_MANAGED \ --protocol=TCP \ --port-name=tcp80 \ --region=REGION_A \ --health-checks=tcp-health-check \ --health-checks-region=REGION_A
- Aggiungi gruppi di istanze al servizio di backend: - gcloud compute backend-services add-backend ext-reg-tcp-proxy-bs \ --region=REGION_A \ --instance-group=mig-a \ --instance-group-zone=ZONE_A \ --balancing-mode=UTILIZATION \ --max-utilization=0.8- gcloud compute backend-services add-backend ext-reg-tcp-proxy-bs \ --region=REGION_A \ --instance-group=mig-b \ --instance-group-zone=ZONE_B \ --balancing-mode=UTILIZATION \ --max-utilization=0.8
- Crea un proxy TCP di destinazione: - gcloud compute target-tcp-proxies create ext-reg-tcp-target-proxy \ --backend-service=ext-reg-tcp-proxy-bs \ --proxy-header=NONE \ --region=REGION_A- Se vuoi attivare l'intestazione proxy, imposta il valore su - PROXY_V1anziché- NONE. In questo esempio, non attivare il protocollo PROXY perché non funziona con il software Apache HTTP Server. Per saperne di più, consulta Protocollo PROXY.
- Crea la regola di forwarding. Per - --ports, specifica un singolo numero di porta compreso tra 1 e 65535. Questo esempio utilizza la porta- 110. La regola di forwarding inoltra solo i pacchetti con una porta di destinazione corrispondente.- gcloud compute forwarding-rules create ext-reg-tcp-forwarding-rule \ --load-balancing-scheme=EXTERNAL_MANAGED \ --network-tier=STANDARD \ --network=lb-network \ --region=REGION_A \ --target-tcp-proxy=ext-reg-tcp-target-proxy \ --target-tcp-proxy-region=REGION_A \ --address=LB_IP_ADDRESS \ --ports=110
testa il bilanciatore del carico
Ora che hai configurato il bilanciatore del carico, puoi testare l'invio di traffico all'indirizzo IP del bilanciatore del carico.
- Ottieni l'indirizzo IP del bilanciatore del carico. - Per ottenere l'indirizzo IPv4, esegui questo comando: - gcloud compute addresses describe ADDRESS_NAME 
- Invia traffico al bilanciatore del carico eseguendo il comando seguente. Sostituisci - LB_IP_ADDRESScon l'indirizzo IPv4 del bilanciatore del carico.- curl -m1 LB_IP_ADDRESS:9090 
Opzioni di configurazione aggiuntive
Questa sezione espande l'esempio di configurazione per fornire opzioni di configurazione alternative e aggiuntive. Tutte le attività sono facoltative. Puoi eseguirle in qualsiasi ordine.
Abilita 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 il bilanciatore del carico di esempio creato in precedenza in modo che il servizio di backend utilizzi l'affinità IP client o l'affinità cookie generato.
Quando l'affinità IP client è abilitata, il bilanciatore del carico indirizza le richieste di un determinato client alla stessa VM di backend in base a un hash creato dall'indirizzo IP del client e dall'indirizzo IP del bilanciatore del carico (l'indirizzo IP interno di una regola di forwarding interno).
Per attivare l'affinità sessione IP client, completa i seguenti passaggi.
Console
- Nella console Google Cloud , vai alla pagina Bilanciamento del carico. 
- Fai clic su Backend. 
- Fai clic su - ext-reg-tcp-proxy-bs(il nome del servizio di backend che hai creato per questo esempio), quindi fai clic su Modifica.
- Nella pagina Dettagli del servizio di backend, fai clic su Configurazione avanzata. 
- Per Affinità sessione, seleziona IP client. 
- Fai clic su Aggiorna. 
gcloud
Per aggiornare il servizio di backend ext-reg-tcp-proxy-bs e specificare l'affinità sessione IP client, utilizza il comando gcloud compute backend-services update ext-reg-tcp-proxy-bs:
gcloud compute backend-services update ext-reg-tcp-proxy-bs \
    --region=REGION_A \
    --session-affinity=CLIENT_IP
Passaggi successivi
- Convertire il bilanciatore del carico di rete proxy in IPv6
- Panoramica del bilanciatore del carico di rete proxy esterno.
- Logging e monitoraggio del bilanciatore del carico di rete proxy.
- Pulisci la configurazione del bilanciatore del carico.