Configura un bilanciatore del carico di rete proxy interno regionale con backend NEG a livello di zona

Il bilanciatore del carico di rete proxy interno regionale è un bilanciatore del carico di livello 4 regionale basato su proxy che consente di eseguire e scalare il traffico dei servizi TCP dietro un indirizzo IP interno accessibile solo ai client della stessa rete VPC o ai client connessi alla rete VPC.

Questa guida contiene le istruzioni per la configurazione di un bilanciatore del carico di rete proxy interno regionale con un backend di un gruppo di endpoint di rete (NEG) a livello di zona. Prima di iniziare:

Panoramica

In questo esempio, utilizzeremo il bilanciatore del carico per distribuire il traffico TCP tra le VM di backend in due NEG a livello di zona nella regione REGION_A. Ai fini dell'esempio, il servizio è un insieme di server Apache configurati per rispondere sulla porta 80.

In questo esempio, configuri il seguente deployment:

Configurazione di esempio di bilanciatore del carico di rete proxy interno regionale con backend NEG di zona.
Configurazione di esempio di bilanciatore del carico di rete proxy interno regionale con backend NEG a livello di zona.

Il bilanciatore del carico di rete proxy interno regionale è un bilanciatore del carico regionale. Tutti i componenti del bilanciatore del carico (gruppi di istanza di backend, servizio di backend, proxy di destinazione e regola di forwarding) deve trovarsi nella stessa regione.

Autorizzazioni

Per seguire questa guida, devi essere in grado di creare istanze e modificare un in un progetto. Devi essere un progetto proprietario o editor oppure includono tutte le seguenti caratteristiche 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 sicurezza
Creazione delle istanze Amministratore istanze Compute

Per ulteriori informazioni, consulta le seguenti guide:

Configura la rete e le subnet

È necessaria una rete VPC con due subnet: una per i backend del bilanciatore del carico e l'altra per i proxy del bilanciatore del carico. I bilanciatori del carico di rete proxy interni regionali sono regionali. Traffico all'interno di VPC la rete è instradata al bilanciatore del carico se l'origine del traffico si trova in una subnet in della stessa regione del bilanciatore del carico.

Questo esempio utilizza la rete VPC, la regione e subnet:

  • Rete. La rete è una rete VPC in modalità personalizzata denominata lb-network.

  • Subnet per i backend. Una subnet denominata backend-subnet nel La regione REGION_A utilizza 10.1.2.0/24 come intervallo IP principale.

  • Subnet per i proxy. Una subnet denominata proxy-only-subnet nella regione REGION_A utilizza 10.129.0.0/23 per il suo intervallo IP principale.

Crea la rete e la subnet per i backend

Console

  1. Nella console Google Cloud, vai alla pagina Reti VPC.

    Vai a Reti VPC

  2. Fai clic su Crea rete VPC.

  3. In Nome, inserisci lb-network.

  4. Nella sezione Subnet:

    • Imposta Modalità di creazione subnet su Personalizzata.
    • Nella sezione Nuova subnet, inserisci le informazioni seguenti:
      • Nome: backend-subnet
      • Regione: REGION_A
      • Intervallo di indirizzi IP: 10.1.2.0/24
    • Fai clic su Fine.
  5. Fai clic su Crea.

gcloud

  1. Crea la rete VPC personalizzata con il comando gcloud compute networks create:

    gcloud compute networks create lb-network --subnet-mode=custom
    
  2. Crea una subnet nella rete lb-network della regione REGION_A con gcloud compute networks subnets create :

    gcloud compute networks subnets create backend-subnet \
        --network=lb-network \
        --range=10.1.2.0/24 \
        --region=REGION_A
    

Crea la subnet solo proxy

Una subnet solo proxy fornisce un insieme di indirizzi IP che Google utilizza per eseguire proxy Envoy per tuo conto. La i proxy terminano le connessioni dal client e creano nuove connessioni di backend.

Questa subnet solo proxy viene utilizzata da tutto il carico basato su Envoy bilanciatori del carico in REGION_A regione della rete VPC lb-network.

