Questa guida mostra come eseguire il deployment di un bilanciatore del carico di rete passthrough interno con backend di gruppi di endpoint di rete (NEG) di zona. I NEG di zona sono risorse di zona che rappresentano raccolte di indirizzi IP o combinazioni di indirizzi IP/porta per le risorse Cloud de Confiance all'interno di una singola subnet. I NEG consentono di creare raggruppamenti logici di indirizzi IP o combinazioni di indirizzi IP/porta che rappresentano servizi software anziché intere VM.
Prima di seguire questa guida, acquisisci familiarità con gli argomenti seguenti:
- Panoramica del bilanciatore del carico di rete passthrough interno
- Panoramica del NEG a livello di zona
I bilanciatori del carico di rete passthrough interni supportano solo i NEG di zona con endpoint GCE_VM_IP.
Autorizzazioni
Per seguire questa guida, devi creare istanze e modificare una rete in un progetto. Devi avere il ruolo di proprietario o editor del progetto oppure disporre di tutti i seguenti ruoli IAM di Compute Engine:
| Attività | Ruolo richiesto |
|---|---|
| Crea reti, subnet e componenti del bilanciatore del carico | Network Admin |
| Aggiungere e rimuovere regole firewall | Security Admin |
| Creare istanze | Compute Instance Admin |
Per saperne di più, consulta le guide seguenti:
Panoramica della configurazione
Questa guida mostra come configurare e testare un bilanciatore del carico di rete passthrough interno con
backend NEG di zona GCE_VM_IP. I passaggi di questa sezione descrivono come
configurare quanto segue:
- Una rete VPC di esempio denominata
lb-networkcon una subnet personalizzata - Regole firewall che consentono le connessioni in entrata alle VM di backend
- Quattro VM:
- VM
vm-a1evm-a2nella zonaus-west1-a - VM
vm-c1evm-c2nella zonaus-west1-c
- VM
- Due NEG zonali di backend,
neg-anella zonaus-west1-aeneg-cnella zonaus-west1-c. Ogni NEG avrà i seguenti endpoint:neg-acontiene questi due endpoint:- Indirizzo IP interno della VM
vm-a1 - Indirizzo IP interno della VM
vm-a2
- Indirizzo IP interno della VM
neg-ccontiene questi due endpoint:- Indirizzo IP interno della VM
vm-c1 - Indirizzo IP interno della VM
vm-c2
- Indirizzo IP interno della VM
- Una VM client (
vm-client) inus-west1-aper testare le connessioni - I seguenti componenti del bilanciatore del carico di rete passthrough interno:
- Un servizio di backend interno nella regione
us-west1per gestire la distribuzione delle connessioni ai due NEG zonali - Una regola di forwarding interna e un indirizzo IP interno per il frontend del bilanciatore del carico
- Un servizio di backend interno nella regione
L'architettura di questo esempio ha questo aspetto:
Configura una rete, una regione e una subnet
Il bilanciatore del carico di rete passthrough interno di esempio descritto in questa pagina viene creato in una
rete VPC in modalità personalizzata denominata
lb-network.
Le VM di backend, i NEG di zona e i componenti del bilanciatore del carico di questo esempio si trovano in questa regione e subnet:
- Regione:
us-west1 - Subnet:
lb-subnet, con intervallo di indirizzi IP principale10.1.2.0/24
Per creare la rete e la subnet di esempio, segui questi passaggi.
Console
- Vai alla pagina Reti VPC nella console Cloud de Confiance .
Vai alla pagina della rete VPC. - Fai clic su Crea rete VPC.
- Inserisci un nome di
lb-network. - Nella sezione Subnet:
- Imposta Modalità di creazione subnet su Personalizzata.
- Nella sezione Nuova subnet, inserisci le seguenti informazioni:
- Nome:
lb-subnet - Regione:
us-west1 - Intervallo di indirizzi IP:
10.1.2.0/24 - Fai clic su Fine.
- Nome:
- Fai clic su Crea.
gcloud
Crea la rete VPC personalizzata:
gcloud compute networks create lb-network --subnet-mode=custom
- All'interno della rete
lb-network, crea una subnet per le VM di backend nella regioneus-west1:
gcloud compute networks subnets create lb-subnet \ --network=lb-network \ --range=10.1.2.0/24 \ --region=us-west1- All'interno della rete
Configura le regole firewall
Questo esempio utilizza le seguenti regole firewall:
fw-allow-lb-access: una regola in entrata, applicabile a tutti i target nella rete VPC, che consente il traffico dalle origini nell'intervallo10.1.2.0/24. Questa regola consente il traffico in entrata da qualsiasi client che si trova inlb-subnet.fw-allow-ssh: una regola in entrata, applicabile alle istanze con bilanciamento del carico, 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 del sistema da cui inizierai le sessioni SSH. Questo esempio utilizza il tag di destinazioneallow-sshper identificare le VM a cui deve essere applicato.
Senza queste regole firewall, la regola default-deny per il traffico in entrata blocca il traffico in entrata verso le istanze di backend.
Console
- Nella console Cloud de Confiance , vai alla pagina Policy firewall.
Vai a Criteri firewall - Fai clic su Crea regola firewall e inserisci le seguenti informazioni per creare la regola per consentire il traffico nella subnet:
- Nome:
fw-allow-lb-access - Rete:
lb-network - Priorità:
1000 - Direzione del traffico: in entrata
- Azione in caso di corrispondenza: Consenti
- Destinazioni: Tutte le istanze nella rete
- Filtro di origine: intervalli IPv4
- Intervalli IPv4 di origine:
10.1.2.0/24 - Protocolli e porte: Consenti tutto
- Nome:
- Fai clic su Crea.
- Fai di nuovo clic su Crea regola firewall 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, quindi
digita:
tcp:22
- Nome:
- Fai clic su Crea.
- Fai clic su Crea regola firewall una terza volta per creare la regola per consentire i controlli di integrità
Cloud de Confiance :
- Nome:
fw-allow-health-check - 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-health-check - Filtro di origine: intervalli IPv4
- Intervalli IPv4 di origine:
130.211.0.0/22e35.191.0.0/16 - Protocolli e porte: Consenti tutto
- Nome:
- Fai clic su Crea.
gcloud
Crea la regola firewall
fw-allow-lb-accessper consentire la comunicazione da con la subnet:gcloud compute firewall-rules create fw-allow-lb-access \ --network=lb-network \ --action=allow \ --direction=ingress \ --source-ranges=10.1.2.0/24 \ --rules=tcp,udp,icmpCrea la regola firewall
fw-allow-sshper consentire la connettività SSH alle VM con il tag di reteallow-ssh. Se omettisource-ranges, Cloud de Confiance interpreta la regola in modo che si riferisca a qualsiasi origine.gcloud compute firewall-rules create fw-allow-ssh \ --network=lb-network \ --action=allow \ --direction=ingress \ --target-tags=allow-ssh \ --rules=tcp:22Crea la regola
fw-allow-health-checkper consentire i controlli di integrità Cloud de Confiance.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,udp,icmp
Crea backend NEG
Per dimostrare la natura regionale dei bilanciatori del carico di rete passthrough interni, questo esempio utilizza due backend NEG di zona, neg-a e neg-c, nelle zone us-west1-a e us-
west1-c. Il traffico viene bilanciato del carico su entrambi i NEG e sugli endpoint all'interno di
ogni NEG.
Crea VM
Per supportare questo esempio, ognuna delle quattro VM esegue un server web Apache che rimane in ascolto sulle seguenti porte TCP: 80, 8008, 8080, 8088, 443 e 8443.
A ogni VM viene assegnato un indirizzo IP interno in lb-subnet e un indirizzo IP esterno (pubblico) temporaneo. Puoi rimuovere gli indirizzi IP esterni
in un secondo momento.
Gli indirizzi IP esterni non sono necessari per le VM di backend, ma sono utili per questo esempio perché consentono alle VM di scaricare Apache da internet e di connettersi tramite SSH. Per impostazione predefinita, Apache è configurato per il binding a qualsiasi indirizzo IP. I bilanciatori del carico di rete passthrough interni distribuiscono i pacchetti mantenendo l'IP di destinazione.
Assicurati che il software del server in esecuzione sulle VM sia in ascolto sull'indirizzo IP della regola di forwarding interna del bilanciatore del carico.
Per semplicità didattica, queste VM di backend eseguono Debian GNU Linux 10.
Console
Crea VM
- Vai alla pagina Istanze VM nella console Cloud de Confiance .
Vai alla pagina Istanze VM - Ripeti i seguenti passaggi per creare quattro VM utilizzando le seguenti combinazioni di nome e zona.
- Nome:
vm-a1, zona:us-west1-a - Nome:
vm-a2, zona:us-west1-a - Nome:
vm-c1, zona:us-west1-c - Nome:
vm-c2, zona:us-west1-c
- Nome:
- Fai clic su Crea istanza.
- Imposta il Nome come indicato nel passaggio 2.
- Per Regione, scegli
us-west1e seleziona una Zona come indicato nel passaggio 2. - Nella sezione Disco di avvio, assicurati che per le opzioni del disco di avvio sia selezionata l'opzione Debian GNU/Linux 12 (bookworm). Fai clic su Scegli per modificare l'immagine, se necessario.
Fai clic su Opzioni avanzate e apporta le seguenti modifiche:
- Fai clic su Networking e aggiungi i seguenti Tag di rete:
allow-ssheallow-health-check - Fai clic su Modifica in
Interfacce di rete, apporta le seguenti modifiche e poi fai clic su
Fine:
- Rete:
lb-network - Subnet:
lb-subnet - IP interno principale: Temporaneo (automatico)
- IP esterno: Temporaneo
- Rete:
Fai clic su Gestione. Nel campo Script di avvio, copia e incolla i seguenti contenuti dello script. Il contenuto dello script è identico per tutte e quattro le VM:
#! /bin/bash if [ -f /etc/startup_script_completed ]; then exit 0 fi apt-get update apt-get install apache2 -y a2ensite default-ssl a2enmod ssl file_ports="/etc/apache2/ports.conf" file_http_site="/etc/apache2/sites-available/000-default.conf" file_https_site="/etc/apache2/sites-available/default-ssl.conf" http_listen_prts="Listen 80\nListen 8008\nListen 8080\nListen 8088" http_vh_prts="*:80 *:8008 *:8080 *:8088" https_listen_prts="Listen 443\nListen 8443" https_vh_prts="*:443 *:8443" 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 echo "Page served from: $vm_hostname" | \ tee /var/www/html/index.html prt_conf="$(cat "$file_ports")" prt_conf_2="$(echo "$prt_conf" | sed "s|Listen 80|${http_listen_prts}|")" prt_conf="$(echo "$prt_conf_2" | sed "s|Listen 443|${https_listen_prts}|")" echo "$prt_conf" | tee "$file_ports" http_site_conf="$(cat "$file_http_site")" http_site_conf_2="$(echo "$http_site_conf" | sed "s|*:80|${http_vh_prts}|")" echo "$http_site_conf_2" | tee "$file_http_site" https_site_conf="$(cat "$file_https_site")" https_site_conf_2="$(echo "$https_site_conf" | sed "s|_default_:443|${https_vh_prts}|")" echo "$https_site_conf_2" | tee "$file_https_site" systemctl restart apache2 touch /etc/startup_script_completed
- Fai clic su Networking e aggiungi i seguenti Tag di rete:
Fai clic su Crea.
gcloud
Crea le quattro VM eseguendo il seguente comando quattro volte, utilizzando
queste quattro combinazioni per [VM-NAME] e [ZONE]. I contenuti dello script
sono identici per tutte e quattro le VM.
[VM-NAME]divm-a1e[ZONE]dius-west1-a[VM-NAME]divm-a2e[ZONE]dius-west1-a[VM-NAME]divm-c1e[ZONE]dius-west1-c[VM-NAME]divm-c2e[ZONE]dius-west1-cgcloud compute instances create VM-NAME \ --zone=ZONE \ --image-family=debian-12 \ --image-project=debian-cloud \ --tags=allow-ssh,allow-health-check \ --subnet=lb-subnet \ --metadata=startup-script='#! /bin/bash if [ -f /etc/startup_script_completed ]; then exit 0 fi apt-get update apt-get install apache2 -y a2ensite default-ssl a2enmod ssl file_ports="/etc/apache2/ports.conf" file_http_site="/etc/apache2/sites-available/000-default.conf" file_https_site="/etc/apache2/sites-available/default-ssl.conf" http_listen_prts="Listen 80\nListen 8008\nListen 8080\nListen 8088" http_vh_prts="*:80 *:8008 *:8080 *:8088" https_listen_prts="Listen 443\nListen 8443" https_vh_prts="*:443 *:8443" 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 prt_conf="$(cat "$file_ports")" prt_conf_2="$(echo "$prt_conf" | sed "s|Listen 80|${http_listen_prts}|")" prt_conf="$(echo "$prt_conf_2" | sed "s|Listen 443|${https_listen_prts}|")" echo "$prt_conf" | tee "$file_ports" http_site_conf="$(cat "$file_http_site")" http_site_conf_2="$(echo "$http_site_conf" | sed "s|*:80|${http_vh_prts}|")" echo "$http_site_conf_2" | tee "$file_http_site" https_site_conf="$(cat "$file_https_site")" https_site_conf_2="$(echo "$https_site_conf" | sed "s|_default_:443|${https_vh_prts}|")" echo "$https_site_conf_2" | tee "$file_https_site" systemctl restart apache2 touch /etc/startup_script_completed'
Crea NEG a livello di zona GCE_VM_IP
I NEG (neg-a e neg-c) devono essere creati nelle stesse zone delle VM create nel passaggio precedente.
Console
Per creare un gruppo di endpoint di rete a livello di zona:
- Vai alla pagina Gruppi di endpoint di rete nella console Cloud de Confiance .
Vai alla pagina Gruppi di endpoint di rete - Fai clic su Crea gruppo di endpoint di rete.
- Inserisci un Nome per il NEG a livello di zona:
neg-a. - Seleziona Tipo di gruppo di endpoint di rete: Gruppo di endpoint di rete (a livello di zona).
- Seleziona la rete: lb-network
- Seleziona la subnet: lb-subnet
- Seleziona la zona: us-west1-a
- Fai clic su Crea.
- Ripeti questi passaggi per creare un secondo NEG zonale denominato
neg-cnella zona us-west1-c.
Aggiungi endpoint al NEG di zona:
- Vai alla pagina Gruppi di endpoint di rete nella console Cloud de Confiance .
Vai a Gruppi di endpoint di rete - Fai clic sul nome del primo gruppo di endpoint di rete creato nel passaggio precedente (neg-a). Viene visualizzata la pagina Dettagli 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.
- Fai clic su Istanza VM e seleziona vm-a1 per aggiungere i relativi indirizzi IP interni come endpoint di rete.
- Fai clic su Crea.
- Fai di nuovo clic su Aggiungi endpoint di rete e, in Istanza VM, seleziona vm-a2.
- Fai clic su Crea.
Fai clic sul Nome del secondo gruppo di endpoint di rete creato nel passaggio precedente (neg-c). Viene visualizzata la pagina Dettagli 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.
- Fai clic su Istanza VM e seleziona vm-c1 per aggiungere i relativi indirizzi IP interni come endpoint di rete.
- Fai clic su Crea.
- Fai di nuovo clic su Aggiungi endpoint di rete e, in Istanza VM, seleziona vm-c2.
- Fai clic su Crea.
gcloud
Crea un NEG di zona
GCE_VM_IPdenominatoneg-ainus-west1-autilizzando il comandogcloud compute network-endpoint-groups create:gcloud compute network-endpoint-groups create neg-a \ --network-endpoint-type=gce-vm-ip \ --zone=us-west1-a \ --network=lb-network \ --subnet=lb-subnetAggiungi endpoint a
neg-a:gcloud compute network-endpoint-groups update neg-a \ --zone=us-west1-a \ --add-endpoint='instance=vm-a1' \ --add-endpoint='instance=vm-a2'Crea un NEG di zona
GCE_VM_IPdenominatoneg-cinus-west1-cutilizzando il comandogcloud compute network-endpoint-groups create:gcloud compute network-endpoint-groups create neg-c \ --network-endpoint-type=gce-vm-ip \ --zone=us-west1-c \ --network=lb-network \ --subnet=lb-subnetAggiungi endpoint a
neg-c:gcloud compute network-endpoint-groups update neg-c \ --zone=us-west1-c \ --add-endpoint='instance=vm-c1' \ --add-endpoint='instance=vm-c2'
Configura i componenti del bilanciatore del carico
Questi passaggi configurano tutti i componenti del bilanciatore del carico di rete passthrough interno:
Servizio di backend: per questo esempio, devi trasmettere il traffico HTTP attraverso il bilanciatore del carico. Pertanto, devi utilizzare TCP, non UDP.
Regola di forwarding: questo esempio crea una singola regola di forwarding interno.
Indirizzo IP interno: in questo esempio, specifichi un indirizzo IP interno,
10.1.2.99, quando crei la regola di forwarding.
Console
gcloud
Crea un nuovo controllo di integrità HTTP regionale.
gcloud compute health-checks create http hc-http-80 \ --region=us-west1 \ --port=80Crea il servizio di backend:
gcloud compute backend-services create bs-ilb \ --load-balancing-scheme=internal \ --protocol=tcp \ --region=us-west1 \ --health-checks=hc-http-80 \ --health-checks-region=us-west1Aggiungi i due NEG di zona,
neg-aeneg-c, al servizio di backend:gcloud compute backend-services add-backend bs-ilb \ --region=us-west1 \ --network-endpoint-group=neg-a \ --network-endpoint-group-zone=us-west1-agcloud compute backend-services add-backend bs-ilb \ --region=us-west1 \ --network-endpoint-group=neg-c \ --network-endpoint-group-zone=us-west1-cCrea una regola di forwarding per il servizio di backend. Quando crei la regola di forwarding, specifica
10.1.2.99per l'indirizzo IP interno nella subnet.gcloud compute forwarding-rules create fr-ilb \ --region=us-west1 \ --load-balancing-scheme=internal \ --network=lb-network \ --subnet=lb-subnet \ --address=10.1.2.99 \ --ip-protocol=TCP \ --ports=80,8008,8080,8088 \ --backend-service=bs-ilb \ --backend-service-region=us-west1
testa il bilanciatore del carico
Questo test contatta il bilanciatore del carico da una VM client separata, ovvero non da una VM di backend del bilanciatore del carico. Il comportamento previsto implica che il traffico venga distribuito tra le quattro VM di backend perché non è stata configurata alcuna affinità sessione.
Crea una VM client di test
Questo esempio crea una VM client (vm-client) nella stessa regione delle VM di backend (server). Il client viene utilizzato per convalidare la configurazione del bilanciatore del carico
e dimostrare il comportamento previsto, come descritto nella sezione
Test.
Console
- Vai alla pagina Istanze VM nella console Cloud de Confiance .
Vai alla pagina Istanze VM - Fai clic su Crea istanza.
- Imposta Nome su
vm-client. - Imposta Zona su
us-west1-a. - Fai clic su Opzioni avanzate e apporta le seguenti modifiche:
- Fai clic su Networking e aggiungi
allow-ssha Tag di rete. - Fai clic sul pulsante di modifica in Interfacce di rete e apporta le seguenti modifiche, poi fai clic su Fine:
- Rete:
lb-network - Subnet:
lb-subnet - IP interno principale: Temporaneo (automatico)
- IP esterno: Temporaneo
- Rete:
- Fai clic su Networking e aggiungi
- Fai clic su Crea.
gcloud
La VM client può trovarsi in qualsiasi zona della stessa regione del bilanciatore del carico e può utilizzare qualsiasi subnet in quella regione. In questo esempio,
il client si trova nella zona us-west1-a e utilizza la stessa
subnet delle VM di backend.
gcloud compute instances create vm-client \
--zone=us-west1-a \
--image-family=debian-12 \
--image-project=debian-cloud \
--tags=allow-ssh \
--subnet=lb-subnet
Invia traffico al bilanciatore del carico
Per connetterti al bilanciatore del carico, segui questi passaggi.
Connettiti all'istanza VM client.
gcloud compute ssh vm-client --zone=us-west1-a
Invia una richiesta web al bilanciatore del carico utilizzando
curlper contattare il relativo indirizzo IP. Ripeti la richiesta per vedere che le risposte provengono da diverse VM di backend. Il nome della VM che genera la risposta viene visualizzato nel testo della risposta HTML, in virtù dei contenuti di/var/www/html/index.htmlsu ogni VM di backend. Le risposte previste hanno il seguente aspetto:Page served from: vm-a1ePage served from: vm-a2.curl http://10.1.2.99
La regola di forwarding è configurata per gestire le porte
80,8008,8080e8088. Per inviare il traffico a queste altre porte, aggiungi i due punti (:) e il numero di porta dopo l'indirizzo IP, in questo modo:curl http://10.1.2.99:8008
Passaggi successivi
- Per configurare opzioni di configurazione aggiuntive, ad esempio l'attivazione dell'accesso globale, l'accettazione del traffico su tutte le porte e l'accettazione del traffico su più porte utilizzando due regole di forwarding, consulta Opzioni di configurazione aggiuntive per i bilanciatori del carico di rete pass-through interni.
- Consulta la panoramica del bilanciatore del carico di rete passthrough interno per informazioni fondamentali.
- Per informazioni importanti sul failover, vedi Concetti sul failover per i bilanciatori del carico di rete passthrough interni.
- Per informazioni sulla configurazione di logging e monitoraggio per i bilanciatori del carico di rete passthrough interni, consulta Logging e monitoraggio del bilanciatore del carico di rete passthrough interno.
- Per informazioni sull'accesso ai bilanciatori del carico di rete passthrough interni dalle reti peer connesse alla tua rete VPC, consulta la sezione Bilanciatori del carico di rete passthrough interni e reti connesse.
- Consulta la pagina Risolvere i problemi relativi ai bilanciatori del carico di rete passthrough interni per informazioni su come risolvere i problemi relativi al bilanciatore del carico di rete passthrough interno.