Gruppo Redis è un Redis integrato funzionalità che supporta lo sharding automatico, la replica e l'elevata disponibilità che era stata precedentemente implementata utilizzando Sentinelle . È progettato per due scopi principali:uno è dividere automaticamente il set di dati tra più istanze e il secondo per fornire un certo grado di disponibilità durante le partizioni, per continuare le operazioni quando alcune istanze (soprattutto master) falliscono o non sono in grado di comunicare con la maggior parte dei nodi nel cluster.
Tuttavia, il cluster smette di funzionare in caso di guasti maggiori (ad es. quando la maggior parte delle istanze master non è disponibile). Inoltre, se un master e uno slave si guastano contemporaneamente, il cluster non può continuare le normali operazioni (sebbene la soluzione alternativa sia aggiungere più nodi o creare un'asimmetria nel cluster, per modificare automaticamente il layout del cluster).
Secondo il Redis documentazione del cluster, il "cluster minimo ” che funziona come previsto richiede di contenere almeno 3 nodi master. Ma la configurazione più adatta per l'alta disponibilità dovrebbe avere almeno 6 nodi con tre master e tre slave, ogni master con uno slave.
Importante :Redis Cluster ha anche alcune limitazioni che sono la mancanza di supporto per NATted ambienti così come quelli in cui gli indirizzi IP o le porte TCP vengono rimappati, ad esempio in Docker . Inoltre, non tutte le librerie client lo supportano.
Questo articolo mostra come configurare un cluster Redis (con Modalità cluster disabilitata ) in CentOS 8 . Include come installare Redis, configurare i nodi del cluster, creare un cluster e testare il failover del cluster.
Nota :per questa guida, utilizzeremo istanze Redis fresche/vuote per eseguire la modalità cluster. La modalità cluster non funziona con alcune configurazioni eseguite nelle prime due guide della nostra serie Redis, in particolare non funziona quando viene utilizzata la replica del parametro.
Prerequisiti:
- Server con installazione CentOS 8
Impostazione ambiente di prova
Redis Master1: 10.42.0.247 Redis Master2: 10.42.0.197 Redis Master3: 10.42.0.132 Redis Slave1: 10.42.0.200 Redis Slave2: 10.42.0.21 Redis Slave3: 10.42.0.34
Diagramma logico del cluster Redis
La nostra configurazione ha 3 nodi master di lettura/scrittura e 3 nodi di replica di sola lettura, ogni master ha una replica, quindi tre shard contengono tutti i dati del cluster in ogni nodo. Un'applicazione API o CLI il client può scrivere solo sui nodi master ma leggere da qualsiasi nodo nel cluster.
Passaggio 1:installazione di Redis su tutti i nodi
1. Accedi a tutte le istanze tramite SSH , quindi esegui il comando seguente per installare Redis modulo utilizzando il gestore di pacchetti DNF come mostrato.
# dnf module install redis
2. Quindi, avvia il Redis servizio, abilitalo per l'avvio automatico all'avvio del sistema e controlla il suo stato per verificare che sia in esecuzione (verifica il servizio su tutte e 6 le istanze):
# systemctl start redis # systemctl enable redis # systemctl status redis
Passaggio 2:configurazione delle istanze Redis su tutti i nodi
3. Questa sezione descrive come configurare i nodi del cluster Redis. Ricordarsi di eseguire le configurazioni qui su tutti i nodi.
Usa /etc/redis.conf file di configurazione per configurare il Redis server. Come pratica consigliata, crea un backup del file originale prima di modificarlo utilizzando un editor di testo da riga di comando a tua scelta.
# cp /etc/redis.conf /etc/redis.conf.orig # vi /etc/redis.conf
4. Quindi, trova i seguenti parametri di configurazione e modifica i loro valori come mostrato. Il vincolo parametro imposta l'interfaccia del server Redis in ascolto, imposta il suo valore sull'IP LAN dell'istanza. Rimuovi il 127.0.0.1 perché ci siamo resi conto che lasciarlo lì rallenta il processo di creazione del cluster, in particolare la fase di adesione al cluster.
bind 10.42.0.247
Quindi imposta la modalità protetta a no
per consentire le connessioni dalle altre istanze nel cluster.
protected-mode no
Il parametro port definisce la porta su cui il server Redis ascolterà le connessioni, l'impostazione predefinita è 6379 . Questa è la porta dati per comunicare con i clienti.
port 6379
Imposta Redis Listen Interface e Port
5. Il prossimo set di parametri abiliterà la modalità cluster e imposterà alcune delle sue utili funzionalità. abilitati per i cluster parametro, se impostato su yes
, attiva la modalità cluster.
cluster-enabled yes
Successivamente, il file-config-cluster parametro imposta il nome del file di configurazione del cluster di un nodo del cluster (ad es. nodes-6379.conf ). Il file viene creato nella directory di lavoro (l'impostazione predefinita è /var/lib/redis definito utilizzando la dir parametro) e non è modificabile dall'utente.
cluster-config-file nodes-6379.conf
La prossima opzione utile del cluster è cluster-node-timeout , viene utilizzato per impostare la quantità massima di tempo in millisecondi in cui un'istanza può non essere disponibile per essere considerata in uno stato di errore. Un valore di 15000 equivale a 15 secondi.
cluster-node-timeout 15000
Imposta il timeout del nodo del cluster
6. Dobbiamo anche abilitare la persistenza Redis su disco. Possiamo utilizzare una delle modalità di persistenza, ovvero Aggiungi solo file (AOF ):registra (nel file appendonly.aof creato nella directory di lavoro) ogni operazione di scrittura ricevuta con successo dal server. I dati verranno riprodotti durante l'avvio del server per ricostruire il set di dati originale.
Per abilitarlo, imposta l'appendonly parametro su yes
.
appendonly yes
Imposta le opzioni di persistenza
7. Dopo aver apportato tutte le modifiche, riavvia il Redis servizio su tutti i nodi per applicare le modifiche recenti.
# systemctl restart redis
8. A questo punto, ogni nodo del cluster dovrebbe ora avere un ID . Puoi verificarlo nel file di registro che si trova in /var/log/redis/redis.log .
# cat /var/log/redis/redis.log
Controlla il file di registro del nodo del cluster
9. Quindi, apri la porta 6397 e 16379 su tutte le istanze. La successiva porta viene utilizzato per il bus del cluster (un nodo-nodo canale di comunicazione utilizzando un protocollo binario). Questo è un requisito di base per le connessioni TCP del cluster Redis.
# firewall-cmd --zone=public --permanent --add-port=6379/tcp # firewall-cmd --zone=public --permanent --add-port=16379/tcp # firewall-cmd --reload
Fase 3:creazione del cluster Redis
10. Per creare il cluster, utilizza la riga di comando redis-cli cliente come segue. Il --cluster create
abilita la creazione di cluster e --cluster-replicas 1
significa creare una replica per master.
Per la nostra configurazione che ha 6 nodi, avremo 3 master e 3 slave.
Tieni presente che i primi 6 nodi saranno considerati master (M)
e i prossimi tre saranno considerati schiavi (S)
. Il primo schiavo cioè 10.42.0.200:6379 replica il primo master cioè 10.42.0.247:6379 , il secondo slave replica il secondo master, in quest'ordine.
Il comando seguente è formattato in modo tale che il risultato rappresenti la nostra configurazione logica sopra.
# redis-cli --cluster create 10.42.0.247:6379 10.42.0.197:6379 10.42.0.132:6379 10.42.0.200:6379 10.42.0.21:6379 10.42.0.34:6379 --cluster-replicas 1
Crea cluster Redis
11. Una volta che la creazione del cluster è riuscita, esegui il seguente comando su qualsiasi host (specifica il suo indirizzo IP usando il -h
flag) per elencare tutti i nodi del cluster.
# redis-cli -h 10.42.0.247 -p 6379 cluster nodes
Dovresti essere in grado di vedere tutti i nodi del cluster, con gli slave che indicano i loro master, come mostrato nello screenshot seguente.
Controlla tutti i nodi del cluster su qualsiasi nodo
I diversi campi sono in questo ordine:ID nodo, indirizzo IP:porta, flag, ultimo ping inviato, ultimo pong ricevuto, epoca di configurazione, stato del collegamento, slot (per i master).
Fase 4:verifica del failover del cluster Redis
12. In questa sezione dimostreremo come testare un failover del cluster. Per prima cosa, prendiamo nota dei maestri.
# redis-cli -h 10.42.0.247 -p 6379 cluster nodes | grep master
Elenca i Redis Cluster Master
Inoltre, prendi nota degli schiavi Redis.
# redis-cli -h 10.42.0.247 -p 6379 cluster nodes | grep slave
Elenca tutti gli slave del cluster Redis
13. Quindi, interrompiamo il servizio Redis su uno dei nodi master, ad esempio 10.42.0.197 e controlla tutti i nodi master nel cluster.
# systemctl stop redis # redis-cli -h 10.42.0.247 -p 6379 cluster nodes | grep master
Dallo screenshot seguente, puoi vedere che il nodo 10.42.0.197:6367 è in stato di errore e il suo slave 10.42.0.21:6379 è stato promosso allo stato di maestro.
Controlla lo stato di failover del cluster
14. Ora iniziamo il Redis servizio ancora una volta sul nodo guasto e controlla tutti i master nel cluster.
# systemctl start redis # redis-cli -h 10.42.0.247 -p 6379 cluster nodes | grep master
Controlla lo stato principale di tutti i cluster Redis
Inoltre, controlla gli slave del cluster per confermare che il master guasto sia ora uno slave.
# redis-cli -h 10.42.0.247 -p 6379 cluster nodes | grep slave
Seleziona Tutti gli slave del cluster Redis
Fase 5:test della replica dei dati nel cluster Redis
15. Quest'ultima sezione spiega come verificare la replica dei dati del cluster. Creeremo una chiave e un valore su uno dei master, quindi proveremo a leggerlo da tutti i nodi del cluster come segue. Usa il -c
passare per abilitare il supporto del cluster nell'utilità redis-cli e accedere ai dati in modalità cluster.
# redis-cli -c -h 10.42.0.247 -p 6379 set name 'TecMint.com' # redis-cli -c -h 10.42.0.247 -p 6379 get name # redis-cli -c -h 10.42.0.21 -p 6379 get name # redis-cli -c -h 10.42.0.132 -p 6379 get name # redis-cli -c -h 10.42.0.200 -p 6379 get name # redis-cli -c -h 10.42.0.197 -p 6379 get name # redis-cli -c -h 10.42.0.34 -p 6379 get name
Verifica la replica dei dati del cluster Redis
La linea di fondo è il Cluster Redis è il modo migliore per ottenere partizionamento orizzontale, replica e disponibilità elevata automatiche. Ci sono molti altri parametri di configurazione ben documentati nel resto di /etc/redis.conf file, puoi trovare maggiori informazioni nella documentazione ufficiale:tutorial del cluster Redis e specifica del cluster Redis.
Questo ci porta alla fine della serie di tutorial Redis in tre parti. Il modulo di feedback sottostante può essere utilizzato per inviare domande o commenti.
Condividere è prendersi cura...Condividi su FacebookCondividi su TwitterCondividi su LinkedinCondividi su Reddit