Questo tutorial descrive come eseguire il deployment di un'applicazione web .NET Framework in Compute Engine.
Questo tutorial è destinato agli sviluppatori e agli ingegneri DevOps che hanno una conoscenza di base di Microsoft .NET e Compute Engine.
Obiettivi
Esegui il deployment di un'applicazione web ASP.NET Model-View-Controller (MVC) che utilizza .NET Framework 4 ed viene eseguita su Windows in una singola istanza di Compute Engine.
Questo tutorial mostra come completare le attività seguenti per raggiungere il tuo obiettivo:
- Esegui il deployment di una VM Compute Engine
- Configurazione del bilanciamento del carico
- Esegui il deployment dell'applicazione ASP.NET
Costi
In questo documento vengono utilizzati i seguenti componenti fatturabili di Google Cloud:
Per generare una stima dei costi in base all'utilizzo previsto,
utilizza il Calcolatore prezzi.
Una volta completate le attività descritte in questo documento, puoi evitare la fatturazione continua eliminando le risorse che hai creato. Per ulteriori informazioni, consulta la pagina Pulizia.
Prima di iniziare
- Accedi al tuo account Google Cloud. Se non conosci Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $di crediti gratuiti per l'esecuzione, il test e il deployment dei carichi di lavoro.
-
Nella pagina del selettore di progetti della console Google Cloud, seleziona o crea un progetto Google Cloud.
-
Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.
-
Attiva l'API Compute Engine.
-
Nella pagina del selettore di progetti della console Google Cloud, seleziona o crea un progetto Google Cloud.
-
Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.
-
Attiva l'API Compute Engine.
Esegui il deployment di una VM Compute Engine
Questa sezione mostra come creare una VM Linux o una VM Windows Server che esegue i server web Microsoft Internet Information Services su Compute Engine.
Imposta i valori predefiniti per l'ID progetto e la zona di Compute Engine. In questo modo risparmi tempo.
gcloud config set project PROJECT_ID gcloud config set compute/zone ZONE
Sostituisci quanto segue:
PROJECT_ID
con l'ID del tuo progetto Google Cloud.ZONE
con il nome della zona che utilizzerai per creare risorse. In caso di dubbi su quale zona scegliere, utilizza la zona geograficamente più vicina.
Ad esempio:
gcloud config set project test-project-12345 gcloud config set compute/zone us-central1-a
Crea un'istanza VM:
Per creare una VM Windows Server che esegue IIS, procedi nel seguente modo:
Crea uno script di avvio per l'istanza VM. Questo script verrà eseguito durante l'inizializzazione della VM e installerà IIS:
"# Install IIS Enable-WindowsOptionalFeature -Online -FeatureName `` NetFx4Extended-ASPNET45, `` IIS-WebServerRole, `` IIS-WebServer, `` IIS-CommonHttpFeatures, `` IIS-HttpErrors, `` IIS-HttpRedirect, `` IIS-ApplicationDevelopment, `` IIS-HealthAndDiagnostics, `` IIS-HttpLogging, `` IIS-LoggingLibraries, `` IIS-RequestMonitor, `` IIS-HttpTracing, `` IIS-Security, `` IIS-RequestFiltering, `` IIS-Performance, `` IIS-WebServerManagementTools, `` IIS-IIS6ManagementCompatibility, `` IIS-Metabase, `` IIS-DefaultDocument, `` IIS-ApplicationInit, `` IIS-NetFxExtensibility45, `` IIS-ISAPIExtensions, `` IIS-ISAPIFilter, `` IIS-ASPNET45, `` IIS-HttpCompressionStatic Install-WindowsFeature Web-Mgmt-Service # Install WebDeploy [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType] 'Ssl3,Tls12' (New-Object Net.WebClient).DownloadFile( 'https://download.microsoft.com/download/0/1/D/01DC28EA-638C-4A22-A57B-4CEF97755C6C/WebDeploy_amd64_en-US.msi', ""$env:Temp\webdeploy.msi"") & msiexec /qb! /i $env:Temp\webdeploy.msi | Out-Default " | Out-File -Encoding ASCII startup.ps1
Crea l'istanza VM ed esegui lo script di avvio
startup.ps1
:gcloud compute instances create clouddemo-1 ` --image-family windows-2019 ` --image-project windows-cloud ` --machine-type n1-standard-2 ` --boot-disk-type pd-ssd ` --tags loadbalancer-backend ` --metadata-from-file sysprep-startup-script-ps1=startup.ps1
Monitora il processo di inizializzazione della VM visualizzando l'output della porta seriale:
gcloud compute instances tail-serial-port-output clouddemo-1
Attendi circa 5 minuti finché non visualizzi l'output
Instance setup finished
oStartup finished
, quindi premi Ctrl + C. A questo punto, l'installazione dei prerequisiti è completata e l'istanza VM è pronta per essere utilizzata.
Configurazione del bilanciamento del carico
Per rendere disponibile la tua app ASP.NET su Internet, devi utilizzare un bilanciatore del carico HTTPS. Per associare l'istanza VM al bilanciatore del carico, crea un gruppo di istanze e assegna questo gruppo di istanze al bilanciatore del carico:
Crea un gruppo di istanze non gestito e aggiungi l'istanza VM:
gcloud compute instance-groups unmanaged create clouddemo-1 gcloud compute instance-groups unmanaged add-instances clouddemo-1 --instances clouddemo-1
Crea un controllo di integrità che controlli se il server web è in esecuzione:
gcloud compute http-health-checks create clouddemo-health ` --check-interval 5s ` --unhealthy-threshold 2 ` --request-path / gcloud compute instance-groups set-named-ports clouddemo-1 --named-ports=http:80
Crea un servizio di backend del bilanciatore del carico che utilizzi il controllo di integrità HTTP e il gruppo di istanze creato in precedenza:
gcloud compute backend-services create clouddemo-backend ` --http-health-checks clouddemo-health ` --port-name http ` --protocol HTTP ` --global gcloud compute backend-services add-backend clouddemo-backend ` --instance-group clouddemo-1 ` --global ` --instance-group-zone $(gcloud config get-value compute/zone)
Crea un front-end per il bilanciatore del carico:
gcloud compute url-maps create clouddemo-map --default-service clouddemo-backend gcloud compute target-http-proxies create clouddemo-proxy --url-map clouddemo-map gcloud compute forwarding-rules create clouddemo-frontend --global --target-http-proxy clouddemo-proxy --ports 80
Crea una regola firewall che consenta al bilanciatore del carico di inviare richieste HTTP a istanze annotate con il tag
loadbalancer-backend
.gcloud compute firewall-rules create loadbalancer-backend ` --source-ranges "130.211.0.0/22,35.191.0.0/16" ` --target-tags loadbalancer-backend ` --allow tcp:80,tcp:5000
Cerca l'indirizzo IP del bilanciatore del carico:
gcloud compute forwarding-rules describe clouddemo-frontend --global --format "value(IPAddress)"
Prendi nota dell'indirizzo IP. ti servirà in un secondo momento.
Esegui il deployment dell'applicazione ASP.NET
Apri una console di PowerShell.
Scarica e decomprimi o clona il repository di esempio da github:
git clone https://github.com/GoogleCloudPlatform/dotnet-docs-samples.git
Crea il pacchetto di deployment:
Passa alla directory che contiene l'applicazione di esempio:
cd dotnet-docs-samples\applications\clouddemo\net4
Ripristina le dipendenze NuGet:
nuget restore
Crea la soluzione e utilizza il profilo di pubblicazione
PackageProfile
per creare un pacchetto di deployment WebDeploy:msbuild /t:clean,rebuild CloudDemo.Mvc.sln /p:DeployOnBuild=true /p:PublishProfile=PackageProfile
La cartella
CloudDemo.Mvc\bin
ora contiene un fileCloudDemo.Mvc.zip
.
Copia il pacchetto di deployment nella VM:
- Crea un nome utente e una password per l'istanza VM.
- Connettiti alla VM utilizzando Remote Desktop e accedi utilizzando il nome utente e la password creati nel passaggio precedente.
- Copia il file
CloudDemo.Mvc.zip
dalla cartellaCloudDemo.Mvc\bin
in una posizione temporanea sull'istanza VM. - Nella sessione Remote Desktop, fai clic con il tasto destro del mouse sul pulsante Avvia (o premi Win+X) e fai clic su Windows PowerShell (Admin).
- Conferma la richiesta di elevazione facendo clic su Sì.
Esegui il deployment del pacchetto di deployment:
&"C:\Program Files\IIS\Microsoft Web Deploy V3\msdeploy.exe" -source:package=
PACKAGE
-verb:sync -dest:autoSostituisci
PACKAGE
con il percorso del pacchetto di deployment.
Sul computer locale, apri un browser web e vai al seguente indirizzo:
http://
LOADBALANCER_IP
/Sostituisci
LOADBALANCER_IP
con l'indirizzo IP ottenuto dopo il deployment del bilanciatore del carico.Ora vedi il nome dell'applicazione demo e il titolo Questa app è in esecuzione su Compute Engine.
Esegui la pulizia
Una volta completato il tutorial, puoi eseguire la pulizia delle risorse che hai creato in modo che smettano di utilizzare la quota e vengano addebitati dei costi. Le seguenti sezioni descrivono come eliminare o disattivare queste risorse.
Elimina il progetto
Il modo più semplice per eliminare la fatturazione è eliminare il progetto che hai creato per il tutorial.
Elimina un progetto Google Cloud:
gcloud projects delete PROJECT_ID
Elimina singole risorse
Dovrai eliminare singolarmente tutte le risorse create per il progetto (ad esempio, gruppi di istanze, controlli di integrità, servizi di backend, proxy http e regole di forwarding). Puoi eliminare le istanze VM solo dopo aver eliminato tutte queste risorse.
Passaggi successivi
- Scopri di più su come creare ed eseguire macchine virtuali sull'infrastruttura di Google.
- Consulta le best practice nel framework dell'architettura Google Cloud.
- Esplora architetture di riferimento, diagrammi e best practice su Google Cloud. Dai un'occhiata al nostro Centro di architettura cloud.