Creare la connessione a Internet per le VM private

Last reviewed 2024-05-10 UTC

Questo documento descrive le opzioni per connettersi da e a internet utilizzando le risorse Compute Engine che hanno indirizzi IP privati. Questa funzionalità è utile per gli sviluppatori che creano servizi e per gli amministratori di rete degli ambienti. Google Cloud Google Cloud

Questo tutorial presuppone che tu abbia dimestichezza con il deployment di VPC, con Compute Engine e con il networking 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 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. Stimiamo che il costo totale per eseguire questo tutorial sia inferiore a 5$al giorno.

Prima di iniziare

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  5. Make sure that billing is enabled for your Google Cloud project.

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 attaccanti raggiungere le VM ed sfruttare potenziali vulnerabilità.
  • Maggiore flessibilità. L'introduzione di un livello di astrazione, come un bilanciatore del carico o un servizio NAT, consente di fornire servizi più affidabili e flessibili rispetto agli indirizzi IP esterni statici.

Questa soluzione illustra tre scenari, come descritto nella tabella seguente:

Interattivo Recupero Servizio
Viene avviata una connessione SSH da un host remoto direttamente a una VM utilizzando IAP per TCP.

Esempio: amministrazione remota tramite SSH o RDP

Una VM avvia una connessione a un host esterno su internet utilizzando Cloud NAT.

Esempio: aggiornamenti del sistema operativo, API esterne

Un host remoto avvia una connessione a una VM tramite un bilanciatore del carico Google Cloud globale.

Esempio: frontend delle applicazioni, WordPress

In alcuni ambienti potrebbe essere coinvolto solo uno di questi scenari. Tuttavia, molti ambienti richiedono tutti questi scenari, che sono completamente supportati inGoogle Cloud.

Le seguenti sezioni descrivono un ambiente multi-regione 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 tunnel SSH su IAP.

Il seguente diagramma fornisce una panoramica di tutti e tre i casi d'uso e dei componenti pertinenti.

Architettura della soluzione che mostra il flusso dal client tramite il bilanciatore del carico alle istanze VM, Cloud NAT per l'accesso dalle istanze a internet e IAP per consentire l'accesso SSH diretto da un client alle istanze.

Creazione di istanze VM

Per iniziare il tutorial, crea un totale di quattro istanze di macchine virtuali (VM), due istanze per regione in due regioni diverse. Assegni 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 istanze.

Il seguente diagramma mostra le istanze VM e i gruppi di istanze che crei, distribuiti in due zone.

Architettura della soluzione che mette in evidenza le quattro istanze VM in due zone.

Lo script di avvio che aggiungi a ogni istanza installa Apache e crea una home page univoca per ogni istanza.

La procedura include istruzioni per l'utilizzo sia della console Google Cloud sia dei comandi gcloud. Il modo più semplice per utilizzare i comandi gcloud è utilizzare Cloud Shell.

Console

  1. Nella console Google Cloud, vai alla pagina Istanze VM:

    VAI ALLA PAGINA ISTANZE VM

  2. Fai clic su Crea istanza.

  3. Imposta Nome su www-1.

  4. Imposta Zona su us-central1-b.

  5. Fai clic su Gestione, sicurezza, dischi, networking, single tenancy.

  6. Fai clic su Networking e apporta le seguenti impostazioni:

    • Per il traffico HTTP, inserisci http-tag nella casella Tag di rete.
    • In Interfacce di rete, fai clic su .
    • In IP esterno, seleziona Nessuno.
  7. Fai clic su Gestione e imposta Script di avvio su quanto 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
    
  8. Fai clic su Crea.

  9. Crea www-2 con le stesse impostazioni, tranne per il fatto che Script di avvio deve essere impostato su quanto 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
    
  10. Crea www-3 con le stesse impostazioni, ad eccezione di Zona impostata su europe-west1-b e Script di avvio impostato su quanto 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
    
  11. Crea www-4 con le stesse impostazioni, ad eccezione di Zona impostata su europe-west1-b e Script di avvio impostato su quanto 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

  1. Apri Cloud Shell:

    Apri Cloud Shell

  2. Crea un'istanza denominata www-1 in us-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"
    
  3. Crea un'istanza denominata www-2 in us-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"
    
  4. Crea un'istanza denominata www-3, questa volta in europe-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"
    
  5. Crea un'istanza denominata www-4, anche questa in europe-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

  1. Apri Cloud Shell:

    Apri Cloud Shell

  2. Clona il repository da GitHub:

    git clone https://github.com/GoogleCloudPlatform/gce-public-connectivity-terraform

  3. Cambia la directory di lavoro impostandola su quella del repository:

    cd iap

  4. Installa Terraform.

  5. Sostituisci [YOUR-ORGANIZATION-NAME] nel file scripts/set_env_vars.sh con il nome della tua Google Cloud organizzazione.

  6. Imposta le variabili di ambiente:

    source scripts/set_env_vars.sh

  7. Applica la configurazione Terraform:

    terraform apply

