ASP.NET-Anwendung in Compute Engine bereitstellen


In dieser Anleitung wird beschrieben, wie Sie eine .NET Framework-Webanwendung in Compute Engine bereitstellen.

Diese Anleitung richtet sich an Entwickler und DevOps-Entwickler, die Grundkenntnisse in Microsoft .NET und Compute Engine haben.

Lernziele

Stellen Sie eine ASP.NET Model-View-Controller (MVC)-Webanwendung bereit, die .NET Framework 4 verwendet und unter Windows auf einer einzelnen Compute Engine-Instanz ausgeführt wird.

In dieser Anleitung erfahren Sie, wie Sie die folgenden Aufgaben ausführen, um Ihr Ziel zu erreichen:

  • Compute Engine-VM bereitstellen
  • Load-Balancing einrichten
  • ASP.NET-Anwendung bereitstellen

Kosten

In diesem Dokument verwenden Sie die folgenden kostenpflichtigen Komponenten von Google Cloud:

Mit dem Preisrechner können Sie eine Kostenschätzung für Ihre voraussichtliche Nutzung vornehmen. Neuen Google Cloud-Nutzern steht möglicherweise eine kostenlose Testversion zur Verfügung.

Nach Abschluss der in diesem Dokument beschriebenen Aufgaben können Sie weitere Kosten vermeiden, indem Sie die erstellten Ressourcen löschen. Weitere Informationen finden Sie unter Bereinigen.

Hinweis

  1. Melden Sie sich bei Ihrem Google Cloud-Konto an. Wenn Sie mit Google Cloud noch nicht vertraut sind, erstellen Sie ein Konto, um die Leistungsfähigkeit unserer Produkte in der Praxis sehen und bewerten zu können. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein.

  4. Compute Engine API aktivieren.

    Aktivieren Sie die API

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  6. Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein.

  7. Compute Engine API aktivieren.

    Aktivieren Sie die API

Compute Engine-VM bereitstellen

In diesem Abschnitt wird gezeigt, wie Sie eine Linux-VM oder eine Windows Server-VM erstellen, auf der Microsoft Internet Information Services (IIS)-Webserver in Compute Engine ausgeführt werden.

  1. Standardwerte für Ihre Projekt-ID und Compute Engine-Zone festlegen Das spart Zeit.

    gcloud config set project PROJECT_ID
    gcloud config set compute/zone ZONE
    

    Dabei gilt:

    • Ersetzen Sie PROJECT_ID durch die ID Ihres Google Cloud-Projekts.
    • ZONE durch den Namen der Zone, die Sie zum Erstellen von Ressourcen verwenden möchten. Wenn Sie nicht sicher sind, welche Zone Sie auswählen sollen, verwenden Sie die Zone, die sich geografisch in Ihrer Nähe befindet.

    Beispiel:

    gcloud config set project test-project-12345
    gcloud config set compute/zone us-central1-a
    
  2. Erstellen Sie eine VM-Instanz:

    So erstellen Sie eine Windows Server-VM, auf der IIS ausgeführt wird:

    1. Erstellen Sie ein Startskript für die VM-Instanz. Dieses Skript wird während der VM-Initialisierung ausgeführt und IIS wird installiert:

      "# 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. Erstellen Sie die VM-Instanz und führen Sie das Startskript startup.ps1 aus:

      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. Überwachen Sie den Initialisierungsprozess der VM. Rufen Sie dazu die Ausgabe des seriellen Ports auf:

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

    Warten Sie etwa fünf Minuten, bis die Ausgabe Instance setup finished oder Startup finished angezeigt wird, und drücken Sie dann Strg + C. Die Installation der Voraussetzungen ist nun abgeschlossen und die VM-Instanz kann verwendet werden.

Load-Balancing einrichten

