Ricerca nel sito web

Come impostare la replica Redis (con modalità cluster disabilitata) in CentOS 8 - Parte 1


Redis (Remote Dictionary Server) è un server di database di valori-chiave/struttura dati in memoria open source molto popolare e ampiamente utilizzato, veloce, distribuito ed efficiente.

Offre un ricco set di funzionalità che lo rendono efficace per un'ampia gamma di casi d'uso: come database, livello di memorizzazione nella cache, broker di messaggi o coda; applicabile in applicazioni web, applicazioni di chat e messaggistica, giochi, analisi dei dati in tempo reale e molto altro ancora.

Supporta strutture dati flessibili, replica asincrona master-slave per scalare le prestazioni di lettura e proteggere dalla perdita di dati, sharding lato client per scalare le prestazioni di scrittura, due forme di persistenza per scrivere dati in memoria su disco in un formato compatto, clustering e partizionamento. Dispone inoltre di failover automatici per l'implementazione ad alta disponibilità tramite Redis Sentinel, Lua scripting, transazioni e molto altro.

Essendo un database NO SQL o non relazionale, Redis offre alcuni vantaggi in termini di prestazioni rispetto ai sistemi di database tradizionali (come MySQL/MariaDB, PostgreSQL, ecc.), perché tutti i suoi dati risiedono o sono archiviati in memoria rendendoli facilmente accessibili a un'applicazione, mentre i database tradizionali devono scrivere o leggere tutti i dati da un disco o da una fonte esterna.

