Redis (Remote Dictionary Server) è un server di database/struttura dati in memoria molto popolare e ampiamente utilizzato, open source, veloce, distribuito ed efficiente.
Offre un ricco set di funzionalità che lo rendono efficace per una vasta gamma di casi d’uso: come database, livello di caching, message broker o coda; applicabile in applicazioni web, chat e messaggistica, giochi, analisi dati in tempo reale e molto altro ancora.
Supporta strutture dati flessibili, replicazione asincrona master-slave per scalare le prestazioni di lettura e proteggersi dalla perdita di dati, sharding lato client per scalare le prestazioni di scrittura, due forme di persistenza per scrivere i dati in memoria su disco in un formato compatto, clustering e partizionamento. Presenta inoltre failover automatici per distribuzioni ad alta disponibilità tramite Redis Sentinel, scripting Lua, transazioni e molto altro ancora.
Essendo un database NO SQL o non relazionale, Redis offre alcuni vantaggi prestazionali rispetto ai sistemi di database tradizionali (come MySQL/MariaDB, PostgreSQL, ecc.), poiché tutti i suoi dati risiedono o sono memorizzati in memoria, rendendoli facilmente accessibili a un’applicazione, mentre i database tradizionali devono scrivere tutti i dati su disco o leggerli da esso o da una fonte esterna.
Redis è diventato una scelta sempre più diffusa per la memorizzazione nella cache, che consente il riutilizzo dei dati memorizzati nella cache (all’interno dello spazio di memoria principale di un’applicazione) anziché interrogare sempre un database per i dati utilizzati frequentemente. Quindi è un compagno fantastico di RDMS (Sistemi di Gestione di Database Relazionali) per migliorare in definitiva le prestazioni dell’applicazione.
In questa serie di tutorial in tre parti su Redis, copriremo come configurare e utilizzare alcune delle principali funzionalità di Redis che sono la replica, l’alta disponibilità utilizzando Redis Sentinel e Redis Cluster, gli articoli sono:
Questa guida mostra come configurare la Replica di Redis (con Modalità Cluster Disabilitata) in CentOS 8 Linux, inclusa l’installazione di Redis, la configurazione del master e delle repliche, e il test della replica.
Importante: Un Cluster Redis (cioè un Cluster di Replica) con la modalità cluster disabilitata ha un singolo gruppo di nodi (ad esempio un master e uno o due repliche), mentre un cluster Redis con la modalità cluster abilitata può essere composto da due o più gruppi di nodi (ad esempio tre master ciascuno con slave o due).
Prerequisiti:
Configurazione dell’Ambiente di Test
Redis Master Server: 10.42.0.247 Redis Replica1/Slave1: 10.42.0.21 Redis Replica2/Slave2: 10.42.0.34

Con la configurazione sopra (che ha un singolo nodo primario/master di lettura/scrittura e 2 nodi replica di sola lettura), abbiamo un singolo gruppo di nodi che contiene tutti i dati del cluster in ciascun nodo. Una volta che uno slave si connette a un master, riceve una copia iniziale del database completo e tutti i dati che esistevano precedentemente nello slave verranno scartati.
Inoltre, un client può scrivere solo sul master ma leggere da qualsiasi nodo nel cluster. E poiché le scritture vengono eseguite sul master, vengono propagate a tutti gli slave connessi per l’aggiornamento dei dataset slave in tempo reale.
Passo 1: Installazione di Redis su CentOS 8
1. Per iniziare, accedi a tutti i nodi CentOS 8 tramite SSH, quindi installa il pacchetto Redis su tutti i nodi (master e repliche) utilizzando il gestore dei pacchetti DNF come mostrato.
# dnf install @redis
2. Al termine dell’installazione del pacchetto Redis, avvia il servizio Redis, abilita l’avvio automatico ad ogni avvio del sistema e verifica se è in esecuzione come segue.
# systemctl start redis # systemctl enable redis # systemctl status redis
3. Puoi anche confermare che il server Redis è in esecuzione controllando le porte in ascolto utilizzando il comando ss, come segue.
# ss -ltpn | grep redis-server

