Distribuire la struttura di boot di primavera su Oracle Cloud Infrastructure con MySQL Database Service

Imposta una topologia multitier nel cloud che include la struttura di boot di primavera per la distribuzione di un'applicazione ad alta disponibilità che utilizza un database MySQL.

Spring Boot è un framework open source basato su Java che è possibile utilizzare per creare applicazioni di livello di produzione. Spring Boot semplifica la distribuzione delle applicazioni con livelli minimi di configurazione e personalizzazione e include librerie di terze parti per semplificare il processo.

Architettura

Questa architettura di riferimento multitier include le risorse dell'infrastruttura e il framework Spring Boot utilizzato per distribuire applicazioni ad alta disponibilità su Oracle Cloud Infrastructure.

L'architettura distribuisce un load balancer, un host bastion, tre virtual machine (VM) in cui è installata l'applicazione e Oracle MySQL Database Service.

L'architettura include due compartimenti, entrambi attivati per garantire la massima sicurezza in base alle procedure ottimali di sicurezza di Oracle. Inoltre, il compartimento in cui viene distribuito Oracle MySQL Database Service è un compartimento della zona di sicurezza.

I componenti si trovano in subnet e domini di errore diversi per garantire l'alta disponibilità. L'accesso a Oracle MySQL Database Service è consentito solo tramite l'host bastion e le VM dell'applicazione sono accessibili tramite il load balancer.

Il diagramma riportato di seguito descrive questa architettura.



Springboot-mysql-oci-oracle.zip

