In dieser Anleitung wird beschrieben, wie Sie eine .NET-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 Core-Webanwendung mit .NET 6 bereit, die unter Linux auf einer einzigen 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.
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
- 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.
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.
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
- Ersetzen Sie
Erstellen Sie eine VM-Instanz:
So erstellen Sie eine Linux-VM:
Erstellen Sie ein Startskript für die VM-Instanz. Das Skript wird während der VM-Initialisierung ausgeführt und .NET-Laufzeit installiert:
"if ! dpkg-query -W aspnetcore-runtime-6.0 then curl https://packages.microsoft.com/config/debian/11/packages-microsoft-prod.deb -O sudo dpkg -i packages-microsoft-prod.deb rm packages-microsoft-prod.deb sudo apt-get update && sudo apt-get install -y aspnetcore-runtime-6.0 fi " | Out-File -Encoding ASCII startup.sh
Erstellen Sie die VM-Instanz und verwenden Sie
startup.sh
als Startskript:gcloud compute instances create clouddemo-1 ` --image-family debian-11 ` --image-project debian-cloud ` --machine-type n1-standard-2 ` --boot-disk-type pd-ssd ` --tags loadbalancer-backend ` --metadata-from-file startup-script=startup.sh
Ü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
oderStartup 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:
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
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 / ` --port 5000 gcloud compute instance-groups set-named-ports clouddemo-1 --named-ports=http:5000
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)
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
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
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
Öffnen Sie eine PowerShell-Konsole.
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
Erstellen Sie das Bereitstellungspaket:
Wechseln Sie zu dem Verzeichnis, das die Beispielanwendung enthält:
cd dotnet-docs-samples\applications\clouddemo\netcore
Erstellen Sie die Lösung:
dotnet publish -c Release
Kopieren Sie das Bereitstellungspaket auf die VM:
Kopieren Sie den Inhalt des Ordners
publish
in Ihr Basisverzeichnis auf der VM:gcloud compute scp --recurse CloudDemo.MvcCore\bin\Release\net6.0\publish clouddemo-1:
Erstellen Sie auf der VM den Ordner
/var/www/clouddemo
und kopieren Sie die Anwendungsdateien in diesen Ordner:sudo mkdir -p /var/www/clouddemo sudo chown -R www-data:www-data /var/www/clouddemo sudo cp -r publish/* /var/www/clouddemo
Registrieren Sie die Anwendung als systemd-Einheit:
cat <<EOF > kestrel-clouddemo.service [Unit] Description=Cloud Demo ASP.NET app [Service] WorkingDirectory=/var/www/clouddemo ExecStart=/usr/bin/dotnet /var/www/clouddemo/CloudDemo.MvcCore.dll Restart=always Environment=ASPNETCORE_ENVIRONMENT=Production Environment=ASPNETCORE_URLS=http://0.0.0.0:5000 [Install] WantedBy=multi-user.target EOF sudo mv kestrel-clouddemo.service /etc/systemd/system/ sudo systemctl daemon-reload sudo systemctl start kestrel-clouddemo
Ö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.
Delete a Google Cloud project:
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
- Virtuelle Maschinen in der Google-Infrastruktur erstellen und ausführen
- Sehen Sie sich die Best Practices im Google Cloud-Architektur-Framework an.
- Referenzarchitekturen, Diagramme und Best Practices zu Google Cloud kennenlernen. Weitere Informationen zu Cloud Architecture Center