L'esecuzione di un cluster MySQL Galera (percona, MariaDB o Codership build) purtroppo non è un supportato (né parte) dei database supportati da Amazon RDS. La maggior parte dei database supportati da RDS utilizza la replica asincrona, mentre Galera Cluster è una soluzione di replica sincrona multi-master. Galera richiede anche InnoDB come motore di archiviazione per funzionare correttamente e, sebbene sia possibile utilizzare altri motori di archiviazione come MyISAM, non è consigliabile utilizzare questo motore di archiviazione a causa della mancanza di gestione delle transazioni.
A causa della mancanza di supporto nativo in RDS, questo blog si concentrerà sulle offerte disponibili quando si sceglie e si ospita il cluster basato su Galera utilizzando un ambiente AWS.
Ci sono sicuramente molte ragioni per cui sceglieresti o meno la piattaforma cloud AWS, ma per questo particolare argomento esamineremo i vantaggi e i vantaggi di ciò che puoi sfruttare piuttosto che il motivo per cui sceglierebbe la piattaforma AWS.
I server virtuali (istanze di calcolo elastico)
Come accennato in precedenza, MySQL Galera non fa parte di RDS e InnoDB è un motore di archiviazione transazionale per il quale sono necessarie le risorse giuste per i requisiti dell'applicazione. Deve avere la capacità di soddisfare la domanda del traffico delle richieste del cliente. Al momento di questo articolo, la tua unica scelta per l'esecuzione di Galera Cluster è l'utilizzo di EC2, l'offerta cloud di istanze di calcolo di Amazon.
Poiché hai il vantaggio di eseguire il tuo sistema su un numero di nodi su istanze EC2, l'esecuzione di un cluster Galera su EC2 rispetto a EC2 in locale non differisce molto. Puoi accedere al server in remoto tramite SSH, installare i pacchetti software desiderati e scegliere il tipo di build di Galera Cluster che desideri utilizzare.
Inoltre, con EC2 questa offerta è più elastica e flessibile, consentendoti di fornire e offrire una configurazione più semplice e granulare. È possibile sfruttare i servizi Web per automatizzare o creare un numero di nodi se è necessario aumentare la scalabilità orizzontale dell'ambiente o, ad esempio, automatizzare la creazione dell'ambiente di staging o di sviluppo. Ti dà anche un vantaggio per creare rapidamente l'ambiente desiderato, scegliere e configurare il sistema operativo desiderato e raccogliere le giuste risorse di elaborazione adatte alle tue esigenze (come CPU, memoria e archiviazione su disco). EC2 elimina il tempo di attesa per l'hardware , dal momento che puoi farlo al volo. Puoi anche sfruttare il loro strumento AWS CLI per automatizzare la configurazione del tuo cluster Galera.
Prezzi per le istanze Amazon EC2
EC2 offre una serie di selezioni molto flessibili per i consumatori che desiderano ospitare il proprio ambiente Galera Cluster su nodi di calcolo AWS. Il piano gratuito di AWS include 750 ore di istanze Linux e Windows t2.micro, ogni mese, per un anno. Puoi rimanere all'interno del piano gratuito utilizzando solo istanze EC2 Micro, ma questa potrebbe non essere la cosa migliore per l'uso in produzione.
Esistono diversi tipi di istanze EC2 per le quali puoi eseguire il deployment durante il provisioning dei tuoi nodi Galera. Idealmente, queste famiglie r4/r5/x1 (ottimizzate per la memoria) e c4/c5 (ottimizzate per il calcolo) sono la scelta ideale e questi prezzi variano a seconda delle dimensioni delle risorse del tuo server e del tipo di sistema operativo.
Questi sono i tipi di istanze a pagamento che puoi scegliere...
Su richiesta
Paga in base alla capacità di calcolo (all'ora o al secondo), dipende dal tipo di istanze che esegui. Ad esempio, i prezzi potrebbero variare durante il provisioning di un'istanza Ubuntu rispetto a un'istanza RHEL a parte il tipo di istanza. Non ha impegni a lungo termine o pagamenti anticipati necessari. Ha anche la flessibilità di aumentare o diminuire la tua capacità di calcolo. Queste istanze sono consigliate per esigenze di ambienti flessibili e a basso costo, come applicazioni con carichi di lavoro a breve termine, spinosi o imprevedibili che non possono essere interrotti o applicazioni sviluppate o testate per la prima volta su Amazon EC2. Dai un'occhiata qui per maggiori informazioni.
Host dedicati
Se stai cercando conformità e requisiti normativi come la necessità di acquisire un server dedicato che gira su un hardware dedicato per l'uso, questo tipo di offerta si adatta alle tue esigenze. Gli host dedicati possono aiutarti a soddisfare i requisiti di conformità e ridurre i costi consentendoti di utilizzare la tua licenza software server-bound esistente, inclusi Windows Server, SQL Server, SUSE Linux Enterprise Server, Red Hat Enterprise Linux o altre licenze software legate a VM , socket o core fisici, in base alle condizioni di licenza. Può essere acquistato On-Demand (ogni ora) o come Prenotazione fino al 70% di sconto sul prezzo On-Demand. Dai un'occhiata qui per maggiori informazioni.
Istanze Spot
Queste istanze ti consentono di richiedere la capacità di elaborazione Amazon EC2 di riserva fino al 90% di sconto sul prezzo on demand. Ciò è consigliato per applicazioni con orari di inizio e fine flessibili, applicazioni realizzabili solo a prezzi di calcolo molto bassi o utenti con esigenze informatiche urgenti per grandi quantità di capacità aggiuntiva. Dai un'occhiata qui per maggiori informazioni.
Istanze riservate
Questo tipo di offerta di pagamento ti offre la possibilità di ottenere uno sconto fino al 75% e, a seconda dell'istanza che desideri prenotare, puoi acquisire una prenotazione di capacità dandoti ulteriore fiducia nelle tue capacità per avviare le istanze quando ne hai bisogno. Questo è consigliato se le tue applicazioni hanno un utilizzo stabile o prevedibile, applicazioni che potrebbero richiedere capacità riservata o clienti che possono impegnarsi a utilizzare EC2 per un periodo di 1 o 3 anni per ridurre i costi di elaborazione totali. Dai un'occhiata qui per maggiori informazioni.
Nota sul prezzo
Un'ultima cosa con EC2, offrono anche una fatturazione al secondo che prende anche il costo dei minuti e dei secondi non utilizzati in un'ora dalla bolletta. Questo è vantaggioso se stai eseguendo la scalabilità orizzontale per un periodo di tempo minimo, solo per gestire la richiesta di traffico da un nodo Galera o nel caso in cui desideri provare a testare su un nodo specifico solo per un uso limitato.
Crittografia database su AWS
Se sei preoccupato per la riservatezza dei tuoi dati o per il rispetto delle leggi richieste per la conformità e le normative di sicurezza, AWS offre la crittografia dei dati inattivi. Se stai utilizzando MariaDB Cluster versione 10.2+, hanno il supporto del plug-in integrato per interfacciarsi con l'API Key Management Service (KMS) di Amazon Web Services (AWS). Ciò ti consente di sfruttare il servizio di gestione delle chiavi AWS-KMS per facilitare la separazione delle responsabilità e la registrazione e il controllo remoti delle richieste di accesso alle chiavi. Anziché archiviare la chiave di crittografia in un file locale, questo plug-in conserva la chiave master in AWS KMS.
Quando avvii MariaDB per la prima volta, il plug-in AWS KMS si collegherà ad AWS Key Management Service e gli chiederà di generare una nuova chiave. MariaDB memorizzerà quella chiave su disco in una forma crittografata. La chiave memorizzata su disco non può essere utilizzata per decrittografare i dati; piuttosto, a ogni avvio, MariaDB si connette ad AWS KMS e fa in modo che il servizio decrittografa le chiavi memorizzate localmente. La chiave decrittografata viene archiviata in memoria finché il processo del server MariaDB è in esecuzione e tale chiave decrittografata in memoria viene utilizzata per crittografare i dati locali.
In alternativa, durante la distribuzione delle istanze EC2, puoi crittografare il volume di archiviazione dei dati con EBS (Elastic Block Storage) o crittografare l'istanza stessa. La crittografia per i volumi di tipo EBS è supportata, anche se potrebbe avere un impatto ma la latenza è minima o addirittura non visibile agli utenti finali. Per la crittografia del tipo di istanza EC2, è supportata la maggior parte delle istanze di grandi dimensioni. Quindi, se stai utilizzando nodi di calcolo o ottimizzati per la memoria, puoi sfruttarne la crittografia.
Di seguito è riportato l'elenco dei tipi di istanze supportati...
- Uso generico:A1, M3, M4, M5, M5a, M5ad, M5d, T2, T3 e T3a
- Ottimizzazione per il calcolo:C3, C4, C5, C5d e C5n
- Memoria ottimizzata:cr1.8xlarge, R3, R4, R5, R5a, R5ad, R5d, u-6tb1.metal, u-9tb1.metal, u-12tb1.metal, X1, X1e e z1d
- Archiviazione ottimizzata:D2, h1.2xlarge, h1.4xlarge, I2 e I3
- Calcolo accelerato:F1, G2, G3, P2 e P3
Puoi configurare il tuo account AWS per abilitare sempre la crittografia al momento della distribuzione delle tue istanze di tipo EC2. Ciò significa che AWS crittograferà i nuovi volumi EBS all'avvio e crittograferà le nuove copie degli snapshot non crittografati.
Distribuzioni multi-AZ/multi-regione/multi-cloud
Purtroppo, al momento della stesura di questo articolo, non esiste un supporto diretto nella Console AWS (né in nessuna delle loro API AWS) che supporti le distribuzioni Multi-AZ/-Region/-Cloud per i cluster di nodi Galera.
Alta disponibilità, scalabilità e ridondanza
Per ottenere una distribuzione multi-AZ, è consigliabile eseguire il provisioning dei nodi galera in diverse zone di disponibilità. Ciò impedisce che il cluster si arresti o si verifichi un malfunzionamento del cluster a causa della mancanza di quorum.
Puoi anche configurare un AWS Auto Scaling e creare un gruppo di ridimensionamento automatico per monitorare ed eseguire controlli di stato in modo che il tuo cluster abbia sempre ridondanza, scalabilità e disponibilità elevata. Auto Scaling dovrebbe risolvere il tuo problema nel caso in cui il tuo nodo si interrompa per qualche motivo sconosciuto.
Per la distribuzione multi-regione o multi-cloud, Galera ha il proprio parametro chiamato gmcast.segment per il quale puoi impostarlo all'avvio del server. Questo parametro è progettato per ottimizzare la comunicazione tra i nodi Galera e ridurre al minimo la quantità di traffico inviato tra i segmenti di rete, incluso l'inoltro del writeset e la selezione dei donatori IST e SST.
Questo tipo di configurazione ti consente di distribuire più nodi in regioni diverse per il tuo cluster Galera. A parte questo, puoi anche distribuire i tuoi nodi Galera su un fornitore diverso, ad esempio, se è ospitato in Google Cloud e desideri la ridondanza su Microsoft Azure.
Ti consiglio di dare un'occhiata al nostro blog Configurazioni multiple di data center utilizzando il cluster Galera per MySQL o MariaDB e Migrazione della rete a zero tempi di inattività con il cluster MySQL Galera utilizzando il nodo di inoltro per raccogliere maggiori informazioni su come implementare questi tipi di schieramenti.
Prestazioni del database su AWS
A seconda della domanda dell'applicazione, se le tue query consumano memoria, le istanze ottimizzate per la memoria sono la scelta ideale. Se la tua applicazione ha transazioni più elevate che richiedono prestazioni elevate per i server Web o l'elaborazione batch, scegli le istanze ottimizzate per il calcolo. Se vuoi saperne di più sull'ottimizzazione del tuo cluster Galera, puoi consultare questo blog Come migliorare le prestazioni del cluster Galera per MySQL o MariaDB.
Backup del database su AWS
La creazione di backup può essere difficile poiché non esiste un supporto diretto all'interno di AWS specifico per la tecnologia MySQL Galera. Tuttavia, AWS fornisce una soluzione di emergenza e ripristino utilizzando snapshot EBS. Puoi acquisire snapshot dei volumi EBS collegati alla tua istanza, quindi eseguire un backup in base alla pianificazione utilizzando CloudWatch o utilizzando Amazon Data Lifecycle Manager (Amazon DLM) per automatizzare gli snapshot.
Tieni presente che gli snapshot acquisiti sono backup incrementali, il che significa che vengono salvati solo i blocchi sul dispositivo che sono stati modificati dopo lo snapshot più recente. Puoi archiviare questi snapshot in AWS S3 per risparmiare sui costi di archiviazione. In alternativa, puoi utilizzare strumenti esterni come Percona Xtrabackup e Mydumper (per backup logici) e archiviarli in AWS EFS -> AWS S3 -> AWS Glacier.
Puoi anche configurare Lifecycle Management in AWS se hai bisogno che i tuoi dati di backup siano archiviati in modo più efficiente in termini di costi. Se disponi di file di grandi dimensioni e utilizzerai AWS EFS, puoi sfruttare la loro soluzione AWS Backup poiché anche questa è una soluzione semplice ma conveniente.
D'altra parte, puoi anche utilizzare servizi esterni (come ClusterControl) che ti forniscono soluzioni sia di monitoraggio che di backup. Dai un'occhiata se vuoi saperne di più.
Monitoraggio del database su AWS
AWS offre controlli di integrità e alcuni controlli di stato per fornirti visibilità sui tuoi nodi Galera. Questo viene fatto tramite CloudWatch e CloudTrail.
CloudTrail ti consente di abilitare e ispezionare i log ed eseguire audit in base alle azioni e alle tracce eseguite.
CloudWatch ti consente di raccogliere e tenere traccia dei parametri, raccogliere e monitorare i file di registro e impostare allarmi personalizzati. Puoi configurarlo in base alle tue esigenze personalizzate e ottenere visibilità a livello di sistema sull'utilizzo delle risorse, sulle prestazioni delle applicazioni e sull'integrità operativa. CloudWatch viene fornito con un piano gratuito purché rientri ancora nei suoi limiti (vedi lo screenshot qui sotto.)
CloudWatch ha anche un prezzo che dipende dal volume di parametri distribuiti. Controlla il suo prezzo attuale controllando qui.
Prendi nota:c'è uno svantaggio nell'utilizzo di CloudWatch. Non è progettato per soddisfare la salute del database, in particolare per il monitoraggio dei nodi del cluster MySQL Galera. In alternativa, puoi utilizzare strumenti esterni che offrono grafici o diagrammi ad alta risoluzione utili nella creazione di report e più facili da analizzare durante la diagnosi di un nodo problematico.
Per questo puoi utilizzare PMM di Percona, DataDog, Idera, VividCortex o il nostro ClusterControl (poiché il monitoraggio è GRATUITO con ClusterControl Community). Ti consiglio di utilizzare uno strumento di monitoraggio adatto alle tue esigenze esigenze in base ai requisiti dell'applicazione individuale. È molto importante che il tuo strumento di monitoraggio sia in grado di avvisarti in modo aggressivo o fornirti l'integrazione per i sistemi di messaggistica istantanea come Slack, PagerDuty o persino inviarti SMS quando si aggrava lo stato di salute grave.
Sicurezza del database su AWS
La protezione delle istanze EC2 è una delle parti più importanti della distribuzione del database nel cloud pubblico. Puoi configurare una sottorete privata e configurare i gruppi di sicurezza richiesti preferiti solo per consentire la porta o l'IP di origine a seconda della configurazione. È possibile impostare i nodi del database con un accesso non remoto e configurare semplicemente un jump host o un gateway Internet, se i nodi richiedono l'accesso a Internet per accedere o aggiornare i pacchetti software. Puoi leggere il nostro blog precedente Distribuzione della replica MySQL multicloud sicura su AWS e GCP con VPN su come l'abbiamo configurato.
Oltre a questo, puoi proteggere i tuoi dati in transito utilizzando la connessione TLS/SSL o crittografare i tuoi dati quando sono inattivi. Se utilizzi ClusterControl, la distribuzione di dati in transito sicuri è semplice e facile. Puoi dare un'occhiata al nostro blog Gestione delle chiavi SSL e crittografia dei dati MySQL in transito se vuoi provare. Per i dati inattivi, l'archiviazione dei dati tramite S3 può essere crittografata utilizzando AWS Server-Side Encryption o utilizzare AWS-KMS di cui ho discusso in precedenza. Dai un'occhiata a questo blog esterno su come configurare e sfruttare un cluster MariaDB utilizzando AWS-KMS in modo da poter archiviare i tuoi dati in modo sicuro a riposo.
Risoluzione dei problemi del cluster Galera su AWS
AWS CloudWatch può essere d'aiuto soprattutto durante l'analisi e il controllo dei parametri di sistema. Puoi controllare la rete, la CPU, la memoria, il disco e la sua istanza o calcolare l'utilizzo e il bilanciamento. Questo potrebbe, tuttavia, non soddisfare le tue esigenze quando scavi in un caso specifico.
CloudTrail può eseguire solide tracce di operazioni che sono state regolate in base al tuo account AWS specifico. Questo ti aiuterà a determinare se le occorrenze non provengono da MySQL Galera, ma potrebbero essere alcuni bug o problemi all'interno dell'ambiente AWS (ad esempio Hyper-V sta riscontrando problemi all'interno della macchina host in cui la tua istanza, come guest, è ospitato.)
Se stai usando ClusterControl, andando su Logs -> System Logs, sarai in grado di sfogliare i log degli errori catturati presi dal nodo MySQL Galera stesso. Oltre a questo, ClusterControl fornisce un monitoraggio in tempo reale che amplificherebbe il tuo sistema di allarme e notifica in caso di emergenza o se i tuoi nodi MySQL Galera sono kaput.
Conclusione
AWS non ha il supporto puro per una configurazione di MySQL Galera Cluster, a differenza di AWS RDS che ha la compatibilità MySQL. Per questo motivo, la maggior parte dei consigli o delle opinioni sull'esecuzione di un cluster Galera per l'uso in produzione all'interno dell'ambiente AWS si basano su ambienti esperti e ben testati che sono in esecuzione da molto tempo.
MariaDB Cluster offre una grande produttività, poiché fornisce costantemente un supporto conciso per la soluzione di stack tecnologico AWS. Nella prossima versione di MariaDB 10.5, offriranno un supporto per S3 Storage Engine, che potrebbe valere la pena aspettare.
Gli strumenti esterni possono aiutarti a gestire e controllare il tuo cluster MySQL Galera in esecuzione sul cloud AWS, quindi non è un grosso problema se hai dei dilemmi e FUD sul motivo per cui dovresti eseguire o passare al cloud AWS Piattaforma.
AWS potrebbe non essere la soluzione unica per tutti in alcuni casi, ma fornisce un'ampia gamma di soluzioni che puoi personalizzare e adattare alle tue esigenze.
Nella parte successiva del nostro blog, esamineremo un'altra piattaforma cloud pubblica, in particolare Google Cloud, e vedremo come possiamo sfruttare se scegliamo di eseguire il nostro Cluster Galera nella loro piattaforma.