ASP.Net-Anwendungen auf Oracle Cloud Infrastructure bereitstellen

ASP.Net ist ein von Microsoft erstelltes Open-Source-Web-Framework für die Erstellung moderner Web-Apps und -Services mit .Netto Mit diesem Framework können Sie schnell eine automatisierte Deployment-Pipeline für ASP.Net-Anwendungen auf Oracle Cloud Infrastructure einrichten. Diese Referenzarchitektur zeigt eine einfache ASP.Net-Anwendung und stellt ihr Gerüst zur Verfügung.

Architektur

In dieser Architektur wird eine ASP.Net-Anwendung über mehrere Faultdomains bereitgestellt. Die Architektur verwendet ein virtuelles Cloud-Netzwerk (VCN) mit einem öffentlichen Subnetz für die Anwendungsinstanzen und ein privates Subnetz für die Datenbankebene. Ein im öffentlichen Subnetz platzierter Load Balancer verteilt den Traffic auf die Knoten.

Sie können den flexiblen Load Balancer von Oracle Cloud Infrastructure nutzen, eine benutzerdefinierte Mindestbandbreite und eine optionale Höchstbandbreite wählen. Beide müssen zwischen 10 Mbps und 8,000 Mbps liegen. Die minimale Bandbreite ist immer verfügbar und bietet sofortige Bereitschaft für Ihre Workloads. Je nach eingehenden Verkehrsmustern skaliert die verfügbare Bandbreite von dem Minimum nach oben, wenn der Datenverkehr zunimmt.

Für Anwendungen, die auf virtuellen Maschinen bereitgestellt werden, können Kunden von den Vorteilen flexibler VM-Instanzen profitieren. Flexible VMs können die Kapazität in Minutenschnelle erhöhen oder verringern, indem CPUs und Speicher hinzugefügt werden. Eine flexible VM kann mit 1 bis 64 Kernen und zwischen 1 und 64 GB Speicher pro Kern konfiguriert werden, maximal 1024 GB pro Instanz.

Die Microsoft SQL-Datenbank wird mit einer Primär- und Standbydatenbank bereitgestellt, die über zwei Faultdomains verteilt ist, um High Availability bereitzustellen.

Das folgende Diagramm veranschaulicht diese Referenzarchitektur.

Beschreibung von ha-aspnet-oci-arch.png folgt
Beschreibung der Abbildung ha-aspnet-oci-arch.png

