Salta al contenuto
WordPress

Che cos'è MaxScale? Un proxy per i database MariaDB e MySQL

Team Host.it 5 min di lettura

Contenuto

Abbiamo già parlato di come MaxScale ci permetta di avere database ad alte prestazioni e costruire delle architetture flessibili . Adesso entreremo nel dettaglio sulle caratteristiche e funzionalità di questo proxy per database.

Un proxy è un server che fa da intermediario in una connessione: riceve le richieste da un client e le reindirizza verso altri server che sono i destinatari delle richieste. In altre parole un proxy è un mezzo per deviare una connessione tra due computer in modo da non collegarli direttamente. Un proxy funziona come un centralinista : riceve la chiamata da chi vuole telefonare e la gira all'interno desiderato.

MaxScale si può inserire in modo trasparente tra l'applicativo e il server MySQL, esattamente come fa un proxy web tra il nostro browser (es. Firefox) e il sito che stiamo cercando di visitare. Grazie ad un proxy è possibile avere:

Ridondanza : usando più di un database dietro al proxy. Un solo server non fornisce l'affidabilità e l'alta disponibilità in caso di down di una macchina.

Diminuzione dei costi di infrastruttura : perché generalmente due server piccoli sono meno costosi che un unico server molto performante.

Vedremo due tipi di database proxy server:

I proxy di livello trasporto come HAProxy

I proxy di livello applicativo come MaxScale

HAProxy: un proxy efficiente, rapido e funzionale Fino ad oggi il proxy più usato in ambito MySQL è l' HAProxy che lavora ad un livello più basso (livello 4: trasporto). HAproxy non conosce nulla di MySQL e si occupa solo di bilanciare le connessioni tra più server. E' molto veloce, leggero ed efficente, tuttavia questo bilanciamento è fatto senza conoscere cosa sta smistando. Questo rende il sistema meno efficente poiché un server può ricevere molte richieste pesanti, mentre altri server possono essere scarichi. Quindi l'HAProxy non è la scelta vincente in tutti i casi.

MaxScale: un proxy che può fare cose incredibili

MaxScale lavora a livello più alto (livello 7: applicativo), monitorando i server riesce a capire cosa sta succedendo all'interno dell'infrastruttura. Conoscendo il protocollo MySQL può intervenire manipolando il traffico tra client e server. Ecco alcune delle sue principali funzionalità:

Filtro delle query al database

Gestione del routing: instradamento delle richieste a uno o più database server

Modifica delle query al volo prima che raggiungano il database

Possibilità di nascondere la struttura interna dell'infrastruttura lasciando un singolo punto d'accesso.

Alta affidabilità e scalabilità del sistema

Possibilità di spostare un database dal server locale ad un server esterno senza modificare la configurazione delle applicazioni

Divide automaticamente le scritture sul server MASTER e le letture su uno o più database SLAVE.

MaxScale può fornire un Load Balacing delle connessioni senza bisogno di utilizzare applicazioni o CMS che prevedano questa funzionalità. Questo significa che CMS come Joomla! o WordPress possono trarre i benefici usando una replicazione Master/Slave per rendere scalabile il proprio sito.

Caratteristiche di MaxScale Il punto di forza di MaxScale è sicuramente la sua modularità che permette una notevole libertà adattandosi a molti casi d'uso. MaxScale è:

Modulare : un sistema di moduli ne definisce le funzionalità

Estendibile : è possibile applicare più filtri anche in cascata

Flessibile : i moduli e i filtri possono essere aggiunti dinamicamente

Di seguito i 5 moduli che costituiscono il cuore di MaxScale:

Protocol : da la possibilità di utilizzare più protocolli es. MySQL client, http, telnet

Authentication : il sistema di autenticazione permette ai client di accedere a MaxScale usando le credenziali presenti sui server di Backend

Monitor : legge la configurazione dello stato del sistema direttamente dai server di backend

Router : smista le connessioni a uno o più database di backend

Filter e logging : i filtri permettono di modificare le query oppure di scrivere un file di log con tutte le richieste e le risposte ricevute.

1. Protocollo di connessione I client si connettono a MaxScale anziché al database MySQL senza accorgersi della differenza. Possono usare le stesse librerie di connessione utilizzate fino ad ora: es. MySQL client o MariaDB client.

2. Autenticazione MaxScale non ha un sistema di autenticazione o un database di utenti. Vengono utilizzati gli stessi utenti presenti sui database di backend, caricati all'avvio dell'applicazione.

3. Monitor Viene utilizzato per capire in ogni momento lo stato di tutti i database di backend collegati a MaxScale. In questo modo è possibile sapere qual'è il server Master e quanti Slave stanno replicando correttamentei dati. Il monitor può essere utilizzato per controllare un Galera Cluster .

4. Router Dirige il traffico dal client ai server utilizzando una regola specifica:

Connection routing : normale router di connessione ad un database

Read/Write Split router : smista le richieste di scrittura sul MASTER e le richieste di lettura su uno degli SLAVE collegati

5. Filtri e log delle query Tra i più potenti strumenti messi a disposizione di MaxScale ci sono sicuramente i filtri che permettono di effettuare operazioni avanzate sulle query senza modificare il comportamento dell'applicazione:

Processando query SQL e risultati

Utilizzando una semplice regex

Analizzando, modificando o rifiutando le query

Mettendo più filtri in cascata

Durante il nostro test per MariaDB abbiamo capito che questo prodotto ci può aiutare a far scalare la nostra piattaforma di Joomla Cloud Hosting , mantenendo la retrocompatiblità con tutte le versioni di Joomla! e utilizzare allo stesso tempo i database server più aggiornati. Da qualche settimana è stata rilasciata la versione 1.0.4-stable . Nonostante il progetto sia ancora giovane, lo consiglierei a tutti quelli che hanno un sito molto grande e vogliono avere la possibilità di far scalare le performance del database senza modificare il codice del CMS.

Nel prossimo articolo vedremo come abbiamo creato un ambiente di sviluppo utilizzando Docker e Vagrant. Se stai utilizzando MaxScale per uno dei tuoi progetti lascia un commento per condividere con noi questa esperienza.

Hosting WordPress

Hosting ottimizzato per WordPress

SSD, backup, SSL e Application Manager: pubblica e aggiorna il sito con assistenza in italiano.

Dal blog

WordPress

WordPress 7.0 e l’AI

Cosa cambia per le web agency

Sicurezza

Patch a caldo, sito acceso

CVE kernel senza riavvii a raffica

Dall' archivio

WordPress

Host Academy su Carta Giovani Nazionale, sconto del 58% per i giovani fino a 35 anni

WordPress

Nuove funzionalità e rilasci - Settembre 2022