Redis Elevata disponibilità

Redis Elevata disponibilità
I database Redis possono archiviare oggetti piccoli, di breve durata e complessi che persistono per mesi. Indipendentemente dalla complessità e dalla dimensione degli oggetti, la disponibilità continua di tali dati è un must per fornire un servizio di back-end senza soluzione di continuità al cliente.Di solito, l'installazione autonoma Redis è facile da configurare e utilizzare. Ma non è l'opzione migliore da utilizzare in un ambiente in cui possono verificarsi guasti al nodo. La durata dei dati può essere mantenuta con la funzione AOF (Redis Append Syly File) in Redis ma non è la soluzione ideale per l'alta disponibilità. Allo stesso modo, i file Redis RDB possono essere utilizzati come opzione di backup che è una rappresentazione puntuale dei dati. Entrambe queste opzioni non affrontano il problema dei guasti improvvisi del nodo Redis.Pertanto, Redis ha introdotto diverse funzionalità integrate per supportare l'elevata disponibilità dei database Redis discussi nella sezione seguente.

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

  • Facile e meno dispendioso da configurare.
  • Questa configurazione funzionerà fintanto che è disponibile un singolo nodo principale e anche senza un singolo nodo slave.
  • Possibile automatizzare con strumenti di gestione della configurazione.

Contro

  • Il processo di failover principale non è automatizzato.
  • Poiché le letture sono asincroni, possono verificarsi letture stantii.
  • L'utilizzo del maestro e degli schiavi non è uguale a causa del frammento non è supportato.

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

  • Funzione di failover automatica
  • Semplice e meno dispendioso per configurare

Contro

  • Sentinel ha bisogno di un cluster separato se non collocato con i nodi del server Redis
  • L'utilizzo del nodo master e slave è sbilanciato a causa di nessuna opzione di frammento disponibile
  • Redis Sentinel è un sistema distribuito e comporta una notevole quantità di manutenzione

Alta disponibilità con clustering Redis

Con le ultime versioni di Redis, è stato aggiunto un componente cluster allo stack Redis. Supporta:

  • Sharding
  • Replica
  • Alta disponibilità

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

  • Supporta frammenti che dà un aumento delle prestazioni durante la domanda di Redis Data Store.
  • Fornisce una soluzione di failover automatica
  • Supporto master-replica

Contro

  • Mantenere un cluster potrebbe essere una notevole quantità di lavoro
  • Mancanza di supporto in biblioteca

Conclusione

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.