ASP.NET アプリケーションを Compute Engine にデプロイする


このチュートリアルでは、.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 の次の課金対象のコンポーネントを使用します。

料金計算ツールを使うと、予想使用量に基づいて費用の見積もりを生成できます。 新しい Google Cloud ユーザーは無料トライアルをご利用いただける場合があります。

このドキュメントに記載されているタスクの完了後、作成したリソースを削除すると、それ以上の請求は発生しません。詳細については、クリーンアップをご覧ください。

始める前に

  1. 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.
  2. Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。

    プロジェクト セレクタに移動

  3. Google Cloud プロジェクトで課金が有効になっていることを確認します

  4. Compute Engine API を有効にします。

    API を有効にする

  5. Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。

    プロジェクト セレクタに移動

  6. Google Cloud プロジェクトで課金が有効になっていることを確認します

  7. Compute Engine API を有効にします。

    API を有効にする

Compute Engine VM をデプロイする

このセクションでは、Linux VM、または Microsoft Internet Information Services(IIS)ウェブサーバーを実行する Windows Server VM を Compute Engine で作成する方法について説明します。

  1. プロジェクト 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
    
  2. VM インスタンスを作成します。

    IIS を実行する Windows Server VM を作成するには、次のようにします。

    1. 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
      
    2. 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
      
  3. シリアルポートの出力を表示して、VM の初期化プロセスをモニタリングします。

    gcloud compute instances tail-serial-port-output clouddemo-1
    

    Instance setup finished または Startup finished という出力が表示されるまで 5 分ほど待ちます。表示されたら Ctrl+C キーを押します。この時点で、前提要件のインストールは完了し、VM インスタンスを使用できるようになります。

負荷分散を設定する

ASP.NET アプリをインターネット経由で利用できるようにするには、HTTPS ロードバランサを使用する必要があります。VM インスタンスをロードバランサに関連付けるには、インスタンス グループを作成して、このインスタンス グループをロードバランサに割り当てます。

  1. 非マネージド インスタンス グループを作成して、VM インスタンスを追加します。

    gcloud compute instance-groups unmanaged create clouddemo-1
    gcloud compute instance-groups unmanaged add-instances clouddemo-1 --instances clouddemo-1
    
  2. ウェブサーバーが実行されているかどうかを確認するヘルスチェックを作成します。

    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
    
  3. 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)
    
  4. ロードバランサ用のフロントエンドを作成します。

    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
    
  5. 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
    
  6. ロードバランサの IP アドレスを調べます。

    gcloud compute forwarding-rules describe clouddemo-frontend --global --format "value(IPAddress)"
    

    IP アドレスはメモしておいてください。書き留めておきます。

ASP.NET アプリケーションをデプロイする

  1. PowerShell コンソールを開きます。

  2. GitHub からサンプル リポジトリをダウンロードして解凍するか、サンプル リポジトリのクローンを作成します。

    git clone https://github.com/GoogleCloudPlatform/dotnet-docs-samples.git
    
  3. デプロイ パッケージをビルドします。

    1. サンプル アプリケーションが含まれているディレクトリに切り替えます。

      cd dotnet-docs-samples\applications\clouddemo\net4
      
    2. NuGet 依存関係を復元します。

      nuget restore
      
    3. ソリューションをビルドし、PackageProfile 公開プロファイルを使用して WebDeploy デプロイ パッケージを作成します。

      msbuild /t:clean,rebuild CloudDemo.Mvc.sln /p:DeployOnBuild=true /p:PublishProfile=PackageProfile
      

      これで、CloudDemo.Mvc\bin フォルダにファイル CloudDemo.Mvc.zip が含まれるようになりました。

  4. デプロイ パッケージを VM にコピーします。

    1. VM インスタンスにユーザー名とパスワードを作成します。
    2. リモート デスクトップを使用して VM に接続し、前のステップで作成したユーザー名とパスワードを使用してログインします。
    3. ファイル CloudDemo.Mvc.zipCloudDemo.Mvc\bin フォルダから VM インスタンスの一時的な場所にコピーします。
    4. リモート デスクトップ セッションで、[スタート] ボタンを右クリックして(または [Win+X] を押して)、[Windows PowerShell(管理者)] をクリックします。
    5. 特権昇格を確認するプロンプトが表示されたら [はい] をクリックします。
    6. デプロイ パッケージをデプロイします。

      &"C:\Program Files\IIS\Microsoft Web Deploy V3\msdeploy.exe" -source:package=PACKAGE -verb:sync -dest:auto
      

      PACKAGE は、デプロイ パッケージのパスに置き換えます。

  5. ローカル コンピュータで、ウェブブラウザを開き、次のアドレスに移動します。

    http://LOADBALANCER_IP/
    

    LOADBALANCER_IP は、ロードバランサのデプロイ後に取得した IP アドレスに置き換えます。

    デモ アプリケーションと「このアプリは Compute Engine で実行しています」というタイトルが表示されます。

クリーンアップ

チュートリアルが終了したら、作成したリソースをクリーンアップして、割り当ての使用を停止し、課金されないようにできます。以下のセクションで、リソースを削除または無効にする方法を説明します。

プロジェクトの削除

課金を停止する最も簡単な方法は、チュートリアル用に作成したプロジェクトを削除することです。

    Delete a Google Cloud project:

    gcloud projects delete PROJECT_ID

リソースを個別に削除する

プロジェクト用に作成したすべてのリソース(インスタンス グループ、ヘルスチェック、バックエンド サービス、HTTP プロキシ、転送ルールなど)は、個別に削除する必要があります。これらのリソースをすべて削除するまで、VM インスタンスを削除することはできません。

次のステップ