Configurazione dei tunnel IAP per interagire con le istanze

Per accedere alle istanze VM, ti connetti alle istanze utilizzando strumenti come SSH o RDP. Nella configurazione che stai creando in questo tutorial, non puoi collegarti direttamente alle istanze. Tuttavia, puoi utilizzare l'inoltro TCP in IAP, che consente l'accesso remoto per questi pattern interattivi.

Per questo tutorial, utilizzi SSH.

In questa sezione:

  1. Connettiti a un'istanza Compute Engine utilizzando il tunnel IAP.
  2. Aggiungi un secondo utente con autorizzazione di tunneling IAP in IAM.

Il seguente diagramma illustra l'architettura che crei in questa sezione. Le aree grigie sono discusse in altre parti di questo tutorial.

Architettura della soluzione che mostra l&#39;IAP che fornisce l&#39;accesso per l&#39;accesso SSH tra un client e le istanze.

Limitazioni degli acquisti in-app

  • larghezza di banda: la funzionalità di inoltro TCP di IAP non è pensata per il trasferimento collettivo di dati. IAP si riserva il diritto di limitare la frequenza degli utenti che sono ritenuti in violazione di questo servizio.
  • Durata della connessione: l'IAP non disconnette le sessioni attive se non richiesto 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 nel firewall. Le connessioni IAP provengono da un insieme specifico di indirizzi IP (35.235.240.0/20). Pertanto, puoi limitare la regola a questo intervallo CIDR.

Console

  1. Nella console Google Cloud, vai alla pagina Policy firewall:

    VAI ALLA PAGINA DEI CRITERI DEL FIREWALL

  2. Fai clic su Crea regola firewall.

  3. Imposta Nome su allow-ssh-from-iap.

  4. Lascia Rete VPC su default.

  5. In Target, seleziona Tag di destinazione specificati.

  6. Imposta Tag target su http-tag.

  7. Lascia Filtro di origine impostato su Intervalli IP.

  8. Imposta Intervalli IP di origine su 35.235.240.0/20.

  9. Imposta Protocolli e porte consentiti su tcp:22.

  10. Fai clic su Crea.

    Potrebbe essere necessario un momento prima che la nuova regola firewall venga visualizzata nella console.

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

  1. Copia il file Terraform delle regole del firewall nella directory corrente:

    cp iap/vpc_firewall_rules.tf .

  2. Applica la configurazione Terraform:

    terraform apply

Testare il tunneling

  • In Cloud Shell, connettiti all'istanza www-1 utilizzando IAP:

    gcloud compute ssh www-1 \
        --zone us-central1-b \
        --tunnel-through-iap
    

Se la connessione va a buon fine, hai una sessione SSH in tunnel tramite IAP direttamente alla tua VM privata.

Concedere l'accesso ad altri utenti

