Come proxare una richiesta MySQL verso Amazon RDS
da Massimo Della Rovere · pubblicato il 27 Luglio, 2017 · modificato il 27 Luglio, 2017

Questa settimana ho avuto l’esigenza di garantire un accesso ad una istanza RDS di tipo MySQL che risiedeva in una subnet privata senza accesso ad internet. Dopo aver provato diverse soluzioni ho visto che la installazione di MySQL Router non solo è la soluzione più semplice ma anche la più performante.

La configurazione usata è molto semplice e sono sicuro che può essere utile a molte persone che lavorano come me nel cloud di amazon, ma in ogni caso può essere usata anche per dirottare MySQL da un sistema ad un’altro in un’ambiente tradizionale. I passi che ho eseguito per ottenere il risultati finale sono i seguenti:

  • Avvio di una istanza micro in una subnet pubblica.
  • Definizione di un security group.
  • Installazione del software MySQL Router.
  • Modifica del file di configurazione di MySQL Router.
  • Avvio del servizio di MySQL Router.
  • Prova di connessione internet da una postazione.

Avvio di una istanza

Nel mio caso ho preferito fare il tutto con una istanza nuova di tipo micro e con il sistema operativo Ubuntu 16.04 LTS, però se avete già una istanza attiva pubblica come ad esempio un server VPN forse vi conviene utilizzarlo per risparmiare qualcosa. Mentre avviate la nuova istanza conviene anche creare un security group che permetta l’accesso al database solo dagli indirizzi IP specificati, non è consigliabile lasciare aperta la porta.

Scenario QuickSight

Un’altro scenario in cui è possibile utilizzare questa configurazione è con il servizio di Amazon Quicksight, il quale quando accedi ad una risorsa RDS lo fa tramite un indirizzo di endpoint pubblico, e sinceramente questa cosa non mi piace per niente. Preferisco lasciare il database in zona chiusa privata e proxarlo con qualcosa di diverso.

Installazione MySQL Router

La tecnica più semplice per installare il software indicato è quella di andare sulla pagina ufficiale e seguire le istruzioni indicate. Se invece volete fare tutto da linea comandi basta eseguire i seguenti passi verificando di scaricare l’ultima versione del software che potete controllare qui: https://dev.mysql.com/downloads/file/?id=472393

wget https://dev.mysql.com/get/mysql-apt-config_0.8.7-1_all.deb

sudo dpkg -i mysql-apt-config_0.8.7-1_all.deb
sudo apt-get update
sudo apt-get install mysql-router

Una volta installato il pacchetto andiamo a modificare il file di configurazione:

sudo vi /etc/mysqlrouter/mysqlrouter.conf

// Aggiungere le seguente linee al file di configurazione
// Ovviamente potete personalizzare la porta come volete
// Destinations = endpoint della vostra istanza RDS

[routing:basic_redirect]
bind_address = 0.0.0.0
bind_port = 3306
mode = read-write
destinations = aurora.dsxeeeihqqru.eu-west-1.rds.amazonaws.com:3306

// Riavviamo il servizio
sudo service mysqlrouter restart

Una volta riavviato il servizio provate la vostra connessione al server MySQL, se non ci riuscite provate a controllare le regole del security group che avete creato e anche di quello collegato alla istanza RDS che deve accettare la connessione o dalla rete locale o dal ruolo che eventualmente potete associare al server di redirect.

Altri utilizzi di MySQL Router

Anche se ho avuto la necessità di utilizzare questo software per eseguire un semplice proxy mysql, in realtà il pacchetto MySQL Router fa molto di più, infatti lo possiamo usare anche per dividere le richieste al database su diverse repliche e bilanciare il traffico, ad esempio potremmo configurarlo su un’ambiente WordPress in modo tale che le richieste fatte verso localhost vengano dirottate su diversi server esterni.

destinations = endpoint1,endpoint3,endpoint3

La configurazione rimane sempre molto semplice, basta indicare più endpoint sulla riga che indica le destinations. Per ogni altre info vi rimando alla documentazione ufficiale.

Guida completa su AWS

Questo articolo appartiene ad una serie di pubblicazioni che costituiscono una guida completa dedicata agli Amazon Web Services. Molti servizi che trattiamo in questo blog vengono anche spiegati con dei video che trovate nel nostro canale youtube. Se volete seguire questo percorso didattico iscrivetevi alla community Cloud AWS.

1 Commento

  1. Quindi posso usare questo software anche in una installazione normale di worpress, joomla, etc, da quello che ho capito il software continuerebbe senza modifiche a connettersi a localhost e in modo trasparente MySQL Router farebbe il lavoro di smistamento verso copie di server diverse? Funziona anche per le operazioni di scrittura?

condividi