WARP la VPN di Cloudflare per il Mobile

Warp la VPN Mobile di Cloudflare

 

Cloudflare e’ ormai un’azienda affermata, tanto quanto Akamai o Amazon…..; in pratica CloudFlare è un sistema di reverse proxy con funzioni di CDN (Content Delivery Network), è dunque un servizio che si interpone tra il server dove viene ospitato il tuo sito ed i tuoi visitatori, svolgendo anche funzioni di caching, velocizzando cosi ulteriormente le performance del tuo sito.
Ma non si limita alla distribuzione dei contenuti statici (come potrebbe fare una normale CDN), infatti offre numerose funzionalità per aumentare la sicurezza, ottimizzare i siti, velocizzare le risoluzioni dei DNS e proteggerti dagli attacchi DDOS.

Ad oggi, con oltre il 39% dei domini DNS gestiti, Cloudflare gestisce una delle più grandi e autorevoli reti DNS al mondo, non a caso Cloudflare ha sviluppato un servizio di risoluzione “DNS Resolver” ad hoc (il famoso IP 1.1.1.1) che nulla ha da invidiare a quello di Google o di OpenDNS.

Non pago, Cloudflare, dopo aver lanciato il suo DNS Resolver 1.1.1.1, si è focalizzata nello sviluppo di soluzioni consumer per migliorare la privacy e la sicurezza per la navigazione sul web, infatti e’ notizia recente che 1.1.1.1 DNS è solo un tassello di una strategia ben più vasta di Cloudflare, e proprio in questi giorni infatti l’azienda ha lanciato il suo nuovo servizio VPN, chiamato WARP, pensato appositamente per gli utenti mobile.

Possiamo affermare in tutta tranquillita’ che oggi, gran parte degli utenti di Internet utilizza uno smartphone per interfacciarsi con la Rete. Tuttavia i protocolli Internet, come ad esempio il TCP, sono stati progettati in modo specifico per delle reti wired (rete standard cablata LAN) quindi non riescono ad offrire le medesime performance con le grandi reti wireless.

E’ per questo motivo che il team di Cloudflare ha sviluppato un servizio VPN ottimizzato per i dispositivi che sfruttano unicamente le reti wireless, come appunto gli smartphone. Warp è stato creato basandosi sul protocollo UDP (User Datagram Protocol) e su WireGuard, che e’ il successore di OpenVPN (ne parleremo nel prossimo articolo).

Le caratteristiche del protocollo UDP sono le seguenti:

  • E’ un protocollo non orientato alla connessione, utilizzato quando l’affidabilità, il cui controllo viene richiesto ai protocolli applicativi che ne fanno uso, non è il target primario.

Ma se per il protocollo UDP l’affidabilita’ non e’ il target primario, perche’ e’ stato scelto proprio questo protocollo, rispetto al TCP ??

Perché UDP

Come appena spiegato, a differenza del TCP, UDP ha la caratteristica di essere ” connection less “, inoltre non si occupa di gestire il riordinamento dei pacchetti né la ritrasmissione di quelli persi.

Per tali motivi solitamente è considerato meno affidabile di TCP, tuttavia UDP è molto rapido nelle sue operazioni, visto che non presenta latenza per il riordino e la ritrasmissione. Quindi risulta essere molto efficiente quando implementato, ad esempio, nei sistemi VOIP.

Perché WireGuard

WireGuard e un protocollo che implementa una virtual private network per creare connessioni sicure Point-to-Point in configurazione routed o bridged. Inoltre viene eseguito come modulo nel kernel Linux ed in certi contesti permette di avere prestazioni migliori rispetto ad altri protocolli simili come i ben piu’ conosciuti IPsec o OpenVPN.

WireGuard utilizza alcune specifiche tecnologie per la gestione della criptografia come, Curve25519 per lo scambio chiavi, ChaCha20 e Poly1305 per l’autenticazione e BLAKE2s per l’hashing. Queste permettono a WireGuard di impattare in modo molto contenuto sui consumi energetici e di rete dei dispositivi mobile.

Perche’ WARP

