Replica del database
La replica del database è la tecnica fondamentale alla base di un sistema di database e tolleranza agli errori e continuamente disponibile. La replica copie i dati dal database principale (database primario) a uno o più database slave (repliche) che assicurano che i dati siano accessibili in qualsiasi momento se un nodo principale non riesce. Questo processo è accoppiato a un processo di failover automatico che promuove un nuovo master dai nodi di replica disponibile quando il nodo principale fallisce.
Replica di Redis costruita
Redis ha iniziato a sostenere la replica dalle sue prime versioni e immensamente migliorato. La versione autonoma supporta la replica di base con il comando slavef convertendo un nodo esistente in uno slave del nodo di database primario. Inoltre, la funzione Redis Sentinel consente la replica con una funzione di failover più avanzata. Inoltre, il cluster Redis supporta una ricca set di funzionalità ad alta disponibilità per sistemi di database più distribuiti e di grandi dimensioni.
Replica di base Redis con comando slavef
Uno dei modi fondamentali per ottenere la replica di Redis è usando il comando slavef.
È un passo per creare un'istanza di Redis un nodo slave. La riga seguente deve essere aggiunta al file di configurazione della particolare istanza:
schiavo
Caso d'uso
L'esempio seguente dimostra uno scenario in cui una determinata istanza Redis è configurata per essere un nodo slave di un nodo principale che funziona nel 127.0.0.1 indirizzo nella porta 7000.
Con questa configurazione, il database master copierà tutti i dati nel nodo slave che garantisce che lo slave sia una copia esatta del nodo di database primario.
Una volta che il nodo principale è attivo e funzionante a 127.0.0.1 e porta 7000, iniziamo l'altra istanza il cui file di configurazione contiene la configurazione slavef. La nuova istanza verrà eseguita alla porta 7001.
La nuova istanza viene avviata con successo e sincronizzata con le corse master a 127.0.0.1 (porta 7000).
Se scrivi alcuni dati sul nodo principale, quelli possono essere letti dallo slave come segue. Significa che il master e la replica sono stati sincronizzati correttamente.
La scrittura di dati sul nodo principale funziona alla porta 7000 come segue.
La lettura dei dati dal nodo slave viene eseguito alla porta 7001 come mostrato nella seguente:
Con questa configurazione, quando il Master Redis fallisce, abbiamo già una copia esatta del database primario in esecuzione alla porta 7001. Allo stesso modo, è possibile configurare più schiavi per un determinato nodo principale. L'unico inconveniente in questa configurazione è che è necessario prenderti cura manualmente del processo di failover.
Professionisti
Contro
Alta disponibilità con Redis Sentinel
Redis Sentinel è stato introdotto per affrontare gli svantaggi della soluzione precedente. Redis Sentinel è un sistema distribuito che funge da soluzione avanzata ad alta disponibilità per Redis insieme ad altre funzionalità come il fornitore di notifiche, strumenti di monitoraggio e fornitore di configurazione per i clienti.
Il sentinella è in grado di promuovere automaticamente uno schiavo a un nodo principale senza alcun intervento umano. Il processo di failover principale si avvia se il numero massimo specificato di nodi sentinella (quorum) concordano sul fatto che il nodo principale non è raggiungibile. Quindi, la disponibilità dei nodi sentinella è importante. Tuttavia, si consiglia di utilizzare un cluster Sentinel separato per eseguire nodi Sentinel separatamente dai nodi principali. Con questa configurazione, i client Redis parlano prima con il nodo Sentinel e chiedono informazioni sul nodo principale attualmente in esecuzione. Quindi solo i clienti lavoreranno con l'attuale maestro.
È possibile avviare un server Redis in modalità Sentinel come mostrato nel comando seguente:
Redis-Server--sentinella
Come mostrato nel seguente output, il server è stato avviato in modalità Sentinel.
Inoltre, anche Redis Sentinels può essere collocato con i server Redis.
Professionisti
Contro
Alta disponibilità con clustering Redis
Con le ultime versioni di Redis, è stato aggiunto un componente cluster allo stack Redis. Supporta:
Quindi, il cluster Redis affronta diversi aspetti che mancano nelle soluzioni precedenti. È diventato estremamente vantaggioso per le grandi imprese che generano e archiviano una grande quantità di dati. Perché lo sharding distribuisce i tuoi dati tra più maestri, ciascuno con un sottoinsieme dell'intero spazio chiave. Ti dà un enorme aumento delle prestazioni.
Allo stesso tempo, la replica è disponibile nei cluster Redis in cui è possibile configurare più nodi slave per un determinato master. Di solito, un nodo cluster dovrebbe contenere esattamente un'istanza del server Redis. Ma è possibile configurare la replicazione incrociata distribuendo più istanze in un singolo nodo.
Inoltre, l'opzione di failover automatico è fornita dai cluster Redis in cui il nodo slave promuoverà a un master. In una configurazione di cluster, il quorum non è tenuto a promuovere un nuovo nodo principale o sharding per lavorare. Il Quorum del nodo principale è necessario solo per l'esecuzione dell'intero cluster.
Quindi, la soluzione del cluster Redis può essere vista come una soluzione all-in-one per coloro che sono alla ricerca di frammenti, replica e alta disponibilità nelle loro applicazioni.
Professionisti
Contro
Redis supporta l'alta disponibilità con Redis autonomo, il modello Redis Sentinel e il componente del cluster integrato. Tutte e tre le soluzioni hanno i loro pro e contro come discusso sopra. Nel complesso, Redis Sentinel è l'opzione di riferimento se stai cercando solo un'alta disponibilità e non ti preoccupi delle prestazioni. Ma se stai cercando un equilibrio tra prestazioni e alta disponibilità con replicazione incrociata, senza dubbio, il cluster Redis è il migliore tra tutti e tre.