Il bilanciatore del carico di rete proxy interno regionale è un bilanciatore del carico di livello 4 a livello di regione basato su proxy che ti consente di eseguire e scalare il traffico di servizio TCP dietro un indirizzo IP interno accessibile solo ai client nella stessa rete VPC o ai client connessi alla tua rete VPC.
Questa guida contiene le istruzioni per configurare un bilanciatore del carico di rete proxy interno regionale con backend di un gruppo di endpoint di rete (NEG) a livello di zona. Prima di iniziare:
- Leggi la panoramica del bilanciatore del carico di rete proxy interno regionale
- Leggi la panoramica dei NEG di zona
Panoramica
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 REGION_A
. Ai fini dell'esempio, il servizio è un insieme di server Apache configurati per rispondere sulla porta 80
.
In questo esempio, configuri il seguente deployment:
Il bilanciatore del carico di rete proxy interno regionale è un bilanciatore del carico regionale. Tutti i componenti del bilanciatore del carico (gruppi 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 proprietario o editor del progetto oppure devi disporre di tutti i seguenti 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 |
Creare istanze | Amministratore istanze Compute |
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. I bilanciatori del carico di rete proxy interni regionali sono a livello di regione. Il traffico all'interno della rete VPC viene instradato al bilanciatore del carico se l'origine del traffico si trova in una subnet nella stessa regione del bilanciatore del carico.
Questo esempio utilizza le seguenti reti, regione e subnet VPC:
Rete. La rete è una rete VPC in modalità personalizzata denominata
lb-network
.Subnet per i backend. Una subnet denominata
backend-subnet
nella regioneREGION_A
utilizza10.1.2.0/24
come intervallo IP principale.Subnet per i proxy. Una subnet denominata
proxy-only-subnet
nella regioneREGION_A
utilizza10.129.0.0/23
come intervallo 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 informazioni seguenti:
- 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
Crea la rete VPC personalizzata con il comando
gcloud compute networks create
:gcloud compute networks create lb-network --subnet-mode=custom
Crea una subnet nella rete
lb-network
della regioneREGION_A
con 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 è utilizzata da tutti i bilanciatori del carico basati su Envoy nell'area geografica REGION_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 ora la subnet solo proxy, segui questi passaggi:
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 corrispondenza di Regione, seleziona
REGION_A
.Imposta Purpose su Regional Managed Proxy (Proxy gestito a livello di regione).
Per Intervallo di indirizzi IP, inserisci
10.129.0.0/23
.Fai clic su Aggiungi.
gcloud
Crea la subnet solo proxy con 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, vengono create le seguenti regole firewall:
fw-allow-health-check
: una regola in entrata, applicabile alle istanze Google Cloud con bilanciamento del carico, che consente il traffico proveniente 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 di destinazioneallow-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 TCP 22 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 avvierai 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
: crea una regola firewall di autorizzazione in entrata per la subnet solo proxy al fine di consentire 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:
- Inserisci
fw-allow-health-check
come nome. - In Rete, seleziona
lb-network
. - 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.
- Inserisci
Fai di nuovo clic su Crea regola firewall per creare la regola che consenta 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, quindi digita:
tcp:22
- Nome:
Fai clic su Crea.
Fai di nuovo clic su Crea regola firewall per creare la regola che consenta le connessioni in entrata dalla subnet solo proxy ai backend di 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, quindi digita:
tcp:80
- 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 su una 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 nel significato di 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 in modo da 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
Per prenotare un indirizzo IP interno statico per il bilanciatore del carico, consulta Prenotare un nuovo indirizzo IPv4 o IPv6 interno statico.
Configura il NEG a livello di zona
Configura un NEG a livello di zona (con endpoint di tipo GCE_VM_IP_PORT
)
nella regione REGION_A
. Prima di tutto, crea le VM. Quindi crea un NEG a livello di zona
e aggiungi gli endpoint di rete delle VM al NEG.
Crea VM
Console
Nella console Google Cloud, vai alla pagina Istanze VM.
Fai clic su Crea istanza.
Imposta il Nome su
vm-a1
.In corrispondenza di Regione, seleziona
REGION_A
.Per la Zona, vedi
ZONE_A1
.Nella sezione Disco di avvio, assicurati che siano selezionate il sistema operativo Debian e la versione 10 (buster) 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 seguente 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 seguenti per creare altre tre VM utilizzando le seguenti combinazioni di nome e zona:
- Nome:
vm-a2
, zona:ZONE_A1
- Nome:
vm-c1
, zona:ZONE_A2
- Nome:
vm-c2
, zona:ZONE_A2
- Nome:
gcloud
Crea le VM eseguendo questo comando due volte, utilizzando queste combinazioni per VM_NAME e ZONE. I contenuti dello script sono identici per entrambe le VM.
- VM_NAME:
vm-a1
e ZONE:ZONE_A1
- VM_NAME:
vm-a2
e ZONE:ZONE_A1
- VM_NAME:
vm-c1
e ZONE:ZONE_A2
VM_NAME:
vm-c2
e ZONE:ZONE_A2
gcloud compute instances create VM_NAME \ --zone=ZONE \ --image-family=debian-10 \ --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
Per 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
.In Tipo di gruppo di endpoint di rete, seleziona Gruppo di endpoint di rete (a livello di zona).
In Rete, seleziona
lb-network
.In corrispondenza di Subnet, seleziona
backend-subnet
.In Zona, seleziona
ZONE_A1
.Inserisci il valore in Porta predefinita:
80
.Fai clic su Crea.
Ripeti tutti i passaggi in questa sezione per creare un secondo NEG a livello di zona con le seguenti modifiche alle impostazioni:
- Nome:
zonal-neg-c
- Zona:
ZONE_A2
- 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 creato nel passaggio precedente (ad esempio
zonal-neg-a
). Verrà visualizzata la pagina Dettagli del gruppo di endpoint di rete.Nella sezione Endpoint di rete in questo gruppo, fai clic su Aggiungi endpoint di rete. Viene visualizzata la pagina Aggiungi endpoint di rete.
Seleziona un'istanza VM (ad esempio
vm-a1
). Nella sezione Interfaccia di rete, sono visualizzati il nome, la zona e la subnet della VM.- Inserisci l'indirizzo IP del nuovo endpoint di rete. Puoi fare clic su Verifica gli indirizzi IP principali e l'intervallo IP alias in nic0 per l'indirizzo IP.
- Per Tipo di porta, seleziona Predefinita, l'endpoint utilizza la porta predefinita
80
per tutti gli endpoint nel gruppo di endpoint di rete. Ciò è sufficiente per il nostro esempio perché il server Apache gestisce le richieste sulla porta80
. - Fai clic su Crea.
Fai di nuovo clic su Aggiungi endpoint di rete. Seleziona la seconda istanza VM,
vm-a2
, e ripeti questi passaggi per aggiungere i relativi endpoint azonal-neg-a
.Ripeti tutti i passaggi in questa sezione per aggiungere endpoint da
vm-c1
evm-c2
azonal-neg-c
.
gcloud
Crea un NEG a livello di zona nella zona
ZONE_A1
conGCE_VM_IP_PORT
endpoint.gcloud compute network-endpoint-groups create zonal-neg-a \ --network-endpoint-type=GCE_VM_IP_PORT \ --zone=ZONE_A1 \ --network=lb-network \ --subnet=backend-subnet
Puoi specificare
--default-port
durante la creazione del NEG o specificare un numero di porta per ciascun endpoint come mostrato nel passaggio successivo.Aggiungi endpoint al NEG a livello di zona.
gcloud compute network-endpoint-groups update zonal-neg-a \ --zone=ZONE_A1 \ --add-endpoint='instance=vm-a1,port=80' \ --add-endpoint='instance=vm-a2,port=80'
Crea un NEG a livello di zona nella zona
ZONE_A2
conGCE_VM_IP_PORT
endpoint.gcloud compute network-endpoint-groups create zonal-neg-c \ --network-endpoint-type=GCE_VM_IP_PORT \ --zone=ZONE_A2 \ --network=lb-network \ --subnet=backend-subnet
Puoi specificare
--default-port
durante la creazione del NEG o specificare un numero di porta per ciascun endpoint come mostrato nel passaggio successivo.Aggiungi endpoint al NEG a livello di zona.
gcloud compute network-endpoint-groups update zonal-neg-c \ --zone=ZONE_A2 \ --add-endpoint='instance=vm-c1,port=80' \ --add-endpoint='instance=vm-c2,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.
- 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 Interno e fai clic su Avanti.
- Per Deployment tra regioni o regioni singole, seleziona Ideale per carichi di lavoro regionali e fai clic su Avanti.
- Fai clic su Configura.
Configurazione di base
- In Nome, inserisci
my-int-tcp-lb
. - In Regione, seleziona
REGION_A
. - In Rete, seleziona
lb-network
.
Riserva una subnet solo proxy
Per prenotare una subnet solo proxy:
- Fai clic su Prenota subnet.
- In Nome, inserisci
proxy-only-subnet
. - In Intervallo di indirizzi IP, inserisci
10.129.0.0/23
. - Fai clic su Aggiungi.
Configurazione backend
- Fai clic su Configurazione backend.
- Per Tipo di backend, seleziona Gruppo di endpoint di rete a livello di zona.
- Per Protocollo, seleziona TCP.
- Configura il primo backend:
- In Nuovo backend, seleziona NEG a livello di zona
zonal-neg-a
. - Conserva i restanti valori predefiniti 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-c
. - Conserva i restanti valori predefiniti 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
. - Per Protocollo, seleziona TCP.
- In Porta, inserisci
80
.
- Conserva 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.
Configurazione frontend
- Fai clic su Configurazione frontend.
- In Nome, inserisci
int-tcp-forwarding-rule
. - Per Subnet, seleziona backend-subnet.
- Per Indirizzo IP, seleziona int-tcp-ip-address.
- In Numero porta, inserisci
9090
. La regola di forwarding inoltra solo i pacchetti con una porta di destinazione corrispondente. - In questo esempio, non abilitare il protocollo proxy perché non funziona con il software Apache HTTP Server. Per maggiori informazioni, vedi 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 internal-tcp-proxy-bs \ --load-balancing-scheme=INTERNAL_MANAGED \ --protocol=TCP \ --region=REGION_A \ --health-checks=tcp-health-check \ --health-checks-region=REGION_A
Aggiungi il NEG di zona nella zona
ZONE_A1
al servizio di backend.gcloud compute backend-services add-backend internal-tcp-proxy-bs \ --network-endpoint-group=zonal-neg-a \ --network-endpoint-group-zone=ZONE_A1 \ --balancing-mode=CONNECTION \ --max-connections-per-endpoint=50 \ --region=REGION_A
Aggiungi il NEG di zona nella zona
ZONE_A2
al servizio di backend.gcloud compute backend-services add-backend internal-tcp-proxy-bs \ --network-endpoint-group=zonal-neg-c \ --network-endpoint-group-zone=ZONE_A2 \ --balancing-mode=CONNECTION \ --max-connections-per-endpoint=50 \ --region=REGION_A
Crea il proxy TCP di destinazione.
gcloud compute target-tcp-proxies create int-tcp-target-proxy \ --backend-service=internal-tcp-proxy-bs \ --region=REGION_A
Crea la regola di forwarding. Per
--ports
, specifica un singolo numero di porta compreso tra 1 e 65535. Questo esempio utilizza la porta9090
. La regola di forwarding inoltra solo i pacchetti con una porta di destinazione corrispondente.gcloud compute forwarding-rules create int-tcp-forwarding-rule \ --load-balancing-scheme=INTERNAL_MANAGED \ --network=lb-network \ --subnet=backend-subnet \ --address=int-tcp-ip-address \ --ports=9090 \ --region=REGION_A \ --target-tcp-proxy=int-tcp-target-proxy \ --target-tcp-proxy-region=REGION_A
Testa il bilanciatore del carico
Per testare il bilanciatore del carico, crea una VM client nella stessa regione del bilanciatore del carico. Quindi, invia il traffico dal client al bilanciatore del carico.
Crea una VM client
Crea una VM client (client-vm
) nella stessa regione del bilanciatore del carico.
Console
Nella console Google Cloud, vai alla pagina Istanze VM.
Fai clic su Crea istanza.
Imposta Nome su
client-vm
.Imposta Zona su
ZONE_A1
.Fai clic su Opzioni avanzate.
Fai clic su Networking e configura i seguenti campi:
- In Tag di rete, inserisci
allow-ssh
. - In Interfacce di rete, seleziona quanto segue:
- Rete:
lb-network
- Subnet:
backend-subnet
- Rete:
- In Tag di rete, inserisci
Fai clic su Crea.
gcloud
La VM client deve trovarsi nella stessa rete VPC e nella stessa regione del bilanciatore del carico. Non è necessario che si trovi nella stessa subnet o zona. Il client utilizza la stessa subnet delle VM di backend.
gcloud compute instances create client-vm \ --zone=ZONE_A1 \ --image-family=debian-10 \ --image-project=debian-cloud \ --tags=allow-ssh \ --subnet=backend-subnet
Invia traffico al bilanciatore del carico
Ora che hai configurato il bilanciatore del carico, puoi testare l'invio del traffico all'indirizzo IP del bilanciatore.
Utilizza SSH per connetterti all'istanza client.
gcloud compute ssh client-vm \ --zone=ZONE_A1
Verifica che il bilanciatore del carico fornisca i nomi host di backend come previsto.
Utilizza il comando
compute addresses describe
per visualizzare l'indirizzo IP del bilanciatore del carico:gcloud compute addresses describe int-tcp-ip-address \ --region=REGION_A
Prendi nota dell'indirizzo IP.
Invia traffico al bilanciatore del carico. Sostituisci IP_ADDRESS con l'indirizzo IP del bilanciatore del carico.
curl IP_ADDRESS:9090
Passaggi successivi
- Per scoprire come funziona un bilanciatore del carico di rete proxy interno regionale, consulta la panoramica del bilanciatore del carico di rete proxy interno regionale.
- Per configurare il monitoraggio per il bilanciatore del carico di rete proxy interno regionale, consulta Utilizzo del monitoraggio.
- Esegui la pulizia della configurazione del bilanciatore del carico.