Configura un bilanciatore del carico di rete passthrough interno con NEG a livello di zona

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) a livello di zona. I NEG zonali sono risorse zonali che rappresentano raccolte di indirizzi IP o combinazioni di indirizzi IP/porte per le risorse Google Cloud all'interno di un'unica sottorete. I NEG ti consentono di creare raggruppamenti logici di indirizzi IP o combinazioni di indirizzi IP/porte che rappresentano servizi software anziché intere VM.

Prima di seguire questa guida, acquisisci familiarità con con quanto segue:

I bilanciatori del carico di rete passthrough interni supportano solo i NEG a livello di zona con GCE_VM_IP endpoint.

Autorizzazioni

Per seguire questa guida, devi creare istanze e modificare una rete in un progetto. Devi essere un proprietario o un editor del progetto oppure devi disporre di tutti i seguenti ruoli IAM di Compute Engine:

Attività Ruolo richiesto
Creazione di reti, subnet e componenti del bilanciatore del carico Amministratore di rete
Aggiungi e rimuovi regole firewall Amministratore della sicurezza
Creazione delle istanze Amministratore istanze Compute

Per ulteriori informazioni, consulta le seguenti guide:

Panoramica della configurazione

Questa guida mostra come configurare e testare un bilanciatore del carico di rete passthrough interno con GCE_VM_IP backend NEG a livello di zona. I passaggi descritti in questa sezione spiegano come configurare quanto segue:

  1. Una rete VPC di esempio denominata lb-network con una subnet personalizzata
  2. Regole firewall che consentono le connessioni in entrata alle VM di backend
  3. Quattro VM:
    • VM vm-a1 e vm-a2 nella zona us-west1-a
    • VM vm-c1 e vm-c2 nella zona us-west1-c
  4. Due NEG di backend a livello di zona, neg-a nella zona us-west1-a e neg-c nella zona us-west1-c. Ogni NEG avrà i seguenti endpoint:
    • neg-a contiene questi due endpoint:
      • Indirizzo IP interno della VM vm-a1
      • Indirizzo IP interno della VM vm-a2
    • neg-c contiene questi due endpoint:
      • Indirizzo IP interno della VM vm-c1
      • Indirizzo IP interno della VM vm-c2
  5. Una VM client (vm-client) in us-west1-a per testare le connessioni
  6. I seguenti componenti del bilanciatore del carico di rete passthrough interno:
    • Un servizio di backend interno nella regione us-west1 da gestire distribuzione delle connessioni ai due NEG a livello di zona
    • Una regola di inoltro interna e un indirizzo IP interno per il frontend del bilanciatore del carico

L'architettura per questo esempio è simile alla seguente:

Configurazione del bilanciatore del carico di rete passthrough interno con NEG a livello di zona
Configurazione del bilanciatore del carico di rete passthrough interno con NEG a livello di zona

Configura una rete, una regione e una subnet

L'esempio di bilanciatore del carico di rete passthrough interno descritto in questa pagina viene creato in una rete VPC in modalità personalizzata denominata lb-network.

Le VM di backend, i NEG zonali e i componenti del bilanciatore del carico di questo esempio si trovano in questa regione e in questa subnet:

  • Regione: us-west1
  • Subnet: lb-subnet, con intervallo di indirizzi IP principali 10.1.2.0/24

Per creare la rete e la sottorete di esempio, segui questi passaggi.

Console

  1. Vai alla pagina Reti VPC nella console Google Cloud.
    Vai alla pagina della rete VPC
  2. Fai clic su Crea rete VPC.
  3. Inserisci un nome per lb-network.
  4. 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.
  5. Fai clic su Crea.

gcloud

  1. Crea la rete VPC personalizzata:

    gcloud compute networks create lb-network --subnet-mode=custom
    
    1. All'interno della rete lb-network, crea una subnet per le VM di backend nella regione us-west1:
    gcloud compute networks subnets create lb-subnet \
        --network=lb-network \
        --range=10.1.2.0/24 \
        --region=us-west1
    

Configurazione delle regole del firewall

Questo esempio utilizza le seguenti regole firewall:

  • fw-allow-lb-access: una regola in entrata, applicabile a tutte le destinazioni in che consente il traffico da origini in Intervallo 10.1.2.0/24. Questa regola consente il traffico in entrata da qualsiasi client che si trova in lb-subnet.

  • fw-allow-ssh: una regola in entrata, applicabile alle istanze sottoposte a 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. della Ad esempio, puoi specificare solo gli intervalli IP del sistema da cui avviare sessioni SSH. Questo esempio utilizza il tag di destinazione allow-ssh per identificare le VM a cui deve essere applicato.

Senza queste regole firewall, il campo di blocco predefinito una regola in entrata blocca in entrata alle istanze di backend.

