Come configurare un cluster Redis in CentOS 8

Cluster Redis è integrato Redis funzionalità che supporta lo sharding automatico, la replica e l'alta disponibilità precedentemente implementata utilizzando sentinelle. È progettato per due scopi principali: uno è dividere automaticamente il set di dati tra più istanze e in secondo luogo fornire un certo grado di disponibilità durante le partizioni, per continuare le operazioni quando alcune istanze (soprattutto i master) falliscono o non sono in grado di comunicare con la maggior parte dei nodi nel grappolo.

Tuttavia, il cluster smette di funzionare in caso di guasti maggiori (ad esempio quando la maggior parte delle istanze master non è disponibile). Inoltre, se un master e uno slave falliscono contemporaneamente, il cluster non può continuare le normali operazioni (tuttavia la soluzione è aggiungere più nodi o creare un'asimmetria nel cluster, per cambiare automaticamente il cluster disposizione).

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 sono rimappati, ad esempio sotto Docker. Inoltre, non tutte le librerie client lo supportano.

Questo articolo mostra come impostare un Cluster Redis (insieme a Modalità cluster disabilitata) in CentOS 8. Include come installare Redis, configurare i nodi del cluster, creare un cluster e testare il failover del cluster.

NotaNota: per questa guida, utilizzeremo istanze Redis fresche/vuote per eseguire la modalità cluster. La modalità cluster non funzionerà con alcune configurazioni fatte nelle prime due guide della nostra Serie Redis, in particolare non funziona quando viene utilizzata la replica del parametro.

Prerequisiti:

  1. Server con installazione di CentOS 8

Configurazione dell'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
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 con una replica, quindi tre shard contengono tutti i dati del cluster in ciascun 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 il Redis modulo utilizzando il Gestore di pacchetti DNF come mostrato.

# modulo dnf installa redis. 

2. Quindi, avvia il Redis service, abilitarlo per l'avvio automatico all'avvio del sistema e controllarne lo stato per verificare che sia in esecuzione (verificare il servizio su tutte e 6 le istanze):

# systemctl avvia redis. # systemctl abilita redis. # stato systemctl redis. 

Passaggio 2: configurazione delle istanze Redis su tutti i nodi

3. Questa sezione descrive come configurare i nodi del cluster Redis. Ricordati di eseguire le configurazioni qui su tutti i nodi.

Usa il /etc/redis.conf file di configurazione per configurare il Redis server. Come pratica consigliata, crea un backup del file originale prima di modificarlo utilizzando a 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 legamento Il parametro imposta l'interfaccia su cui il server Redis sarà 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.

legare 10.42.0.247. 

Quindi impostare il modalità protetta a no per consentire le connessioni dalle altre istanze nel cluster.

modalità protetta n. 

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 client.

porta 6379. 
Imposta interfaccia e porta di ascolto Redis
Imposta interfaccia e porta di ascolto Redis

5. Il prossimo set di parametri abiliterà la modalità cluster e imposterà alcune delle sue utili funzionalità. Il abilitato per cluster parametro, quando impostato su , attiva la modalità cluster.

cluster abilitato sì. 

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 usando il 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ò essere non disponibile per essere considerata in uno stato di errore. Un valore di 15000 è equivalente a 15 secondi.

cluster-node-timeout 15000. 
Imposta timeout nodo cluster
Imposta timeout nodo cluster

6. Dobbiamo anche abilitare la persistenza di Redis su disco. Possiamo usare una delle modalità di persistenza, ovvero il 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, impostare il appendonly parametro a .

solo in appendice sì. 
Imposta le opzioni di persistenza
Imposta le opzioni di persistenza

7. Dopo aver apportato tutte le modifiche, riavviare il Redis service su tutti i nodi per applicare le modifiche recenti.

# systemctl riavvia 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
Controlla il file di registro del nodo del cluster

9. Quindi, apri la porta 6397 e 16379 su tutte le istanze. Il dopo porta viene utilizzato per il bus cluster (a da nodo a 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. 

Passaggio 3: creazione del cluster Redis

10. Per creare il cluster, utilizzare il riga di comando redis-cli cliente come segue. Il --cluster create consente la creazione di cluster e --cluster-repliche 1 significa creare una replica per master.

Per la nostra configurazione che ha 6 nodi, avremo 3 master e 3 slave.

Si noti che verranno presi in considerazione i primi 6 nodi maestri(M) e verranno presi in considerazione i prossimi tre 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 questo ordine.

Il seguente comando è formattato in modo che il risultato rappresenterà 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
Crea cluster Redis

11. Una volta che la creazione del cluster è andata a buon fine, eseguire il seguente comando su qualsiasi host (specificare il suo indirizzo IP utilizzando il pulsante -h flag) per elencare tutti i nodi del cluster.

# redis-cli -h 10.42.0.247 -p 6379 nodi del cluster. 

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
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).

Passaggio 4: test del failover del cluster Redis

12. In questa sezione, dimostreremo come testare un failover del cluster. Innanzitutto, prendiamo nota dei maestri.

# redis-cli -h 10.42.0.247 -p 6379 nodi cluster | maestro grep. 
Elenco dei master cluster Redis
Elenco dei master cluster Redis

Inoltre, prendi nota degli schiavi Redis.

# redis-cli -h 10.42.0.247 -p 6379 nodi cluster | schiavo grep. 
Elenca tutti gli slave cluster Redis
Elenca tutti gli slave cluster Redis

13. Quindi, interrompiamo il servizio Redis su uno dei nodi master, ad es 10.42.0.197 e controlla tutti i nodi master nel cluster.

# systemctl interrompe redis. # redis-cli -h 10.42.0.247 -p 6379 nodi cluster | maestro grep. 

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 status di maestro.

Controlla lo stato di failover del cluster
Controlla lo stato di failover del cluster

14. Ora iniziamo il Redis service ancora una volta sul nodo guasto e controllare tutti i master nel cluster.

# systemctl avvia redis. # redis-cli -h 10.42.0.247 -p 6379 nodi cluster | maestro grep. 
Controlla lo stato principale di tutti i cluster Redis
Controlla lo stato principale di tutti i cluster Redis

Inoltre, controlla gli slave del cluster per confermare che il master in errore è ora uno slave.

# redis-cli -h 10.42.0.247 -p 6379 nodi cluster | schiavo grep. 
Controlla tutti i cluster slave Redis
Controlla tutti i cluster slave Redis

Passaggio 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 cluster nell'utility redis-cli e accedere ai dati in modalità cluster.

# redis-cli -c -h 10.42.0.247 -p 6379 imposta il nome 'TecMint.com' # redis-cli -c -h 10.42.0.247 -p 6379 ottieni il nome. # redis-cli -c -h 10.42.0.21 -p 6379 ottieni il nome. # redis-cli -c -h 10.42.0.132 -p 6379 ottieni il nome. # redis-cli -c -h 10.42.0.200 -p 6379 get nome. # redis-cli -c -h 10.42.0.197 -p 6379 ottieni il nome. # redis-cli -c -h 10.42.0.34 -p 6379 ottieni il nome.
Verifica la replica dei dati del cluster Redis
Verifica la replica dei dati del cluster Redis

La linea di fondo è il Cluster Redis è il modo migliore per ottenere partizionamento automatico, replica e disponibilità elevata. Ci sono molti altri parametri di configurazione ben documentati nel resto del /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 del serie di tutorial Redis in tre parti. Il modulo di feedback sottostante può essere utilizzato per inviare domande o commenti.

Teachs.ru