L'architettura prevede i componenti elencati di seguito.

  • Area

    Un'area Oracle Cloud Infrastructure è un'area geografica localizzata contenente uno o più data center, denominati domini di disponibilità. Le regioni sono indipendenti da altre regioni e le grandi distanze possono separarle (tra paesi o addirittura continenti).

  • Domini di disponibilità

    I domini di disponibilità sono data center indipendenti e standalone all'interno di un'area geografica. Le risorse fisiche presenti in ciascun dominio di disponibilità sono isolate dalle risorse presenti negli altri domini di disponibilità, il che garantisce la tolleranza agli errori. I domini di disponibilità non condividono l'infrastruttura, ad esempio l'alimentazione o il raffreddamento, né la rete interna del dominio di disponibilità. Pertanto, è improbabile che un errore di un dominio di disponibilità influisca sugli altri domini di disponibilità nell'area.

  • Domini di errore

    Un dominio di errore è un raggruppamento di hardware e infrastruttura all'interno di un dominio di disponibilità. Ogni dominio di disponibilità dispone di tre domini di errore con alimentazione e hardware indipendenti. Quando distribuisci le risorse su più domini di errore, le applicazioni possono tollerare errori del server fisico, manutenzione del sistema e errori di alimentazione all'interno di un dominio di errore.

  • Rete cloud virtuale (VCN) e subnet

    Una VCN è una rete personalizzabile e definita dal software impostata dall'utente in un'area Oracle Cloud Infrastructure. Come le reti di data center tradizionali, le VCN offrono il controllo completo sull'ambiente di rete. Una VCN può avere più blocchi CIDR non sovrapposti che è possibile modificare dopo aver creato la VCN. È possibile segmentare una VCN in subnet, che può essere definita in un'area o in un dominio di disponibilità. Ogni subnet è costituita da un intervallo contiguo di indirizzi che non si sovrappongono con le altre subnet nella VCN. Puoi modificare la dimensione di una subnet dopo la creazione. Una subnet può essere pubblica o privata.

  • Liste di sicurezza

    Per ogni subnet, puoi creare regole di sicurezza che specificano l'origine, la destinazione e il tipo di traffico che devono essere consentiti all'interno e all'esterno della subnet.

  • Bastion

    Scegliere tra l'host bastion e le opzioni Bastion di Oracle Cloud Infrastructure:

    • L'host bastion è un'istanza di computazione che funge da punto di accesso sicuro e controllato alla topologia dall'esterno del cloud. Il provisioning dell'host bastion viene eseguito in genere in una zona demilitarizzata (DMZ). Consente di proteggere le risorse sensibili collocandole in reti private a cui non è possibile accedere direttamente dall'esterno del cloud. La topologia ha un singolo punto di accesso conosciuto che è possibile monitorare e controllare regolarmente. Pertanto, è possibile evitare di esporre i componenti più sensibili della topologia senza compromettere l'accesso ad essi.

    • Oracle Cloud Infrastructure Bastion offre un accesso sicuro limitato nel tempo e a risorse che non dispongono di endpoint pubblici e che richiedono controlli rigorosi per l'accesso alle risorse, ad esempio Bare Metal e virtual machine, Oracle MySQL Database Service, Autonomous Transaction Processing (ATP), Oracle Container Engine for Kubernetes (OKE) e qualsiasi altra risorsa che consenta l'accesso SSH (Secure Shell Protocol). Con il servizio Bastion Oracle Cloud Infrastructure, puoi abilitare l'accesso agli host privati senza distribuire e gestire un host jump. Inoltre, puoi ottenere livelli di sicurezza migliori con autorizzazioni basate sull'identità e una sessione SSH centralizzata, controllata e limitata dal tempo. Il bastion di Oracle Cloud Infrastructure rimuove la necessità di un IP pubblico per l'accesso bastion, eliminando la superficie di attacco potenzialmente e velando per l'accesso remoto.

  • Load balancer

    Il servizio Oracle Cloud Infrastructure Load Balancing fornisce la distribuzione automatica del traffico da un singolo punto di accesso a più server nel back-end.

  • Cloud Guard

    È possibile utilizzare Oracle Cloud Guard per monitorare e gestire la sicurezza delle risorse in Oracle Cloud Infrastructure. Cloud Guard utilizza le ricette del settore che è possibile definire per esaminare le risorse per i punti deboli della sicurezza e per monitorare operatori e utenti per le attività a rischio. Quando viene rilevata una configurazione errata o un'attività non sicura, Cloud Guard consiglia azioni correttive e supporta l'esecuzione di tali azioni in base alle ricette dei rispondenti che è possibile definire.

  • Zona di sicurezza

    Le zone di sicurezza garantiscono che le best practice di sicurezza di Oracle fin dall'inizio applicando criteri come la cifratura dei dati e la prevenzione dell'accesso pubblico alle reti per un intero compartimento. Una zona di sicurezza è associata a un compartimento con lo stesso nome e include i criteri della zona di sicurezza oppure a una "ricetta" che si applica al compartimento e ai relativi compartimenti secondari. Non è possibile aggiungere o spostare un compartimento standard in un compartimento della zona di sicurezza.

  • Local Peering Gateway (LPG)

    Un GPL consente di creare un peer di una VCN con un'altra VCN nella stessa area. Peering significa che i VCN comunicano utilizzando indirizzi IP privati, senza il traffico che attraversa Internet o il routing attraverso la rete on premise.

  • Database

    Questa architettura utilizza MySQL Database Service, che viene eseguito su una VM E-shape.

Suggerimenti