Perche’ Warp, non solo permette di ottenere buone performance con gli smartphone, ma offre anche tutte le features di privacy e sicurezza disponibili con il servizio DNS Resolver 1.1.1.1.

Dopo i tanti scandali sulla privacy, possiamo aggiungere con un certo piacere che, tra le caratteristiche di Warp c’e’ quella di non salvare i log di navigazione degli utenti, poiche’ il suo modello di business non è incentrato sulla vendita di dati a società terze, prova ne e’ che non è nemmeno necessario inserire i propri dati personali per utilizzare l’applicazione associata.

Attualmente Warp è gratuito anche se il team di Cloudflare è al lavoro per realizzare anche un servizio premium chiamato Warp+, basato sul virtual private backbone dell’azienda californiana e sulla tecnologia Argo.

NGROK – reverse proxy server cross-platform

ngrok mostrare un sito in locale

Ngrok Pubblica il tuo sito in localhost

Lo sviluppo di siti e di Webb Application e’, al giorno d’oggi, uno dei core business piu’ importanti per la maggior parte delle aziende in tutto il mondo, motivo per cui sono nati una grande quantita’ di tool per agevolare i web developer durante tutte le operazioni di sviluppo, test e produzione.

Molto spesso capita che non si abbia il tempo o anche il budget per gestire piu’ ambienti di sviluppo, cosi ci si riduce per avere tutto il proprio ambiente [sviluppo / test / pre produzione] soltanto sul proprio pc.

Come fare quindi se c’e’ bisogno di mostrare l’avanzamento del lavoro al cliente senza dover prima creare e/o aggiornare gli altri ambienti di test/pre-produzione??? …. e’ per aiutare in questa pressante fase che e’ nato un tool come ngrok.

Ngrok e’ un reverse proxy server con cui e’ possibile rendere “pubblico” un server locale, anche se e’ collocato dietro un NAT od un Firewall, il tutto tramite secure tunnel. Quindi attraverso Ngrok si potra’ implementare un personal cloud service direttamente dalla propria postazione di lavoro realizzando cosi uno stack LAMP/LEMP

 

INSTALLAZIONE

mkdir ngrok
cd ngrok/
wget -c https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-linux-amd64.zip
unzip ngrok-stable-linux-amd64.zip

Dopo aver installato il pacchetto possiamo fare una prova, se ad esempio usate come web server Apache, potete farlo in questo modo;

sudo nano /var/www/html/index.html

<!DOCTYPE html> <html> <body> <h1>Prova</h1> <p>Test di Ngrock.</p> </body> </html>

Salviamo il file e ora possiamo avviare il tool puntandolo sulla porta su cui abbiamo in ascolto il nostro Web server:

ngrok http 80

Una volta lanciato il comando ci apparira’ qualcosa di simile:

Session Status online Session Expires 7 hours, 53 minutes
Version 2.2.8 Region United States (us)
Web Interface http://127.0.0.1:4040
Forwarding http://44c9afca.ngrok.io -> localhost:80
Forwarding https://44c9afca.ngrok.io -> localhost:80

Una volta avviato possiamo dunque iniziare ad usarlo anche tramite la comoda interfaccia Web:

http://localhost:4040

ngrok localhost

Tornando alla descrizione del Tunnel appena creato, le voci a cui dobbiamo fare caso sono:

  • Web Interface: tramite questo indirizzo potrai accedere ad un’interfaccia web dove puoi monitorare tutte le attività associate all’url che hai appena creato. Questo vuol dire che potrai vedere quanti utenti si stanno collegando ed altre informazioni.
  • Forwarding: questo è il link che dovrai fornire al tuo cliente. Hai entrambe le versioni, sia http che https. Lavorando in locale probabilmente userai quasi sempre l’http.
  • HTTP Requests: In questa sezione vedrai in tempo reale tutte le richieste http che vengono fatte tramite il tuo link. Ti è utile per capire se qualcuno sta guardando il sito in un dato momento.

Quindi dando al proprio cliente il link http://44c9afca.ngrok.io  quest’ultimo avra’ accesso alla root web del localhost

