このチュートリアルでは、.NET Framework ウェブ アプリケーションを Compute Engine にデプロイする方法について説明します。
このチュートリアルは、Microsoft .NET と Compute Engine に関する基本的な知識があるデベロッパーと DevOps エンジニアを対象としています。
目標
.NET Framework 4 を使用し、Windows で動作する ASP.NET Model-View-Controller(MVC)ウェブ アプリケーションを、1 つの Compute Engine インスタンスにデプロイします。
このチュートリアルでは、目的を達成するために次のタスクを行う方法について説明します。
- Compute Engine VM をデプロイする
- 負荷分散を設定する
- ASP.NET アプリケーションをデプロイする
費用
このドキュメントでは、Google Cloud の次の課金対象のコンポーネントを使用します。
料金計算ツールを使うと、予想使用量に基づいて費用の見積もりを生成できます。
このドキュメントに記載されているタスクの完了後、作成したリソースを削除すると、それ以上の請求は発生しません。詳細については、クリーンアップをご覧ください。
始める前に
- 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.
-
Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。
-
Compute Engine API を有効にします。
-
Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。
-
Compute Engine API を有効にします。
Compute Engine VM をデプロイする
このセクションでは、Linux VM、または Microsoft Internet Information Services(IIS)ウェブサーバーを実行する Windows Server VM を Compute Engine で作成する方法について説明します。
プロジェクト 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 インスタンスをロードバランサに関連付けるには、インスタンス グループを作成して、このインスタンス グループをロードバランサに割り当てます。
非マネージド インスタンス グループを作成して、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 で実行しています」というタイトルが表示されます。
クリーンアップ
チュートリアルが終了したら、作成したリソースをクリーンアップして、割り当ての使用を停止し、課金されないようにできます。以下のセクションで、リソースを削除または無効にする方法を説明します。
プロジェクトの削除
課金を停止する最も簡単な方法は、チュートリアル用に作成したプロジェクトを削除することです。
Delete a Google Cloud project:
gcloud projects delete PROJECT_ID
リソースを個別に削除する
プロジェクト用に作成したすべてのリソース(インスタンス グループ、ヘルスチェック、バックエンド サービス、HTTP プロキシ、転送ルールなど)は、個別に削除する必要があります。これらのリソースをすべて削除するまで、VM インスタンスを削除することはできません。
次のステップ
- Google インフラストラクチャでの仮想マシンの作成と実行について詳細を確認する。
- Google Cloud アーキテクチャ フレームワークのベスト プラクティスを確認します。
- Google Cloud に関するリファレンス アーキテクチャ、図、ベスト プラクティスを確認する。Cloud Architecture Center をご覧ください。