Configurare il routing del traffico TCP

Questa guida mostra come utilizzare Cloud Service Mesh per instradare il traffico ai servizi che gestiscono il traffico TCP. Questi servizi includono database, servizi VOIP e piattaforme di gestione che prevedono di ricevere traffico TCP su porte o intervalli di porte specifici.

Questa guida si applica al deployment con le API precedenti. Se utilizzi le nuove API di routing dei servizi, che sono in anteprima, consulta Configurazione di Cloud Service Mesh per i servizi TCP con una risorsa TCPRoute.

Utilizza questa guida per:

  • Configura un servizio che rappresenta una raccolta di backend o endpoint identici che accettano le richieste TCP dai client.
  • Imposta una mappa di regole di routing in modo che i proxy Envoy configurati da Cloud Service Mesh possano inviare richieste TCP.

I seguenti diagrammi mostrano come funziona il routing TCP rispettivamente per le istanze di macchine virtuali (VM) e i gruppi di endpoint di rete (NEG).

Risorse dell'API Compute Engine per le VM.
Configurazione di Cloud Service Mesh per i backend TCP e Compute Engine (fai clic per ingrandire)


Risorse dell'API Compute Engine per i NEG.
Configurazione di Cloud Service Mesh per i backend TCP e NEG (fai clic per ingrandire)

preparazione

  • Questa guida si basa sulla guida alla preparazione del mesh di Envoy per i servizi e presuppone che tu abbia già una conoscenza di base del funzionamento di Cloud Service Mesh.
  • La guida si concentra sugli aspetti della configurazione di Cloud Service Mesh che differiscono quando configuri i servizi e il routing per il traffico TCP.
  • La guida presuppone che tu abbia già configurato un gruppo di istanze gestite (MIG) o un NEG.

Configura le risorse di bilanciamento del carico

Per configurare le risorse di bilanciamento del carico, segui questi passaggi.

Crea un controllo di integrità TCP

Configurazione con VM

Se stai configurando gruppi di istanze gestite, utilizza il comando seguente per creare un controllo di integrità globale; sostituisci PORT con il numero di porta TCP monitorato da questo controllo di integrità:

gcloud compute health-checks create tcp td-vm-health-check \
    --global \
    --port=PORT

Configurazione con NEG

Se stai configurando i NEG, utilizza il comando seguente per creare un controllo di integrità:

gcloud compute health-checks create tcp td-gke-health-check \
    --use-serving-port

Per ulteriori informazioni sui controlli di integrità, consulta quanto segue:

Crea una regola firewall per il controllo di integrità

Questa regola consente ai controlli di integrità dei controlli di integrità di Google Cloud di raggiungere i tuoi backend.

gcloud

gcloud compute firewall-rules create fw-allow-health-checks \
  --action=ALLOW \
  --direction=INGRESS \
  --source-ranges=35.191.0.0/16,130.211.0.0/22 \
  --target-tags=TAGS \
  --rules=tcp:80

Per ulteriori informazioni sulle regole firewall per i controlli di integrità, consulta quanto segue:

Crea un servizio di backend per i backend TCP

La configurazione del servizio di backend per TCP con Cloud Service Mesh è leggermente diversa da quella per HTTP. I seguenti passaggi illustrano queste differenze.

Configurazione con VM

Se stai configurando gruppi di istanze gestite, usa il comando seguente per creare un servizio di backend e aggiungere il controllo di integrità:

 gcloud compute backend-services create td-vm-service \
     --global \
     --load-balancing-scheme=INTERNAL_SELF_MANAGED \
     --health-checks=td-vm-health-check \
     --protocol=TCP \
     --global-health-checks

Il passaggio finale per la configurazione del tuo servizio di backend consiste nell'aggiungere i tuoi backend. Poiché questo passaggio è una configurazione standard di Cloud Service Mesh (in altre parole, non è specifico per i servizi basati su TCP), non viene mostrato qui. Per ulteriori informazioni, consulta Creare il servizio di backend nella guida alla configurazione per le VM di Compute Engine con deployment di Envoy automatico.

Configurazione con NEG

Se stai configurando i NEG, utilizza i comandi seguenti per creare un servizio di backend e associare il controllo di integrità al servizio di backend:

gcloud compute backend-services create td-gke-service \
    --global \
    --health-checks=td-gke-health-check \
    --protocol=TCP \
    --load-balancing-scheme=INTERNAL_SELF_MANAGED

Il passaggio finale per la configurazione del servizio di backend consiste nell'aggiungere il tuo gruppo di backend. Poiché questo passaggio è una configurazione standard di Cloud Service Mesh (in altre parole, non è specifico per i servizi basati su TCP), non viene mostrato qui. Per ulteriori informazioni, consulta Creare il servizio di backend nella guida alla configurazione dei pod GKE con inserimento di Envoy automatico.

Configura il routing per il tuo servizio di backend basato su TCP

In questa sezione creerai un proxy TCP di destinazione globale e una regola di inoltro globale. Queste risorse consentono alle applicazioni di inviare traffico ai backend con i servizi di backend appena creati.

Considera quanto segue:

  • La regola di forwarding deve avere lo schema di bilanciamento del carico INTERNAL_SELF_MANAGED.
  • L'indirizzo IP virtuale (VIP) e la porta che configuri nella regola di forwarding sono il VIP e la porta che le tue applicazioni utilizzano quando inviano il traffico ai tuoi servizi TCP. Puoi scegliere il VIP da una delle subnet. Cloud Service Mesh utilizza questo VIP e questa porta per abbinare le richieste del client a un determinato servizio di backend.

    Per informazioni su come le richieste del client vengono abbinate ai servizi di backend, consulta Rilevamento dei servizi.

gcloud

  1. Utilizza il comando seguente per creare il proxy TCP di destinazione; sostituisci BACKEND_SERVICE con il nome del servizio di backend creato nel passaggio precedente. Nell'esempio seguente, utilizziamo td-tcp-proxy come nome per il proxy TCP di destinazione, ma puoi scegliere un nome adatto alle tue esigenze.

    gcloud compute target-tcp-proxies create td-tcp-proxy \
       --backend-service=BACKEND_SERVICE
    
  2. Crea la regola di forwarding. La regola di forwarding specifica il VIP e la porta utilizzati durante l'abbinamento delle richieste del client a un particolare servizio di backend. Per maggiori informazioni, consulta gcloud compute forwarding-rules create nel riferimento per i comandi gcloud.

    gcloud compute forwarding-rules create td-tcp-forwarding-rule \
        --global \
        --load-balancing-scheme=INTERNAL_SELF_MANAGED \
        --address=VIP\
        --target-tcp-proxy=td-tcp-proxy \
        --ports=PORT \
        --network=default
    

A questo punto, Cloud Service Mesh è configurato in modo da bilanciare il carico del traffico per il VIP specificato nella regola di forwarding tra i tuoi backend.

Risoluzione dei problemi

Se le tue applicazioni tentano di inviare richieste ai tuoi servizi basati su TCP, procedi nel seguente modo:

  • Verifica che la porta per il controllo di integrità TCP corrisponda alla porta su cui l'applicazione TCP prevede di ricevere il traffico del controllo di integrità.
  • Verifica che il nome della porta del servizio di backend corrisponda a quanto specificato nel gruppo di istanze.

Passaggi successivi