Questo vuol dire che se stai utilizzando MAMP o XAMPP verrà servito il file index.php all’interno della tua cartella /htdocs

Se invece utilizzi WAMP su Windows il tuo tunnel porterà gli utenti alla index.php della cartella www

Per coloro che utilizzano un Virtual Host per gestire i tuoi progetti la procedura e’
leggermente diversa ma pur sempre semplice; nella pratica bastera’ aggiungere un solo
parametro, come nell’esempio seguente:

ngrok http -host-header=miosito.dev 80

dove ovviamente al posto di “miosito.dev” metterete l’indirizzo del vostro in locale. ** WordPress per coloro che invece usano la piattaforma di WordPress si dovranno applicare altri accorgimenti per far in modo che il vostro cliente veda correttamente il sito. Questo perche’ tutti gli url che creati da WordPress sono assoluti ovvero mostrano per esteso l’indirizzo di un determinato documento. Per poter effettuare questo tipo di modifica consiglio di utilizzare un comodo tool come Relative URL , un tool che fa gia parte dei plugin consigliati da WordPress, con il quale sara’ possibile modificare URL da qualcosa come questo (esempio):

http://localhost:8080/wp/2012/09/01/hello-world/

in qualcos’altro come questo:

/wp/2012/09/01/hello-world/