Console

Se utilizzi la console Google Cloud, puoi attendere e creare la sottorete solo proxy in un secondo momento nella pagina Equilibrazione del carico.

Se vuoi creare subito la subnet solo proxy:

  1. Nella console Google Cloud, vai alla pagina Reti VPC.

    Vai alle reti VPC

  2. Fai clic sul nome della rete VPC condivisa: lb-network.

  3. Fai clic su Aggiungi subnet.

  4. In Nome, inserisci proxy-only-subnet.

  5. In corrispondenza di Regione, seleziona REGION_A.

  6. Imposta Purpose su Regional Managed Proxy (Proxy gestito a livello di regione).

  7. Per l'intervallo di indirizzi IP, inserisci 10.129.0.0/23.

  8. Fai clic su Aggiungi.

gcloud

Crea la subnet solo proxy con il comando gcloud compute networks subnets create.

gcloud compute networks subnets create proxy-only-subnet \
    --purpose=REGIONAL_MANAGED_PROXY \
    --role=ACTIVE \
    --region=REGION_A \
    --network=lb-network \
    --range=10.129.0.0/23

Crea regole firewall

In questo esempio, vengono create le seguenti regole firewall:

  • fw-allow-health-check: una regola in entrata, applicabile a Google Cloud con bilanciamento del carico, in questo modo il traffico proveniente dal bilanciatore del carico sistemi di controllo di integrità di Google Cloud (130.211.0.0/22 e 35.191.0.0/16). Questo esempio utilizza il tag di destinazione allow-health-check per a identificare le VM di backend a cui deve essere applicata.
  • fw-allow-ssh: una regola in entrata che consente la connettività SSH in entrata sulla porta TCP 22 da qualsiasi indirizzo. Puoi scegliere un intervallo IP di origine più restrittivo per questa regola; Ad esempio, puoi specificare solo gli intervalli IP dei sistemi da cui avvierai le sessioni SSH. Questo esempio utilizza il tag di destinazione allow-ssh per identificare le VM a cui deve essere applicata.
  • fw-allow-proxy-only-subnet: crea una regola firewall di autorizzazione in entrata per la subnet solo proxy per consentire al bilanciatore del carico di comunicare con le istanze di backend sulla porta TCP 80. Questo esempio utilizza il tag target allow-proxy-only-subnet per a identificare le VM di backend a cui deve essere applicata.

Console

  1. Nella console Google Cloud, vai alla pagina Criteri firewall.

    Vai a Criteri firewall

  2. Fai clic su Crea regola firewall:

    1. Inserisci un nome per fw-allow-health-check.
    2. In Rete, seleziona lb-network.
    3. In Target, seleziona Tag di destinazione specificati.
    4. Compila il campo Tag di destinazione con allow-health-check.
    5. Imposta Filtro di origine su Intervalli IPv4.
    6. Imposta Intervalli IPv4 di origine su 130.211.0.0/22 e 35.191.0.0/16.
    7. In Protocolli e porte, seleziona Protocolli e porte specificati.
    8. Seleziona la casella di controllo TCP e inserisci 80 per la porta numeri.
    9. Fai clic su Crea.
  3. Fai di nuovo clic su Crea regola firewall per creare la regola per consentire le connessioni SSH in entrata:

    • Nome: fw-allow-ssh
    • Rete: lb-network
    • Priorità: 1000
    • Direzione del traffico: in entrata
    • Azione in caso di corrispondenza: consenti
    • Target: Tag di destinazione specificati
    • Tag di destinazione: allow-ssh
    • Filtro di origine: Intervalli IPv4
    • Intervalli IPv4 di origine: 0.0.0.0/0
    • Protocolli e porte: scegli Protocolli e porte specificati, quindi digita: tcp:22
  4. Fai clic su Crea.

  5. Fai di nuovo clic su Crea regola firewall per creare la regola che consente le connessioni in entrata dalla subnet solo proxy ai backend di Google Cloud:

    • Nome: fw-allow-proxy-only-subnet
    • Rete: lb-network
    • Priorità: 1000
    • Direzione del traffico: in entrata
    • Azione in caso di corrispondenza: consenti
    • Target: Tag di destinazione specificati
    • Tag di destinazione: allow-proxy-only-subnet
    • Filtro di origine: Intervalli IPv4
    • Intervalli IPv4 di origine: 10.129.0.0/23
    • Protocolli e porte: scegli Protocolli e porte specificati, quindi tipo: tcp:80
  6. Fai clic su Crea.

