Spring Boot Framework auf Oracle Cloud Infrastructure mit MySQL Database Service bereitstellen

Richten Sie eine mehrstufige Topologie in der Cloud ein, die das Spring Boot-Framework für das Deployment einer hochverfügbaren Anwendung enthält, die eine MySQL-Datenbank verwendet.

Spring Boot ist ein Java-basiertes Open Source Framework, mit dem Sie Anwendungen der Produktionsstufe erstellen können. Spring Boot vereinfacht das Deployment von Anwendungen mit minimaler Konfiguration und Anpassung und umfasst Drittanbieterbibliotheken zur Optimierung des Prozesses.

Architektur

Diese Multi-Tier-Referenzarchitektur umfasst die Infrastrukturressourcen und das Spring Boot-Framework, mit dem hochverfügbare Anwendungen auf Oracle Cloud Infrastructure bereitgestellt werden.

Die Architektur stellt einen Load Balancer, einen Bastionhost, drei virtuelle Maschinen (VMs), auf denen die Anwendung installiert ist, und Oracle MySQL Database Service bereit.

Die Architektur umfasst zwei Compartments, in denen Cloud Guard aktiviert ist, um maximale Sicherheit basierend auf den Best Practices von Oracle zur Sicherheit bereitzustellen. Darüber hinaus ist das Compartment, in dem Oracle MySQL Database Service bereitgestellt wird, ein Sicherheitszonen-Compartment.

Komponenten befinden sich in verschiedenen Subnetzen und Faultdomains, um High Availability bereitzustellen. Auf Oracle MySQL Database Service wird nur über den Bastionhost zugegriffen, und der Zugriff auf die Anwendungs-VMs erfolgt über den Load Balancer.

Im folgenden Diagramm wird diese Architektur dargestellt.



Springboot-mysql-oci-oracle.zip

