MaxScale DB Proxy scalabile

by Tutti per Linux on

 

MaxScale DB Proxy Server

MaxScale DB Proxy Server

Il suo nome per esteso e’ “MariaDB MaxScale” ed è il nuovo database proxy server open source sviluppato da MariaDB Corporation Ab.

In pratica  MaxScale ci permetta di avere database ad alte prestazioni, in grado di consentire la costruzione di architetture flessibili. Ecco nel dettaglio le sue caratteristiche e funzionalità principali.

 

Innanzitutto ricordiamo a tutti che, 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, nella sua pratica, 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. Chrome) 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.
  • Diminuizione dei costi di infrastruttura: perché generalmente due server piccoli sono meno costosi che un unico server molto performante.

Vedremo ora due tipologie 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 MasterR 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 WordPress o Joomla possono trarne dei 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, infatti 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

Quelli elencati qui sotto sono 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.

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

Insomma, da questo primo articolo, si deduce che le potenzialita’ sono tutte a favore di MaxScale

 

#MaxscaledbproxyserverMysql


Archiviato in:DB, Proxy, SysAdmin

Leggi il contenuto originale su Tutti per Linux

Written by: Tutti per Linux