gcloud

  1. Crea la regola fw-allow-health-check per consentire i controlli di integrità di Google Cloud per raggiungere di backend su una porta TCP 80:

    gcloud compute firewall-rules create fw-allow-health-check \
        --network=lb-network \
        --action=allow \
        --direction=ingress \
        --target-tags=allow-health-check \
        --source-ranges=130.211.0.0/22,35.191.0.0/16 \
        --rules=tcp:80
    
  2. Crea la regola firewall fw-allow-ssh per consentire la connettività SSH alle 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 una regola firewall di autorizzazione in entrata per la subnet solo proxy per consentire al bilanciatore del carico di comunicare con le istanze di backend sulla porta TCP 80:

    gcloud compute firewall-rules create fw-allow-proxy-only-subnet \
        --network=lb-network \
        --action=allow \
        --direction=ingress \
        --target-tags=allow-proxy-only-subnet \
        --source-ranges=10.129.0.0/23 \
        --rules=tcp:80
    

Prenota l'indirizzo IP del bilanciatore del carico

Per prenotare un indirizzo IP interno statico per il bilanciatore del carico, consulta Prenota un nuovo IPv4 o IPv6 interno statico .

Configura il NEG a livello di zona

Configura un NEG a livello di zona (con endpoint di tipo GCE_VM_IP_PORT) nella regione REGION_A. Per prima cosa, crea le VM. Quindi, crea un NEG a livello di zona e aggiungi gli endpoint di rete delle VM al NEG.

Crea VM

Console

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

    Vai a Istanze VM

  2. Fai clic su Crea istanza.

  3. Imposta il Nome su vm-a1.

  4. In corrispondenza di Regione, seleziona REGION_A.

  5. Per Zona, consulta ZONE_A1.

  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.

  8. Fai clic su Networking e configura i seguenti campi:

    1. In Tag di rete, inserisci allow-ssh, allow-health-check e allow-proxy-only-subnet.
    2. In Interfacce di rete, seleziona quanto segue:
      • Rete: lb-network
      • Subnet: backend-subnet
  9. Fai clic su Gestione. Inserisci lo script che segue nel campo Script di avvio.

    #! /bin/bash
    apt-get update
    apt-get install apache2 -y
    a2ensite default-ssl
    a2enmod ssl
    vm_hostname="$(curl -H "Metadata-Flavor:Google" \
    http://metadata.google.internal/computeMetadata/v1/instance/name)"
    echo "Page served from: $vm_hostname" | \
    tee /var/www/html/index.html
    systemctl restart apache2
    
  10. Fai clic su Crea.

  11. Ripeti i seguenti passaggi per creare altre tre VM utilizzando le seguenti combinazioni di nome e zona:

    • Nome: vm-a2, zona: ZONE_A1
    • Nome: vm-c1, zona: ZONE_A2
    • Nome: vm-c2, zona: ZONE_A2

gcloud

