Un bilanciatore del carico di rete proxy esterno regionale è un bilanciatore del carico di livello 4 regionale basato su proxy che consente di eseguire e scalare il traffico dei servizi TCP in un'unica 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 le istruzioni per configurare un bilanciatore del carico di rete proxy esterno regionale con un backend di gruppo di endpoint di rete (NEG) di zona.
Prima di iniziare, esamina i seguenti documenti:
In questo esempio, utilizzeremo il bilanciatore del carico per distribuire il traffico TCP tra le VM di backend in due NEG a livello di zona nella regione A. Ai fini dell'esempio, il servizio è un insieme di server Apache configurati per rispondere sulla porta 80
.
In questo esempio, configuri il deployment mostrato nel seguente diagramma.
Si tratta di un bilanciatore del carico a livello di regione. Tutti i componenti del bilanciatore del carico (gruppo di istanza di backend, 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 | Amministratore rete Compute
(roles/compute.networkAdmin ) |
Aggiungere e rimuovere regole firewall | Amministratore della sicurezza di Compute
(roles/compute.securityAdmin ) |
Creazione delle istanze | Amministratore di istanze Compute
(roles/compute.instanceAdmin ) |
Per ulteriori informazioni, consulta le seguenti guide:
Configura la rete e le subnet
È necessaria una rete VPC con due subnet, una per i backend del bilanciatore del carico e l'altra per i proxy del bilanciatore del carico. Si tratta di un bilanciatore del carico a livello di regione. Il traffico all'interno della rete VPC viene indirizzato al bilanciatore del carico se la sorgente 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-subnet
nella regione A che utilizza10.1.2.0/24
per il suo intervallo di indirizzi IP principaleSubnet per i proxy: una subnet denominata
proxy-only-subnet
nella regione A che utilizza10.129.0.0/23
per il suo intervallo di indirizzi IP principale
Crea la rete e la subnet per i backend
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.
- 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-network
nella regioneREGION_A
, utilizza il comandogcloud 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 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 sottorete solo proxy in un secondo momento nella pagina Equilibrazione del carico.
Se vuoi creare subito la subnet solo proxy:
Nella console Google Cloud, vai alla pagina Reti VPC.
Fai clic sul nome della rete VPC condiviso:
lb-network
.Fai clic su Aggiungi subnet.
In Nome, inserisci
proxy-only-subnet
.In Regione, seleziona
REGION_A
.Imposta Finalità 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-health-check
. Una regola in entrata, applicabile alle istanze Google Cloud bilanciate in base al carico, che consente il traffico dal bilanciatore del carico e dai sistemi di controllo di integrità di Google Cloud (130.211.0.0/22
e35.191.0.0/16
). Questo esempio utilizza il tag targetallow-health-check
per identificare le VM di backend a cui deve essere applicato.fw-allow-ssh
. Una regola in entrata che consente la connettività SSH in entrata sulla porta TCP22
da qualsiasi indirizzo. Puoi scegliere un intervallo IP di origine più restrittivo per questa regola. Ad esempio, puoi specificare solo gli intervalli IP dei sistemi da cui avvii le sessioni SSH. Questo esempio utilizza il tag di destinazioneallow-ssh
per identificare le VM a cui deve essere applicato.fw-allow-proxy-only-subnet
. Una regola firewallallow
in entrata per la subnet solo proxy che consente al bilanciatore del carico di comunicare con le istanze di backend sulla porta TCP80
. Questo esempio utilizza il tag di destinazioneallow-proxy-only-subnet
per identificare le VM di backend a cui deve essere applicato.
Console
Nella console Google Cloud, vai alla pagina Criteri firewall.
Fai clic su Crea regola firewall, quindi compila i seguenti campi:
- Nome:
fw-allow-health-check
- Rete:
lb-network
- Target: tag di destinazione specificati
- Tag di destinazione:
allow-health-check
- Filtro di origine: intervalli IPv4
- Intervalli IPv4 di origine:
130.211.0.0/22
e35.191.0.0/16
- Protocolli e porte:
- Scegli Protocolli e porte specificati.
- Seleziona la casella di controllo TCP, quindi inserisci
80
per il numero di porta.
- Nome:
Fai clic su Crea.
Fai clic su Crea regola firewall una seconda volta per creare la regola per consentire le connessioni SSH in entrata:
- Nome:
fw-allow-ssh
- Rete:
lb-network
- Priorità:
1000
- 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
22
per il numero di porta.
- Nome:
Fai clic su Crea.
Fai clic su Crea regola firewall una terza volta per creare la regola per consentire le connessioni in entrata dalla subnet solo proxy ai backend Google Cloud:
- Nome:
fw-allow-proxy-only-subnet
- Rete:
lb-network
- Priorità:
1000
- 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
80
per il numero di porta.
- Nome:
Fai clic su Crea.
gcloud
Crea la regola
fw-allow-health-check
per consentire ai controlli di integrità di Google Cloud di raggiungere le istanze di backend sulla porta TCP80
:gcloud compute firewall-rules create fw-allow-health-check \ --network=lb-network \ --action=allow \ --direction=ingress \ --target-tags=allow-health-check \ --source-ranges=130.211.0.0/22,35.191.0.0/16 \ --rules=tcp:80
Crea la regola firewall
fw-allow-ssh
per consentire la connettività SSH alle VM con il tag di reteallow-ssh
. Se omettisource-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 una regola firewall di autorizzazione in entrata per la subnet solo proxy per consentire al bilanciatore del carico di comunicare con le istanze di backend sulla porta TCP
80
:gcloud compute firewall-rules create fw-allow-proxy-only-subnet \ --network=lb-network \ --action=allow \ --direction=ingress \ --target-tags=allow-proxy-only-subnet \ --source-ranges=10.129.0.0/23 \ --rules=tcp:80
Prenota l'indirizzo IP del bilanciatore del carico
Console
Nella console Google Cloud, vai alla pagina Prenotare un indirizzo statico.
Scegli un nome per il nuovo indirizzo.
In Network Service Tier (Livello di servizio di rete), seleziona Standard.
Per Versione IP, seleziona IPv4. Gli indirizzi IPv6 non sono supportati.
In Tipo, seleziona Regionale.
In Regione, seleziona
REGION_A
.Lascia l'opzione Associato a impostata su Nessuna. Dopo aver creato il bilanciatore del carico, questo indirizzo IP viene associato 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_NAME
con 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
Configura il NEG a livello di zona
Configura un NEG a livello di zona con endpoint di tipo GCE_VM_IP_PORT
nella regione A. Innanzitutto, crea le VM, quindi
crea un NEG zonale e aggiungi gli endpoint di rete delle VM al NEG.
Creare VM
Console
Nella console Google Cloud, vai alla pagina Istanze VM.
Fai clic su Crea istanza.
Imposta Nome su
vm-a1
.In Regione, seleziona
REGION_A
.In Zona, seleziona
ZONE_A
.Nella sezione Disco di avvio, assicurati che sia selezionata l'opzione Debian GNU/Linux 12 (bookworm) per le opzioni del disco di avvio. Fai clic su Scegli per modificare l'immagine, se necessario.
Fai clic su Opzioni avanzate.
Fai clic su Networking e configura i seguenti campi:
- In Tag di rete, inserisci
allow-ssh
,allow-health-check
eallow-proxy-only-subnet
. - In Interfacce di rete, seleziona quanto segue:
- Rete:
lb-network
- Subnet:
backend-subnet
- Rete:
- 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.
Ripeti i passaggi precedenti per creare altre tre VM. Utilizza le seguenti combinazioni di nome e zona:
- Nome:
vm-a2
| Zona:ZONE_A
- Nome:
vm-b1
| Zona:ZONE_B
- Nome:
vm-b2
| Zona:ZONE_B
- Nome:
gcloud
Per creare le VM, utilizza il comando gcloud compute instances create
due volte. Utilizza le seguenti combinazioni per VM_NAME
e ZONE
. I contenuti dello script sono identici per entrambe le VM:
VM_NAME
:vm-a1
eZONE
:ZONE_A
VM_NAME
:vm-a2
eZONE
:ZONE_A
VM_NAME
:vm-b1
eZONE
:ZONE_B
VM_NAME
:vm-b2
eZONE
:ZONE_B
gcloud compute instances create VM_NAME \ --zone=ZONE \ --image-family=debian-12 \ --image-project=debian-cloud \ --tags=allow-ssh,allow-health-check,allow-proxy-only-subnet \ --subnet=backend-subnet \ --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 i NEG a livello di zona
Console
Creare un gruppo di endpoint di rete a livello di zona
Nella console Google Cloud, vai alla pagina Gruppi di endpoint di rete.
Fai clic su Crea gruppo di endpoint di rete.
In Nome, inserisci
zonal-neg-a
.Per Tipo di gruppo di endpoint di rete, seleziona Gruppo di endpoint di rete (a livello di zona).
In Rete, seleziona
lb-network
.In Subnet, seleziona
backend-subnet
.In Zona, seleziona
ZONE_A
.In Porta predefinita, inserisci
80
.Fai clic su Crea.
Ripeti tutti i passaggi di questa sezione per creare un secondo NEG zonale con le seguenti modifiche alle impostazioni:
- Nome:
zonal-neg-b
- Zona:
ZONE_B
- Nome:
Aggiungi endpoint ai NEG a livello di zona
Nella console Google Cloud, vai alla pagina Gruppi di endpoint di rete.
Fai clic sul nome del gruppo di endpoint di rete che hai creato nel passaggio precedente (ad esempio
zonal-neg-a
).Nella pagina Dettagli gruppo di endpoint di rete, fai clic su Aggiungi endpoint di rete nella sezione Endpoint di rete in questo gruppo.
Seleziona un'istanza VM (ad esempio
vm-a1
).Nella sezione Interfaccia di rete, vengono visualizzati il nome, la zona e la sottorete della VM.
- In Indirizzo IP, inserisci l'indirizzo IP del nuovo endpoint di rete. Per ottenere l'indirizzo IP, fai clic su Controlla gli indirizzi IP principali e l'intervallo IP alias in nic0.
- In Tipo di porta, seleziona Predefinito. L'endpoint utilizza la porta predefinita
80
per tutti gli endpoint del gruppo di endpoint di rete. Questo è sufficiente per il nostro esempio perché il server Apache gestisce le richieste sulla porta80
. - Fai clic su Crea.
Fai clic su Aggiungi endpoint di rete. Seleziona la seconda istanza VM,
vm-a2
, e ripeti i passaggi precedenti per aggiungere i relativi endpoint azonal-neg-a
.Ripeti tutti i passaggi di questa sezione per aggiungere gli endpoint da
vm-b1
evm-b2
azonal-neg-b
.
gcloud
Crea un NEG a livello di zona nella zona
ZONE_A
conGCE_VM_IP_PORT
endpoint:gcloud compute network-endpoint-groups create zonal-neg-a \ --network-endpoint-type=GCE_VM_IP_PORT \ --zone=ZONE_A \ --network=lb-network \ --subnet=backend-subnet
Puoi specificare
--default-port
durante la creazione del NEG oppure specificare un numero di porta per ogni endpoint come mostrato nel passaggio successivo.Aggiungi endpoint al NEG zonale:
gcloud compute network-endpoint-groups update zonal-neg-a \ --zone=ZONE_A \ --add-endpoint='instance=vm-a1,port=80' \ --add-endpoint='instance=vm-a2,port=80'
Crea un NEG a livello di zona nella zona
ZONE_B
conGCE_VM_IP_PORT
endpoint:gcloud compute network-endpoint-groups create zonal-neg-b \ --network-endpoint-type=GCE_VM_IP_PORT \ --zone=ZONE_B \ --network=lb-network \ --subnet=backend-subnet
Puoi specificare
--default-port
durante la creazione del NEG oppure specificare un numero di porta per ogni endpoint come mostrato nel passaggio successivo.Aggiungi endpoint al NEG zonale:
gcloud compute network-endpoint-groups update zonal-neg-b \ --zone=ZONE_B \ --add-endpoint='instance=vm-b1,port=80' \ --add-endpoint='instance=vm-b2,port=80'
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 carichi di lavoro 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
.
Riserva una subnet solo proxy
- Fai clic su Riserva subnet.
- In Nome, inserisci
proxy-only-subnet
. - In Intervallo di indirizzi IP, inserisci
10.129.0.0/23
. - Fai clic su Aggiungi.
Configura i backend
- Fai clic su Configurazione backend.
- In Tipo di backend, seleziona Gruppo di endpoint di rete zonale.
- In Protocollo, seleziona TCP.
- Configura il primo backend:
- In Nuovo backend, seleziona NEG a livello di zona
zonal-neg-a
. - Mantieni i valori predefiniti rimanenti e fai clic su Fine.
- In Nuovo backend, seleziona NEG a livello di zona
- Configura il secondo backend:
- Fai clic su Aggiungi backend.
- In Nuovo backend, seleziona il gruppo di istanze
zonal-neg-b
. - Mantieni i valori predefiniti rimanenti e fai clic su Fine.
- Configura il controllo di integrità:
- In Controllo di integrità, seleziona Crea un controllo di integrità.
- Imposta il nome del controllo di integrità su
tcp-health-check
. - In Protocollo, seleziona TCP.
- In Porta, inserisci
80
.
- Mantieni i valori predefiniti rimanenti 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-tcp-forwarding-rule
. - In Network Service Tier (Livello di servizio di rete), seleziona Standard.
- In Indirizzo IP, seleziona
ext-tcp-ip-address
. - In Numero porta, inserisci
9090
. 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 ulteriori informazioni, consulta il 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.
- Fai clic su Crea.
gcloud
Crea un controllo di integrità a livello di regione per i backend:
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 external-tcp-proxy-bs \ --load-balancing-scheme=EXTERNAL_MANAGED \ --protocol=TCP \ --region=REGION_A \ --health-checks=tcp-health-check \ --health-checks-region=REGION_A
Aggiungi il NEG zonale nella zona
ZONE_A
al servizio di backend:gcloud compute backend-services add-backend external-tcp-proxy-bs \ --network-endpoint-group=zonal-neg-a \ --network-endpoint-group-zone=ZONE_A \ --balancing-mode=CONNECTION \ --max-connections-per-endpoint=50 \ --region=REGION_A
Aggiungi il NEG zonale nella zona
ZONE_B
al servizio di backend:gcloud compute backend-services add-backend external-tcp-proxy-bs \ --network-endpoint-group=zonal-neg-b \ --network-endpoint-group-zone=ZONE_B \ --balancing-mode=CONNECTION \ --max-connections-per-endpoint=50 \ --region=REGION_A
Crea il proxy TCP di destinazione:
gcloud compute target-tcp-proxies create ext-tcp-target-proxy \ --backend-service=external-tcp-proxy-bs \ --region=REGION_A
Crea la regola di forwarding. Per
--ports
, specifica un singolo numero di porta tra 1 e 65535. In questo esempio viene utilizzata la porta9090
. La regola di forwarding inoltra solo i pacchetti con una porta di destinazione corrispondente.gcloud compute forwarding-rules create ext-tcp-forwarding-rule \ --load-balancing-scheme=EXTERNAL_MANAGED \ --network=lb-network \ --network-tier=STANDARD \ --address=ext-tcp-ip-address \ --ports=9090 \ --region=REGION_A \ --target-tcp-proxy=ext-tcp-target-proxy \ --target-tcp-proxy-region=REGION_A
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 il seguente comando:
gcloud compute addresses describe ADDRESS_NAME
Invia traffico al bilanciatore del carico eseguendo il seguente comando. Sostituisci
LB_IP_ADDRESS
con l'indirizzo IPv4 del bilanciatore del carico.curl -m1 LB_IP_ADDRESS:9090
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.
- Aggiungi un collegamento Private Service Connect.
- Pulisci la configurazione del bilanciatore del carico.