Passo 2: Configurazione del server master di Redis
4. Redis è configurato utilizzando il file di configurazione /etc/redis.conf, un file di configurazione di esempio auto-documentato. Prima, creare un backup del file originale, quindi aprirlo per la modifica utilizzando il tuo editor a riga di comando preferito.
# cp /etc/redis.conf /etc/redis.conf.org # vi /etc/redis.conf
5. Per impostazione predefinita, un’istanza di Redis è configurata per ascoltare e accettare connessioni sull’interfaccia loopback, utilizzando la direttiva bind. Per comunicare con le repliche, il master dovrebbe essere configurato per ascoltare sull’indirizzo di loopback IPv4 e sul suo indirizzo IP LAN cioè 10.42.0.247.
bind 127.0.0.1 10.42.0.247
6. Successivamente, impostare il parametro protected-mode su no
per consentire la comunicazione con le repliche come mostrato.
protected-mode no
Inoltre, Redis ascolta sulla porta 6379 che è impostata utilizzando la direttiva port
. Questa è la porta dati per comunicare con le API dell’applicazione o i client CLI.
port 6379

7. Per proteggere facoltativamente le comunicazioni master-replica, possiamo proteggere il master utilizzando la direttiva requirepass, in modo che i client/repliche debbano emettere una password di autenticazione prima di eseguire eventuali comandi o avviare un processo di sincronizzazione della replica, altrimenti il master rifiuterà la richiesta del client/replica (ricordarsi di impostare una password sicura).
Utilizzeremo l’opzione seguente a scopo dimostrativo, per mostrare come funziona.
requirepass Securep@55Here

8. Inoltre, i log di Redis sono memorizzati nel file /var/log/redis/redis.log, questo è impostato utilizzando la direttiva logfile e il livello di verbosità predefinito del server è notice, definito utilizzando il parametro loglevel.
loglevel notice logfile /var/log/redis/redis.log

9. Poiché systemd è il sistema e il gestore di servizi predefinito in CentOS 8, è possibile configurare Redis per interagire con l’albero di supervisione di systemd impostando il parametro supervised su systemd.
supervised systemd

10. Dopo aver apportato tutte le configurazioni necessarie, salvare il file e chiuderlo. Quindi riavviare il servizio Redis per applicare le nuove modifiche.
# systemctl daemon-reload # systemctl restart redis
11. Per accedere al server Redis, è necessario utilizzare il redis-cli (un’interfaccia a riga di comando per il redis-server). Per impostazione predefinita, si connette al server su localhost (a 127.0.0.1 porta 6379). Si noti che poiché il server è protetto da client che utilizzano una password, l’esecuzione di un comando prima dell’autenticazione dovrebbe fallire.
Utilizzare il comando auth per fornire la password di autenticazione come mostrato nella seguente schermata.
# redis-cli 127.0.0.1:6379> client list 127.0.0.1:6379> AUTH Securep@55Here 127.0.0.1:6379> client list

12. Per connettersi a una replica (dopo averle configurate come descritto nella sezione successiva), utilizzare le opzioni -h
e -p
per specificare rispettivamente l’indirizzo IP/nome host della replica e la porta (notare che la porta 6379 deve essere aperta nel firewall della replica).
# redis-cli -h 10.42.0.21 -p 6379
13. Successivamente, apri la porta dei dati del server Redis nel firewall per consentire connessioni in ingresso al master, e successivamente ricarica le regole del firewall usando il comando firewall-cmd come mostrato.
# firewall-cmd --zone=public --permanent --add-port=6379/tcp # firewall-cmd --reload
Passaggio 3: Configurazione dei server replica/schiavo di Redis
14. Per impostare rapidamente un’istanza Redis come replica al volo, utilizza l’utilità redis-cli e chiama il comando REPLICAOF come mostrato.
# redis-cli replicaof 10.42.0.247 6379 OR # redis-cli 127.0.0.1:6379> REPLICAOF 10.42.0.247 6379

