Distribuisci uno stack PostgreSQL ad alta disponibilità su un cluster Kubernetes OCI con StackGres
Se desideri distribuire PostgreSQL nel cloud, Oracle Cloud Infrastructure (OCI) offre un ambiente ideale, con Oracle Container Engine for Kubernetes per microservizi serverless, scalabili e ad alta disponibilità. StackGres offre una distribuzione PostgreSQL di stack completa per Kubernetes, integrata in una semplice unità di distribuzione.
StackGres include il connection pooling, i backup automatici, il monitoraggio, il log centralizzato e una console Web di gestione completa di tutte le funzionalità. StackGres integra il più rinomato e testato software ad alta disponibilità per Postgres: Patroni.
- È completamente integrato. In caso di guasto, il cluster si riscalderà automaticamente, senza intervento umano.
- StackGres espone una connessione di sola lettura e di sola lettura per le applicazioni, che verrà aggiornata automaticamente dopo che si sono verificati eventi che causano interruzioni del funzionamento.
Uno stack PostgreSQL di livello enterprise richiede diversi altri componenti dell'ecosistema e un'ottimizzazione significativa. Richiede il connection pooling, il failover automatico e l'alta disponibilità, il monitoraggio, i backup e il recupero da errori irreversibili (DR). Il pacchetto StackGres e i componenti OCI mostrati in questa playbook della soluzione offrono una distribuzione a basso livello di comfort, scalabile e ad alta disponibilità.
Architettura
Questa architettura mostra come distribuire PostgreSQL in un cluster Oracle Container Engine for Kubernetes. Utilizzare questa architettura per ambienti pronti per la produzione che sfruttano le funzioni PostgreSQL.
- Nessun lock-in del fornitore: PostgreSQL funziona in qualsiasi ambiente Kubernetes.
- Include una console Web con funzioni complete.
- La piattaforma Postgres ha la maggior parte delle estensioni al mondo.
- Viene eseguita sui nodi di lavoro Kubernetes x86-64 e ARM64.
- Totalmente Open Source (senza divisione tra una "Community" gratuita e una costosa versione "Enterprise").
- Prezzi per il supporto e gli aggiornamenti, in base alle memorie centrali utilizzate.
- Include Postgres "vanilla" e Babelfish (che offre compatibilità con SQL Server).
Il diagramma riportato di seguito illustra questa architettura di riferimento.
L'architettura è dotata dei componenti elencati di seguito.
- Tenancy
Una tenancy è una partizione sicura e isolata che Oracle imposta all'interno di Oracle Cloud quando ti iscrivi a Oracle Cloud Infrastructure. Puoi creare, organizzare e amministrare le tue risorse in Oracle Cloud all'interno della tua tenancy. Una tenancy è sinonimo di azienda o organizzazione. In genere, un'azienda avrà una singola tenancy e ne rifletterà la struttura organizzativa all'interno di tale tenancy. Una singola tenancy in genere è associata a una singola sottoscrizione e una singola sottoscrizione in genere ha una sola tenancy.
- Area
Un'area Oracle Cloud Infrastructure è un'area geografica localizzata che contiene uno o più data center, definiti domini di disponibilità. Le regioni sono indipendenti da altre regioni e grandi distanze possono separarle (in tutti i paesi o anche in continenti).
- Compartimento
I compartimenti sono partizioni logiche tra più aree all'interno di una tenancy di Oracle Cloud Infrastructure. Usare i compartimenti per organizzare le risorse in Oracle Cloud, controllare l'accesso alle risorse e impostare le quote di utilizzo. Per controllare l'accesso alle risorse in un determinato compartimento, definisci i criteri che specificano chi può accedere alle risorse e quali azioni può eseguire.
- Dominio di disponibilità
I domini di disponibilità sono data center standalone indipendenti all'interno di un'area geografica. Le risorse fisiche in ciascun dominio di disponibilità sono isolate dalle risorse presenti negli altri domini di disponibilità, che offrono tolleranza agli errori. I domini di disponibilità non condividono l'infrastruttura, ad esempio alimentazione o raffreddamento o la rete interna del dominio di disponibilità. È pertanto improbabile che l'eventuale guasto di un dominio di disponibilità influenzi gli altri domini di disponibilità nell'area.
Viene visualizzato un solo dominio di disponibilità, ma è possibile distribuirlo in più domini di disponibilità, a seconda dei requisiti di produzione.
- Dominio di errore
Un dominio di errore è un gruppo 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 risorse su più domini di errore, le tue applicazioni possono tollerare errori fisici del server, manutenzione del sistema e errori di alimentazione all'interno di un dominio di errore.
Viene visualizzato un dominio di errore, ma è possibile distribuirlo in più domini di errore a seconda dei requisiti di produzione.
- Rete cloud virtuale (VCN) e subnet
Una VCN è una rete personalizzabile e definita dal software configurata in un'area Oracle Cloud Infrastructure. Analogamente alle reti di data center tradizionali, i VCN offrono il controllo completo sull'ambiente di rete. Una VCN può avere più blocchi CIDR non sovrapposti che puoi modificare dopo aver creato la VCN. Puoi segmentare una VCN nelle subnet che possono essere definite nell'area o in un dominio di disponibilità. Ogni subnet è composta da un intervallo contiguo di indirizzi che non si sovrappongono alle altre subnet nella VCN. Puoi modificare le dimensioni di una subnet dopo la creazione. Una subnet può essere pubblica o privata.
- Load balancer
Il servizio Oracle Cloud Infrastructure Load Balancing offre la distribuzione automatica del traffico da un unico punto di accesso a più server nel back-end.
- Servizio bastion
Oracle Cloud Infrastructure Bastion offre accesso sicuro e limitato nel tempo a risorse che non hanno endpoint pubblici e che richiedono severi controlli di accesso alle risorse, come Bare Metal e Virtual Machine, Oracle MySQL Database Service, Autonomous Transaction Processing (ATP), Oracle Container Engine for Kubernetes (OKE) e qualsiasi altra risorsa che consente l'accesso a Secure Shell Protocol (SSH). Con il servizio Bastion di Oracle Cloud Infrastructure, è possibile abilitare l'accesso agli host privati senza distribuire e gestire un jump host. Inoltre, puoi ottenere livelli di sicurezza migliori con autorizzazioni basate sulle identità e una sessione SSH centralizzata, controllata e con limiti di tempo. Oracle Cloud Infrastructure Bastion elimina la necessità di un IP pubblico per l'accesso bastion, eliminando le difficoltà e la potenziale superficie di attacco durante la fornitura dell'accesso remoto.
- Lista di sicurezza
Per ogni subnet, puoi creare regole di sicurezza che specifichino l'origine, la destinazione e il tipo di traffico che deve essere consentito all'interno e all'esterno della subnet.
- Gateway NAT (Network Address Translation)
Un gateway NAT consente alle risorse private di una VCN di accedere agli host su Internet, senza esporre tali risorse alle connessioni a Internet in entrata.
- Gateway del servizio
Il gateway di servizi fornisce l'accesso da una VCN ad altri servizi, come Oracle Cloud Infrastructure Object Storage. Il traffico dalla VCN al servizio Oracle viaggia sulla struttura di rete Oracle e non attraversa mai Internet.
- Gateway di instradamento dinamico (DRG)
DRG è un router virtuale che fornisce un percorso per il traffico di rete privato tra VCN nella stessa area, tra una VCN e una rete esterna all'area, come una VCN in un'altra area Oracle Cloud Infrastructure, una rete in locale o una rete in un altro provider cloud.
- Storage degli oggetti
Lo storage degli oggetti garantisce un accesso rapido a grandi quantità di dati strutturati e non strutturati di qualsiasi tipo di contenuto, inclusi backup del database, dati analitici e contenuti avanzati, ad esempio immagini e video. Puoi memorizzare i dati in tutta sicurezza e poi recuperarli direttamente da Internet o dall'interno della piattaforma cloud. Puoi ridimensionare lo storage in modo trasparente senza alcun peggioramento a livello di prestazioni o affidabilità dei servizi. Utilizza lo storage standard per lo storage "hot" a cui devi accedere in modo rapido, immediato e frequente. Utilizzare lo storage di archivio per lo storage "freddo" che si mantiene per lunghi periodi di tempo e raramente può accedere.
- Gateway Internet
Il gateway Internet consente il traffico tra le subnet pubbliche in una rete VCN e la rete Internet pubblica.
- FastConnect
Oracle Cloud Infrastructure FastConnect consente di creare facilmente una connessione dedicata e privata tra il data center e Oracle Cloud Infrastructure. FastConnect fornisce opzioni a maggiore larghezza di banda e un'esperienza di rete più affidabile se confrontata con le connessioni basate su Internet.
- Local Peering Gateway (LPG)
Un LPG consente di peer di una VCN con un'altra VCN nella stessa area. Peering indica che i VCN comunicano mediante indirizzi IP privati, senza il traffico che attraversa Internet o instrada attraverso la rete on premise.
- Container Engine per Kubernetes
Oracle Cloud Infrastructure Container Engine for Kubernetes è un servizio completamente gestito, scalabile e ad alta disponibilità che puoi utilizzare per distribuire le tue applicazioni gestite in container nel cloud. Puoi specificare le risorse di computazione richieste dalle tue applicazioni, mentre Container Engine for Kubernetes le esegue sul provisioning di Oracle Cloud Infrastructure in una tenancy esistente. Container Engine for Kubernetes utilizza Kubernetes per automatizzare la distribuzione, il ridimensionamento e la gestione delle applicazioni in container su cluster di host.
- PostgreSQL
PostgreSQL è un sistema RDBMS (Relational Database Management System) open source che è altamente estensibile e altamente scalabile. Supporta query SQL (relazionali) e JSON (non relazionali).
- StackGres
StackGres è una distribuzione PostgreSQL di stack completa per Kubernetes, raggruppata in una semplice unità di distribuzione. Include un set accuratamente selezionato e ottimizzato di componenti PostgreSQL circostanti.
- Cloud Guard
Puoi utilizzare Oracle Cloud Guard per monitorare e mantenere la sicurezza delle tue risorse in Oracle Cloud Infrastructure. Cloud Guard utilizza ricette dei rilevatori che puoi definire per esaminare le tue risorse ai fini di individuare punti deboli della sicurezza e per monitorare operatori e utenti per individuare attività a rischio. Quando viene rilevata un'attività di configurazione errata o non sicura, Cloud Guard consiglia azioni correttive e assiste l'esecuzione di tali azioni in base alle ricette del risponditore che è possibile definire.
- Protezione negazione del servizio distribuita (DDoS)
Gli attacchi Denial of Service (DDoS) distribuiti sono crimini informatici gravi commessi da attacchi che inondano i server aziendali con una quantità schiacciante di traffico in entrata. Questa enorme quantità di traffico proviene da molteplici fonti e geolocalizzazioni, impedendo agli utenti di accedere ai servizi e ai siti dell'azienda. Tutti i data center Oracle Cloud dispongono del rilevamento e della mitigazione degli attacchi DDoS per gli attacchi di alto volume di livello 3 o 4 DDoS. Questi servizi di protezione DDoS di Oracle Cloud garantiscono la disponibilità delle risorse di rete Oracle anche in presenza di attacchi di livello 3 o 4 sostenuti.
- Gestione delle identità e degli accessi (IAM)
Oracle Cloud Infrastructure Identity and Access Management (IAM) è il piano di controllo dell'accesso per Oracle Cloud Infrastructure (OCI) e Oracle Cloud Applications. L'interfaccia API IAM e l'interfaccia utente consentono di gestire i domini di Identity e le risorse all'interno del dominio di Identity. Ogni dominio di identità IAM OCI rappresenta una soluzione standalone di gestione delle identità e degli accessi o una popolazione di utenti diversa.
- LogLogging è un servizio altamente scalabile e completamente gestito che fornisce l'accesso ai seguenti tipi di log delle risorse nel cloud:
- Log di audit: log correlati agli eventi emessi dal servizio di audit.
- Log dei servizi: log emessi da singoli servizi quali gateway API, eventi, funzioni, bilanciamento del carico, storage degli oggetti e log di flusso VCN.
- Log personalizzati: log che contengono informazioni di diagnostica da applicazioni personalizzate, altri provider cloud o da un ambiente on premise.
- Audit
The Oracle Cloud Infrastructure Audit service automatically records calls to all supported Oracle Cloud Infrastructure public application programming interface (API) endpoints as log events. Al momento, tutti i servizi supportano il log tramite Oracle Cloud Infrastructure Audit.
Suggerimenti
- VCN
Quando crei una rete 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. Usa blocchi CIDR che si trovano nello spazio di indirizzi IP privati standard.
Selezionare i blocchi CIDR che non si sovrappongono ad altre reti (in Oracle Cloud Infrastructure, nel data center on premise o in un altro provider cloud) a cui si intende impostare connessioni private.
Dopo aver creato una VCN, puoi modificarne, aggiungere e rimuovere i blocchi CIDR.
Quando si progettano le subnet, tenere in considerazione il flusso di traffico e i requisiti di sicurezza. Collegare tutte le risorse all'interno di un livello o ruolo specifico alla stessa subnet, che può essere utilizzata come limite di sicurezza.
Utilizzare le subnet regionali.
- Cloud Guard
Duplicare e personalizzare le ricette predefinite fornite da Oracle per creare ricette personalizzate di rilevatori e rispondenti. Queste ricette consentono di specificare il tipo di violazione della sicurezza che genera un'avvertenza e quali azioni possono essere eseguite su di esse. Ad esempio, potresti voler rilevare i bucket di storage degli oggetti che hanno visibilità impostata sul pubblico.
Applica Cloud Guard a livello di tenancy per coprire l'ambito più ampio e ridurre l'onere 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 una maggiore sicurezza, Oracle consiglia di utilizzare le zone di sicurezza. Una zona di sicurezza è un compartimento associato a una ricetta dei criteri di sicurezza definita da Oracle basata 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 crei e aggiorni le risorse in una zona di sicurezza, Oracle Cloud Infrastructure convalida le operazioni nei criteri della ricetta della zona di sicurezza e nega le operazioni che violano uno qualsiasi dei criteri.
- Gruppi di sicurezza di rete (NSG)
Puoi utilizzare i gruppi NSG per definire un set di regole di entrata e uscita valide per VNIC specifiche. È consigliabile utilizzare i gruppi NSG anziché le liste di sicurezza, perché i gruppi NSG consentono di separare l'architettura della subnet della VCN dai requisiti di sicurezza dell'applicazione.
- Larghezza di banda del load balancer
Durante la creazione del load balancer, puoi selezionare una forma predefinita che fornisce la larghezza di banda fissa o specificare una forma personalizzata (flessibile) in cui impostare un intervallo di larghezza di banda e lasciare che il servizio ridimensioni automaticamente la larghezza di banda in base ai pattern di traffico. Mediante entrambi gli approcci, puoi modificare la forma in qualsiasi momento dopo aver creato il load balancer.
Considerazioni
Quando si distribuisce questa architettura, considerare le opzioni riportate di seguito.
- Omologazione con processori ARM
StackGres può essere eseguito con ARM (Ampere A1 Compute).
- Opzioni di architettura
L'architettura di questo documento è un suggerimento e può essere modificato in base alle esigenze del progetto.
- Estensioni Postgres
StackGres utilizza più di 130 estensioni Postgres.
- Privilegi utente
Utilizzare le procedure di sicurezza consigliate per il privilegio minimo: limitare l'accesso degli account ai privilegi di root o di superutente solo quando è effettivamente necessario.
- Monitoraggio
Oltre ai servizi OCI come Eventi OCI,Log OCI e Monitoraggio OCI, è possibile utilizzare Prometheus o Grafana per il monitoraggio.
- Backup
StackGres include backup continui basati su archivi, che consentono il recupero senza perdita di dati.
I backup vengono sempre memorizzati sui supporti più duraturi attualmente disponibili: Storage degli oggetti OCI.
Attenersi alle procedure ottimali riportate di seguito.
- Non lasciare il database esposto a Internet.
- Se possibile, separare il cluster di applicazioni dal cluster utilizzato da Stackgres.
- Se si desidera creare l'applicazione nello stesso cluster, Oracle consiglia di creare uno spazio di nomi diverso per l'applicazione.
- Quando si sceglie il processore Intel, AMD o ARM, tenere conto delle dimensioni del carico di lavoro in modo da non sottovalutare l'ambiente Postgres.
Informazioni sui prodotti e i ruoli richiesti
Questa soluzione richiede i seguenti prodotti e ruoli:
-
Oracle Cloud Infrastructure
-
Oracle Cloud Infrastructure Cloud Shell
-
PostgreSQL
-
Stackgres
Si tratta dei ruoli necessari per ogni servizio.
| Nome servizio: ruolo | Richiesto per... |
|---|---|
OCI: Administrator |
Accesso completo a risorse come servizi di computazione, rete, osservabilità e gestione e OCI Cloud Shell. |
| Oracle Cloud Infrastructure Cloud Shell Per usare OCI Cloud Shell, è necessario fornire il tipo di accesso richiesto in un criterio scritto da un amministratore nel compartimento radice della tenancy. |
Utilizzare la utility della riga di comando kubectl per configurare il cluster Kubernetes per StackGres. |
Scopri i prodotti, le soluzioni e i servizi Oracle per ottenere ciò di cui hai bisogno.
