Nel nostro ultimo blog abbiamo discusso delle offerte disponibili all'interno di Amazon Web Services (AWS) durante l'esecuzione di MySQL Galera Cluster. In questo blog, continueremo la discussione esaminando ulteriormente quali sono le offerte per l'esecuzione della stessa tecnologia di clustering, ma questa volta su Google Cloud Platform (GCP).
GCP, in alternativa ad AWS, attrae continuamente applicazioni adatte a DevOps offrendo supporto per un'ampia gamma di tecnologie full-stack, applicazioni containerizzate e sistemi di database di produzione di grandi dimensioni. Google Cloud è un ambiente completo e collaudato che alimenta la propria infrastruttura hardware di Google per prodotti come YouTube e Gmail.
GCP ha guadagnato popolarità soprattutto grazie al suo elenco sempre crescente di funzionalità. Offre supporto per piattaforme come Visual Studio, Android Studio, Eclipse, Powershell e molte altre. GCP dispone di una delle reti di computer più grandi e avanzate e fornisce l'accesso a numerosi strumenti che ti aiutano a concentrarti sulla creazione della tua applicazione.
Un'altra cosa che attira i clienti a migrare, importare o utilizzare Google Cloud è il loro forte supporto e le soluzioni per la containerizzazione. Kubernetes (GKE:Google Kubernetes Engine) è basato sulla loro piattaforma.
GCP ha anche lanciato di recente una nuova soluzione chiamata Anthos. Questo prodotto è progettato per consentire alle organizzazioni di gestire i carichi di lavoro utilizzando la stessa interfaccia su Google Cloud Platform (GCP) o in locale utilizzando GKE On-Prem e persino su cloud concorrenti come Amazon Web Services (AWS) o Azure.
Oltre a queste tecnologie, GCP offre tipi di macchine sofisticati, potenti e ottimizzati per il calcolo come la famiglia C2 in GCE, che si basa sull'ultima generazione di processori scalabili Intel (Cascade Lake).
GCP continua a supportare anche l'open source, il che avvantaggia gli utenti fornendo un framework semplice e ben supportato che semplifica la consegna di un prodotto finale in modo tempestivo. Nonostante questo supporto della tecnologia open source, GCP non fornisce supporto nativo per l'implementazione o la configurazione di MySQL Galera Cluster. In questo blog ti mostreremo l'unica opzione a tua disposizione se desideri utilizzare questa tecnologia, la distribuzione tramite un'istanza di calcolo che devi gestire tu stesso.
Google Compute Engine (GCE)
GCE ha un set sofisticato e potente di nodi di calcolo disponibili per il tuo consumo. A differenza di AWS, GCE ha il nodo di calcolo più potente disponibile sul mercato (n1-ultramem-160 con 160 vCPU e 3,75 TB di memoria). GCE ha anche introdotto di recente un nuovo tipo di famiglia di istanze di calcolo denominata tipo macchina C2. Basati sull'ultima generazione di processori scalabili Intel (Cascade Lake), i tipi di macchine C2 offrono un turbo all-core sostenuto fino a 3,8 GHz e offrono piena trasparenza nell'architettura delle piattaforme server sottostanti; permettendoti di mettere a punto le prestazioni. I tipi di macchine C2 offrono molta più potenza di calcolo, funzionano su una piattaforma più recente e sono generalmente più robusti per carichi di lavoro ad alta intensità di calcolo rispetto ai tipi di macchine N1 con CPU elevata. Le offerte per famiglie C2 sono limitate (al momento della stesura) e non sono disponibili in tutte le regioni e zone. Inoltre, C2 non supporta i dischi persistenti regionali, anche se sarebbe un ottimo componente aggiuntivo per i servizi di database con stato che richiedono ridondanza e disponibilità elevata. Le risorse di un'istanza C2 sono eccessive per un nodo Galera, quindi ci concentreremo invece sui nodi di calcolo, che sono l'ideale.
GCE utilizza anche KVM come software per la tecnologia di virtualizzazione, mentre Amazon utilizza Xen. Diamo un'occhiata ai nodi di calcolo disponibili in GCE che sono adatti per eseguire Galera insieme alla sua equivalenza in AWS EC2. I prezzi variano in base alla regione, ma per questo grafico utilizziamo la regione us-east utilizzando il tipo di prezzo on-demand per AWS.
Tipo di macchina/istanza | Google Compute Engine | AWS EC2 |
Condiviso | f1-micro G1-piccolo I prezzi partono da $ 0,006 - $ 0,019 all'ora | t2.nano – t3.2xlarge' Il prezzo parte da $ 0,0058 - $ 0,3328 all'ora |
Standard | n1-standard-1 – n1-standard-96 I prezzi partono da $ 0,034 - $ 3,193 all'ora | m4.large – m4.16xlarge m5.large – m5d.metal I prezzi partono da $ 0,1 - $ 5,424 all'ora |
Memoria elevata/ ottimizzata per la memoria | n1-highmem-2 – n1-highmem-96 n1-megamem-96 n1-ultramem-40 – n1-ultramem-160 I prezzi partono da $ 0,083 - $ 17,651 all'ora | r4.large – r4.16xlarge x1.16xlarge – x1.32xlarge x1e.xlarge – x1e.32xlarge I prezzi partono da $ 0,133 - $ 26,688 all'ora |
CPU/Storage elevati ottimizzati | n1-highcpu-2 – n1-highcpu-32 I prezzi partono da $ 0,05 - $ 2,383 all'ora | h1.2xlarge – h1.16xlarge i3.large – i3.metal I3en.large - i3en.metal d2.xlarge – d2.8xlarge I prezzi partono da $ 0,156 - $ 10,848 all'ora |
Prezzi (istanza di calcolo, disco, vCPU, memoria e rete)
Anche il prezzo dipende dalla regione in cui si trova, dal tipo di sistema operativo o di licenza (RHEL vs Suse Linux Enterprise) e anche dal tipo di spazio di archiviazione su disco che stai utilizzando.
GCP offre anche sconti che ti consentono di economizzare il consumo di risorse. Per Compute Engine, offre diversi sconti di cui usufruire.
Gli sconti per uso sostenuto si applicano alle seguenti risorse:
-
Le vCPU e la memoria per tipi di macchine personalizzate e predefinite per uso generico
-
Le vCPU e la memoria per i tipi di macchine con ottimizzazione della memoria
-
Le vCPU e la memoria per i tipi di macchine ottimizzate per il calcolo
-
Le vCPU e la memoria per i nodi single-tenant
-
Il costo premium del 10% per i nodi single-tenant, anche se le vCPU e la memoria in quei nodi sono coperte da sconti sull'utilizzo impegnato
-
Dispositivi GPU1
Tieni presente che gli sconti per uso sostenuto non si applicano alle VM create utilizzando l'ambiente flessibile di App Engine e il flusso di dati cloud.
Puoi anche utilizzare gli sconti sull'utilizzo impegnato quando acquisti un VMS vincolato a un contratto. Questo tipo di scelta è ideale per carichi di lavoro prevedibili ed esigenze di risorse. Quando acquisti un contratto di utilizzo impegnato, acquisti una certa quantità di vCPU, memoria, GPU e SSD locali a un prezzo scontato in cambio dell'impegno a pagare tali risorse per 1 o 3 anni. Lo sconto arriva fino al 57% per la maggior parte delle risorse come tipi di macchine o GPU. Lo sconto è fino al 70% per i tipi di macchine con ottimizzazione della memoria. Una volta acquistate, ti vengono fatturate mensilmente le risorse acquistate per la durata del periodo che hai selezionato (indipendentemente dal fatto che utilizzi i servizi o meno).
Una VM prerilasciabile è un'istanza che puoi creare ed eseguire a un prezzo molto inferiore rispetto alle normali istanze. Compute Engine può, tuttavia, terminare (anticipare) queste istanze se richiede l'accesso a tali risorse per altre attività. Le istanze prerilasciabili utilizzano la capacità di Compute Engine in eccesso, quindi la loro disponibilità varia in base all'utilizzo.
Se le tue applicazioni sono a tolleranza di errore e possono resistere a possibili prerilasci delle istanze, le istanze prerilasciabili possono ridurre significativamente i costi di Compute Engine. Ad esempio, i lavori di elaborazione batch possono essere eseguiti su istanze prerilasciabili. Se alcune di queste istanze terminano durante l'elaborazione, il lavoro rallenta ma non si interrompe completamente. Le istanze prerilasciabili completano le tue attività di elaborazione batch senza aggiungere ulteriore carico di lavoro alle istanze esistenti e senza richiedere il pagamento del prezzo intero per ulteriori istanze normali.
Per Compute Engine, le dimensioni del disco, la memoria del tipo di macchina e l'utilizzo della rete vengono calcolati in gigabyte (GB), dove 1 GB corrisponde a 230 byte. Questa unità di misura è anche nota come gibibyte (GiB). Ciò significa che GCP ti offre di pagare solo in base al consumo di risorse che hai allocato.
Ora, se si dispone di un'applicazione di database di produzione di alta qualità, è consigliabile (e ideale) collegare o aggiungere un disco persistente separato. Dovresti quindi utilizzare quel disco come volume del database, poiché offre prestazioni del disco affidabili e coerenti in GCE. Maggiore è la dimensione che imposti, maggiore è l'IOPS che ti offre. Dai un'occhiata al loro elenco di prezzi del disco persistenti per determinare il prezzo che otterresti. Oltre a ciò, GCE dispone di un disco persistente regionale, adatto nel caso in cui sia necessaria un'elevata disponibilità più solida e sostenibile all'interno del cluster di database. Il disco persistente regionale aggiunge più ridondanza nel caso in cui l'istanza si arresti, si arresti in modo anomalo o venga danneggiata. Fornisce la replica sincrona dei dati tra due zone in un'area che avviene in modo trasparente nell'istanza della macchina virtuale. Nell'improbabile caso di errore di zona, il carico di lavoro può eseguire il failover su un'altra istanza VM nella stessa zona o in una zona secondaria. Puoi quindi collegare forzatamente il tuo disco persistente regionale a quell'istanza. Il tempo di attacco forzato è stimato in meno di un minuto.
Se archivi i backup come parte della tua soluzione di ripristino di emergenza e richiedi un volume a livello di cluster, GCP offre Cloud Filestore, NetApp Cloud Volumes e alcune altre soluzioni alternative per la condivisione di file. Si tratta di servizi completamente gestiti che offrono servizi standard e premium. Puoi controllare la pagina dei prezzi di NetApp qui e i prezzi di Filestore qui.
Crittografia Galera su GCP
GCP non include il supporto specifico per il tipo di crittografia disponibile per Galera. GCP, tuttavia, crittografa i dati dei clienti archiviati inattivi per impostazione predefinita, senza che tu richieda alcuna azione aggiuntiva. GCP offre anche un'altra opzione per crittografare i tuoi dati utilizzando le chiavi di crittografia gestite dal cliente (CMEK) con Cloud KMS e con le chiavi di crittografia fornite dal cliente (CSEK). GCP utilizza anche la crittografia SSL/TLS per tutte le comunicazioni intercettate mentre i dati si spostano tra il tuo sito e il provider cloud o tra due servizi. Questa protezione si ottiene crittografando i dati prima della trasmissione; autenticare gli endpoint; e decrittografare e verificare i dati all'arrivo.
Poiché Galera utilizza MySQL sotto il cofano (build Percona, MariaDB o Codership), puoi sfruttare il plug-in File Key Management Encryption di MariaDB o utilizzando i plug-in MySQL Keyring. Ecco un blog esterno di Percona che è una buona risorsa su come implementarlo.
Distribuzioni multi-AZ/Multi-regione/multi-cloud del cluster Galera con GCP
Come per AWS, GCP non offre supporto diretto per distribuire un cluster Galera su un Multi-AZ/-Region/-Cloud.
Alta disponibilità, scalabilità e ridondanza del cluster Galera su GCP
Uno dei motivi principali per utilizzare un cluster di nodi Galera è l'elevata disponibilità, la ridondanza e la sua capacità di scalabilità. Se stai servendo il traffico a livello globale, è meglio soddisfare il tuo traffico in base alle regioni con il tuo progetto architettonico, inclusa una distribuzione geografica dei nodi del tuo database. A tal fine, è consigliabile e realizzabile l'implementazione multi-AZ e multi-regione o multi-cloud/multi-datacenter. Ciò impedisce che il cluster si arresti o si verifichi un malfunzionamento del cluster a causa della mancanza di quorum.
Per aiutarti di più con il tuo progetto di scalabilità, GCP ha anche una scalabilità automatica che puoi configurare con un gruppo di scalabilità automatica. Funzionerà fintanto che hai creato il tuo cluster come gruppi di istanze gestite. Ad esempio, puoi monitorare l'utilizzo della CPU o fare affidamento sulle metriche di Stackdriver definite nella tua policy di scalabilità automatica. Ciò ti consente di eseguire il provisioning e automatizzare le istanze quando viene raggiunta una determinata soglia o di terminare le istanze quando torna al suo stato normale.
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. Ciò include l'inoltro del set di scrittura e la selezione dei donatori IST e SST. Questo tipo di configurazione consente di distribuire più nodi in regioni diverse. Oltre a ciò, puoi anche distribuire i tuoi nodi Galera su un diverso instradamento del fornitore di cloud da GCP, AWS, Microsoft Azure o in locale.
Ti consigliamo di consultare il nostro blog Configurazioni multiple di data center utilizzando il cluster Galera per MySQL o MariaDB e Migrazione della rete zero tempi di inattività con il cluster MySQL Galera utilizzando il nodo di inoltro per raccogliere ulteriori informazioni su come implementare questi tipi di distribuzioni.
Prestazioni del database del cluster Galera su GCP
Poiché non è disponibile il supporto per Galera in GCP, le tue scelte dipendono dai requisiti e dal design delle richieste di traffico e risorse della tua applicazione. Per le query ad alto consumo di memoria, puoi iniziare con l'istanza n1-highmem-2. Le istanze ad alta CPU (famiglia n1-highcpu*) possono essere una buona soluzione se si tratta di un database con transazioni elevate o una buona soluzione per le applicazioni di gioco.
Scegliere lo storage giusto e gli IOPS richiesti per il volume del database è un must. In genere, il disco persistente basato su SSD è la tua scelta qui. Dipende dal volume di traffico richiesto, potresti dover controllare le opzioni di archiviazione GCP in modo da poter determinare la dimensione giusta per la tua applicazione.
Ti consigliamo inoltre di controllare e leggere il nostro blog Come migliorare le prestazioni del cluster Galera per MySQL o MariaDB per saperne di più sull'ottimizzazione del tuo cluster Galera.
Backup dei dati di Galera su GCP
Non solo è necessario eseguire il backup dei dati di MySQL Galera, ma è necessario anche eseguire il backup dell'intero livello che comprende l'applicazione del database. Ciò include file di registro (logici o binari), file esterni, file temporanei, file di dump e così via. Google consiglia di creare sempre uno snapshot dei volumi dei dischi persistenti utilizzati dalle istanze GCE. Puoi facilmente creare e pianificare istantanee. Gli snapshot GCP sono archiviati in Cloud Storage e puoi selezionare la posizione o la regione desiderata in cui verrà posizionato il backup. Puoi anche impostare una pianificazione per le tue istantanee e impostare un criterio di conservazione delle istantanee.
Puoi anche utilizzare servizi esterni come ClusterControl, che fornisce soluzioni di monitoraggio e backup. Dai un'occhiata se vuoi saperne di più.
Monitoraggio del database del cluster Galera su GCP
GCP non offre il monitoraggio del database quando si utilizza GCE. Il monitoraggio dell'integrità dell'istanza può essere eseguito tramite Stackdriver. Per il database, tuttavia, sarà necessario utilizzare uno strumento di monitoraggio esterno che disponga di metriche di database avanzate e altamente granulari. Ci sono molte scelte tra cui puoi scegliere come PMM di Percona, DataDog, Idera, VividCortex o il nostro ClusterControl (il monitoraggio è GRATUITO con ClusterControl Community.)
Sicurezza del database del cluster Galera su GCP
Come discusso nel nostro blog precedente, puoi adottare lo stesso approccio per proteggere il tuo database nel cloud pubblico. In GCP puoi configurare una sottorete privata, regole del firewall per consentire solo le porte necessarie per l'esecuzione di Galera (in particolare le porte 3306, 4444, 4567, 4568). È possibile utilizzare il gateway NAT o configurare un host bastion per accedere ai nodi del database privato. Quando questi nodi sono incapsulati, non è possibile accedervi dall'esterno dei locali GCP. Puoi leggere il nostro blog precedente Distribuzione della replica MySQL multicloud sicura su AWS e GCP con VPN su come l'abbiamo configurata.
Oltre a questo, puoi proteggere i tuoi dati in transito utilizzando una connessione TLS/SSL o crittografando 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, puoi seguire la discussione che ho affermato in precedenza nella sezione Crittografia di questo blog.
Risoluzione dei problemi del cluster Galera
GCP offre Stackdriver Logging che puoi sfruttare per aiutarti con i requisiti di osservabilità, monitoraggio e notifica. Il bello di Stackdriver Logging è che offre l'integrazione con AWS. Con esso puoi catturare gli eventi in modo selettivo e quindi generare un avviso basato su quell'evento. Questo può tenerti aggiornato su determinati problemi che possono sorgere e aiutarti durante la risoluzione dei problemi. GCP dispone anche di registri di controllo cloud che forniscono informazioni più tracciabili dall'interno dell'ambiente GCP, dall'attività dell'amministratore, dall'accesso ai dati e dagli eventi di sistema.
Se stai usando ClusterControl, vai su Registri -> Registri di sistema e sarai in grado di sfogliare i log degli errori acquisiti 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
Google Cloud Platform offre un'ampia gamma di servizi efficienti e potenti che puoi sfruttare. Ci sono effettivamente pro e contro per ciascuna delle piattaforme cloud pubbliche, ma GCP dimostra che AWS non ha un blocco sul cloud.
È interessante notare che grandi aziende come Vimeo si stanno spostando su GCP provenendo dall'on-premise e hanno ottenuto risultati interessanti nel loro stack tecnologico. Anche Bloomberg è soddisfatto di GCP e utilizza Percona XtraDB Cluster (una variante di Galera). Facci sapere cosa ne pensi dell'utilizzo di GCP per le configurazioni di MySQL Galera nei commenti qui sotto.