I requisiti potrebbero essere diversi dall'architettura descritta in questa sezione. Utilizzare i seguenti suggerimenti come punto di partenza.

  • Cloud Guard

    Duplica e personalizza le ricette predefinite fornite da Oracle per creare ricette di rilevamento e rispondenti personalizzate. Queste ricette consentono di specificare il tipo di violazioni della sicurezza che generano un'avvertenza e le azioni che possono essere eseguite su di esse. Ad esempio, un bucket di storage degli oggetti può avere visibilità impostata su pubblico.

    Applicare Cloud Guard a livello di tenancy per coprire l'ambito più ampio e ridurre il carico amministrativo derivante dalla gestione di più configurazioni.

    È inoltre possibile utilizzare la funzione Lista gestita per applicare determinate configurazioni ai rilevatori.

  • Zone di sicurezza

    Per le risorse che richiedono la massima sicurezza, Oracle consiglia di utilizzare le zone di sicurezza. Una zona di sicurezza è un compartimento associato a una ricetta definita da Oracle di criteri di sicurezza basati sulle migliori prassi. Ad esempio, le risorse in una zona di sicurezza non devono essere accessibili dalla rete Internet pubblica e devono essere cifrate utilizzando chiavi gestite dal cliente. Quando si creano e si aggiornano le risorse in un'area di sicurezza, Oracle Cloud Infrastructure convalida le operazioni rispetto ai criteri nella ricetta dell'area di sicurezza e nega le operazioni che violano qualsiasi criterio.

  • VCN

    Quando crei una VCN, determina il numero di blocchi CIDR necessari e la dimensione di ogni blocco in base al numero di risorse che intendi collegare alle subnet nella VCN. Utilizzare i blocchi CIDR che si trovano all'interno dello spazio di indirizzi IP privati standard.

    Selezionare i blocchi CIDR che non si sovrappongono a qualsiasi altra rete (in Oracle Cloud Infrastructure, il data center on premise o un altro provider cloud) a cui si intende impostare connessioni private.

    Dopo aver creato una VCN, è possibile modificare, aggiungere e rimuovere i relativi blocchi CIDR.

    Durante la progettazione delle subnet, prendi in considerazione i requisiti di flusso del traffico e sicurezza. Associare tutte le risorse all'interno di un livello o ruolo specifico alla stessa subnet, che può fungere da limite di sicurezza.

    Utilizza subnet regionali.

  • Liste di sicurezza

    Utilizza le liste di sicurezza per definire regole di entrata e uscita valide per l'intera subnet.

  • Macchina virtuale

    Le VM vengono distribuite tra più domini di errore per l'alta disponibilità. Utilizzare VM.Standard.E3.Flex, OCPU a quattro core, memoria da 64 GB e larghezza di banda di rete a 4 Gbps (Oracle Linux 7).

  • Host bastion

    Utilizza la forma VM.Standard.E3.Flex con 1 OCPU e 2 Gig di RAM. In alternativa, utilizzare il servizio bastion Oracle Cloud Infrastructure.

  • Load balancer

    I load balancer distribuiscono il traffico in entrata alle VM dell'applicazione. Quando crei il load balancer, puoi selezionare una forma predefinita che fornisce una larghezza di banda fissa o specificare una forma personalizzata (flessibile) in cui impostare un intervallo di larghezza di banda e consentire al servizio di ridimensionare la larghezza di banda automaticamente in base ai pattern di traffico. Grazie a entrambi gli approcci, puoi modificare la forma in qualsiasi momento dopo aver creato il load balancer.

  • Servizio di database

    Utilizzare VM.Standard.E2.8, che fornisce CPU e memoria sufficienti per l'applicazione.