Console

  1. Nella console Google Cloud, vai alla pagina Criteri firewall.
    Vai a Criteri firewall
  2. Fai clic su Crea regola firewall e inserisci quanto segue. informazioni per creare la regola che consenta il traffico della 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
  3. Fai clic su Crea.
  4. 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 tipo: tcp:22
  5. Fai clic su Crea.
  6. Fai clic su Crea regola firewall una terza volta per creare la regola che consente Controlli di integrità di Google Cloud:
    • 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/22 e 35.191.0.0/16
    • Protocolli e porte: Consenti tutto
  7. Fai clic su Crea.

gcloud

  1. Crea la regola firewall fw-allow-lb-access per 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,icmp
    
  2. Crea la regola firewall fw-allow-ssh per consentire la connettività SSH a VM con il tag di rete allow-ssh. Se ometti source-ranges, Google Cloud interpreta la regola nel significato che Fonte.

    gcloud compute firewall-rules create fw-allow-ssh \
        --network=lb-network \
        --action=allow \
        --direction=ingress \
        --target-tags=allow-ssh \
        --rules=tcp:22
    
  3. Crea la regola fw-allow-health-check per consentire a Google Cloud e controlli di integrità.

    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 su entrambi i NEG e sugli endpoint all'interno di ciascun NEG.

Crea VM

Per supportare questo esempio, ciascuna delle quattro VM esegue un server web Apache che ascolta 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 temporaneo all'indirizzo IP esterno (pubblico). Puoi rimuovere gli indirizzi IP esterni in un secondo momento.

Gli indirizzi IP esterni non sono richiesti per le VM di backend. tuttavia, utili per questo esempio perché consentono alle VM di scaricare Apache da internet e ti permettono di connetterti tramite SSH. Per impostazione predefinita, Apache è configurato per eseguire il binding a qualsiasi indirizzo IP. I bilanciatori del carico di rete passthrough interni inviano i pacchetti preservando l'IP di destinazione.

Assicurati che il software del server in esecuzione sulle tue VM sia in ascolto sull'IP dell'indirizzo IP della regola di forwarding interno del bilanciatore del carico.

Per semplicità di istruzione, queste VM di backend eseguono Debian GNU Linux 10.

Console

Creare VM

  1. Vai alla pagina Istanze VM nella console Google Cloud.
    Vai alla pagina Istanze VM
  2. Ripeti i passaggi seguenti per creare quattro VM con il nome seguente e zone.
    • 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
  3. Fai clic su Crea istanza.
  4. Imposta il Nome come indicato nel passaggio 2.
  5. In Regione, scegli us-west1 e poi una Zona come indicato nel passaggio 2.
  6. Nella sezione Disco di avvio, assicurati che Per il disco di avvio è selezionata l'opzione Debian GNU/Linux 12 (bookworm) le opzioni di CPU e memoria disponibili. Fai clic su Scegli per modificare l'immagine, se necessario.
  7. Fai clic su Opzioni avanzate e apporta le seguenti modifiche:

    • Fai clic su Networking e aggiungi i seguenti tag di rete: allow-ssh e allow-health-check
    • Fai clic su Modifica in Interfacce di rete e apporta le seguenti modifiche, quindi fai clic su Fine:
      • Rete: lb-network
      • Subnet: lb-subnet
      • IP interno principale: Temporaneo (automatico)
      • IP esterno: Temporaneo
    • Fai clic su Gestione. Nel campo Script di avvio, copia e incolla i seguenti contenuti dello script. I contenuti dello script sono identici 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
      
  8. Fai clic su Crea.

gcloud

Crea le quattro VM eseguendo quattro volte il seguente comando, utilizzando queste quattro combinazioni per [VM-NAME] e [ZONE]. I contenuti dello script sono identici per tutte e quattro le VM.

  • [VM-NAME] di vm-a1 e [ZONE] di us-west1-a
  • [VM-NAME] di vm-a2 e [ZONE] di us-west1-a
  • [VM-NAME] di vm-c1 e [ZONE] di us-west1-c
  • [VM-NAME] di vm-c2 e [ZONE] di us-west1-c

    gcloud 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 GCE_VM_IP NEG a livello di zona

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:

  1. Vai alla pagina Gruppi di endpoint di rete nella console Google Cloud.
    Vai alla pagina Gruppi di endpoint di rete
  2. Fai clic su Crea gruppo di endpoint di rete.
  3. Inserisci un nome per il NEG a livello di zona: neg-a.
  4. Seleziona il Tipo di gruppo di endpoint di rete: Gruppo di endpoint di rete. (a livello di zona).
  5. Seleziona la Rete: lb-network
  6. Seleziona la subnet: lb-subnet
  7. Seleziona la zona: us-west1-a.
  8. Fai clic su Crea.
  9. Ripeti questi passaggi per creare un secondo NEG zonale denominato neg-c nella zona us-west1-c.