IAP utilizza i ruoli e le autorizzazioni di un tuo progetto esistente quando ti connetti alle istanze VM. Per impostazione predefinita, i proprietari delle istanze sono gli unici utenti che dispongono del ruolo IAP Secured Tunnel User. Se vuoi consentire ad altri utenti di accedere alle tue VM con il tunneling IAP, devi concedere loro questo ruolo.

  1. Nella console Google Cloud, vai a Sicurezza > Identity-Aware Proxy:

    Opzione IAP nella pagina Sicurezza della console Google Cloud.

    Se viene visualizzato un messaggio che ti informa che devi configurare la schermata del consenso OAuth, ignoralo. Non è pertinente per l'IAP per TCP.

  2. Seleziona la scheda Risorse SSH e TCP.

  3. Seleziona le VM che hai creato:

    Console che mostra tutte e quattro le istanze selezionate.

  4. A destra, fai clic su Aggiungi entità.

  5. 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 tramite SSH per amministrarle 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.

Eseguire il deployment di Cloud NAT per il recupero

Il servizio Cloud NAT consente alle Google Cloud istanze VM che non hanno indirizzi IP esterni di connettersi a internet. Cloud NAT implementa il NAT in uscita in combinazione con una route predefinita per consentire alle istanze di raggiungere internet. Non implementa la mappatura NAT in entrata. Gli host esterni alla rete VPC possono rispondere solo alle connessioni stabilite avviate dalle tue istanze; non possono avviare le proprie connessioni alle tue istanze utilizzando Cloud NAT. La mappatura NAT non viene utilizzata per il traffico all'interno Google Cloud.

Cloud NAT è una risorsa di regione. Puoi configurarla per consentire il traffico da tutti gli intervalli di indirizzi IP primari e secondari delle subnet in una regione oppure per l'applicazione solo ad alcuni di questi intervalli.

In questa sezione, configuri 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 grigie sono discusse in altre parti di questo tutorial.

Architettura della soluzione che mostra le istanze Cloud NAT tra le istanze e internet.

Creare una configurazione NAT utilizzando il router Cloud

Devi creare l'istanza Cloud Router nella stessa regione delle istanze che devono utilizzare Cloud NAT. Cloud NAT viene utilizzato solo per inserire le informazioni NAT nelle VM e non fa parte del gateway Cloud NAT effettivo.

Questa configurazione consente a tutte le istanze della regione di utilizzare Cloud NAT per tutti gli intervalli di IP principali e di alias. Inoltre, alloca automaticamente gli indirizzi IP esterni per il gateway NAT. Per altre opzioni, consulta la documentazione di gcloud compute routers.

Console

  1. Vai alla pagina Cloud NAT:

    VAI ALLA PAGINA CLOUD NAT

  2. Fai clic su Inizia o Crea gateway NAT.

  3. Imposta Nome gateway su nat-config.

  4. Imposta Rete VPC su default.

  5. Imposta Regione su us-central1.

  6. In Router Cloud, seleziona Crea nuovo router e poi:

    • Imposta Nome su nat-router-us-central1.
    • Fai clic su Crea.
  7. Fai clic su Crea.

  8. Ripeti la procedura, ma sostituisci questi valori:

    • Nome: nat-router-europe-west1
    • Regione: europe-west1

gcloud

  1. Crea istanze di 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
    
  2. 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

  1. Copia il file di configurazione NAT di Terraform nella directory corrente:

    cp nat/vpc_nat_gateways.tf .

  2. Applica la configurazione Terraform:

    terraform apply

Testa la configurazione di Cloud NAT

Ora puoi verificare di essere in grado di inviare richieste in uscita dalle tue istanze VM a internet.

  1. Attendi fino a 3 minuti affinché la configurazione NAT venga propagata alla VM.
  2. In Cloud Shell, connettiti all'istanza utilizzando il tunnel che hai creato:

    gcloud compute ssh www-1 --tunnel-through-iap
    
  3. Dopo aver eseguito l'accesso all'istanza, utilizza il comando curl per effettuare una richiesta in uscita:

    curl example.com
    

    Viene visualizzato il seguente output:

    <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 va a buon fine, significa che le VM possono connettersi a internet utilizzando Cloud NAT.