Diese Architektur enthält die folgenden Komponenten:
  • Region

    Eine Oracle Cloud Infrastructure-Region ist ein lokalisierter geografischer Bereich, der ein oder mehrere Data Center, so genannte Availability-Domains, enthält. Regionen sind unabhängig von anderen Regionen, und große Entfernungen können sie (über Länder oder sogar Kontinente) trennen.

  • Availability-Domains

    Availability-Domains sind eigenständige, unabhängige Data Center in einer Region. Die physischen Ressourcen in jeder Availability-Domain sind von den Ressourcen in den anderen Availability-Domains isoliert, was eine Fehlertoleranz bietet. Availability-Domains haben keine gemeinsame Infrastruktur wie Stromversorgung oder Kühlung oder das interne Availability-Domainnetzwerk. Daher ist es wahrscheinlich, dass sich ein Fehler in einer Availability-Domain auf die anderen Availability-Domains in der Region auswirkt.

  • Faultdomains

    Eine Fehlerdomain ist eine Gruppierung aus Hardware und Infrastruktur innerhalb einer Availability-Domain. Jede Availability-Domain hat drei Faultdomains mit unabhängiger Stromversorgung und Hardware. Wenn Sie Ressourcen auf mehrere Faultdomains verteilen, können Ihre Anwendungen physische Serverfehler, Systemwartung und Stromausfälle innerhalb einer Faultdomain tolerieren.

  • Compartment

    Compartments sind regionsübergreifende logische Partitionen in einem OCI-Mandanten. Mit Compartments können Sie Ihre Ressourcen in Oracle Cloud organisieren, den Zugriff auf die Ressourcen kontrollieren und Nutzungsquoten festlegen. Um den Zugriff auf die Ressourcen in einem bestimmten Compartment zu kontrollieren, definieren Sie Policys, die angeben, wer auf die Ressourcen zugreifen kann und welche Aktionen sie ausführen können. Virtual Cloud Network

  • (VCN) und Subnetze

    Ein VCN ist ein anpassbares, softwaredefiniertes Netzwerk, das Sie in einer Oracle Cloud Infrastructure-Region einrichten. Wie bei herkömmlichen Data Center-Netzwerken erhalten VCNs vollständige Kontrolle über Ihre Netzwerkumgebung. Ein VCN kann mehrere nicht überlappende CIDR-Blöcke haben, die Sie nach dem Erstellen des VCN ändern können. Sie können ein VCN in Subnetze segmentieren, die für eine Region oder eine Availability-Domain gelten können. Jedes Subnetz besteht aus einem fortlaufenden Adressbereich, der sich nicht mit den anderen Subnetzen im VCN überschneidet. Sie können die Größe eines Subnetzes nach der Erstellung ändern. Ein Subnetz kann öffentlich oder privat sein.

  • Sicherheitslisten

    Für jedes Subnetz können Sie Sicherheitsregeln erstellen, die Quelle, Ziel und Typ des Traffics angeben, der im Subnetz und aus dem Subnetz zugelassen werden muss.

  • Load Balancer

    Der Oracle Cloud Infrastructure Load Balancing-Service ermöglicht automatisierte Trafficverteilung von einem einzelnen Einstiegspunkt auf mehrere Server im Backend. Internetgateway Das Internetgateway ermöglicht Traffic zwischen den öffentlichen Subnetzen in einem VCN und dem öffentlichen Internet.

  • Block-Volume

    Mit Block Storage-Volumes können Sie Speicher-Volumes erstellen, anhängen, verbinden und verschieben sowie die Volume-Performance entsprechend Ihren Speicher-, Performance- und Anwendungsanforderungen ändern. Nach dem Anhängen und Verbinden eines Volumes mit einer Instanz können Sie das Volume wie ein reguläres Festplattenlaufwerk verwenden. Sie können ein Volume auch trennen und an eine andere Instanz anhängen, ohne Daten zu verlieren.

  • Webserver - IIS

    Internet Information Services (IIS) für Windows® Server ist ein Webserver für das Hosting .Net-Anwendungen

  • Github-Aktionen und -Läufer

    Mit GitHub-Aktionen wird der Aufbau und das Deployment der ASP.NET-Anwendung auf die Windows-Server automatisiert. Mit GitHub-Aktionen können Aufgaben innerhalb eines Softwareentwicklungslebenszyklus automatisiert werden. Ein Läufer ist der Rechner, auf dem ein GitHub-Job ausgeführt wird. Ein Läufer überwacht verfügbare Jobs, führt sie nacheinander aus und meldet den Fortschritt, die Logs und Ergebnisse an GitHub.

    Runners werden von GitHub als verwalteter Service angeboten, oder sie können selbst verwaltet werden, wenn Sie mehr Flexibilität und Kontrolle Ihrer Umgebung benötigen, beispielsweise als proprietäres Image oder Container, eine leistungsstärkere Maschine oder zur Unterstützung mehrerer Architekturen wie Arm. Die gleichen Prozesse oder Befehle können von jedem Build- und Deployment-System ausgeführt werden, um ähnliche Ergebnisse zu erhalten. In diesem Beispiel wird der Build durch einen Commit an das Repository oder eine Pull-Anforderung ausgelöst. Wenn der Workflow ausgelöst wird, wird die Anwendung erstellt. Die integrierten Binärdateien sind verpackt und terraform wird gestartet, um die Infrastruktur zu aktualisieren und die Anwendung bereitzustellen. Der API-Schlüssel der Oracle Cloud Infrastructure wird von GitHub-Secrets verwaltet.

Empfehlungen

Verwenden Sie die folgenden Empfehlungen als Ausgangspunkt. Beachten Sie, dass Ihre Anforderungen möglicherweise von der hier beschriebenen Architektur abweichen.
  • Cloud Guard

    Klonen und anpassen Sie die von Oracle bereitgestellten Standardrezepte, um benutzerdefinierte Detektor- und Responderrezepte zu erstellen. Mit diesen Rezepten können Sie angeben, welche Art von Sicherheitsverletzungen eine Warnung generiert und welche Aktionen für sie durchgeführt werden dürfen. Beispiel: Für einen Object Storage-Bucket kann die Sichtbarkeit auf "Öffentlich" gesetzt sein.

    Wenden Sie Cloud Guard auf Mandantenebene an, um den breitesten Geltungsbereich abzudecken und den Verwaltungsaufwand bei der Verwaltung mehrerer Konfigurationen zu reduzieren.

    Mit der Funktion "Verwaltete Liste" können Sie auch bestimmte Konfigurationen auf Detektoren anwenden.

  • Sicherheitszonen

    Für Ressourcen, für die eine maximale Sicherheit erforderlich ist, empfiehlt Oracle, Sicherheitszonen zu verwenden. Eine Sicherheitszone ist ein Compartment, das mit einem von Oracle definierten Rezept von Sicherheits-Policys verknüpft ist, die auf Best Practices basieren. Beispiel: Die Ressourcen in einer Sicherheitszone dürfen nicht aus dem öffentlichen Internet zugänglich sein und müssen mit vom Kunden verwalteten Schlüsseln verschlüsselt werden. Wenn Sie Ressourcen in einer Sicherheitszone erstellen und aktualisieren, validiert Oracle Cloud Infrastructure die Vorgänge anhand der Policys im Rezept der Sicherheitszone und verweigert Vorgänge, die eine der Policys verletzen.

  • VCN

    Bestimmen Sie beim Erstellen eines VCN die Anzahl der erforderlichen CIDR-Blöcke und die Größe jedes Blocks basierend auf der Anzahl der Ressourcen, die Sie an Subnetze im VCN anhängen möchten. Verwenden Sie CIDR-Blöcke, die sich im standardmäßigen privaten IP-Adressbereich befinden.

    Wählen Sie CIDR-Blöcke, die sich nicht mit einem anderen Netzwerk überschneiden (in Oracle Cloud Infrastructure, Ihrem On-Premise-Data Center oder einem anderen Cloud-Provider), in dem Sie private Verbindungen einrichten möchten.

    Nachdem Sie ein VCN erstellt haben, können Sie die zugehörigen CIDR-Blöcke ändern, hinzufügen und entfernen.

    Berücksichtigen Sie beim Entwerfen der Subnetze den Verkehrsfluss und die Sicherheitsanforderungen. Hängen Sie alle Ressourcen innerhalb einer bestimmten Ebene oder Rolle an dasselbe Subnetz an, das als Sicherheitsgrenze dienen kann.

    Regionale Subnetze verwenden

  • Sicherheitslisten

    Verwenden Sie Sicherheitslisten, um Ingress- und Egress-Regeln zu definieren, die für das gesamte Subnetz gelten.