Crea le VM eseguendo questo comando due volte, utilizzando queste combinazioni per VM_NAME e ZONE. I contenuti dello script sono identici per entrambe le VM.

  • VM_NAME: vm-a1 e ZONE: ZONE_A1
  • VM_NAME: vm-a2 e ZONE: ZONE_A1
  • VM_NAME: vm-c1 e ZONE: ZONE_A2
  • VM_NAME: vm-c2 e ZONE: ZONE_A2

    gcloud compute instances create VM_NAME \
        --zone=ZONE \
        --image-family=debian-12 \
        --image-project=debian-cloud \
        --tags=allow-ssh,allow-health-check,allow-proxy-only-subnet \
        --subnet=backend-subnet \
        --metadata=startup-script='#! /bin/bash
         apt-get update
         apt-get install apache2 -y
         a2ensite default-ssl
         a2enmod ssl
         vm_hostname="$(curl -H "Metadata-Flavor:Google" \
         http://metadata.google.internal/computeMetadata/v1/instance/name)"
         echo "Page served from: $vm_hostname" | \
         tee /var/www/html/index.html
         systemctl restart apache2'
    

Crea i NEG a livello di zona

Console

Per creare un gruppo di endpoint di rete a livello di zona:

  1. Nella console Google Cloud, vai alla pagina Gruppi di endpoint di rete.

    Vai a Gruppi di endpoint di rete

  2. Fai clic su Crea gruppo di endpoint di rete.

  3. In Nome, inserisci zonal-neg-a.

  4. Per Tipo di gruppo di endpoint di rete, seleziona Gruppo di endpoint di rete (a livello di zona).

  5. In Rete, seleziona lb-network.

  6. In Subnet, seleziona backend-subnet.

  7. In Zona, seleziona ZONE_A1.

  8. Inserisci il valore in Porta predefinita: 80.

  9. Fai clic su Crea.

  10. Ripeti tutti i passaggi di questa sezione per creare un secondo NEG zonale con le seguenti modifiche alle impostazioni:

    • Nome: zonal-neg-c
    • Zona: ZONE_A2