Aggiungi endpoint al NEG zonale:

  1. Vai alla pagina Gruppi di endpoint di rete nella console Google Cloud.
    Vai ai gruppi di endpoint di rete
  2. Fai clic sul Nome del primo gruppo di endpoint di rete creato nella al passaggio precedente (neg-a). Viene visualizzata la pagina Dettagli gruppo di endpoint di rete.
  3. Nella sezione Endpoint di rete in questo gruppo, fai clic su Aggiungi endpoint di rete. Viene visualizzata la pagina Aggiungi endpoint di rete.

    1. Fai clic su Istanza VM e seleziona vm-a1 per aggiungere il relativo IP interno come endpoint di rete.
    2. Fai clic su Crea.
    3. Fai di nuovo clic su Aggiungi endpoint di rete e in Istanza VM seleziona vm-a2.
    4. Fai clic su Crea.
  4. Fai clic sul nome del secondo gruppo di endpoint di rete creato nel passaggio precedente (neg-c). Vedrai i Dettagli del gruppo di endpoint di rete .

  5. Nella sezione Endpoint di rete in questo gruppo, fai clic su Aggiungi endpoint di rete. Viene visualizzata la pagina Aggiungi endpoint di rete.

    1. Fai clic su Istanza VM e seleziona vm-c1 per aggiungere il relativo IP interno come endpoint di rete.
    2. Fai clic su Crea.
    3. Fai di nuovo clic su Aggiungi endpoint di rete e in Istanza VM seleziona. vm-c2.
    4. Fai clic su Crea.

gcloud

  1. Crea un NEG di zona GCE_VM_IP denominato neg-a in us-west1-a utilizzando il gcloud 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-subnet
    
  2. Aggiungi 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'
    
  3. Crea un NEG di zona GCE_VM_IP denominato neg-c in us-west1-c utilizzando il gcloud 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-subnet
    
  4. Aggiungi 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 passare il traffico HTTP attraverso tramite 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 inoltro.

Console

gcloud

  1. Crea un nuovo controllo di integrità HTTP a livello di regione.

    gcloud compute health-checks create http hc-http-80 \
        --region=us-west1 \
        --port=80
    
  2. Crea 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-west1
    
  3. Aggiungi i due NEG a livello di zona, neg-a e neg-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-a
    
    gcloud compute backend-services add-backend bs-ilb \
        --region=us-west1 \
        --network-endpoint-group=neg-c \
        --network-endpoint-group-zone=us-west1-c
    
  4. Crea una regola di inoltro per il servizio di backend. Quando crei la regola di forwarding, specifica 10.1.2.99 per 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 riguarda il traffico verso la distribuzione tra le quattro VM di backend perché non è stata configurato.

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

  1. Vai alla pagina Istanze VM nella console Google Cloud.
    Vai alla pagina Istanze VM
  2. Fai clic su Crea istanza.
  3. Imposta il Nome su vm-client.
  4. Imposta la Zona su us-west1-a.
  5. Fai clic su Opzioni avanzate e apporta le seguenti modifiche:
    • Fai clic su Networking e aggiungi allow-ssh a Tag di rete.
    • Fai clic sul pulsante di modifica in Interfacce di rete e le seguenti modifiche, quindi fai clic su Fine:
      • Rete: lb-network
      • Subnet: lb-subnet
      • IP interno principale: Temporaneo (automatico)
      • IP esterno: Temporaneo
  6. Fai clic su Crea.

gcloud

La VM client può trovarsi in qualsiasi zona della stessa regione con il bilanciatore del carico di rete e può usare qualsiasi subnet in quella regione. In questo esempio, il client si trova nella zona us-west1-a e utilizza la stessa sottorete 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.

  1. Connettiti all'istanza VM client.

    gcloud compute ssh vm-client --zone=us-west1-a
    
  2. Effettua una richiesta web al bilanciatore del carico utilizzando curl per contattare il relativo IP . Ripeti la richiesta per vedere che le risposte provengono diverse VM di backend. Il nome della VM che genera la risposta è visualizzato nel testo della risposta HTML, in virtù dei contenuti /var/www/html/index.html su ogni VM di backend. Le risposte previste hanno il seguente aspetto: Page served from: vm-a1 e Page served from: vm-a2.

    curl http://10.1.2.99
    

    La regola di forwarding è configurata per gestire le porte 80, 8008, 8080 e 8088. Per inviare il traffico a queste porte, aggiungi i due punti (:) e la di porta dopo l'indirizzo IP, in questo modo:

    curl http://10.1.2.99:8008
    

Passaggi successivi