Überlegungen

Beachten Sie beim Deployment dieser Referenzarchitektur die folgenden Punkte.

  • Sicherheit

    Sie sollten Web Application Firewall hinzufügen, um die Anwendung vor böswilligen Angriffen zu schützen.

  • Verfügbarkeit der Anwendung

    Faultdomains bieten die beste Resilienz innerhalb einer einzelnen Availability-Domain. Darüber hinaus bietet das Deployment von Compute-Instanzen, die dieselben Aufgaben in mehreren Faultdomains ausführen, Redundanz und verhindert einen Single Point of Failure.

  • Kostenfaktor

    Wählen Sie die VM-Ausprägung basierend auf den Cores, dem Speicher und der Netzwerkbandbreite aus, die Sie für Ihre Anwendung benötigen. Sie können mit einer Zwei-Kern-Ausprägung für die Server beginnen. Wenn Sie mehr Performance, Speicher oder Netzwerkbandbreite für den Knoten benötigen, können Sie die VM-Ausprägung später ändern.

  • CI/CD

    Sie können selbst gehostete Github-Aktionsausführungen auf OCI bereitstellen und zu Ihrem Github-Repository, Ihrer Organisation oder Ihrem Unternehmen hinzufügen. Weitere Informationen zu selbst gehosteten GitHub-Aktionen sowie unterstützten Plattformen und Architekturen finden Sie unter "Eigene Läufer hosten" in der GitHub-Dokumentation (eine Verknüpfung zu diesem Dokument finden Sie unter dem Thema "Weitere Informationen").

Bereitstellen

Der Terraform-Code für diese Referenzarchitektur ist als Beispielstack in Oracle Cloud Infrastructure Resource Manager verfügbar. Sie können den Code auch aus GitHub herunterladen und an Ihre spezifischen Anforderungen anpassen.

  • Mit dem Beispielstack in Oracle Cloud Infrastructure Resource Manager bereitstellen:
    1. Klicken Sie auf In Oracle Cloud bereitstellen

      Wenn Sie noch nicht angemeldet sind, geben Sie den Mandanten und die Benutzerzugangsdaten ein.

    2. Wählen Sie die Region aus, in der der Stack bereitgestellt werden soll.
    3. Befolgen Sie die Prompts und Anweisungen zum Erstellen des Stacks auf dem Bildschirm.
    4. Nachdem Sie den Stack erstellt haben, klicken Sie auf Terraform-Aktionen, und wählen Sie Planen aus.
    5. Warten Sie, bis der Job abgeschlossen ist, und prüfen Sie den Plan.

      Um Änderungen vorzunehmen, kehren Sie zur Seite "Stackdetails" zurück, klicken Sie auf Stack bearbeiten, und nehmen Sie die erforderlichen Änderungen vor. Führen Sie anschließend die Aktion Planen erneut aus.

    6. Wenn keine weiteren Änderungen erforderlich sind, kehren Sie zur Seite "Stackdetails" zurück, klicken Sie auf Terraform-Aktionen, und wählen Sie Anwenden.
  • Mit dem Terraform-Code in GitHub bereitstellen:
    1. Gehen Sie zu GitHub.
    2. Klonen Sie das Repository, oder laden Sie es auf Ihren lokalen Computer herunter.
    3. Befolgen Sie die Anweisungen im Dokument README.

Mehr anzeigen

Weitere Informationen finden Sie in den folgenden Ressourcen: