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

Visualizza categorie

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

3 min letto

Panoramica #

Redis è un sistema di archiviazione di strutture dati in memoria open-source che può essere utilizzato come broker di messaggi, cache e database chiave-valore. Supporta diverse strutture dati: hash, liste, insiemi, insiemi ordinati, bitmap, indici geospaziali, hyperloglog, 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 funzionalità, Redis offre alta disponibilità tramite Redis Sentinel e partizionamento automatico tramite Redis Cluster . Inoltre, Redis dispone di 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, con l'obiettivo di diventarne una copia esatta.

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 che un server Redis non è disponibile? In questo articolo scopriremo 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.

RELIANOID 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 indirizzo IP virtuale. Per ottenerlo, andare su Rete > Interfacce virtuali . Quindi fare clic su Azione > Crea interfaccia virtuale . Successivamente, selezionare Interfaccia padre , Nome interfaccia virtuale e il relativo indirizzo IP :

Successivamente, per il server virtuale Redis, dobbiamo creare una farm L4xNAT. Per farlo, andate su LSLB > Farm , quindi fate clic su Azione e Crea Farm.

Una volta impostati i parametri iniziali, fai clic su Crea . Successivamente, vai alla scheda Avanzate e assicurati che il tipo di protocollo sia TCP.

Successivamente, vai su Servizi . Qui verranno configurati i backend e Farm Guardian per il controllo avanzato dello stato di salute. Per prima cosa, individua la sezione Backend e fai 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 replicazione\r\n' -e ruolo:master -t 3

Dove HOST e PORT verranno sostituiti dall'indirizzo IP e dalla porta di ciascun server Redis backend. Il comando info replication otterrà le informazioni dal server Redis per verificare quale master è attivo; le connessioni verranno reindirizzate al server solo se è presente il ruolo master. Non appena Sentinel cambia il ruolo, il bilanciatore di carico rileverà la modifica e il server Redis verrà contrassegnato come non attivo. Il flag -t indica il numero di secondi che Farm Guardian attenderà per una risposta dal server Redis; se il timeout viene raggiunto senza risposta, il server Redis verrà contrassegnato come non attivo. D'altra parte, una volta ripristinato lo stato di salute del server Redis, questo tornerà ad essere attivo.

Prima di modificare il Farm Guardian per questa specifica fattoria, vai su Monitoraggio > Farmguardian e poi fai clic su Azione > Crea Farmguardian.

Scegli un nome descrittivo per il tuo nuovo strumento di controllo dello stato di Redis Sentinel, ad esempio check_redis_master come nell'esempio, quindi seleziona check_tcp nel campo Farmguardian per copiare e fai clic su Crea come mostrato di seguito.

Infine, copia il comando sopra menzionato nel parametro Command ed esegui la configurazione come mostrato di seguito.

Fai clic su Invia.

Ora, seleziona questo nuovo controllo avanzato di integrità Farm Guardian nel servizio virtuale Redis. Torna a LSLB > Farm , alla farm creata con il nome RedisFarm , scheda Servizi . Infine, seleziona il comando check_redis_master appena creato in Controlli di integrità per il backend.

Fai clic su Aggiorna la farm e ora Redis sarà completamente ad alta disponibilità.

Referenze #

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

📄 Scarica questo documento in formato PDF #

    EMAIL: *

    Offerto da BetterDocs