Neste tutorial, descrevemos como implantar um aplicativo da Web do .NET Framework no Compute Engine.
Este tutorial é destinado a desenvolvedores e engenheiros de DevOps que têm conhecimento básico do Microsoft .NET e do Compute Engine.
Objetivos
Implante um aplicativo da Web ASP.NET Model-View-Controller (MVC) que use o .NET Framework 4 e seja executado no Windows em uma única instância do Compute Engine.
Neste tutorial, mostramos como concluir as seguintes tarefas para alcançar seu objetivo:
- Implantar uma VM do Compute Engine
- Configure o balanceamento de carga.
- Implantar o aplicativo ASP.NET
Custos
Neste documento, você usará os seguintes componentes faturáveis do Google Cloud:
Para gerar uma estimativa de custo baseada na projeção de uso deste tutorial, use a calculadora de preços.
Ao concluir as tarefas descritas neste documento, é possível evitar o faturamento contínuo excluindo os recursos criados. Saiba mais em Limpeza.
Antes de começar
- 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 API.
-
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 API.
Implantar uma VM do Compute Engine
Nesta seção, você verá como criar uma VM do Linux ou uma VM do Windows Server que executa servidores da Web dos Serviços de Informações da Internet (IIS, na sigla em inglês) da Microsoft no Compute Engine.
Defina valores padrão para o ID do projeto e a zona do Compute Engine. Isso ajuda a economizar tempo.
gcloud config set project PROJECT_ID gcloud config set compute/zone ZONE
Substitua:
PROJECT_ID
pelo ID do seu projeto do Google Cloud.ZONE
pelo nome da zona que você usará para criar recursos. Se não tiver certeza sobre qual zona escolher, use a zona geograficamente localizada mais próxima de você.
Exemplo:
gcloud config set project test-project-12345 gcloud config set compute/zone us-central1-a
Crie uma instância de VM:
Para criar uma VM do Windows Server que execute o IIS, faça o seguinte:
Crie um script de inicialização para a instância de VM. Este script será executado durante a inicialização da VM e instalará o 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
Crie a instância de VM e execute o script de inicialização
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
Monitore o processo de inicialização da VM visualizando a saída da porta serial:
gcloud compute instances tail-serial-port-output clouddemo-1
Aguarde cerca de cinco minutos até ver a saída
Instance setup finished
ouStartup finished
e pressione Ctrl+C. Neste momento, a instalação dos pré-requisitos está concluída e a instância de VM está pronta para ser usada.
Configure o balanceamento de carga.
Para disponibilizar seu aplicativo ASP.NET pela Internet, você precisa usar um balanceador de carga HTTPS. Para associar a instância de VM ao balanceador de carga, crie um grupo de instâncias e atribua-o ao balanceador de carga:
Crie um grupo de instâncias não gerenciadas e adicione a instância de VM:
gcloud compute instance-groups unmanaged create clouddemo-1 gcloud compute instance-groups unmanaged add-instances clouddemo-1 --instances clouddemo-1
Crie uma verificação de integridade para saber se o servidor da Web está em execução:
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
Crie um serviço de back-end do balanceador de carga que use a verificação de integridade HTTP e o grupo de instâncias criado anteriormente:
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)
Crie um front-end para o balanceador de carga:
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
Crie uma regra de firewall que permita que o balanceador de carga envie solicitações HTTP para instâncias que foram anotadas com a 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
Pesquise o endereço IP do balanceador de carga:
gcloud compute forwarding-rules describe clouddemo-frontend --global --format "value(IPAddress)"
Anote o endereço IP. Você precisará dessas informações posteriormente.
Implantar o aplicativo ASP.NET
Abra um console do PowerShell.
Faça o download e descompacte o zip (em inglês) ou clone o repositório de amostra do GitHub:
git clone https://github.com/GoogleCloudPlatform/dotnet-docs-samples.git
Crie o pacote de implantação:
Alterne para o diretório que contém o aplicativo de amostra:
cd dotnet-docs-samples\applications\clouddemo\net4
Restaurar dependências do NuGet:
nuget restore
Crie a solução e use o perfil de publicação
PackageProfile
para criar um pacote de implantação do WebDeploy:msbuild /t:clean,rebuild CloudDemo.Mvc.sln /p:DeployOnBuild=true /p:PublishProfile=PackageProfile
A pasta
CloudDemo.Mvc\bin
agora contém um arquivoCloudDemo.Mvc.zip
.
Copie o pacote de implantação para a VM:
- Crie um nome de usuário e uma senha para a instância de VM.
- Conecte-se à VM usando a Área de trabalho remota e faça login usando o nome de usuário e a senha criados na etapa anterior.
- Copie o arquivo
CloudDemo.Mvc.zip
da pastaCloudDemo.Mvc\bin
para um local temporário na instância de VM. - Na sessão da Área de trabalho remota, clique com o botão direito do mouse no botão Iniciar (ou pressione Win+X) e clique em Windows PowerShell (administrador).
- Confirme a elevação do prompt clicando em Sim.
Implante o pacote de implantação:
&"C:\Program Files\IIS\Microsoft Web Deploy V3\msdeploy.exe" -source:package=
PACKAGE
-verb:sync -dest:autoSubstitua
PACKAGE
pelo caminho para o pacote de implantação.
No computador local, abra um navegador da Web e navegue até o seguinte endereço:
http://
LOADBALANCER_IP
/Substitua
LOADBALANCER_IP
pelo endereço IP que você recebeu depois de implantar o balanceador de carga.Agora você verá o aplicativo de demonstração e o título This app is running on Compute Engine.
Limpeza
Depois de concluir o tutorial, você pode limpar os recursos que criou para que eles parem de usar a cota e gerar cobranças. Nas seções a seguir, descrevemos como excluir ou desativar esses recursos.
Excluir o projeto
O jeito mais fácil de evitar cobranças é excluindo o projeto que você criou para este tutorial.
Delete a Google Cloud project:
gcloud projects delete PROJECT_ID
Excluir recursos individuais
Você precisará excluir individualmente todos os recursos criados para o projeto (por exemplo: grupos de instâncias, verificações de integridade, serviços de back-end, proxy http e regras de encaminhamento). Não é possível excluir as instâncias de VM até que todos esses recursos sejam excluídos.
A seguir
- Saiba mais sobre como criar e executar máquinas virtuais na infraestrutura do Google.
- Analise as práticas recomendadas no Framework de arquitetura do Google Cloud.
- Confira arquiteturas de referência, diagramas, tutoriais e práticas recomendadas do Google Cloud. Confira o Centro de arquitetura do Cloud.