Sentinella Redis

Sentinella Redis



Si supponga uno scenario in cui disponi di una sola istanza Redis nella produzione e che a un certo punto non riesce per qualche motivo. La tua applicazione memorizza nella cache i dati nell'archivio dati Redis e ora la tua unica origine dati è morta. Un modo per controllare questo tipo di scenari è mantenere l'architettura master-slave in cui gli slave possono replicare il nodo master fino al suo ritorno. I cluster Redis supportano l'elevata disponibilità fino a un certo grado con l'approccio di replica master. Redis Sentinel è un altro approccio che fornisce un modo più affidabile per mantenere l'elevata disponibilità delle istanze Redis. Monitora il nodo master Redis per rilevare eventuali errori e avvia immediatamente il processo di failover che promuoverà un nodo slave esistente a un master nuovo di zecca.







Inoltre, Redis sentinel funge da intermediario in cui i client si connettono e chiedono l'ultimo indirizzo IP del nodo Master. Quindi, la sentinella connessa fornisce immediatamente l'indirizzo del nodo principale.



Inoltre, un errore del nodo master viene confermato se più sentinelle concordano sul fatto che un determinato master non è raggiungibile o disponibile. Questo conclude la fase di rilevamento degli errori e il processo di failover inizia immediatamente. Quindi, la sentinella Redis può essere vista come un sistema distribuito con proprietà specifiche.



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





Il cui valore

Il valore Quorum è il numero massimo di sentinelle che deve essere concordato quando il nodo master è inattivo. Questo valore viene utilizzato solo per identificare un errore nel nodo master. Il processo di failover inizia con l'autorizzazione di più nodi sentinella disponibili a procedere con una sentinella selezionata come leader.

Caratteristiche di Redis Sentinel

La sentinella è nota per fornire un meccanismo di alta disponibilità per l'archivio dati Redis. Oltre a ciò, è possibile elencare molte altre funzionalità.



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

Nella prossima sezione, configureremo le sentinelle Redis con istanze di replica master e utilizzeremo l'API sentinella per monitorare i nodi.

Configurazione Sentinella

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

Configurazione del nodo principale

porta 7000
abilitato al cluster n
cluster-file-config nodes.conf
timeout nodo cluster 5000
appendonly

Configurazione del nodo slave

porta 7001
abilitato al cluster n
cluster-file-config nodes.conf
timeout nodo cluster 5000
appendonly

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

server redis redis.conf

Connettiamoci all'istanza Redis avviata sulla porta 7001 come segue:

redis-cli -p 7001

Ora possiamo rendere questa istanza una replica del master che è in esecuzione sulla porta 7000. Il comando REPLICAOF può essere utilizzato come segue:

replica di 127.0.0.1 7000

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

Ora siamo pronti per configurare tre sentinelle Redis per monitorare l'istanza master di cui sopra. Abbiamo bisogno di tre file di configurazione per creare tre istanze sentinella alle porte 5000, 5001 e 5002, come mostrato di seguito.

A testa sentinella.conf il file è simile al seguente, tranne per il fatto che il numero di porta verrà modificato:

porta 5000
masternode monitor sentinella 127.0.0.1 7000 Due
masternode sentinel down dopo millisecondi 5000
masternode di timeout di failover sentinella 60000

Ora è il momento di mandare in fuga le tre sentinelle. È possibile utilizzare l'eseguibile redis-sentinel insieme al percorso di sentinella.conf file di configurazione per creare un'istanza sentinella. Altrimenti, possiamo ancora chiamare l'eseguibile del server redis specificando il percorso di sentinella.conf e la bandiera -sentinella .

Iniziamo ogni sentinella usando il seguente comando:

server redis sentinel.conf --sentinella

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

Ora, la nostra configurazione della sentinella Redis è attiva e funzionante come mostrato nell'illustrazione seguente:

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

API sentinella

Redis fornisce un'API sentinella separata per monitorare i master e le repliche associati, iscriversi alle notifiche e modificare le impostazioni della sentinella. Inoltre, di seguito sono elencati diversi usi.

  • Controllare lo stato delle istanze master e slave Redis monitorate
  • Dettagli su altre sentinelle
  • Ricevi notifiche in stile push dalle sentinelle in caso di failover