Aggiungi endpoint ai NEG a livello di zona:

  1. Nella console Google Cloud, vai alla pagina Gruppi di endpoint di rete.

    Vai a Gruppi di endpoint di rete

  2. Fai clic sul nome del gruppo di endpoint di rete creato nel passaggio precedente (ad esempio zonal-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 rete endpoint. Viene visualizzata la pagina Aggiungi endpoint di rete.

  4. Seleziona un'istanza VM (ad esempio vm-a1). Nella sezione Interfaccia di rete vengono visualizzati il nome, la zona e la subnet della VM.

    1. Inserisci l'indirizzo IP del nuovo endpoint di rete. Puoi fare clic Verifica gli indirizzi IP principali e l'intervallo IP alias in nic0 per l'IP .
    2. Per Tipo di porta, seleziona Predefinito. L'endpoint utilizza la porta predefinita80 per tutti gli endpoint nel gruppo di endpoint di rete. Questo è sufficiente per il nostro esempio perché il server Apache gestisce le richieste sulla porta80.
    3. Fai clic su Crea.
  5. Fai di nuovo clic su Aggiungi endpoint di rete. Seleziona la seconda istanza VM. vm-a2 e ripeti questi passaggi per aggiungere i relativi endpoint a zonal-neg-a.

  6. Ripeti tutti i passaggi di questa sezione per aggiungere gli endpoint da vm-c1 e vm-c2 a zonal-neg-c.

gcloud

  1. Crea un NEG a livello di zona nella zona ZONE_A1 con GCE_VM_IP_PORT endpoint.

    gcloud compute network-endpoint-groups create zonal-neg-a \
       --network-endpoint-type=GCE_VM_IP_PORT \
       --zone=ZONE_A1 \
       --network=lb-network \
       --subnet=backend-subnet
    

    Puoi specificare --default-port durante la creazione del NEG, oppure specifica un numero di porta per ogni endpoint come mostrato nel passaggio successivo.

  2. Aggiungi endpoint al NEG a livello di zona.

    gcloud compute network-endpoint-groups update zonal-neg-a \
        --zone=ZONE_A1 \
        --add-endpoint='instance=vm-a1,port=80' \
        --add-endpoint='instance=vm-a2,port=80'
    
  3. Crea un NEG a livello di zona nella zona ZONE_A2 con GCE_VM_IP_PORT endpoint.

    gcloud compute network-endpoint-groups create zonal-neg-c \
        --network-endpoint-type=GCE_VM_IP_PORT \
        --zone=ZONE_A2 \
        --network=lb-network \
        --subnet=backend-subnet
    

    Puoi specificare --default-port durante la creazione del NEG, oppure specifica un numero di porta per ogni endpoint come mostrato nel passaggio successivo.

  4. Aggiungi endpoint al NEG zonale.

    gcloud compute network-endpoint-groups update zonal-neg-c \
        --zone=ZONE_A2 \
        --add-endpoint='instance=vm-c1,port=80' \
        --add-endpoint='instance=vm-c2,port=80'
    

Configura il bilanciatore del carico

Console

Avvia la configurazione

  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 di rete (TCP/UDP/SSL) e fai clic su Avanti.
  4. Per Proxy o passthrough, seleziona Bilanciatore del carico proxy e fai clic su Avanti.
  5. In Pubblico o interno, seleziona Interno e fai clic su Avanti.
  6. In Deployment tra regioni o in una regione singola, seleziona Ideale per carichi di lavoro regionali e fai clic su Avanti.
  7. Fai clic su Configura.

Configurazione di base

  1. In Nome, inserisci my-int-tcp-lb.
  2. In Regione, seleziona REGION_A.
  3. In Rete, seleziona lb-network.

Riserva una subnet solo proxy

.

Per prenotare una subnet solo proxy:

  1. Fai clic su Riserva subnet.
  2. In Nome, inserisci proxy-only-subnet.
  3. In Intervallo di indirizzi IP, inserisci 10.129.0.0/23.
  4. Fai clic su Aggiungi.

Configurazione backend

  1. Fai clic su Configurazione backend.
  2. In Tipo di backend, seleziona Gruppo di endpoint di rete a livello di zona.
  3. Per Protocollo, seleziona TCP.
  4. Configura il primo backend:
    1. In Nuovo backend, seleziona NEG a livello di zona zonal-neg-a.
    2. Mantieni i valori predefiniti rimanenti e fai clic su Fine.
  5. Configura il secondo backend:
    1. Fai clic su Aggiungi backend.
    2. In Nuovo backend, seleziona il gruppo di istanze zonal-neg-c.
    3. Mantieni i valori predefiniti rimanenti e fai clic su Fine.
  6. Configura il controllo di integrità:
    1. In Controllo di integrità, seleziona Crea un controllo di integrità.
    2. Imposta il nome del controllo di integrità su tcp-health-check.
    3. Per Protocollo, seleziona TCP.
    4. In Porta, inserisci 80.
  7. Mantieni i valori predefiniti rimanenti e fai clic su Salva.
  8. Nella console Google Cloud, verifica che sia presente un segno di spunta accanto a Configurazione backend. In caso contrario, assicurati di aver completato tutti i passaggi.

Configurazione frontend

  1. Fai clic su Configurazione frontend.
  2. In Nome, inserisci int-tcp-forwarding-rule.
  3. In Subnet, seleziona backend-subnet.
  4. In Indirizzo IP, seleziona int-tcp-ip-address.
  5. In Numero porta, inserisci 9090. Solo la regola di forwarding inoltra i pacchetti con una porta di destinazione corrispondente.
  6. In questo esempio, non attivare il protocollo proxy perché non funziona con il software Apache HTTP Server. Per ulteriori informazioni, consulta Protocollo proxy.
  7. Fai clic su Fine.
  8. Nella console Google Cloud, verifica che sia presente un segno di spunta accanto a Configurazione frontend. In caso contrario, assicurati di aver completato tutti i passaggi precedenti.

Esamina e finalizza

  1. Fai clic su Esamina e finalizza.
  2. Controlla le impostazioni.
  3. Fai clic su Crea.

gcloud

  1. Crea un controllo di integrità a livello di regione per i backend.

    gcloud compute health-checks create tcp tcp-health-check \
        --region=REGION_A \
        --use-serving-port
    
  2. Crea un servizio di backend.

    gcloud compute backend-services create internal-tcp-proxy-bs \
       --load-balancing-scheme=INTERNAL_MANAGED \
       --protocol=TCP \
       --region=REGION_A \
       --health-checks=tcp-health-check \
       --health-checks-region=REGION_A
    
  3. Aggiungi il NEG zonale nella zona ZONE_A1 al servizio di backend.

    gcloud compute backend-services add-backend internal-tcp-proxy-bs \
       --network-endpoint-group=zonal-neg-a \
       --network-endpoint-group-zone=ZONE_A1 \
       --balancing-mode=CONNECTION \
       --max-connections-per-endpoint=50 \
       --region=REGION_A
    
  4. Aggiungi il NEG zonale nella zona ZONE_A2 al servizio di backend.

    gcloud compute backend-services add-backend internal-tcp-proxy-bs \
       --network-endpoint-group=zonal-neg-c \
       --network-endpoint-group-zone=ZONE_A2 \
       --balancing-mode=CONNECTION \
       --max-connections-per-endpoint=50 \
       --region=REGION_A
    
  5. Crea il proxy TCP di destinazione.

    gcloud compute target-tcp-proxies create int-tcp-target-proxy \
       --backend-service=internal-tcp-proxy-bs \
       --region=REGION_A
    
  6. Crea la regola di inoltro. Per --ports, specifica un singolo numero di porta tra 1 e 65535. Questo esempio utilizza la porta 9090. La regola di inoltro inoltra solo i pacchetti con una porta di destinazione corrispondente.

    gcloud compute forwarding-rules create int-tcp-forwarding-rule \
      --load-balancing-scheme=INTERNAL_MANAGED \
      --network=lb-network \
      --subnet=backend-subnet \
      --address=int-tcp-ip-address \
      --ports=9090 \
      --region=REGION_A \
      --target-tcp-proxy=int-tcp-target-proxy \
      --target-tcp-proxy-region=REGION_A
    

Testa il bilanciatore del carico

Per testare il bilanciatore del carico, crea una VM client nella stessa regione del con il bilanciatore del carico di rete passthrough esterno regionale. Quindi, invia il traffico dal client al bilanciatore del carico.

Crea una VM client

Crea una VM client (client-vm) nella stessa regione del bilanciatore del carico.

Console

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

    Vai a Istanze VM

  2. Fai clic su Crea istanza.

  3. Imposta Nome su client-vm.

  4. Imposta Zona su ZONE_A1.

  5. Fai clic su Opzioni avanzate.

  6. Fai clic su Networking e configura i seguenti campi:

    1. In Tag di rete, inserisci allow-ssh.
    2. In Interfacce di rete, seleziona quanto segue:
      • Rete: lb-network
      • Subnet: backend-subnet
  7. Fai clic su Crea.

gcloud

La VM client deve trovarsi nella stessa rete VPC e nella stessa regione tramite il bilanciatore del carico. Non è necessario che si trovi nella stessa subnet o zona. Il client utilizza la stessa sottorete delle VM di backend.

gcloud compute instances create client-vm \
    --zone=ZONE_A1 \
    --image-family=debian-12 \
    --image-project=debian-cloud \
    --tags=allow-ssh \
    --subnet=backend-subnet

Invia traffico al bilanciatore del carico

Ora che hai configurato il bilanciatore del carico, puoi testare l'invio di traffico all'indirizzo IP del bilanciatore del carico.

  1. Utilizza SSH per connetterti all'istanza client.

    gcloud compute ssh client-vm \
      --zone=ZONE_A1
    
  2. Verifica che il bilanciatore del carico gestisca i nomi host di backend come previsto.

    1. Utilizza il comando compute addresses describe per visualizzare l'indirizzo IP del bilanciatore del carico:

      gcloud compute addresses describe int-tcp-ip-address \
        --region=REGION_A
      

      Prendi nota dell'indirizzo IP.

    2. Invia traffico al bilanciatore del carico. Sostituisci IP_ADDRESS con l'indirizzo IP del bilanciatore del carico.

      curl IP_ADDRESS:9090
      

Passaggi successivi