15. Per rendere permanente una connessione di replica, è necessario apportare le seguenti modifiche nel file di configurazione. Inizia facendo il backup del file originale, quindi aprilo per la modifica.
# cp /etc/redis.conf /etc/redis.conf.org # vi /etc/redis.conf
16. Per consentire ai client di connettersi alla replica per leggere i dati, aggiungi l’indirizzo IP della replica alla direttiva bind.
# replica1 bind 127.0.0.1 10.42.0.21 # replica2 bind 127.0.0.1 10.42.0.34
Impostazione di un’istanza Redis come replica
17. Per configurare un’istanza Redis come replica, utilizza il parametro replicaof e imposta l’indirizzo IP del nodo master (o il nome host) e la porta come valori.
replicaof 10.42.0.247 6379
Impostazione della Replica per Autenticarsi al Master
18. Successivamente, poiché la nostra istanza master è protetta da una password, è necessario impostare la password nella configurazione della replica per consentirle di autenticarsi al master, utilizzando il parametro masterauth.
masterauth Securep@55Here
19. Inoltre, quando una replica perde la connessione con il master, o quando la replica è in corso, la replica è configurata per rispondere alle richieste dei client, eventualmente con dati “obsoleti“. Ma se è la prima sincronizzazione, allora il set di dati potrebbe essere semplicemente vuoto. Questo comportamento è controllato dal parametro replica-serve-stale-data.
E, poiché Redis 2.6 di default le repliche sono in sola lettura, questo è controllato dal parametro replica-read-only. Puoi apportare altre modifiche alla configurazione della replica per adattarle alle esigenze della tua applicazione.
20. Una volta apportate tutte le modifiche necessarie, riavvia il servizio Redis su tutte le repliche.
# systemctl restart redis
21. Inoltre, apri la porta 6379 nel firewall per consentire le connessioni dal master e dai client alle repliche, e ricarica le regole del firewall.
# firewall-cmd --zone=public --permanenent --add-port=6379/tcp # firewall-cmd --reload
Passaggio 4: Controlla lo Stato della Replicazione Master-replica
22. Una volta completata la configurazione della replicazione master-replica, possiamo verificare se l’installazione funziona correttamente come segue.
Sul master, esegui i seguenti comandi.
# redis-cli 127.0.0.1:6379> AUTH Securep@55Here 127.0.0.1:6379> info replication

23. Controlla anche lo stato della replicazione sulle repliche/slave come segue.
# redis-cli 127.0.0.1:6379> info replication


23. Ora testiamo la replicazione impostando una chiave-valore nell’istanza master e verifichiamo se i dati sono sincronizzati sulle repliche.
Sul master, fai questo:
# redis-cli 127.0.0.1:6379> AUTH Securep@55Here 127.0.0.1:6379> set domain 'www.tecmint.com'

24. Quindi controlla se i dati sono stati sincronizzati sulle repliche come mostrato.
# redis-cli 127.0.0.1:6379> get domain

Proteggere l’istanza principale dal rischio di perdere alcune scritture
25. Redis ha una funzionalità che consente a un’istanza principale di limitare il rischio di perdere alcune scritture nel caso in cui non siano disponibili abbastanza repliche, entro un numero specificato di secondi.
Ciò significa che un’istanza principale può smettere di accettare scritture se ci sono meno di N repliche collegate, con un ritardo inferiore o uguale a M secondi, come controllato rispettivamente dalle opzioni min-replicas-to-write e min-replicas-max-lag.
Per impostarle, decommentale e imposta i valori in base ai requisiti della tua configurazione in /etc/redis.conf, come mostrato nella seguente schermata. Questa configurazione significa che, dall’ultimo ping alle repliche, dopo 10 secondi, se ci sono meno di 2 repliche online, il master smetterà di accettare scritture.
min-replicas-to-write 2 min-replicas-max-lag 10

Puoi trovare più opzioni nel resto del file di configurazione /etc/redis.conf e per ulteriori dettagli leggi sulla replica nella documentazione di Redis.
Nel prossimo articolo, affronteremo come configurare Redis per l’alta disponibilità con Sentinel in CentOS 8. Fino ad allora, resta sintonizzato e ricorda di condividere i tuoi pensieri e domande utilizzando il nostro modulo di commento qui sotto a tua disposizione per contattarci.
Source:
https://www.tecmint.com/setup-redis-replication-in-centos-8/