Questo documento descrive le opzioni per connettersi da e verso internet utilizzando le risorse Compute Engine che hanno indirizzi IP privati. È utile per gli sviluppatori che creano servizi Google Cloud e per gli amministratori di rete degli ambienti Google Cloud.
Questo tutorial presuppone che tu abbia familiarità con il deployment dei VPC, con Compute Engine e con le reti TCP/IP di base.
Obiettivi
- Scopri le opzioni disponibili per la connessione tra VM private al di fuori del loro VPC.
- Crea un'istanza di Identity-Aware Proxy (IAP) per i tunnel TCP appropriata per i servizi interattivi come SSH.
- Crea un'istanza Cloud NAT per consentire alle VM di effettuare connessioni in uscita a internet.
- Configura un bilanciatore del carico HTTP per supportare le connessioni in entrata da internet alle tue VM.
Costi
Questo tutorial utilizza i componenti fatturabili di Google Cloud, tra cui:
Utilizza il Calcolatore prezzi per generare una stima dei costi in base all'utilizzo previsto. Calcoliamo che il totale per eseguire questo tutorial è inferiore a 5$al giorno.
Prima di iniziare
- Accedi al tuo account Google Cloud. Se non conosci Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $di crediti gratuiti per l'esecuzione, il test e il deployment dei carichi di lavoro.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.
Introduzione
Gli indirizzi IP privati offrono una serie di vantaggi rispetto agli indirizzi IP pubblici (esterni), tra cui:
- Superficie di attacco ridotta. La rimozione degli indirizzi IP esterni dalle VM rende più difficile per gli utenti malintenzionati raggiungere le VM e sfruttare le potenziali vulnerabilità.
- Maggiore flessibilità. L'introduzione di un livello di astrazione, come un bilanciatore del carico o un servizio NAT, consente una distribuzione dei servizi più affidabile e flessibile rispetto agli indirizzi IP esterni statici.
Questa soluzione illustra tre scenari, descritti nella seguente tabella:
Interattiva | Recupero | Pubblicazione in corso |
---|---|---|
Una connessione SSH viene avviata da un host remoto direttamente a una VM utilizzando IAP per TCP.
Esempio: amministrazione remota tramite SSH o RDP |
Una connessione viene avviata da una VM a un host esterno su internet utilizzando Cloud NAT.
Esempio: aggiornamenti del sistema operativo, API esterne |
Una connessione viene avviata da un host remoto a una VM attraverso un bilanciatore del carico Google Cloud globale.
Esempio: frontend delle applicazioni, WordPress |
Alcuni ambienti potrebbero includere solo uno di questi scenari. Tuttavia, molti ambienti richiedono tutti questi scenari e tutto questo è completamente supportato in Google Cloud.
Le sezioni seguenti descrivono un ambiente multiregionale con un servizio HTTP con bilanciamento del carico supportato da due VM in due regioni. Queste VM utilizzano Cloud NAT per le comunicazioni in uscita. Per l'amministrazione, le VM sono accessibili tramite SSH con tunneling su IAP.
Il seguente diagramma fornisce una panoramica di tutti e tre i casi d'uso e dei componenti pertinenti.
Creazione di istanze VM
Per iniziare il tutorial, creerai un totale di quattro istanze di macchine virtuali (VM), due istanze per regione in due diverse regioni. Devi fornire a tutte le istanze lo stesso tag, che verrà utilizzato in un secondo momento da una regola firewall per consentire al traffico in entrata di raggiungere le tue istanze.
Il seguente diagramma mostra le istanze VM e i gruppi di istanze che crei, distribuiti in due zone.
Lo script di avvio che aggiungi a ogni istanza installa Apache e crea una home page unica per ogni istanza.
La procedura include istruzioni per l'utilizzo sia della console Google Cloud
che dei comandi gcloud
. Il modo più semplice per utilizzare i comandi gcloud
è utilizzare Cloud Shell.
Console
Nella console Google Cloud, vai alla pagina Istanze VM:
Fai clic su Crea istanza.
Imposta Nome su
www-1
.Imposta Zone su us-central1-b.
Fai clic su Gestione, sicurezza, dischi, networking, single-tenancy.
Fai clic su Networking e definisci le seguenti impostazioni:
- Per il traffico HTTP, nella casella Tag di rete, inserisci
http-tag
. - Sotto Interfacce di rete, fai clic su edit.
- In IP esterno, seleziona Nessuno.
- Per il traffico HTTP, nella casella Tag di rete, inserisci
Fai clic su Gestione e imposta lo Script di avvio come segue:
sudo apt-get update sudo apt-get install apache2 -y sudo a2ensite default-ssl sudo a2enmod ssl sudo service apache2 restart echo '<!doctype html><html><body><h1>server 1</h1></body></html>' | sudo tee /var/www/html/index.html
Fai clic su Crea.
Crea
www-2
con le stesse impostazioni, tranne per l'impostazione dello Script di avvio come segue:sudo apt-get update sudo apt-get install apache2 -y sudo a2ensite default-ssl sudo a2enmod ssl sudo service apache2 restart echo '<!doctype html><html><body><h1>server 2<h1></body></html>' | sudo tee /var/www/html/index.html
Crea
www-3
con le stesse impostazioni, tranne l'impostazione Zona sueurope-west1-b
e lo Script di avvio come segue:sudo apt-get update sudo apt-get install apache2 -y sudo a2ensite default-ssl sudo a2enmod ssl sudo service apache2 restart echo '<!doctype html><html><body><h1>server 3</h1></body></html>' | sudo tee /var/www/html/index.html
Crea
www-4
con le stesse impostazioni, tranne l'impostazione Zona sueurope-west1-b
e lo Script di avvio come segue:sudo apt-get update sudo apt-get install apache2 -y sudo a2ensite default-ssl sudo a2enmod ssl sudo service apache2 restart echo '<!doctype html><html><body><h1>server 4</h1></body></html>' | sudo tee /var/www/html/index.html
gcloud
Apri Cloud Shell:
Crea un'istanza denominata
www-1
inus-central1-b
con uno script di avvio di base:gcloud compute instances create www-1 \ --image-family debian-9 \ --image-project debian-cloud \ --zone us-central1-b \ --tags http-tag \ --network-interface=no-address \ --metadata startup-script="#! /bin/bash sudo apt-get update sudo apt-get install apache2 -y sudo service apache2 restart echo '<!doctype html><html><body><h1>www-1</h1></body></html>' | tee /var/www/html/index.html EOF"
Crea un'istanza denominata
www-2
inus-central1-b
:gcloud compute instances create www-2 \ --image-family debian-9 \ --image-project debian-cloud \ --zone us-central1-b \ --tags http-tag \ --network-interface=no-address \ --metadata startup-script="#! /bin/bash sudo apt-get update sudo apt-get install apache2 -y sudo service apache2 restart echo '<!doctype html><html><body><h1>www-2</h1></body></html>' | tee /var/www/html/index.html EOF"
Crea un'istanza denominata
www-3
, questa volta ineurope-west1-b
:gcloud compute instances create www-3 \ --image-family debian-9 \ --image-project debian-cloud \ --zone europe-west1-b \ --tags http-tag \ --network-interface=no-address \ --metadata startup-script="#! /bin/bash sudo apt-get update sudo apt-get install apache2 -y sudo service apache2 restart echo '<!doctype html><html><body><h1>www-3</h1></body></html>' | tee /var/www/html/index.html EOF"
Crea un'istanza denominata
www-4
, anche questa ineurope-west1-b
:gcloud compute instances create www-4 \ --image-family debian-9 \ --image-project debian-cloud \ --zone europe-west1-b \ --tags http-tag \ --network-interface=no-address \ --metadata startup-script="#! /bin/bash sudo apt-get update sudo apt-get install apache2 -y sudo service apache2 restart echo '<!doctype html><html><body><h1>www-4</h1></body></html>' | tee /var/www/html/index.html EOF"
Terraform
Apri Cloud Shell:
Clona il repository da GitHub:
git clone https://github.com/GoogleCloudPlatform/gce-public-connectivity-terraform
Cambia la directory di lavoro nella directory del repository:
cd iap
Installa Terraform.
Sostituisci
[YOUR-ORGANIZATION-NAME]
nel filescripts/set_env_vars.sh
con il nome della tua organizzazione Google Cloud.Imposta le variabili di ambiente:
source scripts/set_env_vars.sh
Applica la configurazione Terraform:
terraform apply
Configurazione dei tunnel IAP per l'interazione con le istanze
Per accedere alle istanze VM, devi connetterti alle istanze utilizzando strumenti come SSH o RDP. Nella configurazione che stai creando in questo tutorial, non puoi connetterti direttamente alle istanze. Tuttavia, puoi utilizzare l'inoltro TCP in IAP, che consente l'accesso remoto per questi pattern interattivi.
Per questo tutorial utilizzerai SSH.
In questa sezione devi eseguire le seguenti operazioni:
- Connettiti a un'istanza Compute Engine usando il tunnel IAP.
- Aggiungi un secondo utente con autorizzazione di tunneling IAP in IAM.
Il seguente diagramma illustra l'architettura creata in questa sezione. Le aree grigie sono discusse in altre parti di questo tutorial.
Limitazioni di IAP
- Larghezza di banda: la funzionalità di inoltro TCP IAP non è concepita per il trasferimento di dati IAP si riserva il diritto di applicare un limite di frequenza agli utenti ritenuti illeciti di questo servizio.
- Durata della connessione: IAP non disconnette le sessioni attive, a meno che non sia richiesta per la manutenzione.
- Protocollo: IAP per TCP non supporta UDP.
Crea regole firewall per consentire il tunneling
Per connetterti alle istanze tramite SSH, devi aprire una porta appropriata sul firewall. Le connessioni IAP provengono da un insieme specifico di indirizzi IP (35.235.240.0/20). Puoi quindi limitare la regola a questo intervallo CIDR.
Console
Nella console Google Cloud, vai alla pagina Criteri firewall:
Fai clic su Crea regola firewall.
Imposta Nome su
allow-ssh-from-iap
.Lascia Rete VPC impostata su
default
.In Target, seleziona Tag di destinazione specificati.
Imposta Tag di destinazione su
http-tag
.Lascia il Filtro di origine impostato su Intervalli IP.
Imposta Intervalli IP di origine su
35.235.240.0/20
.Imposta Protocolli e porte consentiti su
tcp:22
.Fai clic su Crea.
La visualizzazione della nuova regola firewall nella console potrebbe richiedere alcuni istanti.
gcloud
Crea una regola firewall denominata
allow-ssh-from-iap
:gcloud compute firewall-rules create allow-ssh-from-iap \ --source-ranges 35.235.240.0/20 \ --target-tags http-tag \ --allow tcp:22
Terraform
Copia il file Terraform delle regole firewall nella directory attuale:
cp iap/vpc_firewall_rules.tf .
Applica la configurazione Terraform:
terraform apply
Testa il tunneling
In Cloud Shell, connettiti all'istanza
www-1
tramite IAP:gcloud compute ssh www-1 \ --zone us-central1-b \ --tunnel-through-iap
Se la connessione ha esito positivo, hai una sessione SSH in tunnel tramite IAP direttamente alla tua VM privata.
Concedere l'accesso a utenti aggiuntivi
IAP utilizza i ruoli e le autorizzazioni di progetto esistenti quando ti connetti alle istanze VM. Per impostazione predefinita, i proprietari delle istanze sono gli unici utenti che dispongono del ruolo Utente del tunnel con protezione IAP. Se vuoi consentire ad altri utenti di accedere alle tue VM con il tunneling IAP, devi concedere loro questo ruolo.
Nella console Google Cloud, vai a Sicurezza > Identity-Aware Proxy:
Se viene visualizzato un messaggio che indica che è necessario configurare la schermata per il consenso OAuth, puoi ignorarlo perché non è pertinente per IAP per TCP.
Seleziona la scheda Risorse SSH e TCP.
Seleziona le VM che hai creato:
Sul lato destro, fai clic su Aggiungi entità.
Aggiungi gli utenti a cui vuoi concedere le autorizzazioni, seleziona il ruolo Utente del tunnel con protezione IAP e fai clic su Salva.
Riepilogo
Ora puoi connetterti alle tue istanze utilizzando SSH per amministrare le istanze o risolvere i problemi.
Molte applicazioni devono effettuare connessioni in uscita per scaricare patch, connettersi con i partner o scaricare risorse. Nella sezione successiva configurerai Cloud NAT per consentire alle VM di raggiungere queste risorse.
Deployment di Cloud NAT per il recupero
Il servizio Cloud NAT consente alle istanze VM di Google Cloud che non hanno indirizzi IP esterni di connettersi a internet. Cloud NAT implementa la NAT in uscita insieme a una route predefinita per consentire alle istanze di connettersi a internet. Non implementa la NAT in entrata. Gli host al di fuori della tua rete VPC possono rispondere solo alle connessioni stabilite avviate dalle tue istanze. Non possono avviare le proprie connessioni alle istanze utilizzando Cloud NAT. NAT non viene utilizzato per il traffico all'interno di Google Cloud.
Cloud NAT è una risorsa di regione. Puoi configurarla in modo da consentire il traffico da tutti gli intervalli di indirizzi IP principali e secondari delle subnet in una regione oppure in modo che si applichi solo ad alcuni di questi intervalli.
In questa sezione configurerai un gateway Cloud NAT in ogni regione che hai utilizzato in precedenza. Il seguente diagramma illustra l'architettura che crei in questa sezione. Le aree di grigio sono descritte in altre parti di questo tutorial.
crea una configurazione NAT utilizzando il router Cloud
Devi creare l'istanza del router Cloud nella stessa regione delle istanze che devono utilizzare Cloud NAT. Cloud NAT viene utilizzato solo per inserire informazioni NAT nelle VM; non è utilizzato come parte dell'effettivo gateway Cloud NAT.
Questa configurazione consente a tutte le istanze nella regione di utilizzare Cloud NAT per tutti gli intervalli principali e IP alias. Alloca inoltre automaticamente gli indirizzi IP esterni per il gateway NAT. Per ulteriori opzioni, consulta la documentazione di gcloud compute routers.
Console
Vai alla pagina Cloud NAT:
Fai clic su Inizia o Crea gateway NAT.
Imposta Nome gateway su
nat-config
.Imposta Rete VPC su
default
.Imposta Regione su
us-central1
.In Router Cloud, seleziona Crea nuovo router, quindi:
- Imposta Nome su
nat-router-us-central1
. - Fai clic su Crea.
- Imposta Nome su
Fai clic su Crea.
Ripeti la procedura, ma sostituisci questi valori:
- Nome:
nat-router-europe-west1
- Regione:
europe-west1
- Nome:
gcloud
Crea istanze del router Cloud in ogni regione:
gcloud compute routers create nat-router-us-central1 \ --network default \ --region us-central1 gcloud compute routers create nat-router-europe-west1 \ --network default \ --region europe-west1
Configura i router per Cloud NAT:
gcloud compute routers nats create nat-config \ --router-region us-central1 \ --router nat-router-us-central1 \ --nat-all-subnet-ip-ranges \ --auto-allocate-nat-external-ips gcloud compute routers nats create nat-config \ --router-region europe-west1 \ --router nat-router-europe-west1 \ --nat-all-subnet-ip-ranges \ --auto-allocate-nat-external-ips
Terraform
Copia il file di configurazione di Terraform NAT nella directory attuale:
cp nat/vpc_nat_gateways.tf .
Applica la configurazione Terraform:
terraform apply
Testa la configurazione di Cloud NAT
Ora puoi verificare di essere in grado di effettuare richieste in uscita dalle istanze VM a internet.
- Attendi fino a 3 minuti per la propagazione della configurazione NAT alla VM.
In Cloud Shell, connettiti all'istanza utilizzando il tunnel che hai creato:
gcloud compute ssh www-1 --tunnel-through-iap
Dopo aver eseguito l'accesso all'istanza, utilizza il comando
curl
per effettuare una richiesta in uscita:curl example.com
Verrà visualizzato l'output seguente:
<html> <head> <title>Example Domain</title> ... ... ... </head> <body> <div> <h1>Example Domain</h1> <p>This domain is established to be used for illustrative examples in documents. You may use this domain in examples without prior coordination or asking for permission. </p> <p><a href="http://www.iana.org/domains/example">More information...</a></p> </div> </body> </html>
Se il comando ha esito positivo, hai verificato che le VM siano in grado di connettersi a internet utilizzando Cloud NAT.
Riepilogo
Ora le istanze possono effettuare connessioni in uscita per scaricare patch, connettersi ai partner o scaricare risorse.
Nella sezione successiva aggiungerai il bilanciamento del carico al deployment e lo configurerai per consentire ai client remoti di avviare richieste ai tuoi server.
Creazione di un servizio con bilanciamento del carico HTTP per la pubblicazione
L'utilizzo di Cloud Load Balancing per la tua applicazione presenta molti vantaggi. Può fornire un bilanciamento del carico senza interruzioni e scalabile per oltre un milione di query al secondo. Può anche ridurre l'overhead SSL delle VM, instradare le query alla regione migliore per gli utenti in base alla località e alla disponibilità e supportare protocolli moderni come HTTP/2 e QUIC.
Per questo tutorial, potrai utilizzare un'altra funzionalità chiave: il proxy della connessione IP anycast globale. Questa funzionalità fornisce un singolo indirizzo IP pubblico terminato sul perimetro distribuito a livello globale di Google. I client possono quindi connettersi a risorse ospitate su indirizzi IP privati ovunque in Google Cloud. Questa configurazione consente di proteggere le istanze dagli attacchi DDoS e dagli attacchi diretti. Inoltre, abilita funzionalità come Google Cloud Armor per una sicurezza ancora maggiore.
In questa sezione del tutorial imparerai a:
- Reimposta le istanze VM per installare il server web Apache.
- Crea una regola firewall per consentire l'accesso dai bilanciatori del carico.
- Alloca indirizzi IPv4 e IPv6 globali statici per il bilanciatore del carico.
- Crea un gruppo di istanze per le tue istanze.
- Inizia a inviare traffico alle tue istanze.
Il seguente diagramma illustra l'architettura creata in questa sezione. Le aree grigie sono discusse in altre parti di questo tutorial.
Reimposta istanze VM
Quando hai creato le istanze VM in precedenza in questo tutorial, non avevano accesso a internet perché non è stato assegnato alcun indirizzo IP esterno e Cloud NAT non è stato configurato. Pertanto, non è stato possibile completare lo script di avvio che installa Apache.
Il modo più semplice per eseguire nuovamente gli script di avvio è reimpostare queste istanze in modo che il server web Apache possa essere installato e utilizzato nella sezione successiva.
Console
Nella console Google Cloud, vai alla pagina Istanze VM:
Seleziona
www-1
,www-2
,www-3
ewww-4
.Fai clic sul pulsante Reimposta nella parte superiore della pagina.
Se non vedi un pulsante Reimposta, fai clic su Altre azioni
e scegli Reimposta.Conferma il ripristino delle quattro istanze facendo clic su Reimposta nella finestra di dialogo.
gcloud
Reimposta le quattro istanze:
gcloud compute instances reset www-1 \ --zone us-central1-b gcloud compute instances reset www-2 \ --zone us-central1-b gcloud compute instances reset www-3 \ --zone europe-west1-b gcloud compute instances reset www-4 \ --zone europe-west1-b
Apri il firewall
L'attività successiva è la creazione di una regola firewall per consentire il traffico dai bilanciatori del carico alle istanze VM. Questa regola consente il traffico proveniente
dall'intervallo di indirizzi di Google Cloud utilizzato sia dai bilanciatori del carico
che dai controlli di integrità. La regola firewall utilizza il tag http-tag
che hai creato in precedenza; la regola firewall consente al traffico alla porta designata di raggiungere le istanze che contengono il tag.
Console
Nella console Google Cloud, vai alla pagina Criteri firewall:
Fai clic su Crea regola firewall.
Imposta Nome su
allow-lb-and-healthcheck
.Lascia la rete VPC impostata su
default
.In Target, seleziona Tag di destinazione specificati.
Imposta Tag di destinazione su
http-tag
.Lascia il Filtro di origine impostato su Intervalli IP.
Imposta Intervalli IP di origine su
130.211.0.0/22
e35.191.0.0/16
.Imposta Protocolli e porte consentiti su
tcp:80
.Fai clic su Crea.
La visualizzazione della nuova regola firewall nella console potrebbe richiedere alcuni istanti.
gcloud
Crea una regola firewall denominata
allow-lb-and-healthcheck
:gcloud compute firewall-rules create allow-lb-and-healthcheck \ --source-ranges 130.211.0.0/22,35.191.0.0/16 \ --target-tags http-tag \ --allow tcp:80
Terraform
Copia i file di configurazione del bilanciamento del carico di Terraform nella directory corrente:
cp lb/* .
Applica la configurazione Terraform:
terraform apply
Alloca un indirizzo IP esterno per i bilanciatori del carico
Se gestisci traffico verso internet, devi allocare un indirizzo esterno per il bilanciatore del carico. Puoi assegnare un indirizzo IPv4, un indirizzo IPv6 o entrambi. In questa sezione prenoti gli indirizzi IPv4 e IPv6 statici adatti all'aggiunta al DNS.
Non sono previsti costi aggiuntivi per gli indirizzi IP pubblici perché vengono utilizzati con un bilanciatore del carico.
Console
Nella console Google Cloud, vai alla pagina Indirizzi IP esterni:
Fai clic su Prenota indirizzo statico per prenotare un indirizzo IPv4.
Imposta Nome su
lb-ip-cr
.Lascia Tipo impostato su Globale.
Fai clic su Prenota.
Fai di nuovo clic su Prenota indirizzo statico per prenotare un indirizzo IPv6.
Imposta Nome su
lb-ipv6-cr
.Imposta Versione IP su IPv6.
Lascia Tipo impostato su Globale.
Fai clic su Prenota.
gcloud
Crea un indirizzo IP statico denominato
lb-ip-cr
per IPv4:gcloud compute addresses create lb-ip-cr \ --ip-version=IPV4 \ --global
Crea un indirizzo IP statico denominato
lb-ipv6-cr
per IPv6:gcloud compute addresses create lb-ipv6-cr \ --ip-version=IPV6 \ --global
Crea gruppi di istanze e aggiungi istanze
I bilanciatori del carico Google Cloud richiedono che i gruppi di istanze agiscano da backend per il traffico. In questo tutorial, utilizzerai i gruppi di istanze non gestite per semplicità. Tuttavia, puoi anche utilizzare i gruppi di istanze gestite per sfruttare funzionalità quali scalabilità automatica, riparazione automatica, deployment a livello di regione (multizona) e aggiornamento automatico.
In questa sezione creerai un gruppo di istanze per ciascuna delle zone che stai utilizzando.
Console
Nella console Google Cloud, vai alla pagina Gruppi di istanze:
Fai clic su Crea gruppo di istanze.
Sul lato sinistro, fai clic su Nuovo gruppo di istanze non gestite.
Imposta Nome su
us-resources-w
.Imposta Regione su
us-central1
Imposta Zona su
us-central1-b
.Seleziona Rete (impostazione predefinita) e Subnet (predefinita).
In Istanze VM, segui questi passaggi:
- Fai clic su Aggiungi un'istanza e seleziona www-1.
- Fai di nuovo clic su Aggiungi un'istanza e seleziona www-2.
- Fai clic su Crea.
Ripeti questa procedura per creare un secondo gruppo di istanze, ma utilizza i seguenti valori:
- Nome:
europe-resources-w
- Zona:
europe-west1-b
- Istanze:
www-3
ewww-4
- Nome:
Nella pagina Gruppi di istanze, verifica di avere due gruppi di istanze, ciascuno con due istanze.
gcloud
Crea il gruppo di istanze
us-resources-w
:gcloud compute instance-groups unmanaged create us-resources-w \ --zone us-central1-b
Aggiungi le istanze
www-1
ewww-2
:gcloud compute instance-groups unmanaged add-instances us-resources-w \ --instances www-1,www-2 \ --zone us-central1-b
Crea il gruppo di istanze
europe-resources-w
:gcloud compute instance-groups unmanaged create europe-resources-w \ --zone europe-west1-b
Aggiungi le istanze
www-3
ewww-4
:gcloud compute instance-groups unmanaged add-instances europe-resources-w \ --instances www-3,www-4 \ --zone europe-west1-b
configura il servizio di bilanciamento del carico
La funzionalità del bilanciatore del carico riguarda diversi servizi connessi. In questa sezione, configurerai e connetterai i servizi. I servizi che creerai sono i seguenti:
- Porte denominate, utilizzate dal bilanciatore del carico per indirizzare il traffico ai gruppi di istanze.
- Un controllo di integrità, che esegue il polling delle istanze per verificare se sono in stato integro. Il bilanciatore del carico invia traffico solo alle istanze integre.
- Servizi di backend, che monitorano l'utilizzo e l'integrità delle istanze. I servizi di backend sanno se le istanze nel gruppo possono ricevere traffico. Se le istanze non possono ricevere traffico, il bilanciatore del carico reindirizza il traffico, a condizione che le istanze in un'altra posizione abbiano capacità sufficiente. Un backend definisce la capacità dei gruppi di istanze che contiene (utilizzo massimo della CPU o numero massimo di query al secondo).
- Una mappa URL, che analizza l'URL della richiesta e può inoltrare richieste a servizi di backend specifici in base all'host e al percorso dell'URL della richiesta. In questo tutorial, poiché non utilizzi l'inoltro basato sui contenuti, la mappa URL contiene solo il mapping predefinito.
- Un proxy di destinazione, che riceve la richiesta dall'utente e la inoltra alla mappa URL.
- Due regole di forwarding globali, una per IPv4 e una per IPv6, che contengono le risorse degli indirizzi IP esterni globali. Le regole di forwarding globali inoltrano la richiesta in entrata al proxy di destinazione.
crea il bilanciatore del carico
In questa sezione creerai il bilanciatore del carico e configurerai un servizio di backend predefinito per gestire il traffico. Creerai anche un controllo di integrità.
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 delle applicazioni (HTTP/HTTPS) e fai clic su Avanti.
- Per Pubblico o interno, seleziona Pubblico (esterno) e fai clic su Avanti.
- Per Deployment globale o in una regione singola, seleziona Ideale per carichi di lavoro globali e fai clic su Avanti.
- Per Generazione del bilanciatore del carico, seleziona Bilanciatore del carico delle applicazioni esterno globale e fai clic su Avanti.
- Fai clic su Configura.
Configurazione di base
- Imposta Nome bilanciatore del carico su
web-map
.
Configura il bilanciatore del carico
- Nel riquadro sinistro della pagina Crea bilanciatore del carico delle applicazioni esterno globale, fai clic su Configurazione backend.
- Nell'elenco Crea o seleziona servizi e bucket di backend, seleziona Servizi di backend, quindi Crea un servizio di backend. Viene visualizzata la finestra di dialogo Crea servizio di backend.
- Imposta Nome su
web-map-backend-service
. - Imposta il Protocollo. Per il protocollo HTTP, lascia i valori impostati sui valori predefiniti.
- In Tipo di backend, seleziona Gruppi di istanze.
- In Backend, imposta Gruppo di istanze su
us-resources-w
. - Fai clic su Aggiungi backend.
- Seleziona il gruppo di istanze europe-resources-w, quindi:
- Per il traffico HTTP tra il bilanciatore del carico e le istanze,
assicurati che l'opzione Numeri di porta sia impostata su
80
. - Lascia invariati i valori predefiniti negli altri campi.
- Per il traffico HTTP tra il bilanciatore del carico e le istanze,
assicurati che l'opzione Numeri di porta sia impostata su
- Fai clic su Fine.
- In Controllo di integrità, seleziona Crea un controllo di integrità o Crea un altro controllo di integrità.
- Imposta i seguenti parametri per il controllo di integrità:
- Nome:
http-basic-check
- Protocollo:
HTTP
- Porta:
80
- Nome:
- Fai clic su Crea.
gcloud
Per ogni gruppo di istanze, definisci un servizio HTTP e mappa un nome di porta alla porta pertinente:
gcloud compute instance-groups unmanaged set-named-ports us-resources-w \ --named-ports http:80 \ --zone us-central1-b gcloud compute instance-groups unmanaged set-named-ports europe-resources-w \ --named-ports http:80 \ --zone europe-west1-b
Crea un controllo di integrità:
gcloud compute health-checks create http http-basic-check \ --port 80
Crea un servizio di backend:
gcloud compute backend-services create web-map-backend-service \ --protocol HTTP \ --health-checks http-basic-check \ --global
Hai impostato il flag
--protocol
suHTTP
perché stai utilizzando HTTP per accedere alle istanze. Per il controllo di integrità, utilizzerai il controllo di integritàhttp-basic-check
creato in precedenza.Aggiungi i tuoi gruppi di istanze come backend ai servizi di backend:
gcloud compute backend-services add-backend web-map-backend-service \ --balancing-mode UTILIZATION \ --max-utilization 0.8 \ --capacity-scaler 1 \ --instance-group us-resources-w \ --instance-group-zone us-central1-b \ --global gcloud compute backend-services add-backend web-map-backend-service \ --balancing-mode UTILIZATION \ --max-utilization 0.8 \ --capacity-scaler 1 \ --instance-group europe-resources-w \ --instance-group-zone europe-west1-b \ --global
Imposta regole per host e percorso
Console
Nel riquadro sinistro della pagina Crea bilanciatore del carico delle applicazioni esterno globale, fai clic su Regole di host e percorso.
Per questo tutorial non devi configurare alcuna regola di host o percorso, perché tutto il traffico verrà assegnato alla regola predefinita. Pertanto, puoi accettare i valori predefiniti precompilati.
gcloud
Crea una mappa URL predefinita che indirizza tutte le richieste in entrata a tutte le tue istanze:
gcloud compute url-maps create web-map \ --default-service web-map-backend-service
Crea un proxy HTTP di destinazione per instradare le richieste alla mappa di URL:
gcloud compute target-http-proxies create http-lb-proxy \ --url-map web-map
Configura il frontend e finalizza la configurazione
Console
- Nel riquadro sinistro della pagina Crea bilanciatore del carico delle applicazioni esterno globale, fai clic su Configurazione frontend.
- Imposta Nome su
http-cr-rule
. - Imposta Protocollo su
HTTP
. - Imposta Versione IP su
IPv4
. - Nell'elenco Indirizzi IP, seleziona
lb-ip-cr
, l'indirizzo creato in precedenza. - Verifica che il campo Porta sia impostato su
80
. - Fai clic su Fine.
- Fai clic su Aggiungi IP e porta frontend.
- Imposta Nome su
http-cr-ipv6-rule
. - In Protocollo, seleziona HTTP.
- Imposta Versione IP su
IPv6
. - Nell'elenco Indirizzi IP, seleziona
lb-ipv6-cr
, l'altro indirizzo che hai creato in precedenza. - Verifica che il campo Porta sia impostato su
80
. - Fai clic su Crea.
- Fai clic su Fine.
- Nel riquadro sinistro della pagina Crea bilanciatore del carico delle applicazioni esterno globale, fai clic su Rivedi e finalizza.
- Confronta le tue impostazioni con ciò che intendevi creare.
Se le impostazioni sono corrette, fai clic su Crea.
Tornerai alle pagine Bilanciamento del carico. Dopo aver creato il bilanciatore del carico, un segno di spunta verde accanto indica che è in esecuzione.
gcloud
Recupera gli indirizzi IP statici che hai creato per il bilanciatore del carico. Prendine nota, perché li utilizzerai nel passaggio successivo.
gcloud compute addresses list
Crea due regole di forwarding globali per instradare le richieste in entrata al proxy, una per IPv4 e una per IPv6. Sostituisci lb_ip_address nel comando con l'indirizzo IPv4 statico che hai creato e sostituisci lb_ipv6_address con l'indirizzo IPv6 che hai creato.
gcloud compute forwarding-rules create http-cr-rule \ --address lb_ip_address \ --global \ --target-http-proxy http-lb-proxy \ --ports 80 gcloud compute forwarding-rules create http-cr-ipv6-rule \ --address lb_ipv6_address \ --global \ --target-http-proxy http-lb-proxy \ --ports 80
Dopo aver creato le regole di forwarding globali, la propagazione della configurazione può richiedere diversi minuti.
Testa la configurazione
In questa sezione, invierai una richiesta HTTP all'istanza per verificare che la configurazione di bilanciamento del carico funzioni.
Console
Nella console Google Cloud, vai alla pagina Bilanciamento del carico:
Seleziona il bilanciatore del carico denominato
web-map
per visualizzare i dettagli del bilanciatore del carico che hai appena creato.Nella sezione Backend della pagina, verifica che le istanze siano in stato integro visualizzando la colonna Integro.
Possono essere necessari alcuni minuti prima che la visualizzazione indichi che le istanze sono in stato integro.
Quando il display indica che le istanze sono in stato integro, copia il valore IP:Port dalla sezione Frontend e incollalo nel browser.
Nel browser viene visualizzata la pagina dei contenuti predefiniti.
gcloud
Ottieni gli indirizzi IP delle regole di forwarding globali e annotali per il passaggio successivo:
gcloud compute forwarding-rules list
Utilizza il comando
curl
per testare la risposta di vari URL dei tuoi servizi. Prova sia IPv4 sia IPv6. Per IPv6, devi racchiudere l'indirizzo[]
, ad esempiohttp://[2001:DB8::]/
.curl http://ipv4-address curl -g -6 "http://[ipv6-address]/"
Riepilogo
Ora le tue VM possono gestire il traffico verso internet e recuperare i dati da internet. Puoi anche accedervi tramite SSH per eseguire attività di amministrazione. Tutte queste funzionalità si ottengono utilizzando solo indirizzi IP privati, che consente di proteggerli dagli attacchi diretti, evitando di esporre gli indirizzi IP raggiungibili da internet.
Esegui la pulizia
Per evitare che al tuo Account Google Cloud vengano addebitati costi relativi alle risorse utilizzate in questo tutorial, elimina il progetto che contiene le risorse oppure mantieni il progetto ed elimina le singole risorse.
Elimina il progetto
- Nella console Google Cloud, vai alla pagina Gestisci risorse.
- Nell'elenco dei progetti, seleziona il progetto che vuoi eliminare, quindi fai clic su Elimina.
- Nella finestra di dialogo, digita l'ID del progetto e fai clic su Chiudi per eliminare il progetto.
Passaggi successivi
- La pagina Creazione di Cloud Load Balancing mostra come creare bilanciatori del carico HTTPS e HTTP2.
- La configurazione di un cluster privato mostra come configurare un cluster Google Kubernetes Engine privato.
- Utilizza IAP per l'inoltro TCP descrive altri utilizzi di IAP per TCP, come RDP o l'esecuzione di comandi remoti.
- L'utilizzo di Cloud NAT fornisce esempi per Google Kubernetes Engine e descrive come modificare i dettagli dei parametri.
- Esplora le architetture di riferimento, i diagrammi e le best practice su Google Cloud. Visita il nostro Cloud Architecture Center.