1. Introduzione
Una strategia ibrida è una soluzione pragmatica per adattarsi alle mutevoli richieste del mercato e modernizzare in modo incrementale le applicazioni. Il supporto ibrido per i bilanciatori del carico HTTP(s) esterni e interni di Google Cloud estende il bilanciamento del carico del cloud ai backend che risiedono on-prem e in altri cloud ed è un abilitatore chiave per la tua strategia ibrida. Potrebbe trattarsi di una situazione temporanea per consentire la migrazione a una soluzione moderna basata su cloud o a un impianto permanente dell'infrastruttura IT della tua organizzazione.
In questo lab imparerai a creare un gruppo di endpoint di rete (NEG) utilizzando due macchine virtuali accessibili da un bilanciatore del carico globale HTTP(s) esterno. Anche se il NEG nel lab si trova all'interno di Google Cloud, viene utilizzata la stessa procedura per comunicare con risorse pubbliche o on-premise con connettività IP.
Cosa imparerai a fare
- Crea un VPC personalizzato
- Creare due macchine virtuali (VM) utilizzate come gruppo di endpoint di rete (NEG)
- Crea un bilanciatore del carico ibrido, un servizio di backend e i controlli di integrità associati
- Crea una regola firewall che consenta l'accesso al bilanciatore del carico
- Il router Cloud e NAT verranno creati per consentire gli aggiornamenti dei pacchetti da internet
- Convalida della connettività del gruppo di endpoint di rete
Che cosa ti serve
- Conoscenza dei bilanciatori del carico
Configurazione dell'ambiente da seguire in modo autonomo
- Accedi alla console Cloud e crea un nuovo progetto o riutilizzane uno esistente. Se non hai ancora un account Gmail o Google Workspace, devi crearne uno.
- Il Nome progetto è il tuo identificatore personale per questo progetto. Se segui le convenzioni di denominazione, puoi utilizzare tutto ciò che desideri e aggiornarlo in qualsiasi momento.
- L'ID progetto deve essere univoco in tutti i progetti Google Cloud ed è immutabile (non può essere modificato una volta impostato). La console Cloud genera automaticamente una stringa univoca. di solito non ti importa cosa sia. Nella maggior parte dei codelab, devi fare riferimento all'ID progetto (che solitamente è identificato come
PROJECT_ID
), quindi, se non ti piace, generane un altro a caso oppure puoi fare un tentativo personalizzato e controllare se è disponibile. Poi c'è "congelato" una volta creato il progetto.
- Successivamente, dovrai abilitare la fatturazione in Cloud Console per utilizzare le risorse Google Cloud.
Eseguire questo codelab non dovrebbe costare molto. Assicurati di seguire le istruzioni nella sezione "Pulizia" in cui viene spiegato come arrestare le risorse in modo da non incorrere in fatturazione oltre questo tutorial. I nuovi utenti di Google Cloud sono idonei al programma prova senza costi di 300$.
Avvia Cloud Shell
Anche se Google Cloud può essere utilizzato da remoto dal tuo laptop, in questo codelab utilizzerai Google Cloud Shell, un ambiente a riga di comando in esecuzione nel cloud.
Dalla console di Google Cloud, fai clic sull'icona di Cloud Shell nella barra degli strumenti in alto a destra:
Dovrebbe richiedere solo qualche istante per eseguire il provisioning e connettersi all'ambiente. Al termine, dovresti vedere una schermata simile al seguente:
Questa macchina virtuale viene caricata con tutti gli strumenti di sviluppo necessari. Offre una home directory permanente da 5 GB e viene eseguita su Google Cloud, migliorando notevolmente le prestazioni di rete e l'autenticazione. Tutto il lavoro in questo lab può essere svolto semplicemente con un browser.
2. Prima di iniziare
All'interno di Cloud Shell, assicurati che l'ID progetto sia configurato
gcloud config list project gcloud config set project [YOUR-PROJECT-ID] Perform setting your projectID: projectid=YOUR-PROJECT-ID echo $projectid
3. Crea una nuova rete VPC in modalità personalizzata
In questa attività creerai un Virtual Private Cloud (VPC), la base della rete.
Rete VPC
Da Cloud Shell
gcloud compute networks create hybrid-network-lb --subnet-mode custom
Crea subnet
Da Cloud Shell
gcloud compute networks subnets create network-endpoint-group-subnet --network hybrid-network-lb --range 192.168.10.0/24 --region us-west1
Crea un'istanza Cloud NAT
Sebbene non sia un requisito per il networking ibrido, l'istanza Compute richiede una connettività a internet per scaricare applicazioni e aggiornamenti.
In questa attività creerai un router Cloud e un'istanza NAT che consentirà la connettività internet alle istanze VM.
Crea router Cloud
Da Cloud Shell
gcloud compute routers create crnat --network hybrid-network-lb --region us-west1
Crea Cloud NAT
Da Cloud Shell
gcloud compute routers nats create cloudnat --router=crnat --auto-allocate-nat-external-ips --nat-all-subnet-ip-ranges --enable-logging --region us-west1
4. crea due istanze VM
In questa attività creerai due istanze VM che eseguono Apache. Più avanti nel lab, queste istanze VM diventeranno un gruppo di endpoint di rete (NEG).
Da Cloud Shell crea la prima istanza on-prem, on-prem-neg-1
gcloud compute instances create on-prem-neg-1 \ --zone=us-west1-a \ --tags=allow-health-check \ --image-family=debian-9 \ --image-project=debian-cloud \ --subnet=network-endpoint-group-subnet --no-address \ --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://169.254.169.254/computeMetadata/v1/instance/name)" filter="{print \$NF}" vm_zone="$(curl -H "Metadata-Flavor:Google" \ http://169.254.169.254/computeMetadata/v1/instance/zone \ | awk -F/ "${filter}")" echo "Page on $vm_hostname in $vm_zone" | \ tee /var/www/html/index.html systemctl restart apache2'
Da Cloud Shell crea la prima istanza on-prem, on-prem-neg-2
gcloud compute instances create on-prem-neg-2 \ --zone=us-west1-a \ --tags=allow-health-check \ --image-family=debian-9 \ --image-project=debian-cloud \ --subnet=network-endpoint-group-subnet --no-address \ --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://169.254.169.254/computeMetadata/v1/instance/name)" filter="{print \$NF}" vm_zone="$(curl -H "Metadata-Flavor:Google" \ http://169.254.169.254/computeMetadata/v1/instance/zone \ | awk -F/ "${filter}")" echo "Page on $vm_hostname in $vm_zone" | \ tee /var/www/html/index.html systemctl restart apache2'
5. Crea un NEG contenente il tuo endpoint on-premise
Innanzitutto, crea un NEG denominato on-prem-neg-1 e on-prem-neg-2. È inoltre possibile specificare che il bilanciatore del carico deve considerare che, ai fini del routing e del bilanciamento del carico, questi endpoint si trovano nella zona Google Cloud us-west1-a. Consigliamo che la zona configurata corrisponda a qualsiasi zona associata alla regione del collegamento di interconnessione/gateway VPN per le misurazioni del bilanciamento del carico basato sulla prossimità utilizzate per il bilanciamento del carico.
Da Cloud Shell crea on-prem-neg-1
gcloud compute network-endpoint-groups create on-prem-neg-1 \ --network-endpoint-type NON_GCP_PRIVATE_IP_PORT \ --zone "us-west1-a" \ --network hybrid-network-lb
Da Cloud Shell crea on-prem-neg-2
gcloud compute network-endpoint-groups create on-prem-neg-2 \ --network-endpoint-type NON_GCP_PRIVATE_IP_PORT \ --zone "us-west1-a" \ --network hybrid-network-lb
Nel codelab, il gruppo di endpoint di rete è un'istanza GCE che esegue Apache in Google Cloud. In alternativa, puoi specificare un endpoint on-premise o internet come endpoint di rete
Da Cloud Shell, identifica gli indirizzi IP GCE
gcloud compute instances list | grep -i on-prem
Associare il gruppo di endpoint di rete all'indirizzo IP dell'istanza GCE precedentemente identificato nel passaggio precedente. per ogni negativo, on-prem-neg-1 & on-prem-neg-2.
Da Cloud Shell, associa on-prem-neg-1, aggiorna x.x.x.x con l'IP identificato
gcloud compute network-endpoint-groups update on-prem-neg-1 \ --zone="us-west1-a" \ --add-endpoint="ip=x.x.x.x,port=80"
Da Cloud Shell, associa on-prem-neg-2, aggiorna x.x.x.x con l'IP identificato
gcloud compute network-endpoint-groups update on-prem-neg-2 \ --zone="us-west1-a" \ --add-endpoint="ip=x.x.x.x,port=80"
6. Crea il controllo di integrità http, il servizio di backend e firewall
In questo passaggio creerai un servizio di backend globale denominato on-prem-backend-service. Questo servizio di backend definisce il modo in cui il piano dati invierà il traffico al NEG.
Innanzitutto, crea un controllo di integrità denominato on-prem-health-check per monitorare l'integrità di tutti gli endpoint che appartengono a questo NEG (ovvero il tuo endpoint on-premise).
Da Cloud Shell
gcloud compute health-checks create http on-prem-health-check
Creare un servizio di backend chiamato on-prem-backend-service e associarlo al controllo di integrità.
Da Cloud Shell
gcloud compute backend-services create on-prem-backend-service \ --global \ --load-balancing-scheme=EXTERNAL \ --health-checks on-prem-health-check
il bilanciatore del carico e il backend HTTP(S) esterni eseguono controlli di integrità provenienti dalle subnet 35.191.0.0/16 e 130.211.0.0/22; pertanto è necessaria una regola firewall per consentire al bilanciatore del carico di eseguire il routing del backend.
Da Cloud Shell
gcloud compute firewall-rules create fw-allow-health-check \ --network=hybrid-network-lb \ --action=allow \ --direction=ingress \ --source-ranges=130.211.0.0/22,35.191.0.0/16 \ --target-tags=allow-health-check \ --rules=tcp:80
7. Associa il NEG e il servizio di backend
Aggiungi il NEG on-prem-neg-1 a questo servizio di backend
Da Cloud Shell
gcloud compute backend-services add-backend on-prem-backend-service \ --global \ --network-endpoint-group on-prem-neg-1 \ --network-endpoint-group-zone us-west1-a \ --balancing-mode RATE \ --max-rate-per-endpoint 5
Aggiungi il NEG on-prem-neg-2 a questo servizio di backend
Da Cloud Shell
gcloud compute backend-services add-backend on-prem-backend-service \ --global \ --network-endpoint-group on-prem-neg-2 \ --network-endpoint-group-zone us-west1-a \ --balancing-mode RATE \ --max-rate-per-endpoint 5
Prenotare un indirizzo IP statico IPv4 usato per accedere al tuo endpoint di rete
Da Cloud Shell
gcloud compute addresses create hybrid-lb-ip --project=$projectid --global
Abbiamo terminato la configurazione dell'interfaccia a riga di comando. Completiamo la configurazione dalla console Cloud.
8. crea il bilanciatore del carico HTTP esterno e associare il servizio di backend
Dalla console Cloud, vai a Bilanciamento del carico e seleziona Crea bilanciatore del carico
Identifica il bilanciamento del carico HTTP(S) e fai clic su "Avvia configurazione"
Seleziona "Da internet alle mie VM". nello screenshot seguente che consente l'accesso pubblico alla VM
Fornisci "xlb" come nome del bilanciatore del carico e seleziona il servizio di backend creato in precedenza "on-prem-backend-service" poi "ok" secondo lo screenshot fornito
Seleziona Configurazione frontend e aggiorna il nome "xlb-fe" e seleziona l'indirizzo IPv4 statico creato in precedenza, assicurati di eseguire il mirroring dello screenshot fornito
Seleziona "Esamina e finalizza" successivamente per abbinare lo screenshot fornito e selezionare Crea
Convalida dell'integrità del backend
Dalla console Cloud, assicurati che il backend "xlb" sia integro, verde come nello screenshot fornito
9. Verifica che il NEG sia raggiungibile da internet
Ricorda che l'indirizzo IP statico esterno utilizzato durante la creazione del bilanciatore del carico è ora l'IP frontend degli endpoint di rete. Eseguiamo una convalida dell'indirizzo IP prima di eseguire il test finale.
Da Cloud Shell
gcloud compute forwarding-rules describe xlb-fe --global | grep -i IPAddress:
Output (il tuo indirizzo IP sarà diverso)
Output da Cloudshell
$ gcloud compute forwarding-rules describe xlb-fe --global | grep -i IPAddress: IPAddress: 34.96.103.132
Utilizzando l'indirizzo IP frontend del bilanciatore del carico globale, puoi accedere al backend dell'endpoint di rete. Tieni presente che, nel codelab, l'endpoint è un'istanza GCE, ma lo useresti, ad esempio, con gli endpoint on-premise.
Dalla tua workstation locale, avvia un terminale ed esegui un comando curl verso l'indirizzo IP del bilanciatore del carico
Dalla tua workstation esegui un comando curl sull'indirizzo IP del frontend. Osserva 200 OK e i dettagli della pagina costituiti dal nome e dalla regione dell'istanza neg.
myworkstation$ curl -v 34.96.103.132
* Trying 34.96.103.132...
* TCP_NODELAY set
* Connected to 34.96.103.132 (34.96.103.132) port 80 (#0)
> GET / HTTP/1.1
> Host: 34.96.103.132
> User-Agent: curl/7.64.1
> Accept: */*
>
< HTTP/1.1 200 OK
< Date: Tue, 10 Aug 2021 01:21:54 GMT
< Server: Apache/2.4.25 (Debian)
< Last-Modified: Tue, 10 Aug 2021 00:35:41 GMT
< ETag: "24-5c929ae7384f4"
< Accept-Ranges: bytes
< Content-Length: 36
< Content-Type: text/html
< Via: 1.1 google
<
Page on on-prem-neg-2 in us-west1-a
* Connection #0 to host 34.96.103.132 left intact
* Closing connection 0
Complimenti, hai eseguito correttamente il deployment di un bilanciatore del carico ibrido L7 con NEG
Complimenti per aver completato il codelab.
Argomenti trattati
- Crea un VPC personalizzato
- Creare due macchine virtuali (VM) utilizzate come gruppo di endpoint di rete (NEG)
- Crea un bilanciatore del carico ibrido, un servizio di backend e i controlli di integrità associati
- Crea una regola firewall che consenta l'accesso al bilanciatore del carico
- Convalida della connettività del gruppo di endpoint di rete
10. Passaggi per la pulizia
Dall'interfaccia utente della console Cloud, identifica e seleziona "xlb" bilanciatore del carico e seleziona Elimina tramite Servizi di rete → Bilanciamento del carico. Una volta selezionato, seleziona "On-premise-backend service" & ‘on-premise-health-check' quindi seleziona Elimina
Dall'interfaccia utente della console Cloud, vai a Compute Engine → Gruppi di endpoint di rete. Una volta selezionato, seleziona "on-prem-neg-1". & ‘on-prem-neg-2' quindi seleziona Elimina
Elimina i componenti del lab di Cloud Shell
gcloud compute routers nats delete cloudnat --router=crnat --region us-west1 --quiet gcloud compute routers delete crnat --region us-west1 --quiet gcloud compute instances delete on-prem-neg-1 --zone=us-west1-a --quiet gcloud compute instances delete on-prem-neg-2 --zone=us-west1-a --quiet gcloud compute firewall-rules delete fw-allow-health-check --quiet gcloud compute networks subnets delete network-endpoint-group-subnet --region=us-west1 --quiet gcloud compute networks delete hybrid-network-lb --quiet gcloud compute addresses delete hybrid-lb-ip --global --quiet