Redis è diventata una scelta sempre più diffusa per la memorizzazione nella cache, che consente il riutilizzo dei dati memorizzati nella cache (archiviati nello spazio di memoria principale di un'applicazione) anziché interrogare sempre un database per i dati utilizzati di frequente. Quindi è un fantastico compagno di RDMS (Relational Database Management Systems) per migliorare in definitiva le prestazioni delle applicazioni.

In questa serie di tutorial Redis in tre parti, tratteremo come configurare e utilizzare alcune delle funzionalità principali di Redis, ovvero replica, disponibilità elevata utilizzando Redis Sentinel e Redis Cluster, gli articoli sono:

Questa guida mostra come configurare la replica Redis (con la modalità cluster disabilitata) in CentOS 8 Linux, incluso come installare Redis e configurare il master e repliche e testare la replica.

Importante: un cluster Redis (ovvero un cluster di replica) con la modalità cluster disabilitata ha un singolo gruppo di nodi ( ad esempio un master e una o due repliche) dove un cluster Redis con la modalità cluster abilitata può essere costituito da due o più gruppi di nodi (ad esempio tre master ciascuno con slave o due).

Prerequisiti:

  1. Server con installazione CentOS 8

Configurazione dell'ambiente di prova

Redis Master Server: 10.42.0.247
Redis Replica1/Slave1: 10.42.0.21
Redis Replica2/Slave2: 10.42.0.34

Con la configurazione precedente (che ha un singolo nodo primario/master di lettura/scrittura e 2 nodi di 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 dell'intero database e tutti i dati precedentemente esistenti sullo slave verranno eliminati.

Inoltre, un client può scrivere solo sul master ma leggere da qualsiasi nodo del cluster. E quando le scritture vengono eseguite sul master, queste si propagano a tutti gli slave collegati per aggiornare i set di dati degli slave in tempo reale.

Passaggio 1: installazione di Redis su CentOS 8

1. Per cominciare, accedi a tutti i nodi CentOS 8 tramite SSH, quindi installa il pacchetto Redis su tutti i nodi (master e repliche ) utilizzando il gestore pacchetti DNF come mostrato.


dnf install @redis

2. Al termine dell'installazione del pacchetto Redis, avviare il servizio Redis, abilitarlo all'avvio automatico ad ogni avvio del sistema e verificare se è attivo e funzionante come segue.

systemctl start redis
systemctl enable redis
systemctl status redis

3. Puoi anche verificare che il server Redis sia attivo e funzionante controllando le porte di ascolto utilizzando il comando ss, come segue.

ss -ltpn | grep redis-server

Passaggio 2: configurazione del server master Redis

4. Redis viene configurato utilizzando il file di configurazione /etc/redis.conf, un file di configurazione di esempio autodocumentato. Innanzitutto, crea un backup del file originale, quindi aprilo per la modifica utilizzando l'editor della riga di comando preferito.

cp /etc/redis.conf /etc/redis.conf.org
vi /etc/redis.conf

5. Per impostazione predefinita, un'istanza Redis è configurata per ascoltare e accettare connessioni sull'interfaccia loopback, utilizzando la direttiva bind. Per comunicare con le repliche, il master deve essere configurato per ascoltare l'indirizzo di loopback IPv4 e il suo indirizzo IP LAN, ovvero 10.42.0.247.

bind 127.0.0.1 10.42.0.247

6. Successivamente, imposta il parametro della modalità protetta su no per consentire la comunicazione con le repliche come mostrato.

protected-mode no

Inoltre, Redis è in ascolto sulla porta 6379 che viene 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 qualsiasi comando o avviare un processo di sincronizzazione della replica, altrimenti il master rifiuterà la richiesta client/replica (ricordarsi di impostare una password sicura).

Utilizzeremo la seguente opzione a scopo dimostrativo, per mostrare come funziona.

requirepass  Securep@55Here

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

loglevel  notice
logfile  /var/log/redis/redis.log

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

supervised systemd

10. Dopo aver effettuato tutte le configurazioni necessarie, salva il file e chiudilo. Quindi riavvia il servizio Redis per applicare le nuove modifiche.

systemctl daemon-reload
systemctl restart redis

11. Per accedere al server Redis, dobbiamo utilizzare redis-cli (un'interfaccia a riga di comando per il server redis). Per impostazione predefinita, si connette al server sull'localhost (sulla 127.0.0.1 porta 6379). Tieni presente che poiché il server è protetto dai client tramite una password, l'esecuzione di un comando prima dell'autenticazione dovrebbe fallire.

Utilizza il comando auth per fornire la password di autenticazione come mostrato nello screenshot seguente.

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 averla configurata come descritto nella sezione successiva), utilizzare -h e -p opzioni per specificare rispettivamente l'indirizzo IP/nome host e la porta della replica (non che la porta 6379 debba essere aperta nel firewall della replica).

redis-cli -h 10.42.0.21 -p 6379

13. Successivamente, apri la porta dati del server Redis nel firewall per consentire le connessioni in entrata al master e successivamente ricarica le regole del firewall utilizzando il comando firewall-cmd come mostrato.

firewall-cmd --zone=public --permanent --add-port=6379/tcp 
firewall-cmd --reload

Passaggio 3: configurazione dei server replica/slave Redis

14. Per impostare rapidamente un'istanza Redis come replica al volo, utilizzare l'utilità redis-cli e chiamare REPLICAOF comando 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 eseguendo 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, aggiungere l'indirizzo IP della replica alla direttiva di associazione.

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 (o il nome host) e la porta del nodo master come valori.

replicaof 10.42.0.247 6379

Impostazione della replica per l'autenticazione sul master

18. Successivamente, poiché la nostra istanza master è protetta tramite una password, dobbiamo impostare la password nella configurazione della replica per consentirle di autenticarsi presso il master, utilizzando masterauth parametro.

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 del client, possibilmente con "non aggiornato ” dati. Ma se si tratta della prima sincronizzazione, il set di dati potrebbe essere semplicemente vuoto. Questo comportamento è controllato dal parametro replica-serve-stale-data.

Inoltre, poiché Redis 2.6 per impostazione predefinita le repliche sono di sola lettura, ciò è controllato dal parametro replica-read-only. È possibile apportare altre modifiche alla configurazione della replica per soddisfare le esigenze dell'applicazione.

20. Dopo aver apportato tutte le modifiche necessarie, riavvia il servizio Redis su tutte le repliche.

systemctl restart redis

21. Inoltre, aprire la porta 6379 nel firewall per consentire le connessioni dal master e dai client alle repliche e ricaricare le regole del firewall.

firewall-cmd --zone=public --permanenent --add-port=6379/tcp
firewall-cmd --reload

Passaggio 4: verificare lo stato della replica della replica master

22. Una volta completata la configurazione della replica master-replica, possiamo verificare se la configurazione 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. Inoltre, controlla lo stato della replica sulle repliche/slave come segue.

redis-cli
127.0.0.1:6379> info replication

23. Ora testiamo la replica impostando un valore-chiave nell'istanza master e controlliamo se i dati sono sincronizzati con le repliche.

Sul master, fai questo:

redis-cli
127.0.0.1:6379> AUTH Securep@55Here
127.0.0.1:6379> set domain 'linux-console.net'

24. Quindi controlla se i dati sono stati sincronizzati con le repliche come mostrato.

redis-cli
127.0.0.1:6379> get domain

Protezione dell'istanza master dal rischio di perdere alcune scritture

25. Redis dispone di una funzionalità che consente a un'istanza master di limitare il rischio di perdere alcune scritture nel caso in cui non siano disponibili repliche sufficienti, a un numero di secondi specificato.

Ciò significa che un master può smettere di accettare scritture se ci sono meno di N repliche connesse, con un ritardo inferiore o uguale a M secondi, come controllato dal parametro min -replicas-to-write e min-replicas-max-lag rispettivamente.

Per impostarli, decommentali e imposta i valori in base ai requisiti di configurazione in /etc/redis.conf, come mostrato nello screenshot seguente. Questa configurazione fa sì 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 maggiori dettagli leggi sulla replica nella documentazione di Redis.

Nel prossimo articolo tratteremo come configurare Redis per l'alta disponibilità con Sentinel in CentOS 8. Fino ad allora, rimani bloccato e ricorda di condividere i tuoi pensieri e le tue domande utilizzando il nostro modulo di commento qui sotto, a tua disposizione per raggiungerci.