Questo tutorial descrive come utilizzare un bilanciatore del carico delle applicazioni esterno per distribuire il traffico Server web Microsoft Internet Information Services (IIS) in esecuzione su VM di Compute Engine di cui è stato eseguito il provisioning in regioni diverse.
Obiettivo
Questo tutorial mostra come bilanciare il carico del traffico per il sito www.example.com
e assicurati che:
- Le richieste in entrata vengono instradate alla regione più vicina.
- Se un'istanza si arresta o raggiunge la sua capacità, il bilanciatore del carico instrada ad altre istanze adattabili nella stessa regione o in una regione diversa.
La configurazione di questo scenario utilizza un bilanciatore del carico delle applicazioni esterno accetta le richieste tramite un singolo indirizzo IP globale. Questo L'indirizzo IP può instradare ogni richiesta in entrata tramite connessione HTTP o HTTPS. Per le richieste HTTPS, il bilanciatore del carico implementa la crittografia SSL/TLS tra il client che invia il messaggio richiesta e il bilanciatore del carico.
Il seguente diagramma mostra l'architettura del bilanciatore del carico:
Tieni presente che il bilanciatore del carico include diversi componenti per ottenere Configurabilità. Per una descrizione delle funzioni di ciascun componente, consulta Panoramica del bilanciatore del carico delle applicazioni esterno
Questo tutorial mostra come completare le attività seguenti per raggiungere il tuo obiettivo:
- Configura le istanze di backend.
- Crea e configura il servizio di bilanciamento del carico.
- Inviare il traffico ai backend.
- Limita l'accesso ai backend.
- Simula un'interruzione.
Costi
In questo documento utilizzi i seguenti componenti fatturabili di Google Cloud:
- Compute Engine virtual machine (VM) instances
- Compute Engine persistent disks
- Optional: Google-managed SSL certificate
- Windows Server 2016 machine images
Per generare una stima dei costi basata sull'utilizzo previsto,
utilizza il Calcolatore prezzi.
Al termine delle attività descritte in questo documento, puoi evitare la fatturazione continua eliminando le risorse che hai creato. Per ulteriori informazioni, consulta la sezione Pulizia.
Prima di iniziare
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Compute Engine, BigQuery, and Cloud Firestore APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Compute Engine, BigQuery, and Cloud Firestore APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
- Installa un client RDP (Remote Desktop Protocol). Per ulteriori informazioni, vedi Client Microsoft Remote Desktop Se hai già installato un client RDP, puoi saltare questa attività.
- Decidi le zone e le regioni in cui vuoi eseguire il provisioning delle risorse. Il diagramma dell'architettura mostra le risorse di cui è stato eseguito il deployment nelle diverse zone nelle regioni degli Stati Uniti e dell'UE. Questa informazione sarà utilizzata solo come riferimento. Puoi eseguire il deployment in qualsiasi regione o zona di tua scelta.
- (Facoltativo) Leggi e comprendi la panoramica sul bilanciatore del carico delle applicazioni esterno.
Configura le istanze di backend
In questa sezione, creerai due servizi di backend in regioni diverse. Ogni servizio di backend include due istanze di backend, ognuna con un server web Microsoft IIS su Windows Server 2016. Da evitare configurazione manuale e laboriosa di ogni server, da un'istanza del server, quindi usa questa immagine per creare con altre istanze del server.
Crea e configura un'istanza Compute Engine
Per creare l'istanza da utilizzare come immagine di origine:
Da Google Cloud Marketplace, avvia un'istanza di Windows Server 2016 in esecuzione Microsoft IIS su Compute Engine in una zona a tua scelta e configura regole firewall per consentire il traffico esterno HTTP, HTTPS e RDP verso l'immagine di origine istanza:
Nella console Google Cloud, vai alla pagina di Cloud Marketplace ASP.NET Framework.
Fai clic su Launch .
Nel campo Nome deployment, inserisci src-img.
Nel campo Zona, seleziona una zona in cui vuoi eseguire il deployment dell'immagine.
Nel campo Versione sistema operativo Windows Server, seleziona 2016.
Nella sezione Networking - Firewall, seleziona solo le seguenti opzioni:
- Consenti traffico HTTP
- Consenti traffico HTTPS
- Consenti traffico RDP
Accetta i Termini di servizio e fai clic su Esegui il deployment.
Attendi il completamento della creazione dell'istanza Compute Engine.
Configura l'istanza dell'immagine di origine
Per configurare la nuova istanza dell'immagine di origine, crea un nuovo utente Windows nella dell'immagine di origine e stabilire una connessione RDP:
Nella console Google Cloud, vai alla pagina Istanze VM.
Fai clic sul nome dell'istanza dell'immagine di origine (
src-img
).Fai clic su Imposta password di Windows.
Nella finestra di dialogo Imposta nuova password di Windows, aggiungi il tuo nome utente e fai clic su Imposta per creare l'account utente nell'istanza.
Copia la password fornita e chiudi la finestra di dialogo.
Fai clic sull'elenco a discesa RDP e seleziona l'opzione Scarica il file RDP per scaricare il file RDP per l'istanza. Utilizza questo file per collegarti utilizzando un client RDP. Per ulteriori informazioni, consulta l'articolo sui client di Microsoft Remote Desktop.
Dopo aver stabilito una connessione RDP con l'istanza dell'immagine di origine, aggiungi una home page predefinita nella directory web predefinita di IIS:
Nell'istanza dell'immagine di origine, apri PowerShell come amministratore.
Crea una nuova home page nella directory web IIS predefinita
C:\inetpub\wwwroot
:Echo '<!doctype html><html><body><h1>Hello World!</h1></body></html>' > C:\inetpub\wwwroot\index.html
Verifica che l'istanza dell'immagine di origine possa pubblicare contenuti
Nella console Google Cloud, vai alla pagina Istanze VM.
Fai clic sull'indirizzo IP esterno dell'istanza per verificare che sia pubblicato alla home page creata in precedenza.
Crea un'immagine Windows Server 2016 riutilizzabile dall'istanza dell'immagine di origine
Dopo aver verificato che l'istanza dell'immagine di origine sia configurata correttamente ed essere in grado di pubblicare contenuti, crea un'immagine disco riutilizzabile dal database disco permanente radice:
- Nell'istanza dell'immagine di origine, apri PowerShell come amministratore.
Esegui questo comando per preparare il sistema clonazione:
GCESysprep
Al completamento dell'operazione
GCESysprep
, viene eseguita automaticamente la disconnessione dalla sessione RDP.Sul computer locale, esegui questo comando per eliminare l'origine all'istanza pur conservando il disco permanente radice:
gcloud compute instances delete src-img \ --keep-disks=boot \ --zone=INSTANCE_ZONE
Sostituisci
INSTANCE_ZONE
con la zona dell'origine in esecuzione in un'istanza Compute Engine.Dopo aver eliminato l'istanza, crea una nuova immagine dal disco permanente radice che hai conservato:
gcloud compute images create win-be-img \ --source-disk=src-img \ --source-disk-zone=IMAGE_ZONE
Sostituisci
IMAGE_ZONE
con la zona che vuoi per creare l'immagine di origine.
Creare un modello di istanza utilizzando l'immagine di origine
Utilizza l'immagine del disco del server Windows configurato come immagine di origine per un modello di istanza. In un secondo momento, configurerai due gruppi di istanze gestite per utilizzare questo modello per le nuove istanze.
Sulla macchina locale, esegui questo comando per creare un modello di istanza
che utilizza win-be-img
come immagine di origine e rdp-tag
e www-tag
come
tag istanza:
gcloud compute instance-templates create win-be-tmpl \ --tags=rdp-tag,www-tag \ --image=win-be-img
Crea un gruppo di istanze gestite per ogni regione
In ogni regione, crea gruppi di istanze gestite. Dopo aver creato ogni gruppo di istanze, il gruppo si compila automaticamente con due in base al modello di istanza definito in precedenza. In seguito, configurerai il bilanciatore del carico in modo che tratti questi gruppi di istanze come target di backend.
Per creare i tuoi gruppi di istanze gestite:
Sulla tua macchina locale, esegui questo comando per creare un nuovo gruppo di istanze gestite nella zona in cui hai creato l'immagine la compila automaticamente con due istanze identiche:
gcloud compute instance-groups managed create MANAGED_INSTANCE_GROUP_NAME_1 \ --base-instance-name=BASE_INSTANCE_NAME_1 \ --size=2 \ --zone=ZONE_1 \ --template=win-be-tmpl
Sostituisci quanto segue:
MANAGED_INSTANCE_GROUP_NAME_1
: il nome della tua istanza gestitaBASE_INSTANCE_NAME_1
: il nome dell'istanza di baseZONE_1
: la zona in cui vuoi eseguire il deployment dell'istanza gestita
Crea un gruppo di istanze gestite nella seconda zona:
gcloud compute instance-groups managed create MANAGED_INSTANCE_GROUP_NAME_2 \ --base-instance-name=BASE_INSTANCE_NAME_2 \ --size=2 \ --zone=ZONE_2 \ --template=win-be-tmpl
Sostituisci quanto segue:
MANAGED_INSTANCE_GROUP_NAME_2
: il nome dell'istanza gestitaBASE_INSTANCE_NAME_2
: il nome dell'istanza di baseZONE_2
: la zona in cui vuoi eseguire il deployment dell'istanza gestita
Verifica che le istanze di backend siano in esecuzione
Nella console Google Cloud, vai alla pagina Istanze VM.
Fai clic sull'indirizzo IP esterno di ciascun backend per verificare che sia in uso alla home page creata in precedenza.
Crea e configura il servizio di bilanciamento del carico
Il servizio di bilanciamento del carico di Compute Engine include diversi componenti. In questa sezione, creerai questi componenti e per collegarli tra loro.
Sul computer locale, esegui questo comando per creare un nuovo controllo di integrità. Il bilanciatore del carico utilizza questo controllo per verificare la reattività delle tue istanze di backend:
gcloud compute http-health-checks create basic-check
Crea un servizio di backend:
gcloud compute backend-services create BACKEND_SERVICE_NAME \ --protocol=HTTP \ --http-health-checks=basic-check \ --global
Sostituisci
BACKEND_SERVICE_NAME
con un nome per il servizio di backend.Aggiungi i tuoi gruppi di istanze come destinazioni di backend per il tuo servizio di backend:
gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \ --instance-group=MANAGED_INSTANCE_GROUP_NAME_1 \ --instance-group-zone=ZONE_1 gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \ --instance-group=MANAGED_INSTANCE_GROUP_NAME_2 \ --instance-group-zone=ZONE_2
Crea una mappa URL predefinita che indirizzi tutte le richieste in entrata a tutte le tue istanze:
gcloud compute url-maps create lb-map \ --default-service=BACKEND_SERVICE_NAME
Crea una risorsa del certificato SSL. Il bilanciatore del carico utilizza questo risorsa per criptare e decriptare il traffico.
Se disponi già di una chiave privata e di un certificato SSL da un autorità di certificazione, puoi utilizzarle per creare un nuovo
SSLCertificate
della risorsa esistente eseguendo questo comando. Altrimenti, puoi creare e utilizzare un Certificato SSL gestito da Google o certificato autofirmato per i test. Per ulteriori informazioni, vedi Certificati SSL.Esegui questo comando per creare la risorsa del certificato SSL:
gcloud compute ssl-certificates create www-cert \ --certificate CRT_FILE_PATH \ --private-key KEY_FILE_PATH
Sostituisci quanto segue:
CRT_FILE_PATH
: il file locale del tuo certificato percorsoKEY_FILE_PATH
: percorso file della tua chiave privata
Crea proxy HTTP e HTTPS di destinazione per instradare le richieste alla mappa di URL. Il proxy è la parte del bilanciatore del carico che contiene il certificato SSL per il bilanciamento del carico HTTPS, quindi devi caricare anche il tuo certificato in questo passaggio:
gcloud compute target-http-proxies create http-lb-proxy \ --url-map=lb-map gcloud compute target-https-proxies create https-lb-proxy \ --url-map lb-map \ --ssl-certificate SSL_CERT
Sostituisci SSL_CERT in base a quanto segue:
- Se hai creato una risorsa SSLCertificate con il tuo certificato SSL e
chiave privata, quindi sostituisci
SSL_CERT
con www-cert. - Se utilizzi un protocollo SSL gestito da Google o autofirmato
quindi sostituisci
SSL_CERT
con il nome del tuo certificato.
- Se hai creato una risorsa SSLCertificate con il tuo certificato SSL e
chiave privata, quindi sostituisci
Affinché il bilanciatore del carico riceva il traffico in modo affidabile, devi assegnare un da un indirizzo IP statico globale alla regola di forwarding globale del bilanciatore del carico.
Per creare una risorsa di indirizzo IP statico globale, esegui questo comando:
gcloud compute addresses create lb-ip \ --global \ --network-tier=PREMIUM
Prendi nota dell'indirizzo IP.
Creare due regole di forwarding globali per gestire i protocolli HTTP e HTTPS in entrata richieste. Ogni regola di forwarding invia il traffico a uno dei che hai creato a seconda dell'indirizzo IP, del protocollo IP e la porta specificata.
-
Per un bilanciatore del carico delle applicazioni esterno globale, utilizza il
comando gcloud CLI con
load-balancing-scheme=EXTERNAL_MANAGED
. Questo impostazione offre traffico avanzato funzionalità di gestione dei dati. - Per un bilanciatore del carico delle applicazioni classico, utilizza
load-balancing-scheme=EXTERNAL
.
gcloud compute forwarding-rules create http-fwd-rule \ --load-balancing-scheme=LOAD_BALANCING_SCHEME \ --network-tier=PREMIUM \ --address=lb-ip \ --global \ --target-http-proxy=http-lb-proxy \ --ports=80 gcloud compute forwarding-rules create https-fwd-rule \ --load-balancing-scheme=LOAD_BALANCING_SCHEME \ --network-tier=PREMIUM \ --address=lb-ip \ --global \ --target-https-proxy=https-lb-proxy \ --ports=443
-
Per un bilanciatore del carico delle applicazioni esterno globale, utilizza il
comando gcloud CLI con
Dopo aver creato le regole di forwarding globali, potrebbero essere necessari diversi minuti per propagare la configurazione. Per verificare l'avanzamento del della propagazione, puoi monitorare la configurazione Console Google Cloud oppure esegui il comando seguente sulla macchina locale:
gcloud compute backend-services get-health BACKEND_SERVICE_NAME
Invia il traffico ai backend
Ora che hai configurato il servizio di bilanciamento del carico, puoi iniziare a inviare il traffico verso la regola di forwarding e osservare la distribuzione del traffico su di Compute Engine.
Invia il traffico ai tuoi backend nel seguente modo:
Nella console Google Cloud, vai alla pagina Bilanciamento del carico.
Seleziona la scheda Frontend.
Per visualizzare la tua home page predefinita, fai clic sugli indirizzi IP nella Colonna Indirizzo.
Limita l'accesso ai backend
Dopo aver verificato che tutto funzioni come previsto, modifica le regole del firewall in modo che il traffico HTTP o HTTPS possa provenire servizio di bilanciamento:
Nella console Google Cloud, vai alla pagina Firewall.
Fai clic sul nome della regola firewall che consente l'accesso esterno alla porta
tcp:80
.Fai clic su Modifica per modificare la regola firewall.
Nel campo Intervalli IPv4 di origine, rimuovi il valore
0.0.0.0/0
e inserisci 130.211.0.0/22. Questo limita gli IP di origine consentiti della regola firewall all'intervallo130.211.0.0/22
, che è l'intervallo IP del controllo di integrità del bilanciamento del carico HTTPS.Fai clic su Salva.
Nella console Google Cloud, vai alla pagina Istanze VM.
Fai clic sull'indirizzo IP esterno di ogni istanza per verificare che al momento non sia più accessibile.
Simulare un'interruzione del servizio
Per vedere come viene bilanciato un carico tra le istanze adattabili, puoi simulare un per una o più istanze in una regione.
Per impedire a un'istanza di ricevere richieste aggiuntive:
- Stabilisci una connessione RDP all'istanza.
- Nell'istanza, apri PowerShell come amministratore.
Esegui questo comando per creare una nuova regola firewall sul in esecuzione in un'istanza Compute Engine. Questo comando blocca il traffico del controllo di integrità controllo di integrità e impedisce a tutte le nuove connessioni HTTP il bilanciatore del carico più alto all'istanza:
netsh advfirewall firewall add rule name="Outage Test" protocol=tcp dir=in localport=80 action=block remoteip=130.211.0.0/22
Sul computer locale, esegui questo comando per verificare che L'istanza ora segnala lo stato
UNHEALTHY
:gcloud compute backend-services get-health BACKEND_SERVICE_NAME
Dopo che l'istanza inizia a segnalare lo stato
UNHEALTHY
, invia una richiesta al bilanciatore del carico. Solo le istanze adattabili dovrebbero rispondere.Dopo aver simulato un'interruzione del servizio, puoi ripristinare la connettività dell'istanza eliminando la regola firewall. Dopo l'apertura PowerShell come amministratore dell'istanza che non risponde, esegui il questo comando per eliminare la regola:
netsh advfirewall firewall delete rule name="Outage Test"
Esegui la pulizia
Al termine del tutorial, puoi eseguire la pulizia delle risorse che hai creato in modo che smettono di usare la quota e comportano addebiti. Le seguenti sezioni descrivono come eliminare o disattivare queste risorse.
Elimina il progetto
Il modo più semplice per eliminare la fatturazione è quello di eliminare il progetto che hai creato per il tutorial.
Delete a Google Cloud project:
gcloud projects delete PROJECT_ID
Elimina singole risorse
Dovrai eliminare singolarmente tutte le risorse create per il progetto (immagini, modelli di istanza, gruppi di istanze, controlli di integrità, servizi di backend, mappa URL, proxy http, indirizzi, regole di forwarding). Non puoi eliminare la VM di Compute Engine fino a quando non esegui questi comandi.
Esegui questi comandi sulla macchina locale per eliminare le risorse create per il tutorial:
- Elimina le regole di forwarding HTTP/S:
gcloud compute forwarding-rules delete https-fwd-rule --global
gcloud compute forwarding-rules delete http-fwd-rule --global
- Elimina l'indirizzo IP statico globale:
gcloud compute addresses delete lb-ip --global
- Elimina i proxy HTTP/S:
gcloud compute target-https-proxies delete https-lb-proxy
gcloud compute target-http-proxies delete http-lb-proxy
- Elimina il certificato SSL:
gcloud compute ssl-certificates delete SSL_CERT
- Elimina la mappa URL:
gcloud compute url-maps delete lb-map
- Elimina il servizio di backend:
gcloud compute backend-services delete BACKEND_SERVICE_NAME --global
- Elimina il controllo di integrità HTTP:
gcloud compute http-health-checks delete basic-check
- Elimina i gruppi di istanze gestite:
gcloud compute instance-groups managed delete MANAGED_INSTANCE_GROUP_NAME_1 --zone=ZONE_1
gcloud compute instance-groups managed delete MANAGED_INSTANCE_GROUP_NAME_2 --zone=ZONE_2
- Elimina il modello di istanza:
gcloud compute instance-templates delete win-be-tmpl
-
Elimina l'immagine:
gcloud compute images delete IMAGE_NAME
-
Elimina il disco:
gcloud compute disks delete DISK_NAME
Passaggi successivi
- Scopri il tutorial sul deployment dei server web IIS con bilanciamento del carico.
- Leggi le best practice nel Framework dell'architettura Google Cloud.
- Esplora architetture di riferimento, diagrammi e best practice su Google Cloud. Consulta il nostro Cloud Architecture Center.