Come creare un database Redis a disponibilità elevata con monitoraggio Sentinel

PUBBLICATO DA Zevenet | 10 giugno, 2019

Descrizione

Redis è un archivio di strutture di dati in memoria open source che può essere utilizzato come broker di messaggi, cache e database di valori-chiave. Supporta diverse strutture di dati: hash, elenchi, set, set ordinati, bitmap, indici geospaziali, iperloglog, ecc.

Ciò che rende unico Redis è che può essere considerato sia un negozio che una cache. È progettato in modo tale che i dati vengano modificati e / o letti dalla memoria del computer principale.

Tra le altre caratteristiche, Redis offre alta disponibilità, tramite Redis Sentinele il partizionamento automatico, tramite Redis Cluster. Inoltre, Redis ha un meccanismo di replica che consente alle istanze slave di essere copie esatte delle istanze master. Lo slave si riconnetterà automaticamente al master ogni volta che il collegamento si interrompe e il suo obiettivo è quello di essere una copia esatta di esso.

Poiché Redis Sentinel offre elevata disponibilità per Redis, in molti casi è in grado di gestire automaticamente i guasti senza alcun intervento umano, ma fornisce anche altre attività come il monitoraggio, le notifiche e funge da provider di configurazione per i client.

Ma, cosa succede quando Sentinel rileva un server Redis inattivo? Scopriremo in questo articolo come creare un servizio virtuale completo ad alta disponibilità per Redis.

Tenere presente che questa configurazione può essere eseguita anche se il server Redis non utilizza Sentinel per il monitoraggio.

Redis ambiente di bilanciamento del carico

Lo scenario che vogliamo raggiungere in questo articolo è mostrato nello schema seguente.

Redis Sentinel controlla lo stato di tutti i nodi Redis e cambia il ruolo del server Redis quando viene rilevato un errore.

Anche il bilanciamento del carico controlla lo stato, ma lo fa periodicamente ogni pochi secondi. Potrebbero esserci casi in cui Sentinel rileva il problema, ma il bilanciamento del carico potrebbe richiedere fino a qualche secondo per essere realizzato. Ciò potrebbe portare il bilanciatore a inviare richieste al master errato, che è quello che ha appena fallito ma è stato cambiato da Sentinel.

Zevenet offre un modo per risolvere questo problema, la farm L4 esegue periodicamente controlli. D'altra parte, c'è anche il flusso passato al backend che non contiene controlli precedenti. Quando il guardiano della fattoria si rende conto che il backend non risponde, lancia l'allarme, indicando che il flusso non dovrebbe andare in questo modo.

Tenendo conto di ciò, abbiamo da un lato i controlli e dall'altro le richieste. Se il controllo fallisce, il flusso viene inviato immediatamente a un altro nodo. Anche le petizioni in corso vengono reindirizzate a un altro nodo online. Questo sarà spiegato in maggior dettaglio nella configurazione.

Redis configurazione del bilanciamento del carico

Prima di configurare la farm, è necessario disporre di un IP virtuale. Per farlo, vai a Rete> Interfacce virtuali. Quindi fare clic su Azione> Crea interfaccia virtuale. Quindi, selezionare Interfaccia genitore, Nome dell'interfaccia virtuale e le sue Indirizzo IP:

Quindi, per il server virtuale Redis è necessario creare una farm L4xNAT. Per quello, vai a LSLB> Fattoriee quindi fare clic su Azioni e Crea fattoria.

Una volta impostati i parametri iniziali, fare clic su Creare. Quindi, vai al Avanzate scheda e assicurarsi che il tipo di protocollo sia TCP.

Avanti, vai a Servizi. Backends e Farm Guardian verranno installati qui per un controllo avanzato dello stato. Per prima cosa trova il backend sezione e fare clic su Azioni> Aggiungi backend come mostrato di seguito:

Monitoraggio Redis e controllo avanzato dell'integrità

Infine, i controlli Farm Guardian sono necessari per assicurarsi che utilizziamo sempre il nodo online, come spiegato nel caso precedente. Per questo, dobbiamo configurare quanto segue come comando Farm Guardian:

check_tcp -E -H HOST -p PORT -s 'info replication\r\n' -e role:master -t 3

Dove HOST e PORT verrà sostituito dall'indirizzo IP e dalla porta del server Redis di ciascun backend. Il comando replica delle informazioni otterrà le informazioni dal server Redis per verificare quale master è attivo, le connessioni verranno reindirizzate al server solo se viene presentato il master ruolo, non appena Sentinel cambia il ruolo, il bilanciamento del carico rileverà la modifica e il Redis il server sarà contrassegnato come inattivo. La bandiera -t è il numero di secondi che Farm Guardian attenderà una risposta del server Redis e quindi se il timeout viene raggiunto senza risposta, il server Redis verrà contrassegnato come inattivo. D'altra parte, una volta ripristinato lo stato del server Redis, il sistema tornerà ad essere attivo.

Ma prima di modificare il Guardiano della fattoria per questa fattoria particolare, vai a Monitoraggio> Farmguardian e quindi fare clic su Azione> Crea Farmguardian.

Scegli un nome descrittivo per il tuo nuovo controllo di integrità di Redis Sentinel, ad esempio, check_redis_master come nell'esempio, ora scegli check_tcp nel file Farmguardian da copiare e cliccare su Creare come mostrato di seguito.

Infine, copia il comando sopra menzionato nel file Comando parametro ed eseguire la configurazione come mostrato di seguito.

Fare clic su Invio.

Ora, seleziona questo nuovo controllo sanitario avanzato Farm Guardian nel servizio virtuale Redis. Ritornare a LSLB> Fattorie, alla farm creata con il nome RedisFarm, Servizi scheda. Infine, seleziona il check_redis_master comando appena creato sotto Controlli sanitari per il back-end.

Fare clic su aggiornare la fattoria e ora Redis saranno pienamente disponibili.

Referenze

https://redis.io/topics/sentinel
https://redis.io/topics/cluster-tutorial

Condividere su:

Documentazione sotto i termini della GNU Free Documentation License.

questo articolo è stato utile?

Articoli Correlati