Tutorial > Come installare un server Redis su Linux CentOS 7

Come installare un server Redis su Linux CentOS 7

Pubblicato il: 03 ottobre 2019

CentOS DBMS Redis

Redis è un database open source particolarmente veloce, grazie al salvataggio dei dati su memoria oltre che su disco. Rappresenta una delle soluzioni migliori per sviluppare applicazioni che richiedono un trattamento dei dati in tempo reale.

In questo tutorial ti illustriamo nel dettaglio come installare e configurare il database Redis su un server con distribuzione Linux CentOS 7, spiegandoti anche come migliorare la sicurezza del tuo database e creare un’installazione replica.

Per prima cosa dovrai connetterti al tuo server tramite una connessione SSH. Se non l’hai ancora fatto, ti consigliamo di seguire la nostra guida per connetterti in sicurezza con il protocollo SSH. In caso di server locale puoi passare al punto successivo e aprire il terminale del tuo server.

Installazione di Redis

Per installare Redis basta utilizzare il gestore di pacchetti yum:

$ sudo yum install redis

Una volta completata l’installazione puoi avviare il servizio e installarlo nel sistema:

$ sudo systemctl start redis

$ sudo systemctl enable redis

Verificare l’installazione

Per verificare la corretta installazione di Redis puoi utilizzare il client a riga di comando redis-cli, impostando un valore di test nel tuo database:

$ redis-cli set test 123456

OK

Se tutto funziona correttamente il server risponderà con “OK” e potrai quindi testare che il valore sia stato salvato correttamente:

$ redis-cli get test

"123456"

Redis restituirà il valore appena salvato (in questo caso la stringa “123456”). Concludi quindi eliminando questa chiave di prova:

$ redis-cli del test

(integer) 1

Migliorare la sicurezza della tua installazione

La configurazione iniziale di Redis permette la connessione al database solo da indirizzo locale e senza richiesta di alcuna password o forma di autenticazione. 

Tutte le impostazione di Redis vengono lette dal file di configurazione presente in /etc/redis.conf e possono essere sovrascritte in qualunque momento e in tempo reale, utilizzando un software client qualsiasi attraverso i comandi CONFIG SET / CONFIG GET. É bene tener presente però, che le impostazioni modificate da client non vengono salvate nel file di configurazione, pertanto al prossimo avvio di Redis verranno perse.

Per migliorare la sicurezza del tuo database, puoi prima di tutto impostare una password di autenticazione, modificando o inserendo nel file di configurazione la voce requirepass:

requirepass 5eMX822gZ0lCGdd81rSIrTvPCUfeEFYAUIgyJNs4

La password viene salvata nel file di configurazione in chiaro e deve essere abbastanza lunga da sopportare attacchi bruteforce poichè Redis è in grado di gestire molte connessioni al secondo.

Tra le impostazioni più importanti, troviamo anche il bind, che imposta su quale indirizzo Redis deve abilitare la ricezione di connessioni:

bind 127.0.0.1

Di default viene abilitato solo l’indirizzo locale 127.0.0.1, ma se hai necessità di esporre il server Redis all’esterno, puoi aggiungere indirizzi aggiuntivi, come ad esempio:

bind 127.0.0.1 51.125.63.201

Un altro errore comune consiste nel lasciare impostata la porta di default per l’ascolto di connessioni in ingresso: questo consente a qualsiasi software di scansionamento delle porte di individuare il server Redis.

port 2589

Cambiando la porta da 6379 a 2589 puoi nascondere il servizio Redis e aggiungere un ulteriore livello di sicurezza alla tua installazione.

Dopo aver completato tutte le modifiche al file di configurazione, riavvia il servizio:

$ sudo systemctl restart redis

Per verificare i parametri appena applicati, utilizza redis-cli per ottenere, ad esempio, l’attuale parametro di bind, utilizzando la nuova porta configurata e la password impostata sopra:

$ redis-cli -a 5eMX822gZ0lCGdd81rSIrTvPCUfeEFYAUIgyJNs4 -p 2589 config get bind

Il server dovrebbe rispondere con i parametri richiesti:

1) "bind"

2) "127.0.0.1"

Creazione di un’installazione replica

Redis permette di configurare in pochi passaggi un server replica (copia), che viene aggiornato in tempo reale rispetto alla versione master. 

Attraverso questa configurazione puoi offrire un servizio di backup che può essere utilizzato in lettura in caso di malfunzionamento del server principale.

Dopo esserti connesso al server secondario slave, completa l’installazione di Redis usando yum:

$ sudo yum install redis

Se lo desideri puoi utilizzare le stesse procedure di sicurezza indicate nel paragrafo precedente per mettere in sicurezza anche questa istanza Redis. In questo esempio, utilizzeremo i parametri di default.

Per potersi sincronizzare con il server principale (master), la macchina slave deve essere in grado di comunicare correttamente con la macchina master. Assicurati quindi che sia presente l’indirizzo IP pubblico sulla configurazione della macchina master (parametro bind) e controlla che la connessione funzioni, avviando dalla macchina slave il comando:

$ redis-cli -h [INDIRIZZO_IP_MASTER] -a [PASSWORD_MASTER] ping

PONG

Se ottieni una risposta al comando ping, vuol dire che la slave riesce a comunicare correttamente. 

Procedi quindi alla configurazione vera e propria della slave, modificando i seguenti parametri nel file di configurazione /etc/redis.conf:

# Se presente dobbiamo anche specificare la password di connessione al master

masterauth password
                # La direttiva slaveof specifica i parametri di connessione al master( INDIRIZZO_IP PORTA)

slaveof 195.231.4.71 6379

Dopo aver completato, salva la configurazione e avvia il server Redis slave, digitando:

$ sudo systemctl start redis

$ sudo systemctl enable redis

Per controllare che la sincronizzazione sia stata attivata correttamente, utilizziamo tail per visualizzare le ultime righe del file di log del servizio:

$ tail /var/log/redis/redis.log

6345:S 02 Jul 10:53:46.695 * MASTER <-> SLAVE sync: receiving 77 bytes from master

6345:S 02 Jul 10:53:46.695 * MASTER <-> SLAVE sync: Flushing old data

6345:S 02 Jul 10:53:46.695 * MASTER <-> SLAVE sync: Loading DB in memory

6345:S 02 Jul 10:53:46.695 * MASTER <-> SLAVE sync: Finished with success

Le ultime righe ti confermano che la sincronizzazione è attiva e sta lavorando correttamente.

Puoi quindi effettuare una prova vera e propria, impostando un valore nel tuo database e verificando che venga correttamente letto dal server master.

Dal server master impostiamo la chiave test:

$ redis-cli -a password set test hello

OK

Passando al server slave, richiamiamo la lettura dello stesso valore:

$ redis-cli get test

"hello"

Come puoi notare, sia master che slave, hanno memorizzato lo stesso valore: vuol dire che la replica funziona correttamente!