이 튜토리얼에서는 .NET Framework 웹 애플리케이션을 Compute Engine에 배포하는 방법을 설명합니다.
이 튜토리얼은 Microsoft .NET 및 Compute Engine에 대한 기본 지식이 있는 개발자와 DevOps 엔지니어를 대상으로 합니다.
목표
.NET Framework 4를 사용하고 Windows에서 실행되는 ASP .NET Model-View-Controller(MVC) 웹 애플리케이션을 단일 Compute Engine 인스턴스에 배포합니다.
이 튜토리얼에서는 목표를 달성하기 위해 다음 작업을 완료하는 방법을 보여줍니다.
- Compute Engine VM 배포
- 부하 분산 설정
- ASP.NET 애플리케이션 배포
비용
이 문서에서는 비용이 청구될 수 있는 다음과 같은 Google Cloud 구성요소를 사용합니다.
프로젝트 사용량을 기준으로 예상 비용을 산출하려면 가격 계산기를 사용하세요.
이 문서에 설명된 태스크를 완료했으면 만든 리소스를 삭제하여 청구가 계속되는 것을 방지할 수 있습니다. 자세한 내용은 삭제를 참조하세요.
시작하기 전에
- Google Cloud 계정에 로그인합니다. Google Cloud를 처음 사용하는 경우 계정을 만들고 Google 제품의 실제 성능을 평가해 보세요. 신규 고객에게는 워크로드를 실행, 테스트, 배포하는 데 사용할 수 있는 $300의 무료 크레딧이 제공됩니다.
-
Google Cloud Console의 프로젝트 선택기 페이지에서 Google Cloud 프로젝트를 선택하거나 만듭니다.
-
Compute Engine API 사용 설정
-
Google Cloud Console의 프로젝트 선택기 페이지에서 Google Cloud 프로젝트를 선택하거나 만듭니다.
-
Compute Engine API 사용 설정
Compute Engine VM 배포
이 섹션에서는 Linux VM 또는 Compute Engine에서 Microsoft Internet Information Services(IIS) 웹 서버를 실행하는 Windows Server VM을 만드는 방법을 보여줍니다.
프로젝트 ID 및 Compute Engine 영역의 기본값을 설정합니다. 이렇게 하면 시간을 단축할 수 있습니다.
gcloud config set project PROJECT_ID gcloud config set compute/zone ZONE
다음을 바꿉니다.
PROJECT_ID
를 Google Cloud 프로젝트의 ID로 바꿉니다.ZONE
을 리소스를 만드는 데 사용할 영역의 이름으로 바꿉니다. 어떤 영역을 선택해야 할지 잘 모르겠으면 지리적으로 가장 가까운 영역을 사용하세요.
예를 들면 다음과 같습니다.
gcloud config set project test-project-12345 gcloud config set compute/zone us-central1-a
VM 인스턴스를 만듭니다.
IIS를 실행하는 Windows Server VM을 만들려면 다음을 수행하세요.
VM 인스턴스의 시작 스크립트를 만듭니다. 이 스크립트는 VM 초기화 중에 실행되며 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
VM 인스턴스를 만들고 시작 스크립트
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
직렬 포트 출력을 확인하여 VM의 초기화 프로세스를 모니터링합니다.
gcloud compute instances tail-serial-port-output clouddemo-1
출력으로
Instance setup finished
또는Startup finished
가 표시될 때까지 5분 정도 기다린 다음 Ctrl+C를 누릅니다. 이제 기본 요건 설치가 완료되었고 VM 인스턴스를 사용할 수 있습니다.
부하 분산 설정
인터넷을 통해 ASP.NET 앱을 사용 가능하게 하려면 HTTPS 부하 분산기를 사용해야 합니다. VM 인스턴스를 부하 분산기와 연결하려면 인스턴스 그룹을 만들고 이 인스턴스 그룹을 부하 분산기에 할당합니다.
비관리형 인스턴스 그룹을 만들고 인스턴스를 추가합니다.
gcloud compute instance-groups unmanaged create clouddemo-1 gcloud compute instance-groups unmanaged add-instances clouddemo-1 --instances clouddemo-1
웹 서버가 실행 중인지 확인하는 상태 점검을 만듭니다.
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
전에 만든 HTTP 상태 점검 및 관리형 인스턴스 그룹을 사용하는 부하 분산기 백엔드 서비스를 만듭니다.
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)
부하 분산기의 프런트엔드를 만듭니다.
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
부하 분산기에서
loadbalancer-backend
태그가 주석으로 있는 인스턴스에 HTTP 요청을 보낼 수 있도록 허용하는 방화벽 규칙을 만듭니다.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
부하 분산기의 IP 주소를 찾습니다.
gcloud compute forwarding-rules describe clouddemo-frontend --global --format "value(IPAddress)"
IP 주소를 메모해 둡니다. 이 파일은 나중에 필요합니다.
ASP.NET 애플리케이션 배포
PowerShell 콘솔을 엽니다.
GitHub에서 다운로드 및 압축 해제하거나 샘플 저장소를 클론합니다.
git clone https://github.com/GoogleCloudPlatform/dotnet-docs-samples.git
배포 패키지 빌드:
샘플 애플리케이션이 있는 디렉터리로 전환합니다.
cd dotnet-docs-samples\applications\clouddemo\net4
NuGet 종속 항목 복원:
nuget restore
솔루션을 빌드하고
PackageProfile
게시 프로필을 사용하여 WebDeploy 배포 패키지를 만듭니다.msbuild /t:clean,rebuild CloudDemo.Mvc.sln /p:DeployOnBuild=true /p:PublishProfile=PackageProfile
이제
CloudDemo.Mvc\bin
폴더에CloudDemo.Mvc.zip
파일이 포함되어 있습니다.
배포 패키지를 VM에 복사:
- VM 인스턴스의 사용자 이름과 비밀번호를 만듭니다.
- 원격 데스크톱을 사용하여 VM에 연결하고 이전 단계에서 만든 사용자 이름과 비밀번호를 사용하여 로그인합니다.
CloudDemo.Mvc.zip
파일을CloudDemo.Mvc\bin
폴더에서 VM 인스턴스의 임시 위치로 복사합니다.- 원격 데스크톱 세션에서 시작 버튼을 마우스 오른쪽 버튼으로 클릭하거나 Win+X를 누르고 Windows PowerShell(관리자)을 클릭합니다.
- 예를 클릭하여 권한 승격 프롬프트를 확인합니다.
배포 패키지 배포:
&"C:\Program Files\IIS\Microsoft Web Deploy V3\msdeploy.exe" -source:package=
PACKAGE
-verb:sync -dest:autoPACKAGE
를 배포 패키지 경로로 바꿉니다.
로컬 컴퓨터에서 웹브라우저를 열고 다음 주소로 이동합니다.
http://
LOADBALANCER_IP
/LOADBALANCER_IP
를 부하 분산기 배포 후에 획득한 IP 주소로 바꿉니다.이제 데모 애플리케이션과 이 앱은 Compute Engine에서 실행 중입니다라는 제목이 표시됩니다.
삭제
튜토리얼을 완료한 후에는 만든 리소스를 삭제하여 할당량 사용을 중지하고 요금이 청구되지 않도록 할 수 있습니다. 다음 섹션은 이러한 리소스를 삭제하거나 사용 중지하는 방법을 설명합니다.
프로젝트 삭제
비용이 청구되지 않도록 하는 가장 쉬운 방법은 가이드에서 만든 프로젝트를 삭제하는 것입니다.
Google Cloud 프로젝트를 삭제합니다.
gcloud projects delete PROJECT_ID
개별 리소스 삭제
프로젝트에 생성된 모든 리소스(예: 인스턴스 그룹, 상태 점검, 백엔드 서비스, HTTP 프록시, 전달 규칙)를 개별적으로 삭제해야 합니다. 이러한 리소스를 모두 삭제할 때까지 VM 인스턴스를 삭제할 수 없습니다.
다음 단계
- Google 인프라에서 가상 머신 만들기 및 실행 자세히 알아보기
- Google Cloud 아키텍처 프레임워크에서 권장사항 검토하기
- Google Cloud에 대한 참조 아키텍처, 다이어그램, 권장사항 살펴보기 Cloud 아키텍처 센터 살펴보기