Die Architektur umfasst folgende Komponenten:

  • Region

    Eine Oracle Cloud Infrastructure-Region ist ein lokalisierter geografischer Bereich, der mindestens ein Data Center, sogenannte 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.

  • Virtuelles Cloud-Netzwerk (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.

  • Bastion

    Wählen Sie zwischen Bastionhost und Oracle Cloud Infrastructure-Bastionoptionen:

    • Der Bastionhost ist eine Compute-Instanz, die als sicherer, kontrollierter Einstiegspunkt in die Topologie von außerhalb der Cloud dient. Der Bastionhost wird in der Regel in einer demilitarisierten Zone (DMZ) bereitgestellt. Dadurch können Sie sensible Ressourcen schützen, indem Sie sie in privaten Netzwerken platzieren, auf die nicht direkt von außerhalb der Cloud zugegriffen werden kann. Die Topologie hat einen einzigen, bekannten Einstiegspunkt, den Sie regelmäßig überwachen und auditieren können. Sie können also vermeiden, die empfindlicheren Komponenten der Topologie freizugeben, ohne den Zugriff darauf zu beeinträchtigen.

    • Oracle Cloud Infrastructure-Bastion bietet eingeschränkten und zeitlich begrenzten sicheren Zugriff auf Ressourcen, die keine öffentlichen Endpunkte haben und strenge Ressourcenzugriffskontrollen erfordern, wie Bare-Metal- und virtuelle Maschinen, Oracle MySQL Database Service, Autonomous Transaction Processing (ATP), Oracle Container Engine for Kubernetes (OKE) und jede andere Ressource, die Secure Shell Protocol-(SSH-)Zugriff ermöglicht. Mit dem Oracle Cloud Infrastructure-Bastion-Service können Sie den Zugriff auf private Hosts aktivieren, ohne einen Jump-Host bereitzustellen und zu verwalten. Darüber hinaus erhalten Sie verbesserte Sicherheitslage mit identitätsbasierten Berechtigungen und einer zentralisierten, auditierten und zeitgebundenen SSH-Session. Mit Oracle Cloud Infrastructure-Bastion ist keine öffentliche IP für den Bastionzugriff erforderlich. Dadurch wird die problemlose und potenzielle Angriffsfläche vermieden, wenn Remotezugriff bereitgestellt wird.

  • Load Balancer

    Der Oracle Cloud Infrastructure Load Balancing-Service ermöglicht automatisierte Trafficverteilung von einem einzelnen Einstiegspunkt auf mehrere Server im Backend.

  • Cloud Guard

    Mit Oracle Cloud Guard können Sie die Sicherheit Ihrer Ressourcen in Oracle Cloud Infrastructure überwachen und verwalten. Cloud Guard verwendet Rezepte, die Sie definieren können, um Ihre Ressourcen auf Sicherheitsschwächen zu untersuchen und Operatoren und Benutzer auf riskante Aktivitäten zu überwachen. Wenn eine fehlerhafte oder unsichere Aktivität ermittelt wird, empfiehlt Cloud Guard Korrekturmaßnahmen und unterstützt die Ausführung dieser Aktionen auf der Grundlage der Responderrezepte, die Sie definieren können.

  • Sicherheitszone

    Sicherheitszonen gewährleisten von Anfang an die Sicherheits-Best Practices von Oracle, indem sie Policys wie das Verschlüsseln von Daten und den öffentlichen Zugriff auf Netzwerke für ein gesamtes Compartment durchsetzen. Eine Sicherheitszone ist mit einem Compartment mit demselben Namen verknüpft und enthält Sicherheitszonen-Policys oder ein "Rezept", das für das Compartment und die zugehörigen Sub-Compartments gilt. Sie können ein Standard-Compartment nicht zu einem Sicherheitszonen-Compartment hinzufügen oder verschieben.

  • Lokales Peering-Gateway (LPG)

    Mit einem LPG können Sie eine Peering-Beziehung zwischen einem VCN und einem anderen VCN in derselben Region herstellen. Peering bedeutet, dass die VCNs über private IP-Adressen kommunizieren, ohne dass der Traffic über das Internet oder das On-Premise-Netzwerk geleitet wird.

  • Datenbank

    Diese Architektur verwendet MySQL Database Service, der auf einer E-Shape-VM ausgeführt wird.

Empfehlungen

Ihre Anforderungen können sich von der hier beschriebenen Architektur unterscheiden. Verwenden Sie die folgenden Empfehlungen als Ausgangspunkt.

  • 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.

  • Virtual Machine

    Die VMs werden für High Availability auf mehrere Faultdomains verteilt. Verwenden Sie die Netzwerkbandbreite VM.Standard.E3.Flex, OCPU mit vier Cores, 64-GB-Speicher und 4-Gbit/s (Oracle Linux 7).

  • Bastion Host

    Verwenden Sie die VM.Standard.E3.Flex-Ausprägungen mit 1 OCPU und 2 Gig RAM. Alternativ können Sie den Oracle Cloud Infrastructure-Bastion-Service verwenden.

  • Load Balancer

    Die Load Balancer verteilen eingehenden Traffic an die Anwendungs-VMs. Wenn Sie den Load Balancer erstellen, können Sie entweder eine vordefinierte Ausprägung auswählen, die eine feste Bandbreite bereitstellt, oder eine benutzerdefinierte (flexible) Ausprägung angeben, in der Sie einen Bandbreitebereich festlegen und den Service die Bandbreite automatisch basierend auf Verkehrsmustern skalieren lassen. Bei beiden Lösungen können Sie die Ausprägung jederzeit ändern, nachdem Sie den Load Balancer erstellt haben.

  • Datenbankservice

    Verwenden Sie VM.Standard.E2.8, was ausreichend CPU und Speicher für die Anwendung bereitstellt.

Überlegungen

  • Skalierbarkeit

    Sie können die Anwendungsserver vertikal skalieren, indem Sie die Ausprägung der Compute-Instanzen ändern. Eine Ausprägung mit einer höheren Core-Anzahl bietet mehr Speicher und Netzwerkbandbreite. Wenn Sie mehr Speicher benötigen, erhöhen Sie die Größe der Block-Volumes, die an den Anwendungsserver angeschlossen sind.

  • Verfügbarkeit

    Faultdomains bieten die beste Resilienz für Workloads, die in einer einzelnen Availability-Domain bereitgestellt werden. Stellen Sie für High Availability in der Anwendungsebene nach Bedarf weitere Anwendungsserver bereit.

  • Kostenfaktor

    Wählen Sie auf der Anwendungsebene die Compute-Ausprägung basierend auf den Cores, dem Arbeitsspeicher und der Netzwerkbandbreite, die Ihre Anwendung benötigt. Sie können mit einer Vier-Kern-Ausprägung für den Anwendungsserver beginnen. Wenn Sie mehr Performance, Speicher oder Netzwerkbandbreite benötigen, können Sie zu einer größeren Ausprägung wechseln.

  • Backups

    Oracle Cloud Infrastructure sichert MySQL-Datenbanken automatisch. Der von Ihnen erstellte Oracle Cloud Infrastructure Object Storage-Bucket speichert manuelle Backups und behält sie 60 Tage lang bei.

    Mit Oracle Cloud Infrastructure Block Volumes können Sie Point-in-Time-Backups von Daten auf einem Block-Volume erstellen. Sie können diese Backups jederzeit auf neuen Volumes wiederherstellen. Mit dem Service können Sie auch ein absturzkonsistentes Point-in-Time-Backup eines Boot-Volumes ohne Anwendungsunterbrechung oder Ausfallzeit erstellen. Boot- und Block-Volumes verfügen über dieselben Backupfunktionen.

  • Sicherheit

    Verwenden Sie für die Zugriffskontrolle Policys, um den Zugriff auf Ihre Ressourcen in der Cloud und die Aktionen einzuschränken, die sie ausführen können.

    Für Netzwerksicherheit verwenden Sicherheitslisten und Netzwerksicherheitsgruppen (NSG) Sicherheitsregeln, um den Datenverkehr auf Paketebene zu steuern. Eine NSG besteht aus einer Gruppe von Ingress- und Egress-Sicherheitsregeln, die nur für eine Gruppe von VNICs Ihrer Wahl in einem einzelnen VCN gelten. Beispiel: Sie können Regeln auf alle Compute-Instanzen anwenden, die als Webserver in der Web Tier einer Multi-Tier-Anwendung in Ihrem VCN fungieren.

    NSG-Sicherheitsregeln entsprechen den Sicherheitslistenregeln. Bei der Quelle oder dem Ziel einer NSG-Sicherheitsregel können Sie jedoch eine NSG anstelle eines CIDR-Blocks angeben. So können Sie ganz einfach Sicherheitsregeln schreiben, um Traffic zwischen zwei NSGs in demselben VCN oder innerhalb einer einzelnen NSG zu kontrollieren. Wenn Sie ein Datenbanksystem erstellen, können Sie eine oder mehrere NSGs angeben. Sie können auch ein vorhandenes Datenbanksystem aktualisieren, um eine oder mehrere NSGs zu verwenden.

Bereitstellen

Um diese Referenzarchitektur bereitzustellen, erstellen Sie die erforderlichen Ressourcen in Oracle Cloud Infrastructure und installieren dann das Spring Boot Framework.

  1. Erstellen Sie die erforderlichen Ressourcen in Oracle Cloud Infrastructure.

    Der Terraform-Code zur Bereitstellung der Ressourcen in der Cloud ist auf GitHub verfügbar. Sie können den Code mit einem einzigen Klick in Oracle Cloud Infrastructure Resource Manager abrufen, den Stack erstellen und bereitstellen. Alternativ können Sie den Code von GitHub auf Ihren Computer herunterladen, den Code anpassen und die Architektur mit der Terraform-Befehlszeilenschnittstelle bereitstellen.

    • Terraform-Code mit 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 auf den Abschluss des Jobs, und prüfen Sie dann 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.
    • Stellen Sie Terraform-Code mit der Terraform-Befehlszeilenschnittstelle bereit:
      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.
  2. Nach dem Provisioning der Architektur können Sie das Spring Boot-Framework installieren, das auf GitHub verfügbar ist:
    1. Gehen Sie zu GitHub.
    2. Klonen Sie das Repository, oder laden Sie es auf Ihren lokalen Computer herunter.
    3. Mit den Informationen im Dokument README können Sie auf weitere Informationen und Ressourcen zugreifen. Verwenden Sie die Anweisungen im Dokument Erste Schritte zur Installation von Spring Boot.

Änderungslog

In diesem Log werden nur die wesentlichen Änderungen aufgeführt: