Ricerca nel sito web

Come configurare Redis per l'alta disponibilità con Sentinel in CentOS 8 - Parte 2


Redis fornisce elevata disponibilità tramite il sistema distribuito Redis Sentinel. Sentinel aiuta a monitorare le istanze Redis, a rilevare gli errori e ad effettuare automaticamente il cambio di ruolo, consentendo così a una distribuzione Redis di resistere a qualsiasi tipo di errore.

È dotato di monitoraggio delle istanze Redis (master e repliche), supporta la notifica di altri servizi/processi o dell'amministratore di sistema tramite uno script, failover automatico per promuovere una replica a master quando il master non funziona e fornisce configurazione per consentire ai clienti di scoprire il master corrente che offre un particolare servizio.

Questo articolo illustra come configurare Redis per l'alta disponibilità con Redis Sentinel in CentOS 8, inclusa la configurazione delle sentinelle, il controllo dello stato di configurazione e il test di un Failover Sentinel.

Prerequisito:

  1. Come impostare la replica Redis (con modalità cluster disabilitata) in CentOS 8 – Parte 1

Configurazione dell'ambiente di prova

Master Server and Sentinel1: 10.42.0.247
Redis Replica1 and Sentinel2: 10.42.0.21
Redis Replica2 and Sentinel3: 10.42.0.34

Secondo la documentazione Redis Sentinel, sono necessarie almeno tre istanze Sentinel per una distribuzione solida. Considerando la nostra impostazione sopra, se il master fallisce, Sentinels2 e Sentinel3 saranno d'accordo sul fallimento e saranno in grado di autorizzare un failover, facendo le operazioni del cliente possono continuare.

Passaggio 1: avvio e abilitazione del servizio Redis Sentinel

1. Su CentOS 8, il servizio Redis Sentinel è installato insieme al server Redis (cosa che abbiamo già fatto in la configurazione della replica Redis).

Per avviare il servizio sentinel Redis e abilitarne l'avvio automatico all'avvio del sistema, utilizzare i seguenti comandi systemctl. Inoltre, conferma che sia attivo e funzionante controllandone lo stato (fallo su tutti i nodi):

systemctl start redis-sentinel
systemctl enable redis-sentinel
systemctl status redis-sentinel

Passaggio 2: configurazione di Redis Sentinel su tutti i nodi Redis

2. In questa sezione spieghiamo come configurare Sentinel su tutti i nostri nodi. Il servizio Sentinel ha un formato di configurazione simile al server Redis. Per configurarlo, utilizzare il file di configurazione autodocumentato /etc/redis-sentinel.conf.

Innanzitutto, crea un backup del file originale e aprilo per la modifica.

cp /etc/redis-sentinel.conf /etc/redis-sentinel.conf.orig
vi /etc/redis-sentinel.conf

3. Per impostazione predefinita, Sentinel è in ascolto sulla porta 26379, verificalo su tutte le istanze. Tieni presente che devi lasciare il parametro bind commentato (o impostato su 0.0.0.0).

port 26379

4. Successivamente, chiedi a Sentinel di monitorare il nostro master e di considerarlo nello stato "Obiettivamente giù" solo se almeno 2 sentinelle del quorum sono d'accordo. Puoi sostituire "miopadrone" con un nome personalizzato.

#On Master Server and Sentinel1
sentinel monitor mymaster 127.0.0.1 6379 2

#On Replica1 and Sentinel2
sentinel monitor mymaster 10.42.0.247 6379 2

#On Replica1 and Sentinel3
sentinel monitor mymaster 10.42.0.247 6379 2

Importante: l'istruzione sentinel monitor DEVE essere posizionata prima dell'istruzione sentinel auth-pass per evitare l'errore "No such master with il nome specificato. "al riavvio del servizio sentinella.

5. Se il master Redis da monitorare ha una password impostata (nel nostro caso il master ce l'ha), fornire la password in modo che l'istanza Sentinel possa autenticarsi con l'istanza protetta.

 
sentinel auth-pass mymaster Securep@55Here

6. Quindi imposta il numero di millisecondi in cui il master (o qualsiasi replica o sentinella collegata) dovrebbe essere irraggiungibile per considerarlo nello stato "Soggettivamente inattivo".

La seguente configurazione fa sì che il master verrà considerato fallito non appena non riceveremo alcuna risposta dai nostri ping entro 5 secondi (1 secondo equivale a 1000 millisecondi).

sentinel down-after-milliseconds mymaster 5000

7. Successivamente, imposta il timeout del failover in millisecondi che definisce molte cose (leggi la documentazione del parametro nel file di configurazione).

sentinel failover-timeout mymaster 180000

8. Quindi imposta il numero di repliche che possono essere riconfigurate per utilizzare contemporaneamente il nuovo master dopo un failover. Poiché abbiamo due repliche, ne imposteremo una mentre l'altra verrà promossa al nuovo master.

sentinel parallel-syncs mymaster 1

Tieni presente che i file di configurazione su Redis Replica1 e Sentinel2 e Reddis Replica1 e Sentinel2 dovrebbero essere identici.

9. Successivamente, riavvia i servizi Sentinel su tutti i nodi per applicare le modifiche recenti.

systemctl restart redis-sentinel

10. Successivamente, apri la porta 26379 nel firewall su tutti i nodi per consentire alle istanze Sentinel di iniziare a parlare e ricevere connessioni dagli altri Sentinel, utilizzando firewall-cmd.

firewall-cmd --zone=public --permanent --add-port=26379/tcp
firewall-cmd --reload

11. Tutte le repliche verranno scoperte automaticamente. È importante sottolineare che Sentinel aggiornerà automaticamente la configurazione con informazioni aggiuntive sulle repliche. Puoi confermarlo aprendo il file di configurazione Sentinel per ciascuna istanza ed esaminandolo.

Ad esempio, quando guardi la fine del file di configurazione del master, dovresti vedere le istruzioni known-sentinels e known-replica come mostrato nello screenshot seguente.

Dovrebbe essere lo stesso caso su replica1 e replica2.

Tieni presente che la configurazione Sentinel viene riscritta/aggiornata anche ogni volta che una replica viene promossa allo stato master durante un failover e ogni volta che viene rilevata una nuova Sentinel nella configurazione.

Passaggio 3: verificare lo stato della configurazione di Redis Sentinel

12. Ora controlla lo stato/informazioni di Sentinel sul master, utilizzando il comando info sentinel come segue.

redis-cli -p 26379 info sentinel

Dall'output del comando, come mostrato nello screenshot seguente, abbiamo due repliche/schiavi e tre sentinelle.

13. Per mostrare informazioni dettagliate sul master (chiamato mymaster), utilizzare il comando sentinel master.

redis-cli -p 26379 sentinel master mymaster

14. Per mostrare informazioni dettagliate sugli schiavi e sulle sentinelle, utilizzare il comando sentinel slaves e sentinel comandano rispettivamente le sentinelle.

redis-cli -p 26379 sentinel slaves mymaster
redis-cli -p 26379 sentinel sentinels mymaster

15. Successivamente, chiedi l'indirizzo del master per nome alle istanze dello slave utilizzando il comando sentinel get-master-addr-by-name come segue.

L'output dovrebbe essere l'indirizzo IP e la porta dell'istanza master corrente:

redis-cli -p 26379 sentinel get-master-addr-by-name mymaster

Passaggio 4: testare il failover di Sentinel

16. Infine, testiamo il failover automatico nella nostra configurazione Sentinel. Sul master Redis/Sentinel, imposta la sospensione del master Redis (in esecuzione sulla porta 6379) per 60 secondi . Successivamente interrogare l'indirizzo del master attuale sulle repliche/slave come segue.

redis-cli -p 6379
127.0.0.1:6379> AUTH Securep@55Here
127.0.0.1:6379>  debug sleep 60
redis-cli -p 26379 sentinel get-master-addr-by-name mymaster
redis-cli -p 26379 sentinel get-master-addr-by-name mymaster

Dall'output della query, il nuovo master è ora replica/slave2 con indirizzo IP 10.42.0.34 come mostrato nello screenshot seguente.

Puoi ottenere maggiori informazioni dalla documentazione di Redis Sentinel. Ma se hai qualche pensiero da condividere o domande, il modulo di feedback qui sotto è il tuo punto di accesso.

Nella prossima e ultima parte di questa serie, esamineremo come configurare un cluster Redis in CentOS 8. Sarà un articolo indipendente dai primi due.