Configura 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 rappresenti una raccolta di backend o endpoint identici che accettano richieste TCP dai client.
- Configura una mappa delle 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).
preparazione
- Questa guida si basa sulla guida alla preparazione di Envoy per il service mesh e presuppone che tu abbia già una comprensione di base del funzionamento di Cloud Service Mesh.
- La guida si concentra sugli aspetti della configurazione di Cloud Service Mesh diversi 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:
Crea un controllo di integrità TCP
Configurazione con le VM
Se stai configurando i MIG, utilizza il seguente comando per creare un controllo di integrità globale; sostituisci PORT
con il numero di porta TCP che questo controllo di integrità monitora:
gcloud compute health-checks create tcp td-vm-health-check \ --global \ --port=PORT
Configurazione con i NEG
Se stai configurando i NEG, utilizza il seguente comando per creare un controllo di integrità:
gcloud compute health-checks create tcp td-gke-health-check \ --use-serving-port
Per saperne di più sui controlli di integrità, consulta le seguenti risorse:
- Creazione di controlli di integrità nella documentazione di Cloud Load Balancing
gcloud compute health-checks create tcp
nel riferimento al comandogcloud
Crea una regola firewall per il controllo di integrità
Questa regola consente ai controlli di integrità di Google Clouddi 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 saperne di più sulle regole firewall per i controlli di integrità, consulta quanto segue:
- Regole firewall per i controlli di integrità nella documentazione di Cloud Load Balancing
gcloud compute firewall-rules create
nel riferimento al comandogcloud
(include indicazioni perTAGS
)
Crea un servizio di backend per i backend TCP
La configurazione del servizio di backend per TCP con Cloud Service Mesh è leggermente diversa dalla configurazione per HTTP. I seguenti passaggi acquisiscono queste differenze.
Configurazione con le VM
Se stai configurando i MIG, utilizza il seguente comando 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
L'ultimo passaggio per configurare il servizio di backend è aggiungere i backend. Poiché questo passaggio è la configurazione standard di Cloud Service Mesh (in altre parole, nulla di specifico per i servizi basati su TCP), non viene mostrato qui. Per saperne di più, consulta Crea il servizio di backend nella guida alla configurazione delle VM di Compute Engine con deployment Envoy automatico.
Configurazione con i NEG
Se stai configurando i NEG, utilizza i seguenti comandi 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
L'ultimo passaggio per configurare il servizio di backend consiste nell'aggiungere il gruppo di backend. Poiché questo passaggio è la configurazione standard di Cloud Service Mesh (in altre parole, nulla di specifico per i servizi basati su TCP), non viene mostrato qui. Per maggiori informazioni, consulta Creare il servizio di backend nella guida alla configurazione dei pod GKE con l'inserimento automatico di Envoy.
Configura il routing per il servizio di backend basato su TCP
In questa sezione, creerai un proxy TCP di destinazione globale e una regola di forwarding globale. Queste risorse consentono alle tue 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 l'IP virtuale e la porta utilizzati dalle tue applicazioni quando inviano traffico ai tuoi servizi TCP. Puoi scegliere il VIP da una delle tue subnet. Cloud Service Mesh utilizza questo VIP e questa porta per abbinare le richieste dei client a un servizio di backend specifico.
Per informazioni su come le richieste client vengono abbinate ai servizi di backend, vedi Service discovery.
gcloud
Utilizza il seguente comando per creare il proxy TCP di destinazione; sostituisci
BACKEND_SERVICE
con il nome del servizio di backend creato nel passaggio precedente. Nell'esempio seguente, utilizziamotd-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
Crea la regola di forwarding. La regola di forwarding specifica l'IP virtuale e la porta utilizzati per abbinare le richieste client a un particolare servizio di backend. Per ulteriori informazioni, consulta
gcloud compute forwarding-rules create
nella guida di riferimento dei comandigcloud
.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 per bilanciare il carico del traffico per il VIP specificato nella regola di forwarding tra i backend.
Limitazioni
Non puoi configurare un criterio di sicurezza di Google Cloud Armor se utilizzi il routing del traffico TCP.
Risoluzione dei problemi
Se le tue applicazioni tentano di inviare richieste ai tuoi servizi basati su TCP, fai quanto segue:
- Verifica che la porta del 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 quello specificato nel gruppo di istanze.
Passaggi successivi
- Preparazione alla configurazione di Cloud Service Mesh con Envoy
- Risolvere i problemi relativi ai deployment di Envoy