Configura VM di Compute Engine utilizzando il deployment automatico di Envoy
Prima di seguire le istruzioni in questa guida, consulta la sezione Preparare la configurazione di Traffic Director e assicurati di aver completato le attività preliminari descritte nel documento. Questo documento si applica alle API precedenti. Se stai eseguendo il deployment con le nuove API di routing dei servizi, che sono in anteprima, consulta la pagina sulla configurazione di Traffic Director per i proxy Envoy con servizi HTTP
Questa guida illustra come eseguire automaticamente il deployment di un piano dati costituito da proxy sidecar Envoy, configurarlo tramite Traffic Director e verificare la configurazione per assicurarti che funzioni correttamente. La procedura prevede quanto segue:
- Abilitazione dell'API Cloud OS Config in corso...
- Creazione di un servizio di test in corso...
- Deployment di un piano dati semplice su Compute Engine mediante proxy Envoy (Envoy versione 1.18.4, che supporta solo xDS v3).
- Impostazione di Traffic Director utilizzando le API Compute Engine, che consentono a Traffic Director di configurare i proxy sidecar Envoy.
- Accesso a una VM che esegue un proxy Envoy e inviare una richiesta a un backend con bilanciamento del carico tramite il proxy Envoy.
Gli esempi di configurazione in questo documento sono a scopo dimostrativo. Per un ambiente di produzione, potresti dover eseguire il deployment di componenti aggiuntivi in base all'ambiente e ai requisiti.
Abilitazione dell'API Cloud OS Config
Assicurati di attivare l'API Cloud OS Config. In caso contrario, non puoi installare i componenti richiesti nelle VM.
Per farlo:
console
- In Google Cloud Console, vai alle API e servizi.
Vai alla pagina Libreria API - Seleziona il progetto corretto.
- Nella casella di ricerca, inserisci l'API Cloud OS Config e premi Invio.
- Seleziona l'API Cloud OS Config.
- Fai clic su Abilita.
gcloud
gcloud services enable osconfig.googleapis.com
Creazione del servizio di test Hello World
in corso...
Questa sezione mostra come creare un semplice servizio di test che restituisce il nome host della VM che ha fornito la richiesta dal client. Il servizio di test non è complicato; si tratta di un server web di cui è stato eseguito il deployment in un gruppo di istanze gestite di Compute Engine.
Creazione del modello di istanza per il servizio di test Hello World
in corso...
Il modello di istanza creato configura un server web apache2 di esempio utilizzando il parametro startup-script
.
console
- In Google Cloud Console, vai alla pagina Modelli di istanza.
- Fai clic su Crea modello istanza.
- Nei campi, inserisci i seguenti dati:
- Nome:
td-demo-hello-world-template
- Disco di avvio: scegli un sistema operativo e una versione.
- Account di servizio: account di servizio predefinito di Compute Engine
- Ambiti di accesso: consenti l'accesso completo a tutte le API di Cloud
- Nome:
- Fai clic su Gestione, Sicurezza, Dischi, Networking, Single-tenancy.
1 Nella scheda Networking, aggiungi il tag
td-http-server
nel campo Tag di rete. Nella scheda Gestione, copia il seguente script nel campo Script di avvio.
#!/bin/bash sudo apt-get update -y sudo apt-get install apache2 -y sudo service apache2 restart echo '<!doctype html><html><body><h1>'\`/bin/hostname\`'</h1></body></html>' | sudo tee /var/www/html/index.html
Fai clic su Crea.
gcloud
Puoi scegliere tra diverse versioni del sistema operativo. Questo esempio utilizza il valore predefinito Debian 10.
Per creare il modello di istanza:
gcloud compute instance-templates create td-demo-hello-world-template \ --machine-type=n1-standard-1 \ --boot-disk-size=20GB \ --image-family=debian-10 \ --image-project=debian-cloud \ --scopes=https://www.googleapis.com/auth/cloud-platform \ --tags=td-http-server \ --metadata=startup-script="#! /bin/bash sudo apt-get update -y sudo apt-get install apache2 -y sudo service apache2 restart sudo mkdir -p /var/www/html/ echo '<!doctype html><html><body><h1>'\`/bin/hostname\`'</h1></body></html>' | sudo tee /var/www/html/index.html"
Creazione del gruppo di istanze gestite per il servizio Hello World
In questa sezione specifichi che il gruppo di istanze gestite dispone sempre di due istanze del servizio di test. A scopo dimostrativo. Traffic Director supporta i gruppi di istanze gestite con scalabilità automatica.
console
- In Google Cloud Console, vai alla pagina Gruppi di istanze.
- Fai clic su Crea gruppo di istanze.
- Seleziona Nuovo gruppo di istanze gestite (stateless). Per ulteriori informazioni, consulta la sezione MIG stateless o stateful.
- Inserisci
td-demo-hello-world-mig
per il nome del gruppo di istanze gestite e seleziona la zonaus-central1-a
. - In Modello di istanza, seleziona
td-demo-hello-world-template
, che è il modello di istanza che hai creato. - In Modalità di scalabilità automatica, seleziona
Off:do not autoscale
. - In Numero massimo di istanze, specifica almeno due come numero di istanze che vuoi creare nel gruppo.
- Fai clic su Crea.
gcloud
Utilizza l'interfaccia a riga di comando gcloud per creare un gruppo di istanze gestite con il modello di istanza creato in precedenza.
gcloud compute instance-groups managed create td-demo-hello-world-mig \ --zone us-central1-a \ --size=2 \ --template=td-demo-hello-world-template
Creazione del modello di istanza e del gruppo di istanze gestite in cui viene eseguito il deployment di Envoy
Utilizza le istruzioni in questa sezione per creare un modello di istanza e un gruppo di istanze gestite per Traffic Director con proxy Envoy di cui è stato eseguito il deployment automatico. I gruppi di istanze gestite creano nuove VM di backend utilizzando la scalabilità automatica.
Componenti software in esecuzione sulle tue VM
I seguenti componenti vengono installati nelle VM quando crei un modello di istanza con --service-proxy=enabled
.
- Il proxy Envoy, configurato da Traffic Director, viene scaricato da un bucket Cloud Storage dedicato. Il bucket contiene una build fornita da Google del proxy Envoy.
- L'agente proxy di servizio, che inizializza il proxy Envoy e i componenti del proxy. L'agente proxy di servizio configura l'intercettazione del traffico e monitora l'integrità del proxy Envoy quando è in esecuzione una VM. L'agente proxy di servizio viene scaricato anche da un bucket Cloud Storage.
L'unica versione disponibile di Envoy è il programma binario più recente di Envoy ospitato in una località di Cloud Storage dedicata. Questa versione di Envoy è supportata sulle immagini Compute Engine Debian, CentOS 7/8, RHEL 7/8 e Ubuntu 20.04. Durante la riparazione e lo scale up automatici, il gruppo di istanze gestite installa una versione recente di Envoy sulla VM. In alcuni casi, questa versione potrebbe essere più recente di Envoy di cui è stato eseguito il deployment nelle istanze VM create in precedenza. Questo potrebbe causare incoerenze nelle versioni installate nelle VM in un gruppo di istanze gestite. Le versioni incoerenti funzionano correttamente insieme. Se è presente un aggiornamento della sicurezza in Envoy, ti consigliamo di eseguire l'upgrade del gruppo di istanze gestite utilizzando una funzionalità di sostituzione in sequenza.
Creazione del modello di istanza
Un modello di istanza specifica la configurazione delle istanze VM create in un gruppo di istanze gestite. I flag trasmessi al modello di istanza installano Envoy e configurano le tue istanze VM in modo che siano pronte per Traffic Director.
Puoi utilizzare Debian 10/11, CentOS 7/8, RHEL 7/8 e Ubuntu 20.04, sia LTS che LTS PRO, per l'immagine disco di avvio nel modello di istanza. Tieni presente che Ubuntu 18.04 non è supportato.
Per creare un modello di istanza di questo tipo:
gcloud compute instance-templates create td-vm-template-auto \ --image-family=[ debian-10 | centos-7 | centos-8 | rhel-7 | rhel-8 | ubuntu-2004-lts | ubuntu-pro-2004-lts ] \ --image-project=[ debian-cloud | centos-cloud |rhel-cloud | ubuntu-os-cloud | ubuntu-os-pro-cloud ] \ --service-proxy=enabled
Per personalizzare il deployment di Envoy, consulta la guida di riferimento automatica al deployment di Envoy.
Creazione del gruppo di istanze gestite
console
- In Google Cloud Console, vai alla pagina Gruppi di istanze.
- Fai clic su Crea un gruppo di istanze.
- Inserisci
td-vm-mig-us-central1
per il nome del gruppo di istanze gestite, e seleziona la zonaus-central1-a
. - In Tipo di gruppo, seleziona Gruppo di istanze gestite.
- In Modello di istanza, seleziona
td-vm-template-auto
, il modello di istanza che hai creato. - Specifica
2
come il numero di istanze che vuoi creare nel gruppo. - Fai clic su Crea per creare il nuovo profilo.
gcloud
Utilizza l'interfaccia a riga di comando gcloud per creare un gruppo di istanze gestite con il modello di istanza creato in precedenza.
gcloud compute instance-groups managed create td-vm-mig-us-central1 \ --zone us-central1-a --size=2 --template=td-vm-template-auto
Configurazione di Traffic Director con i componenti di bilanciamento del carico di Google Cloud
Le istruzioni in questa sezione mostrano come configurare Traffic Director in modo che i proxy Envoy inviano il bilanciamento del carico del traffico in uscita a due istanze di backend. Configura i seguenti componenti:
- Un controllo di integrità. Per ulteriori informazioni sui controlli di integrità, leggi i Concetti sui controlli di integrità e la creazione di controlli di integrità.
- Una regola firewall, per consentire ai probe del controllo di integrità di raggiungere i backend. Per ulteriori informazioni, consulta i concetti del controllo di integrità.
- Un servizio di backend. Per ulteriori informazioni sui servizi di backend, leggi Servizi di backend.
- Una mappa di regole di routing. Questo include la creazione di una regola di forwarding e di una mappa URL. Per ulteriori informazioni, leggi Utilizzo delle regole di inoltro e Utilizzo delle mappe URL.
Creazione del controllo di integrità in corso...
Segui queste istruzioni per creare un controllo di integrità. Per ulteriori informazioni, consulta la sezione Creazione di controlli di integrità.
console
- Vai alla pagina Controlli di integrità in Google Cloud Console.
Vai alla pagina Controlli di integrità - Fai clic su Crea controllo di integrità.
- Come nome, inserisci
td-vm-health-check
. - Per il protocollo, seleziona HTTP.
- Fai clic su Crea.
gcloud
Crea il controllo di integrità.
gcloud compute health-checks create http td-vm-health-check
Creazione della regola firewall in corso...
Usa le istruzioni seguenti per creare le regole firewall necessarie per i probe del controllo di integrità. Per ulteriori informazioni, consulta Regole firewall per i controlli di integrità.
console
- Vai alla pagina Firewall in Google Cloud Console.
Vai alla pagina Firewall - Fai clic su Crea regola firewall.
- Nella pagina Crea una regola firewall, fornisci le seguenti informazioni:
- Nome:
fw-allow-health-checks
- Rete: scegli la rete VPC.
- Priorità: inserisci un numero per la priorità o 1000 per impostazione predefinita.
- Direzione del traffico: scegli ingress.
- Azione in caso di corrispondenza: scegli Consenti.
- Target: scegli Tag di destinazione specificati, poi inserisci
td-http-server
nella casella di testo Tag di destinazione. - Filtro di origine: scegli Intervalli IP.
- Intervalli IP di origine:
35.191.0.0/16,130.211.0.0/22
- Protocolli e porte consentiti: utilizza
tcp
con la porta80
- Fai clic su Crea.
- Nome:
gcloud
Crea la regola firewall per il controllo di integrità.
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 td-http-server \ --rules tcp:80
Creazione del servizio di backend
Crea il servizio di backend. Se utilizzi l'interfaccia a riga di comando di Google Cloud, devi designarlo come servizio di backend globale con uno schema di bilanciamento del carico di INTERNAL_SELF_MANAGED. Aggiungi il controllo di integrità e un gruppo di istanze gestite o non gestite al servizio di backend. Tieni presente che questo esempio utilizza il gruppo di istanze gestite con il modello di VM di Compute Engine che esegue il servizio HTTP di esempio creato nella sezione Creazione del gruppo di istanze gestite.
console
Vai alla pagina Traffic Director in Google Cloud Console.
Nella scheda Service (Servizi), fai clic su Create Service (Crea servizio).
Fai clic su Continua.
Come nome del servizio, inserisci
td-vm-service
.Seleziona la rete VPC corretta.
Assicurati che il Tipo di backend sia Gruppi di istanze.
Seleziona
td-demo-hello-world-mig
, ovvero il gruppo di istanze gestite che hai creato che contiene i backend per il servizio di testHello World
.Inserisci i numeri di porta corretti.
Scegli Utilizzo o Tariffa come Modalità di bilanciamento. Il valore predefinito è Tariffa.
Fai clic su Fine.
Seleziona il controllo di integrità che hai creato o fai clic su Crea un altro controllo di integrità e assicurati di selezionare HTTP come protocollo.
In Timeout di svuotamento della connessione, imposta il valore su
30
secondi o più.Fai clic su Continua.
Fai clic su Crea.
gcloud
Crea il servizio di backend.
gcloud compute backend-services create td-vm-service \ --global \ --load-balancing-scheme=INTERNAL_SELF_MANAGED \ --connection-draining-timeout=30s \ --health-checks td-vm-health-check
Aggiungi i backend al servizio di backend.
gcloud compute backend-services add-backend td-vm-service \ --instance-group td-demo-hello-world-mig \ --instance-group-zone us-central1-a \ --global
Creazione della mappa di regole di routing
La mappa delle regole di routing definisce il modo in cui Traffic Director instrada il traffico nella tua rete. Come parte della mappa delle regole di routing, configuri un indirizzo IP virtuale (VIP) e un insieme di regole di gestione del traffico associate, come il routing basato sull'host. Quando un'applicazione invia una richiesta al VIP, il proxy Envoy:
- Intercetta la richiesta.
- La valuta in base alle regole di gestione del traffico nella mappa URL.
- Consente di scegliere un servizio di backend basato sul nome host nella richiesta.
- Scegli un backend o un endpoint associato al servizio di backend selezionato.
- Invia il traffico a quel backend o a quell'endpoint.
Per scoprire di più sulla gestione del traffico, consulta Gestione avanzata del traffico.
console
In Google Cloud Console, la creazione del proxy di destinazione viene combinata con la creazione di regole di forwarding. Quando crei la regola di forwarding, Google Cloud crea automaticamente un proxy HTTP di destinazione e lo collega alla mappa URL.
Vai alla pagina Traffic Director in Google Cloud Console.
Nella scheda Mappe di regole di routing, fai clic su Crea mappa regole di routing.
Inserisci un nome.
Fai clic su Aggiungi regola di forwarding.
Come nome della regola di forwarding, inserisci
td-vm-forwarding-rule
.Seleziona la rete.
Seleziona il tuo IP interno. Il traffico diretto a questo indirizzo IP viene intercettato dal proxy Envoy e inviato al servizio appropriato in base alle regole host e percorso.
La regola di forwarding viene creata come regola di forwarding globale con
load-balancing-scheme
impostato suINTERNAL_SELF_MANAGED
.Nel campo IP personalizzato, digita
10.0.0.1
. Quando la VM invia a questo indirizzo IP, il proxy Envoy lo intercetta e lo invia all'endpoint del servizio di backend appropriato in base alle regole di gestione del traffico definite nella mappa URL.Ogni regola di forwarding in una rete VPC deve avere un indirizzo IP e una porta univoci per ogni rete VPC. Se crei più di una regola di forwarding con lo stesso indirizzo IP e la stessa porta in una determinata rete VPC, è valida solo la prima regola di forwarding. mentre altri vengono ignorati. Se
10.0.0.1
non è disponibile nella rete, scegli un indirizzo IP diverso.Assicurati che la Porta sia impostata su
80
.Fai clic su Salva.
Nella sezione Regole di routing, seleziona Regola host e percorso semplici.
Nella sezione Regole host e percorso, seleziona
td-vm-service
come Servizio.Fai clic su Aggiungi regola host e percorso.
In Host, inserisci
hello-world
.In Servizio, seleziona
td-vm-service
.Fai clic su Salva.
gcloud
Crea una mappa URL che utilizza il servizio di backend
td-vm-service
come impostazione predefinita.gcloud compute url-maps create td-vm-url-map \ --default-service td-vm-service
Crea un matcher percorso e una regola host per instradare il traffico per il tuo servizio in base al nome host e a un percorso. In questo esempio viene utilizzato
td-vm-service
come nome del servizio e un matcher percorso predefinito che soddisfa tutte le richieste di percorso per questo host (/*
).gcloud compute url-maps add-path-matcher td-vm-url-map \ --default-service td-vm-service \ --path-matcher-name td-vm-path-matcher
gcloud compute url-maps add-host-rule td-vm-url-map \ --path-matcher-name=td-vm-path-matcher \ --hosts=hello-world
Crea il proxy HTTP di destinazione.
gcloud compute target-http-proxies create td-vm-proxy \ --url-map=td-vm-url-map
Crea la regola di forwarding.
La regola di forwarding deve essere globale e deve essere creata con il valore
load-balancing-scheme
impostato suINTERNAL_SELF_MANAGED
.gcloud compute forwarding-rules create td-vm-forwarding-rule \ --global \ --load-balancing-scheme=INTERNAL_SELF_MANAGED \ --address=10.0.0.1 \ --target-http-proxy=td-vm-proxy \ --ports=80 \ --network=default
A questo punto, Traffic Director è configurato per bilanciare il carico del traffico per i servizi specificati nella mappa URL attraverso i backend nel gruppo di istanze gestite.
Verificare la configurazione
In questa ultima parte della guida alla configurazione di Traffic Director per le VM di Compute Engine, verificherai che il traffico inviato dalla VM client destinato alla regola di forwarding VIP venga intercettato e reindirizzato al proxy Envoy, che instrada la tua richiesta alle VM che ospitano il servizio Hello World
.
Per farlo, accedi alla VM client, che è stata configurata per intercettare il traffico e reindirizzarla a Envoy. Invia una richiesta curl
al VIP associato alla mappa delle regole di routing. Envoy controlla la richiesta curl
, determina il servizio a cui deve risolvere e invia la richiesta a un backend associato a tale servizio.
- In Google Cloud Console, vai alla pagina Gruppi di istanze.
- Seleziona il gruppo di istanze
td-vm-mig-us-central1
. - Nella sezione Riepilogo VM, in Connetti, fai clic su SSH.
- Dopo aver eseguito l'accesso alla VM client, utilizza lo strumento
curl
per inviare una richiesta al servizioHello World
tramite Envoy:
curl -H "Host: hello-world" http://10.0.0.1/
Quando esegui questo comando più volte, dovresti vedere diverse risposte HTML contenenti i nomi host dei backend nel gruppo di istanze gestite Hello World
.
Questo perché Envoy utilizza il bilanciamento del carico round robin, l'algoritmo di bilanciamento del carico predefinito, quando invia il traffico ai backend del servizio Hello World
.
Passaggi successivi
- Scopri di più sulla gestione avanzata del traffico.
- Scopri come configurare l'osservabilità con Envoy.
- Scopri come risolvere i problemi di deployment di Traffic Director.
- Per saperne di più sulle opzioni di deployment avanzate, consulta la guida automatica alle opzioni di deployment di Envoy.