Considerazioni

  • Scalabilità

    Puoi ridimensionare gli Application Server verticalmente cambiando la forma delle istanze di computazione. Una forma con un numero maggiore di memorie centrali fornisce più memoria e larghezza di banda di rete. Se è necessario più storage, aumentare la dimensione dei volumi a blocchi collegati all'Application Server.

  • Disponibilità

    I domini di errore forniscono la migliore resilienza per i carichi di lavoro distribuiti in un singolo dominio di disponibilità. Per l'alta disponibilità nel livello applicazione, distribuisci più Application Server in base alle esigenze.

  • Costo

    Nel livello dell'applicazione, seleziona la forma di computazione in base alle memorie centrali, alla memoria e alla larghezza di banda di rete necessarie per la tua applicazione. È possibile iniziare con una forma a quattro core per l'Application Server. Se sono necessarie maggiori prestazioni, memoria o larghezza di banda di rete, è possibile passare a una forma più grande.

  • Backup

    Oracle Cloud Infrastructure esegue automaticamente il backup del database MySQL. Il bucket Oracle Cloud Infrastructure Object Storage creato memorizza i backup manuali e li conserva per 60 giorni.

    Oracle Cloud Infrastructure Block Volumes consente di creare backup point-in-time dei dati su un volume a blocchi. È possibile ripristinare questi backup su nuovi volumi in qualsiasi momento. Puoi anche usare il servizio per eseguire un backup point-in-time e coerente in caso di crash di un volume di avvio senza interruzioni delle applicazioni o tempi di inattività. I volumi di avvio e a blocchi hanno le stesse funzionalità di backup.

  • Sicurezza

    Per il controllo dell'accesso, utilizzare i criteri per limitare l'accesso alle risorse nel cloud e alle azioni che possono eseguire.

    Per la sicurezza della rete, gli elenchi di sicurezza e i gruppi di sicurezza di rete (NSG) utilizzano le regole di sicurezza per controllare il traffico a livello di pacchetto. Un gruppo NSG è costituito da un set di regole di sicurezza in entrata e in uscita valide solo per un set di VNIC di tua scelta in una singola VCN. Ad esempio, puoi scegliere di applicare le regole a tutte le istanze di computazione che fungono da server Web nel livello Web di un'applicazione multitier nella tua VCN.

    Le regole di sicurezza NSG funzionano allo stesso modo delle regole delle liste di sicurezza. Tuttavia, per l'origine o la destinazione di una regola di sicurezza NSG, è possibile specificare un gruppo NSG anziché un blocco CIDR. In questo modo, puoi scrivere facilmente le regole di sicurezza per controllare il traffico tra due gruppi NSG nella stessa VCN o il traffico all'interno di un singolo gruppo NSG. Quando si crea un sistema di database, è possibile specificare uno o più gruppi NSG. È inoltre possibile aggiornare un sistema di database esistente per utilizzare uno o più gruppi NSG.

Distribuzione

Per distribuire questa architettura di riferimento, creare le risorse necessarie in Oracle Cloud Infrastructure, quindi installare Spring Boot Framework.

  1. Creare le risorse necessarie in Oracle Cloud Infrastructure.

    Il codice Terraform per distribuire le risorse nel cloud è disponibile su GitHub. Puoi inserire il codice in Oracle Cloud Infrastructure Resource Manager con un solo clic, creare lo stack e distribuirlo. In alternativa, scaricare il codice da GitHub nel computer, personalizzare il codice e distribuire l'architettura utilizzando l'interfaccia della riga di comando Terraform.

    • Distribuire il codice Terraform utilizzando Oracle Cloud Infrastructure Resource Manager:
      1. Fare clic su Distribuire in Oracle Cloud

        Se non si è ancora collegati, immettere la tenancy e le credenziali utente.

      2. Selezionare l'area in cui distribuire lo stack.
      3. Seguire i prompt visualizzati e le istruzioni per creare lo stack.
      4. Dopo aver creato lo stack, fare clic su Azioni Terraform e selezionare Piano.
      5. Attendere il completamento del job, quindi rivedere il piano.

        Per apportare modifiche, tornare alla pagina Dettagli stack, fare clic su Modifica stack e apportare le modifiche necessarie. Quindi eseguire di nuovo l'azione Piano.

      6. Se non sono necessarie ulteriori modifiche, tornare alla pagina Dettagli stack, fare clic su Azioni Terraform e selezionare Applica.
    • Distribuire il codice Terraform mediante l'interfaccia della riga di comando Terraform:
      1. Andare a GitHub.
      2. Duplicare o scaricare il repository nel computer locale.
      3. Seguire le istruzioni riportate nel documento README.
  2. Dopo aver eseguito il provisioning dell'architettura, è possibile installare la struttura di boot di primavera disponibile in GitHub:
    1. Andare a GitHub.
    2. Duplicare o scaricare il repository nel computer locale.
    3. Utilizzare le informazioni contenute nel documento README per accedere a informazioni e risorse aggiuntive. Utilizzare le istruzioni riportate nel documento Getting Started per installare Spring Boot.

Log modifiche

In questo log sono elencate solo le modifiche significative: