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.
Änderungslog
In diesem Log werden nur die wesentlichen Änderungen aufgeführt:
18. November 2021 |
|
Juni 28, 2021 | Das Ziel für die Schaltfläche "Bereitstellen" im Abschnitt "Bereitstellen" wurde aktualisiert. |
8. Februar 2021 |
Der Abschnitt "Bereitstellen" wurde aktualisiert, um Infrastrukturressourcen mit Terraform bereitzustellen, indem entweder auf die Schaltfläche "Bereitstellen" geklickt wird, um Ressourcen automatisch über Oracle Cloud Infrastructure Resource Manager bereitzustellen, oder indem der Terraform-Code heruntergeladen und dann die Ressourcen über die Terraform-Befehlszeilenschnittstelle bereitgestellt werden. Die Load Balancer-Empfehlungen wurden aktualisiert und enthalten entweder eine vordefinierte Ausprägung oder eine flexible Ausprägung, bei der Sie einen Bandbreitebereich festlegen und dem Service die Bandbreite automatisch basierend auf Verkehrsmustern skalieren lassen. |