Service Discovery

Traffic Director fornisce il rilevamento di servizi ed endpoint. Queste funzionalità ti consentono di raggruppare le istanze di macchine virtuali (VM) e di container che eseguono il tuo codice come endpoint dei tuoi servizi.

Traffic Director monitora questi servizi in modo da poter condividere informazioni aggiornate con i propri clienti. Di conseguenza, quando una delle tue applicazioni utilizza il client Traffic Director (ad esempio un proxy sidecar Envoy) per inviare una richiesta, trae vantaggio da informazioni aggiornate sui tuoi servizi.

Nel contesto di Traffic Director, un client è il codice dell'applicazione che viene eseguito su una VM o un container che formula le richieste da inviare a un server. Un server è il codice dell'applicazione che riceve queste richieste. Un client Traffic Director è un client Envoy, gRPC o un altro client xDS connesso a Traffic Director e fa parte del piano dati.

Nel piano dati, Envoy o gRPC:

  1. Esamina una richiesta e la associa a un servizio di backend, una risorsa che configuri durante il deployment.
  2. Dopo aver trovato la corrispondenza con la richiesta, Envoy o gRPC sceglie un backend o un endpoint e indirizza la richiesta a quel backend o endpoint.

Service Discovery

Traffic Director fornisce Service Discovery. Quando configuri Traffic Director, crei servizi di backend. Puoi anche definire regole di routing che specificano in che modo una richiesta in uscita (una richiesta inviata dal codice dell'applicazione e gestita da un client Traffic Director) viene associata a un determinato servizio. Quando un client Traffic Director gestisce una richiesta che corrisponde a una regola, può scegliere il servizio che deve ricevere la richiesta.

Ad esempio:

  • Hai una VM che esegue la tua applicazione. Questa VM ha un proxy sidecar Envoy che è connesso a Traffic Director e gestisce le richieste in uscita per conto dell'applicazione.
  • Hai configurato un servizio di backend denominato payments. Questo servizio di backend ha due backend di gruppi di endpoint di rete (NEG) che rimandano a varie istanze di container che eseguono il codice per il servizio payments.
  • Hai configurato una mappa di regole di routing che contiene una regola di forwarding (con indirizzo IP 0.0.0.0 e porta 80 ad esempio), un proxy di destinazione e una mappa URL (con l'host dell'host payments.example.com che rimanda al servizio payments).

Con questa configurazione, quando l'applicazione (sulla VM) invia una richiesta HTTP a payments.example.com sulla porta 80, il client Traffic Director sa che questa richiesta è destinata al servizio payments.

Quando utilizzi Traffic Director con servizi gRPC senza proxy, Service Discovery funziona in modo simile. Tuttavia, una libreria gRPC che agisce come client Traffic Director riceve solo informazioni sui servizi per i quali specifichi un resolver xDS. Per impostazione predefinita, Envoy riceve informazioni su tutti i servizi configurati sulla rete Virtual Private Cloud (VPC) specificata nel file di bootstrap di Envoy.

Rilevamento degli endpoint

Service Discovery consente ai client di conoscere i tuoi servizi. L'individuazione degli endpoint consente ai client di conoscere le istanze che eseguono il tuo codice.

Quando crei un servizio, specifichi anche i relativi backend. Questi backend sono VM in gruppi di istanze gestite o container in NEG. Traffic Director monitora questi MIG e NEG in modo da sapere quando vengono create e rimosse istanze ed endpoint.

Traffic Director condivide continuamente con i clienti informazioni aggiornate su questi servizi. Queste informazioni consentono ai client di evitare di inviare traffico a endpoint che non esistono più. Inoltre, consente ai clienti di scoprire i nuovi endpoint e di sfruttare la loro capacità aggiuntiva fornita.

Nell'esempio precedente, Traffic Director restituisce i due endpoint in stato integro nel gruppo MIG-1 e i tre endpoint in stato integro nel gruppo MIG-2 per il servizioshopping-cart. Oltre ad aggiungere endpoint a MIG o NEG e a configurare Traffic Director, non è necessaria alcuna configurazione aggiuntiva per abilitare Service Discovery con Traffic Director.

Intercettazione del traffico proxy Sidecar in Traffic Director

Traffic Director supporta il modello di proxy sidecar. In base a questo modello, quando un'applicazione invia traffico alla sua destinazione, iptables intercetta il traffico e lo reindirizza al proxy sidecar sull'host su cui viene eseguita l'applicazione. Il proxy sidecar decide come bilanciare il carico del traffico, quindi lo invia alla sua destinazione.

Nel seguente diagramma, che presuppone che Traffic Director sia configurato correttamente, Envoy è il proxy sidecar. Il proxy sidecar è in esecuzione sullo stesso host dell'applicazione.

Un servizio di esempio chiamato Web è configurato sull'indirizzo IP virtuale (VIP) 10.0.0.1:80, dove Traffic Director può rilevarlo e bilanciarlo del carico. Traffic Director rileva la configurazione tramite la configurazione della regola di forwarding, che fornisce il VIP e la porta. I backend per il servizio Web sono configurati e funzionano, ma si trovano all'esterno dell'host delle VM di Compute Engine nel diagramma.

Traffic Director decide che il backend ottimale per il traffico al servizio Web dall'host è 192.168.0.1:80.

Networking host di Traffic Director.
Networking host di Traffic Director (fai clic per ingrandire)

Il flusso di traffico nel diagramma è il seguente:

  1. L'applicazione invia il traffico al servizio Web, che viene risolto nell'indirizzo IP 10.0.0.1:80.
  2. Il netfilter sull'host è configurato in modo che il traffico destinato a 10.0.0.1:80 sia reindirizzato a 10.0.0.1:15001.
  3. Il traffico viene reindirizzato a 127.0.0.1:15001, la porta di intercettazione del proxy di Envoy.
  4. Il listener di intercettazione proxy di Envoy su 127.0.0.1:15001 riceve il traffico ed esegue una ricerca per la destinazione originale della richiesta (10.0.0.1:80). La ricerca fa sì che 192.168.0.1:8080 venga selezionato come backend ottimale, come programmato da Traffic Director.
  5. Envoy stabilisce una connessione sulla rete con 192.168.0.1:8080 e esegue il proxy del traffico HTTP tra l'applicazione e questo backend fino al termine della connessione.

Opzioni di intercettazione del traffico con deployment automatico di Envoy

Se hai utilizzato il deployment automatico di Envoy con le VM, Traffic Director offre ulteriori opzioni di intercettazione del traffico. Puoi effettuare le seguenti operazioni con queste opzioni:

  • Intercetta tutto il traffico
  • Escludere porte, intervalli di porte, indirizzi IP o intervalli CIDR specifici

Se utilizzi le nuove risorse dell'API Mesh e Gateway per il routing dei servizi, tutto il traffico viene intercettato automaticamente.

Per ulteriori informazioni, consulta Opzioni per la configurazione delle VM di Compute Engine con deployment Envoy automatico.

Passaggi successivi