Redis Sentinel

Redis Sentinel

Supponiamo uno scenario in cui hai solo un'istanza di Redis nella tua produzione e che a un certo punto fallisce a causa di qualche motivo. La tua applicazione memorizza la cache dei dati nell'archivio dati Redis e ora l'unica fonte di dati è morta. Un modo per controllare questo tipo di scenari è mantenere l'architettura di maestro-schiavi in ​​cui gli schiavi possono replicare il nodo principale fino a quando non ritorna. Redis cluster supportano un'alta disponibilità fino a una certa misura con l'approccio Master-Replica. Redis Sentinel è un altro approccio che fornisce un modo più affidabile per mantenere l'alta disponibilità di istanze di Redis. Monitora il nodo Master Redis per fallimenti e innesca immediatamente il processo di failover che promuoverà un nodo slave esistente a un nuovo master di zecca.

Inoltre, Redis Sentinel funge da mezzo in cui i clienti si collegano e chiedono l'indirizzo IP del nodo più recente. Quindi, il Sentinel connesso fornisce immediatamente l'indirizzo del nodo principale.

Inoltre, un errore di nodo principale è confermato se più sentinelle concordano sul fatto che un determinato maestro non è raggiungibile o disponibile. Ciò conclude la fase di rilevamento del fallimento e il processo di failover inizia subito. Quindi, il sentinella Redis può essere visto come un sistema distribuito con proprietà specifiche.

L'accordo di Sentinels si basa su un valore del quorum che sarà discusso nella sezione seguente.

Valore del quorum

Il valore del quorum è il numero massimo di sentinelle che devono essere concordati quando il nodo principale è inattivo. Questo valore viene utilizzato solo per identificare un errore nel nodo principale. Il processo di failover inizia con l'autorizzazione di più nodi Sentinel disponibili per procedere con una sentinella selezionata come leader.

Caratteristiche di Redis Sentinel

Il sentinella è noto per aver fornito un meccanismo ad alta disponibilità per il Redis Data Store. Oltre a ciò, è possibile elencare diverse altre funzionalità.

  • Sentinel monitora continuamente lo stato dei nodi master e schiavi nel tuo sistema Redis.
  • Ogni volta che c'è un fallimento o qualcosa di sbagliato nelle tue istanze Redis, il Sentinel è in grado di avvisare l'amministratore o le applicazioni connesse utilizzando API Sentinel.
  • La fase di failover è diretta dalla sentinella promuovendo una replica come nuovo maestro. Repliche rimanenti configurate per utilizzare il nuovo master. Infine, i client corrispondenti riceveranno una notifica del nuovo indirizzo di nodo principale.
  • Inoltre, Redis Sentinel è un fornitore di configurazione per i client connessi in cui i clienti possono richiedere l'indirizzo dell'istanza principale attualmente disponibile e se si è verificato un crollo improvviso, il sentinella si impegna a spingere immediatamente il nuovo indirizzo di nodo principale.

Nella sezione successiva, configureremo Redis Sentinels con istanze Master-Replica e usando l'API Sentinel per monitorare i nodi.

Configurazione Sentinel

Innanzitutto, creiamo due istanze Redis alle porte 7000 e 7001. La porta 7000 sarà il nodo principale e l'altro replica il master. Entrambe le istanze utilizzano rispettivamente i seguenti file di configurazione:

Configurazione del nodo principale

Porta 7000
N. abilitato per i cluster
nodi di file cluster-config.conf
cluster-node-timeout 5000
appendonly sì

Configurazione del nodo slave

Porta 7001
N. abilitato per i cluster
nodi di file cluster-config.conf
cluster-node-timeout 5000
appendonly sì

Entrambe le istanze inizieranno fornendo il file di configurazione associato a ciascuno. Possiamo usare il seguente comando per avviare le istanze Redis separatamente:

Redis-Server Redis.conf

Connettiamoci all'istanza Redis iniziata alla porta 7001 come segue:

Redis -cli -p 7001

Ora possiamo rendere questa istanza una replica del maestro che è in esecuzione alla porta 7000. Il comando replicaf può essere usato come segue:

Replicaf 127.0.0.1 7000

Come previsto, l'istanza in esecuzione alla porta 7001 è diventata il nodo replica del master in esecuzione alla porta 7000.

Ora siamo pronti a configurare tre Redis Sentinels per monitorare l'istanza principale sopra. Dobbiamo avere tre file di configurazione per creare tre istanze Sentinel alle porte 5000, 5001 e 5002 come mostrato nel seguente.

Ogni sentinella.conf Il file sembra il seguente tranne per il fatto che il numero di porta verrà modificato:

Porta 5000
Sentinel Monitor MasterNode 127.0.0.1 7000 2
Sentinel Down-dopo-millisecondi Masternode 5000
Sentinel Failover-timeout MasterNode 60000

Ora è ora di gestire le tre sentinelle. È possibile utilizzare l'esecutabile Redis-Sentinel insieme al percorso di sentinella.conf File di configurazione per creare un'istanza Sentinel. Altrimenti, possiamo ancora chiamare l'eseguibile Redis-Server specificando il percorso sentinella.conf e la bandiera -sentinella.

Iniziamo ogni sentinella usando il seguente comando:

Redis-Server Sentinel.Conf -Sentinel

La prima sentinella è stata avviata alla porta 5000. Allo stesso modo, puoi anche iniziare le altre due istanze.

