MaxScale è il nuovo database proxy server open source sviluppato da MariaDB Corporation Ab.
MaxScale nasce con un concetto di proxy alla base, ma con una filosofia ed un approccio “database centrico” ed una architettura a plugin estremamente configurabile.
Per chi si fosse perso i precedenti articoli riguardanti i Proxy Server, ricordiamo che, un proxy, è un server che fa da intermediario in una connessione, ossia esso riceve le richieste da un client e le reindirizza verso altri server che sono i destinatari delle richieste. In altre parole un proxy funziona come un centralinista: riceve la chiamata del cliente e la gira al primo operatore libero.
Per capire meglio cosa e’ in grado fare elenchiamo alcune delle sue funzionalità principali quali:
- controllo della disponibilità del Database (monitoring)
- load balancing
- analisi della query in ingresso per capire se indirizzarla su una specifica tipologia di server
tutto questo, e molto altro ancora.
MaxScale si può inserire in modo trasparente tra l’applicativo e il server MySQL, esattamente come fa un proxy web tra il nostro browser e il sito che stiamo cercando di visitare.
Grazie ad un proxy è possibile avere:
- Ridondanza: usando più di un database dietro al proxy, poiche’ un solo server non fornisce l’affidabilità e l’alta disponibilità in caso di down di una macchina.
- Diminuizione dei costi di infrastruttura: perché generalmente due server piccoli sono meno costosi che un unico server molto performante.
Per migliorare la spiegazione ora vedremo due tipi di database proxy server:
I proxy di livello trasporto come HAProxy (di cui abbiamo piu’ volte parlato in altri articoli).
I proxy di livello applicativo come MaxScale
HAProxy: un proxy efficiente, rapido e funzionale
Fino ad oggi tra i proxy più usati in ambito MySQL Cluster è l’HAProxy che lavora ad un livello più basso (livello 4: trasporto). HAproxy pero’ non conosce nulla di MySQL e si occupa quindi soltanto di bilanciare le connessioni tra i server. Haproxy e’ molto veloce, leggero ed efficente, tuttavia questo tipo di bilanciamento è fatto senza che il proxy sia a conoscenza di 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: e’ un proxy che in configurazioni di questo tipo può fare cose incredibili
MaxScale lavora a livello più alto (livello 7: applicativo) e, 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
I moduli base di MaxScale
Ecco i 5 moduli che costituiscono il cuore di MaxScale:
- Protocol: da la possibilità di utilizzare più protocolli es. MySQL client, http, telnet;
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 - Authentication: il sistema di autenticazione permette ai client di accedere a MaxScale usando le credenziali presenti sui server di Backend;
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 - Monitor: legge la configurazione dello stato del sistema direttamente dai server di backend;
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. - Router: smista le connessioni a uno o più database di backend;
Dirige il traffico dal client ai server utilizzando una regola specifica denominata connection routing - 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;
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, 1) processando query SQL e risultati, 2) utilizzando una semplice regex, 3) analizzando, modificando o rifiutando le query, 4) mettendo più filtri in cascata
Non resta che testare di persona, magari con un ambiente ad hoc con Docker e Vagrant.
Archiviato in:DB, Proxy
Leggi il contenuto originale su Tutti per Linux