Wenn Sie Ihre ASP.NET-Anwendung über das Internet verfügbar machen möchten, müssen Sie einen HTTPS-Load-Balancer verwenden. Erstellen Sie eine Instanzgruppe und weisen Sie diese Instanzgruppe dem Load-Balancer zu, um Ihre VM-Instanz mit dem Load-Balancer zu verknüpfen:

  1. Erstellen Sie eine nicht verwaltete Instanzgruppe und fügen Sie die VM-Instanz hinzu:

    gcloud compute instance-groups unmanaged create clouddemo-1
    gcloud compute instance-groups unmanaged add-instances clouddemo-1 --instances clouddemo-1
    
  2. Erstellen Sie eine Systemdiagnose, um zu prüfen, ob der Webserver ausgeführt wird:

    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. Erstellen Sie einen Back-End-Dienst für den Load-Balancer, der die zuvor erstellte HTTP-Systemdiagnose und die zuvor erstellte Instanzgruppe verwendet:

    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. Erstellen Sie ein Front-End für den Load-Balancer:

    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. Erstellen Sie eine Firewallregel, mit der der Load-Balancer HTTP-Anfragen an Instanzen senden kann, die mit dem Tag loadbalancer-backend gekennzeichnet sind.

    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. Suchen Sie die IP-Adresse des Load-Balancers:

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

    Notieren Sie sich die IP-Adresse. Sie benötigen sie später noch einmal.

ASP.NET-Anwendung bereitstellen

  1. Öffnen Sie eine PowerShell-Konsole.

  2. Laden Sie das Beispiel-Repository von GitHub herunter und entpacken Sie es oder klonen Sie es:

    git clone https://github.com/GoogleCloudPlatform/dotnet-docs-samples.git
    
  3. Erstellen Sie das Bereitstellungspaket:

    1. Wechseln Sie zu dem Verzeichnis, das die Beispielanwendung enthält:

      cd dotnet-docs-samples\applications\clouddemo\net4
      
    2. Stellen Sie NuGet-Abhängigkeiten wieder her:

      nuget restore
      
    3. Erstellen Sie die Lösung und erstellen Sie mit dem PackageProfile-Veröffentlichungsprofil ein WebDeploy-Bereitstellungspaket:

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

      Der Ordner CloudDemo.Mvc\bin enthält jetzt die Datei CloudDemo.Mvc.zip.

  4. Kopieren Sie das Bereitstellungspaket auf die VM:

    1. Erstellen Sie einen Nutzernamen und ein Passwort für die VM-Instanz.
    2. Stellen Sie mithilfe von Remote Desktop eine Verbindung zur VM her und melden Sie sich mit dem Nutzernamen und dem Passwort an, den bzw. das Sie im vorherigen Schritt erstellt haben.
    3. Kopieren Sie die Datei CloudDemo.Mvc.zip aus dem Ordner CloudDemo.Mvc\bin in einen temporären Speicherort auf der VM-Instanz.
    4. Klicken Sie in der Remote Desktop-Sitzung mit der rechten Maustaste auf die Schaltfläche Start (oder drücken Sie Win + X) und dann auf Windows PowerShell (Administrator).
    5. Bestätigen Sie die Eingabeaufforderung für erhöhte Rechte durch Klicken auf Ja.
    6. Stellen Sie das Bereitstellungspaket bereit:

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

      Ersetzen Sie PACKAGE durch den Pfad zum Bereitstellungspaket.

  5. Öffnen Sie auf Ihrem lokalen Computer einen Webbrowser und rufen Sie die folgende Adresse auf:

    http://LOADBALANCER_IP/
    

    Ersetzen Sie LOADBALANCER_IP durch die IP-Adresse, die Sie nach der Bereitstellung des Load-Balancers erhalten haben.

    Sie sehen jetzt die Demoanwendung und den Titel Diese App wird in Compute Engine ausgeführt.

Bereinigen

Nachdem Sie die Anleitung abgeschlossen haben, können Sie die erstellten Ressourcen bereinigen, damit sie keine Kontingente mehr nutzen und keine Gebühren mehr anfallen. In den folgenden Abschnitten erfahren Sie, wie Sie diese Ressourcen löschen oder deaktivieren.

Projekt löschen

Am einfachsten vermeiden Sie weitere Kosten, wenn Sie das zum Ausführen der Anleitung erstellte Projekt löschen.

    Google Cloud-Projekt löschen:

    gcloud projects delete PROJECT_ID

Einzelne Ressourcen löschen

Sie müssen alle für das Projekt erstellten Ressourcen einzeln löschen (z. B. Instanzgruppen, Systemdiagnosen, Back-End-Dienste, HTTP-Proxy und Weiterleitungsregeln). Sie können die VM-Instanzen erst löschen, wenn alle diese Ressourcen gelöscht wurden.

Nächste Schritte