Una volta effettuate tutte le modifiche del caso bisognera’ aggiornare il file wp-config.php
inserendo, prima della riga “/* i parametri dei re indirizzamenti, qualcosa del tipo:

define('WP_SITEURL', 'http://' . $_SERVER['HTTP_HOST']);
define('WP_HOME', 'http://' . $_SERVER['HTTP_HOST']);

PS:Ricordatevi di disinstallare il plugin e rimuovere le righe di codice dal file wp-config.php quando metterete il sito online.

Le configurazioni possibili con Ngrok sono davvero svariate e potete trovare tutto cio che non e’ stato contemplato in questo articolo, direttamente sul sito del progetto NGROK

Navigazione Anonima – Quello che dovresti sapere

Anonimi sul Web

Anonimi sul Web

Partiamo subito con il chiarire che la navigazione anonima del browser non ti rende invisibile sul web, in quanto non nasconde il tuo indirizzo IP.

Bisogna iniziare a dipanare alcune false convinzioni e cattivi modi di utilizzare un potente mezzo come Internet.

Domanda: Sai quali dati lasci in giro ogni volta che navighi?

La definizione piu’ errata e’ l’utilizzo del termine navigazione anonima (o navigazione in incognito) come il nome dell’opzione attivabile sui browser che consente di non salvare i cookies a livello locale.

Un ‘infinita’ di persone naviga su internet pensando che quando attiva la navigazione anonima “nessuno” possa sapere che cosa stiano facendo , cosa stiano visitando , e credono realmente che questa semplice opzione li renda immuni da ogni pericolo del web, al sicuro da occhi indiscreti.

MA IN INCOGNITO DA CHI ?

Teoricamente da tutti coloro che nella rete ci vivono per spiare gli altri con scopi di diverso genere, pubblicita’ occulta e non richiesta, stalker e quant’altro si possa trovare nel web, ma in realta’ navigheremo in incognito soltanto da noi stessi; perche’ cio !!!???

 

Proviamo a spiegare meglio.

Diciamo che stai navigando dal tuo pc (o da quello dell’ufficio) e decidi di aprire una nuova finestra per navigare in incognito, bene, di fatto ti si apre una sessione di navigazione internet dove tutti i dati raccolti durante la navigazione, una volta chiusa la sessione verranno cancellati, nella realta’ delle cose cio’ avverra’ soltanto a livello LOCALE, quindi solo nel vostro PC, ehhhhh gia’.

Diamo per vero che se “navighi in incognito” e fai login in un sito web (home banking per esempio) , una volta chiusa la finestra del browser i dati delle vostre password e i siti web che avete vistato non verranno salvati nel tuo computer, ma questo purtroppo non significa che, ad esempio, il vostro capo curioso, accedendo al server aziendale, oppure il  provider , o ancora il proprietario del sito web , i server DNS , i sistemi di raccolta dati e via dicendo non sappiano che VOI , dal vostro computer , con il vostro specifico indirizzo ip , dalla vostra postazione e locazione fisica avete navigato su un determinato sito , avete scritto la mail a una determinata persona , avete effettuato l’accesso ad un determinato servizio etc etc……

E QUINDI COSA POSSIAMO FARE?

La prima cosa da definire e’ il concetto di privacy, ovvero cos’e’ che in qualita’ di utenti, internauti, vogliamo “nascondere” da occhi curiosi:

  • Mantenere riservati i miei usi e costumi
  • Mantenere riservato il luogo dal quale mi connetto (che per alcuni utenti in luoghi del mondo ad alta censura è a tutti gli effetti una questione di sicurezza personale)
  • Mantenere riservate le mie comunicazioni personali , le e-mail , messaggi e dati scambiati con App di vario genere (whatsapp, skype, hangout etc…), da mobile o pc
  • Non rendere pubblici i miei dati di navigazione (user & password di servizi primari con home banking etc)

 Tutto questo NON viene fatto da una semplice navigazione anonima del browser e se pensavate il contrario e’ il momento di aprire gli occhi.

Facciamo un esempio concreto; ognuno di noi per navigare, che sia da casa o dall’ ufficio, ha necessita’ di attivare una connessione con un ISP (Internet Service Provider).

In Italia i dati della navigazione vengono, per legge, salvati per diversi anni , il tuo provider quindi mantiene memorizzate informazioni come i siti web che visiti (streaming online , siti web per adulti , torrent , banche , comunicazioni di ogni genere…) , dunque ogni volta che mandi una mail loro possono sapere quale indirizzo di posta la manda , a chi , da dove , con che indirizzo IP, e molto altro ancora.

Se fate uso di software p2p o torrent, possono sapere l’origine del traffico , cosa scaricate, possono arrivare a filtrare la vostra connessione fino a rallentarla (vi sara’ successo sicuramente guardando film in streaming da siti FREE), in piu’ tutto questo traffico di dati avviene totalmente in chiaro. Insomma, tanta pubblicita’ per venderti una ADSL da 100 mega e poi scarichi a 500 kb , non ti sei ancora chiesto perchè ?

Tutti questi dati di fatto vengono usati per “schedare quotidianamente usi e costumi di milioni di persone, salvando di fatto tutte le tue personali abitudini e, purtroppo, a causa di vari proclami contro il terrorismo e presunti hacker cattivi (definiti cosi soltanto perche’ svelano gli altarini di alcune potenze), stiamo prendendo la direzione di un aumento del controllo su tutto quello che facciamo in rete.

Dunque: NAVIGAZIONE ANONIMA NON VUOL DIRE NAVIGAZIONE SICURA

Quante volte vi e’ capitato di collegarvi ad una rete WiFi Free, in un’ internet caffè o in altri luoghi pubblici, magari per fare la prenotazione di un Volo o di un Hotel ?

Situazione ancora piu’ pericolosa, sei in viaggio e decidi di collegarti usando il WI-FI dell’albergo e compri da vari servizi on line, pagando tramite la carta di credito (pauraaaa). Di fatto, ad un malintenzionato, basterebbe installare sul router dell’albergo dei trojan, che oggi giorno sono alla portata di un quattordicenne smaliziato, per potersi intrufolare nella comunicazione, tra voi ed il sito esterno, e letteralmente carpire i vostri dati in chiaro (un tipo di attacco che prende il nome di “Attacco man in the middle”).

Un’ altra delle assurdita’ che si leggono spesso in giro è che basti cambiare indirizzo IP per essere improvvisamente e totalmente anonimi e dunque liberi di fare quello che si vuole, al sicuro da occhi indiscreti : cavolata.

Il nostro indirizzo IP definisce l’associazione tra la nostra sessione internet e la nostra posizione fisica.

Eppure, molta gente pensa che basti utilizzare un proxy per realizzare una vera navigazione anonima , in realtà anche questo non è vero. Anche in questo caso tutto il nostro traffico dati risulterà semplicemente arrivare da un’ altro IP ma di fatto sarà comunque in chiaro e  dunque tracciabile. Nella pratica non verranno nascosti i siti che visitiamo , sara’ soltanto come dire che li sta visitando un’ altro indirizzo IP. Di fatto pero’ un’ ente esterno può associare la tipologia di traffico internet all’ indirizzo ip acquisito , contattare chi ha rilasciato l’indirizzo IP e acquisire il vostro indirizzo reale.

Un proxy non ti rende anonimo al 100% 

Infatti ecco alcuni dati che lasciamo quotidianamente in giro per la rete

  • Chi siamo e da dove ci colleghiamo
  • Il nostro numero di telefono , quando navighiamo con il cellulare
  • Data , ora e tipologia di comunicazione usata (social media, VoIP, p2p, siti web , emails, Messengers)
  • Durata e uso della comunicazione tramite uno dei servizi del punto sopra
  • Dove siamo fisicamente (incluso l’uso di WI-FI o celle di connessioni dati mobile 3/4 G)
  • Verso chi comunichiamo e quando, compresi i dettagli di una mail

DUNQUE: CAMBIARE INDIRIZZO IP NON VUOL DIRE NASCONDERE QUELLO CHE FACCIAMO !

Per nascondere il tuo traffico dati lo devi criptare, devi fare in modo che prima che il tuo traffico vada all’esterno sia indecifrabile e illeggibile. Puoi farlo attraverso l’uso di VPN commerciali o tramite la creazione di VPN fai da te. Solo cosi avrai una reale navigazione anonima. Per chiunque se lo stia chiedendo, persino usare una connessione filtrata con TOR non ci rende sicuri ed anonimi al 100% se non usiamo una VPN per criptare tutto il traffico.

Possiamo affermare che criptare il proprio traffico dati è diventata una priorità, cosi’ come è normale avere un antivirus sul computer, questo perchè oggi giorno siamo sempre interconnessi ed i nostri dati girano ovunque per la rete, nei motori di ricerca, nei grandi centri Big Data, e vengono usati quotidianamente per schedare le nostre abitudini e per inondarci di pubblicità ad-hoc.

Invece, una volta connessi a internet tramite una VPN , che utilizza un protocollo robusto di criptazione, i nostri dati verranno criptati e, a seconda del protocollo utilizzato, sarà difficile se non impossibile decifrarli.

Tramite la VPN viene instaurato un ponte di connessione virtuale punto a punto tra chi si connette e uno dei server della VPN , server che può essere situato ovunque geograficamente, facendovi cosi acquisire un’ indirizzo IP di un’ altra nazione (adesso ha senso), utilizzando successivamente diversi sistemi di tunneling per instradare i dati in modo sicuro.

Ultimo consiglioUSATE UNA VPN PER TUTTO ANCHE PER LO SMARTPHONE

Mentre con un computer ci risulta normale installare un buon antivirus, o persino un firewall per proteggere i nostri dati , con il cellulare invece il 90% delle persone sembra non pensarci o disinteressarsene.

Di fatto pero’ in un’ unico apparecchio teniamo memorizzati dettagli fondamentali sulla nostra vita personale (foto , contatti telefonici , mail , informazioni bancarie, delle carte di credito etc) ma lasciamo che la connessione dati sia sempre aperta, mentre i nostri dati vengono interscambiati continuamente in chiaro.

Oggi ci sono, per fortuna, VPN che fanno di tutto e costano davvero poco, o comunque il giusto per l’importanza del servizio che danno, come PureVPN . Ora che abbiamo fatto chiarezza sul concetto di anonimato in rete credo che l’uso di una vpn dovrebbe diventare una consuetudine di uso comune.

 

MaxScale – un proxy per i Database MariaDB e MySQL

Maxscale - Proxy per MariaDB & Mysql

Maxscale – Proxy per MariaDB & Mysql

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.

 

MaxScale DB Proxy scalabile

 

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