Riepilogo

Ora le istanze possono effettuare connessioni in uscita per scaricare patch, collegarsi ai partner o scaricare risorse.

Nella sezione successiva, aggiungi il bilanciamento del carico al tuo deployment e configuralo 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 offre molti vantaggi. Può fornire un bilanciamento del carico scalabile e senza interruzioni per oltre un milione di query al secondo. Inoltre, può scaricare il carico aggiuntivo di SSL dalle VM, indirizzare le query alla regione migliore per gli utenti in base alla posizione e alla disponibilità e supportare protocolli moderni come HTTP/2 e QUIC.

Per questo tutorial, puoi sfruttare un'altra funzionalità chiave: il proxy delle connessioni IP anycast globale. Questa funzionalità fornisce un unico indirizzo IP pubblico terminato sull'infrastruttura di Google distribuita a livello globale. I client possono quindi connettersi alle risorse ospitate su indirizzi IP privati ovunque in Google Cloud. Questa configurazione contribuisce a proteggere le istanze da attacchi DDoS e diretti. Inoltre, abilita funzionalità come Google Cloud Armor per una maggiore sicurezza.

In questa sezione del tutorial, esegui le seguenti operazioni:

  1. Reimposta le istanze VM per installare il server web Apache.
  2. Crea una regola firewall per consentire l'accesso dai bilanciatori del carico.
  3. Alloca indirizzi IPv4 e IPv6 globali statici per il bilanciatore del carico.
  4. Crea un gruppo di istanze per le tue istanze.
  5. Inizia a inviare traffico alle istanze.

Il seguente diagramma illustra l'architettura che crei in questa sezione. Le aree grigie sono discusse in altre parti di questo tutorial.

Architettura che mette in evidenza 4 istanze in 2 gruppi di istanze.

Reimposta le istanze VM

Quando hai creato le istanze VM all'inizio di questo tutorial, non avevano accesso a internet perché non è stato assegnato alcun indirizzo IP esterno e Cloud NAT non è stato configurato. Di conseguenza, lo script di avvio che installa Apache non è stato completato correttamente.

Il modo più semplice per eseguire nuovamente gli script di avvio è reimpostare le istanze in modo che il server web Apache possa essere installato e utilizzato nella sezione successiva.

Console

  1. Nella console Google Cloud, vai alla pagina Istanze VM:

    Vai a Istanze VM

  2. Seleziona www-1, www-2, www-3 e www-4.

  3. Fai clic sul pulsante Reimposta nella parte superiore della pagina.

    Se non vedi il pulsante Reimposta, fai clic su Altre azioni e scegli Reimposta.

  4. Conferma il ripristino delle quattro istanze facendo clic su Ripristina nella finestra di dialogo.

gcloud

  1. 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 consiste nel creare una regola firewall per consentire il traffico dai bilanciatori di carico alle istanze VM. Questa regola consente il traffico dall'intervallo di indirizziGoogle Cloud utilizzato sia dai bilanciatori del carico sia dai controlli di integrità. La regola firewall utilizza il tag http-tag che hai creato in precedenza. La regola firewall consente al traffico diretto alla porta designata di raggiungere le istanze che hanno il tag.