Il comando SENTINEL può essere utilizzato con i suoi sottocomandi associati per interrogare, aggiornare o impostare sentinelle Redis e nodi monitorati.

Controllare lo stato del nodo principale

È molto importante monitorare o controllare di tanto in tanto lo stato del nodo master. Il seguente comando API sentinella può essere utilizzato per recuperare i dettagli principali:

MAESTRO SENTINEL < monitor_master_name >

monitor_master_name: Il nome del nodo master specificato nel file di configurazione sentinella creato nel passaggio precedente.

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

Masternode SENTINEL MASTER

Sono state recuperate diverse informazioni e alcune di esse sono importanti come num-slaves, flag e num-other-sentinels.

Il bandiere la proprietà è impostata su maestro il che significa che il maestro è in buona salute. Ogni volta che il nodo master è inattivo, il s_giù o o_giù verrà visualizzata la bandiera. La proprietà num-altre-sentinelle è impostato su 2, il che significa che la sentinella Redis ha già riconosciuto le altre due sentinelle per il nodo master. Inoltre, il num-slave la proprietà visualizza le repliche disponibili per il nodo master. In questo caso, è impostato su 1 poiché abbiamo solo una replica.

Ottieni informazioni sulle repliche connesse

Possiamo controllare le repliche collegate al nodo master usando il seguente sottocomando SENTINEL:

REPLICHE SENTINEL < monitor_master_name >

In questo esempio, il nome master è 'masternode'.

SENTINEL replica il masternode

Come previsto, Sentinel ha rilevato il nodo slave in esecuzione sulla porta 7001.

Ottieni informazioni sulle sentinelle associate

Allo stesso modo, possiamo interrogare i dettagli relativi ad altre sentinelle associate al nodo master corrente utilizzando il seguente sottocomando SENTINEL:

SENTINELLE SENTINELLE < nome_nodo_master >

In questo caso, recupereremo le informazioni relative al nodo master denominato 'masternode'.

SENTINEL masternode sentinelle

Ottieni l'indirizzo del nodo principale

Come accennato nella sezione precedente, Redis sentinel è un provider di configurazione per i client connessi. Pertanto, è in grado di fornire l'indirizzo IP e la porta del nodo master attualmente in esecuzione ai client richiesti. Il seguente sottocomando dell'API Sentinel può essere utilizzato per recuperare le informazioni menzionate.

SENTINEL GET-MASTER-ADDR-BY-NAME < nome_nodo_master >

Eseguiamo il comando precedente per il nostro scenario come segue:

sentinel get-master-addr-by-name masternode

Abbiamo discusso solo di alcuni comandi API sentinella. Sono disponibili molti altri sottocomandi come sentinel-failover, sentinel info-cache, sentinel masters e così via. Inoltre, molti comandi sono disponibili anche per scopi di amministrazione. Nella sezione seguente, ci concentreremo sul processo di failover della sentinella di Redis.

Processo di failover di sentinella

Poiché la nostra sentinella è configurata, possiamo testare la fase di failover. Mandiamo il nostro nodo master in modalità di sospensione per 300 secondi che simula un errore nel nodo master.

eseguire il debug dormire 300

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

Controlliamo nuovamente l'indirizzo IP del nodo master e la porta.

sentinel get-master-addr-by-name masternode

Come previsto, la replica precedente è stata promossa al nuovo master, il che significa che il processo di failover della sentinella ha esito positivo. Questo conclude la distribuzione e il test delle nostre tre configurazioni sentinella per una singola coppia master-replica.

Conclusione

Redis sentinel è l'approccio più affidabile per garantire l'elevata disponibilità di una determinata istanza di replica master Redis. Una sentinella è in grado di monitorare, notificare e avviare il failover automatico senza l'intervento umano. Inoltre, più sentinelle insieme concordano sul fatto che il nodo master è irraggiungibile e il valore del quorum viene utilizzato come numero massimo di sentinelle che deve essere concordato durante il controllo della disponibilità dell'istanza master. Redis sentinel offre un'API di facile utilizzo per recuperare informazioni sullo stato di salute del nodo master e delle repliche associate ed eseguire anche attività amministrative.