Ora, la nostra configurazione di Redis Sentinel è attiva e funzionante come mostrato nella seguente illustrazione:

Nella sezione seguente, esploreremo di più sull'API Sentinel e su come possiamo utilizzarle per recuperare le informazioni relative al nodo Master Redis.

API Sentinel

Redis fornisce un'API Sentinel separata per monitorare i maestri e le repliche associate, iscriviti per le notifiche e modifica le impostazioni Sentinel. Inoltre, diversi usi sono elencati di seguito.

  • Controlla lo stato delle istanze monitorate di Redis Master e Slave
  • Dettagli su altre sentinelle
  • Ricevi notifiche in stile push da Sentinels in un caso di failover

Il comando Sentinel può essere utilizzato con i suoi sottocombi associati per interrogare, aggiornare o impostare Redis Sentinels e Monitod Nodi.

Controlla lo stato del nodo principale

Di tanto in tanto è molto importante monitorare o controllare la salute del nodo principale. Il seguente comando API Sentinel può essere utilizzato per recuperare i dettagli principali:

Sentinel Master

Monitored_master_name: Il nome del nodo principale specificato nel file di configurazione Sentinel che abbiamo creato nel passaggio precedente.

Usiamo questo comando per interrogare lo stato principale nella nostra configurazione. Nel nostro caso, il nome del nodo principale è 'Masternode'.

Sentinel Master MasterNode

Sono state recuperate diverse informazioni e alcune di esse sono importanti come le schiavi num, le bandiere e gli altri-sentinelli.

IL bandiere La proprietà è impostata su maestro il che significa che il maestro è in buona salute. Ogni volta che il nodo principale è inattivo, il s_down O o_down Verrà visualizzato la bandiera. La proprietà Num-Other-Sentinels è impostato su 2, il che significa che Redis Sentinel ha già riconosciuto le altre due sentinelle per il nodo principale. Inoltre, il Num-slaves La proprietà visualizza le repliche disponibili per il nodo principale. In questo caso, è impostato su 1 poiché abbiamo una sola replica.

Ottieni informazioni sulle repliche connesse

Possiamo controllare le repliche connesse al nodo principale utilizzando il seguente comando Sentinel:

Repliche Sentinel

In questo esempio, il nome principale è "MasterNode".

Sentinel Replicas MasterNode

Come previsto, il sentinella ha rilevato il nodo slave in esecuzione alla porta 7001.

Ottieni informazioni sui sentinelle associate

Allo stesso modo, possiamo interrogare i dettagli relativi ad altri sentinelle associati al nodo principale corrente utilizzando il seguente sottocomando Sentinel:

Sentinel Sentinels

In questo caso, prenderemo le informazioni relative al nodo principale denominato "MasterNode".

Sentinel Sentinels Masternode

Ottieni l'indirizzo del nodo principale

Come menzionato nella sezione precedente, Redis Sentinel è un fornitore di configurazione per i client connessi. Quindi, è in grado di fornire l'indirizzo IP del nodo principale attualmente in esecuzione ai client richiesti. Il seguente sottocomando API Sentinel può essere utilizzato per recuperare le informazioni menzionate.

Sentinel Get-Master-addr per nome

Eseguiamo il comando sopra per il nostro scenario come segue:

Sentinel Get-Master-addr-by-name Masternode

Abbiamo discusso solo alcuni comandi API Sentinel. Sono disponibili diversi altri sottocombi come Sentinel-Failover, Sentinel Info-Cache, Sentinel Masters ed ecc. Inoltre, sono disponibili anche molti comandi per scopi di amministrazione. Nella sezione seguente, ci concentreremo sul processo di failover Redis Sentinel.

Processo di failover Sentinel

Poiché la nostra sentinella è configurata, possiamo testare la fase di fallimento. Inviamo il nostro nodo principale a dormire per 300 secondi che simula un fallimento nel nodo principale.

Debug Sleep 300

Il nodo principale che è in esecuzione alla porta 7000 dovrebbe essere irraggiungibile ora. Quindi, le sentinelle associate noteranno che il maestro non è disponibile con il +sdown evento. Quindi, questo sarà impostato su +Odown Laddove 2 sentinelle confermano che il nodo principale è in calo in base al valore del quorum. Infine, la fase di failover inizierà e idealmente la replica dovrebbe essere promossa al nuovo maestro.

Controlliamo di nuovo l'indirizzo IP del nodo principale e la porta.

Sentinel Get-Master-addr-by-name Masternode

Come previsto, la replica precedente è stata promossa al nuovo maestro, il che significa che il processo di failover Sentinel ha successo. Ciò conclude la distribuzione e il test delle nostre tre configurazioni Sentinel per la coppia di replica singola.

Conclusione

Redis Sentinel è l'approccio più affidabile per garantire l'elevata disponibilità di una data istanza di replica di Redis Master. Una sentinella è in grado di monitorare, avvisare e iniziare il failover automatico senza intervento umano. Inoltre, più sentinelle insieme concordano sul fatto che il nodo principale non è raggiungibile e il valore del quorum viene utilizzato come numero massimo di sentinelle che devono essere concordate quando si verifica la disponibilità dell'istanza principale. Redis Sentinel offre un'API di facile utilizzo per recuperare informazioni sulla salute del nodo principale e le repliche associate ed eseguire anche compiti amministrativi.