Console

  1. Nella console Google Cloud, vai alla pagina Policy firewall:

    VAI ALLA PAGINA DEI CRITERI DEL FIREWALL

  2. Fai clic su Crea regola firewall.

  3. Imposta Nome su allow-lb-and-healthcheck.

  4. Lascia la rete VPC su default.

  5. In Target, seleziona Tag di destinazione specificati.

  6. Imposta Tag target su http-tag.

  7. Lascia Filtro di origine impostato su Intervalli IP.

  8. Imposta Intervalli IP di origine su 130.211.0.0/22 e 35.191.0.0/16.

  9. Imposta Protocolli e porte consentiti su tcp:80.

  10. Fai clic su Crea.

    Potrebbe essere necessario un momento prima che la nuova regola firewall venga visualizzata nella console.

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

  1. Copia i file di configurazione del bilanciamento del carico di Terraform nella directory corrente:

    cp lb/* .

  2. Applica la configurazione Terraform:

    terraform apply

Alloca un indirizzo IP esterno per i bilanciatori del carico

Se servi traffico a internet, devi allocare un indirizzo esterno per il bilanciatore del carico. Puoi allocare un indirizzo IPv4, un indirizzo IPv6 o entrambi. In questa sezione, prenoti indirizzi IPv4 e IPv6 statici adatti per l'aggiunta al DNS.

Non sono previsti costi aggiuntivi per gli indirizzi IP pubblici, poiché vengono utilizzati con un bilanciatore del carico.

Console

  1. Nella console Google Cloud, vai alla pagina Indirizzi IP esterni:

    VAI ALLA PAGINA INDIRIZZI IP ESTERNI

  2. Fai clic su Prenota indirizzo statico per prenotare un indirizzo IPv4.

  3. Imposta Nome su lb-ip-cr.

  4. Lascia Tipo impostato su Globale.

  5. Fai clic su Prenota.

  6. Fai di nuovo clic su Prenota indirizzo statico per prenotare un indirizzo IPv6.

  7. Imposta Nome su lb-ipv6-cr.

  8. Imposta Versione IP su IPv6.

  9. Lascia Tipo impostato su Globale.

  10. Fai clic su Prenota.

gcloud

  1. Crea un indirizzo IP statico denominato lb-ip-cr per IPv4:

    gcloud compute addresses create lb-ip-cr \
        --ip-version=IPV4 \
        --global
    
  2. 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

IGoogle Cloud bilanciatori del carico richiedono gruppi di istanze per fungere da backend per il traffico. Per semplicità, in questo tutorial utilizzerai gruppi di istanze non gestite. Tuttavia, puoi anche utilizzare i gruppi di istanze gestite per usufruire di funzionalità come la scalabilità automatica, la riparazione automatica, il deployment regionale (multi-zone) e l'aggiornamento automatico.

In questa sezione, crei un gruppo di istanze per ciascuna delle zone in uso.

Console

  1. Nella console Google Cloud, vai alla pagina Gruppi di istanze:

    VAI ALLA PAGINA GRUPPI DI ISTANZE

  2. Fai clic su Crea gruppo di istanze.

  3. A sinistra, fai clic su Nuovo gruppo di istanze non gestite.

  4. Imposta Nome su us-resources-w.

  5. Imposta Regione su us-central1

  6. Imposta Zona su us-central1-b.

  7. Seleziona Rete (valore predefinito) e Subnet (valore predefinito).

  8. In Istanze VM, procedi nel seguente modo:

    • 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.
  9. 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 e www-4
  10. Nella pagina Gruppi di istanze, verifica di avere due gruppi di istanze, ciascuno con due istanze.

gcloud

  1. Crea il gruppo di istanze us-resources-w:

    gcloud compute instance-groups unmanaged create us-resources-w \
        --zone us-central1-b
    
  2. Aggiungi le istanze www-1 e www-2:

    gcloud compute instance-groups unmanaged add-instances us-resources-w \
        --instances www-1,www-2 \
        --zone us-central1-b
    
  3. Crea il gruppo di istanze europe-resources-w:

    gcloud compute instance-groups unmanaged create europe-resources-w \
        --zone europe-west1-b
    
  4. Aggiungi le istanze www-3 e www-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 coinvolge diversi servizi collegati. In questa sezione, configuri e colleghi i servizi. I servizi che creerai sono i seguenti:

  • Porte denominate, che il bilanciatore del carico utilizza 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 il 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 di istanze possono ricevere traffico. Se le istanze non possono ricevere traffico, il bilanciatore del carico lo reindirizza, a condizione che le istanze in altre posizioni dispongano di capacità sufficiente. Un backend definisce la capacità dei gruppi di istanze che contiene (utilizzo massimo della CPU o query massime al secondo).
  • Una mappa URL, che analizza l'URL della richiesta e può inoltrare le 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 in base ai contenuti, la mappa degli URL contiene solo la mappatura predefinita.
  • Un proxy di destinazione, che riceve la richiesta dall'utente e la inoltra alla mappa URL.
  • Due regole di inoltro globali, una per IPv4 e una per IPv6, che contengono le risorse dell'indirizzo IP esterno globale. Le regole di forwarding globale inoltrano la richiesta in arrivo al proxy di destinazione.

Crea il bilanciatore del carico

In questa sezione crei il bilanciatore del carico e configuri un servizio di backend predefinito per gestire il traffico. Devi anche creare un controllo di integrità.

Console

Avvia la configurazione

  1. Nella console Google Cloud, vai alla pagina Bilanciamento del carico.

    Vai a Bilanciamento del carico

  2. Fai clic su Crea bilanciatore del carico.
  3. In Tipo di bilanciatore del carico, seleziona Bilanciatore del carico delle applicazioni (HTTP/HTTPS) e fai clic su Avanti.
  4. In Pubblico o interno, seleziona Pubblico (esterno) e fai clic su Avanti.
  5. In Deployment globale o in una regione singola, seleziona Ideale per carichi di lavoro globali e fai clic su Avanti.
  6. In Generazione del bilanciatore del carico, seleziona Bilanciatore del carico delle applicazioni esterno globale e fai clic su Avanti.
  7. Fai clic su Configura.

Configurazione di base

  1. Imposta Nome bilanciatore del carico su web-map.

Configura il bilanciatore del carico

  1. Nel riquadro sinistro della pagina Crea bilanciatore del carico delle applicazioni esterno globale, fai clic su Configurazione del backend.
  2. Nell'elenco Crea o seleziona servizi di backend e bucket di backend, seleziona Servizi di backend e poi Crea un servizio di backend. Viene visualizzata la finestra di dialogo Crea servizio di backend.
  3. Imposta Nome su web-map-backend-service.
  4. Imposta il Protocollo. Per il protocollo HTTP, lascia i valori impostati su quelli predefiniti.
  5. In Tipo di backend, seleziona Gruppi di istanze.
  6. In Backend, imposta Gruppo di istanze su us-resources-w.
  7. Fai clic su Aggiungi backend.
  8. Seleziona il gruppo di istanze europe-resources-w e poi svolgi i seguenti passaggi:
    • Per il traffico HTTP tra il bilanciatore del carico e le istanze, assicurati che Numeri di porta sia impostato su 80.
    • Lascia invariati i valori predefiniti per gli altri campi.
  9. Fai clic su Fine.
  10. In Controllo di integrità, seleziona Crea un controllo di integrità o Crea un altro controllo di integrità.
  11. Imposta i seguenti parametri di controllo di integrità:
    • Nome: http-basic-check
    • Protocollo: HTTP
    • Porta: 80
  12. Fai clic su Crea.

gcloud

  1. 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
    
  2. Crea un controllo di integrità:

    gcloud compute health-checks create http http-basic-check \
        --port 80
    
  3. Crea un servizio di backend:

    gcloud compute backend-services create web-map-backend-service \
        --protocol HTTP \
        --health-checks http-basic-check \
        --global
    

    Imposti il flag --protocol su HTTP perché utilizzi HTTP per accedere alle istanze. Per il controllo di integrità, utilizza il controllo di integrità http-basic-check che hai creato in precedenza.

  4. Aggiungi i 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
    

Impostare le regole host e percorso

Console

  • Nel riquadro a sinistra della pagina Crea un bilanciatore del carico delle applicazioni esterno globale, fai clic su Regole host e percorso.

    Per questo tutorial non devi configurare regole host o percorso, poiché tutto il traffico verrà indirizzato alla regola predefinita. Pertanto, puoi accettare i valori predefiniti precompilati.

gcloud

  1. Crea una mappa URL predefinita che indirizzi tutte le richieste in arrivo a tutte le tue istanze:

    gcloud compute url-maps create web-map \
        --default-service web-map-backend-service
    
  2. Crea un proxy HTTP di destinazione per instradare le richieste alla mappa URL:

    gcloud compute target-http-proxies create http-lb-proxy \
        --url-map web-map
    

Configura il frontend e completa la configurazione

Console

  1. Nel riquadro a sinistra della pagina Crea bilanciatore del carico delle applicazioni esterno globale, fai clic su Configurazione frontend.
  2. Imposta Nome su http-cr-rule.
  3. Imposta Protocollo su HTTP.
  4. Imposta Versione IP su IPv4.
  5. Nell'elenco Indirizzo IP, seleziona lb-ip-cr, l'indirizzo che hai creato in precedenza.
  6. Verifica che Porta sia impostata su 80.
  7. Fai clic su Fine.
  8. Fai clic su Aggiungi IP e porta frontend.
  9. Imposta Nome su http-cr-ipv6-rule.
  10. In Protocollo, seleziona HTTP.
  11. Imposta Versione IP su IPv6.
  12. Nell'elenco Indirizzo IP, seleziona lb-ipv6-cr, l'altro indirizzo che hai creato in precedenza.
  13. Verifica che Porta sia impostata su 80.
  14. Fai clic su Crea.
  15. Fai clic su Fine.
  16. Nel riquadro a sinistra della pagina Crea bilanciatore del carico delle applicazioni esterno globale, fai clic su Esamina e completa.
  17. Confronta le impostazioni con ciò che intendevi creare.
  18. Se le impostazioni sono corrette, fai clic su Crea.

    Tornerai alle pagine di bilanciamento del carico. Una volta creato il bilanciatore del carico, accanto viene visualizzato un segno di spunta verde per indicare che è in esecuzione.

gcloud

  1. Recupera gli indirizzi IP statici che hai creato per il bilanciatore del carico. Prendi nota di questi valori, perché li utilizzerai nel passaggio successivo.

    gcloud compute addresses list
    
  2. Crea due regole di inoltro globale 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 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 inoltro globale, possono trascorrere alcuni minuti prima che la configurazione venga propagata.

Testa la configurazione

In questa sezione invii una richiesta HTTP all'istanza per verificare che la configurazione del bilanciamento del carico funzioni.

Console

  1. Nella console Google Cloud, vai alla pagina Bilanciamento del carico:

    VAI ALLA PAGINA BILANCAMENTO DEL CARICO

  2. Seleziona il bilanciatore del carico denominato web-map per visualizzare i dettagli del bilanciatore del carico appena creato.

  3. Nella sezione Backend della pagina, verifica che le istanze siano in stato integro visualizzando la colonna Integro.

    Potrebbero essere necessari alcuni istanti prima che il display indichi che le istanze sono in esecuzione.

  4. Quando il display indica che le istanze sono in stato integro, copia il valore IP:Porta dalla sezione Frontend e incollalo nel browser.

    Nel browser viene visualizzata la pagina dei contenuti predefinita.

gcloud

  1. Ottieni gli indirizzi IP delle regole di inoltro globale e prendine nota per il passaggio successivo:

    gcloud compute forwarding-rules list
    
  2. Utilizza il comando curl per testare la risposta per vari URL dei tuoi servizi. Prova sia IPv4 che IPv6. Per IPv6, devi inserire [] prima e dopo l'indirizzo, ad esempio http://[2001:DB8::]/.

    curl http://ipv4-address
    
    curl -g -6 "http://[ipv6-address]/"
    

Riepilogo

Ora le VM possono inviare traffico a internet e recuperare dati da internet. Puoi anche accedervi utilizzando SSH per eseguire attività di amministrazione. Tutte queste funzionalità vengono ottenute utilizzando solo indirizzi IP privati, che contribuiscono a proteggerli da attacchi diretti non esponendo indirizzi IP che sono 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

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

Passaggi successivi