Redis Sentinel

Redis Sentinel



Suposem un escenari en què només teniu una instància de Redis a la vostra producció i falla en algun moment per algun motiu. La vostra aplicació guarda dades a la memòria cau al magatzem de dades Redis i ara la vostra única font de dades ha mort. Una manera de controlar aquest tipus d'escenaris és mantenir una arquitectura mestre-esclau on els esclaus poden replicar el node mestre fins que torni. Els clústers de Redis admeten l'alta disponibilitat fins a cert punt amb l'enfocament de la rèplica mestra. Redis Sentinel és un altre enfocament que proporciona una manera més fiable de mantenir l'alta disponibilitat de les instàncies de Redis. Supervisa el node mestre Redis per detectar errors i activa immediatament el procés de migració per error que promourà un node esclau existent a un mestre nou.







A més, Redis sentinel actua com a intermediari on els clients es connecten i demanen la darrera adreça IP del node mestre. Per tant, el sentinella connectat proporciona immediatament l'adreça del node mestre.



A més, es confirma una fallada del node mestre si diversos sentinelles van acordar que un mestre determinat no és accessible o disponible. Això conclou la fase de detecció d'errors i el procés de migració per error comença immediatament. Per tant, el sentinella Redis es pot veure com un sistema distribuït amb propietats específiques.



L'acord dels sentinelles es basa en un valor de quòrum que es tractarà a l'apartat següent.





El valor de qui

El valor de Quòrum és el nombre màxim de sentinelles que cal acordar quan el node mestre està caigut. Aquest valor només s'utilitza per identificar una fallada al node mestre. El procés de migració per error comença amb l'autorització de diversos nodes sentinella disponibles per continuar amb un sentinella seleccionat com a líder.

Característiques de Redis Sentinel

El sentinella és conegut per proporcionar un mecanisme d'alta disponibilitat per al magatzem de dades Redis. A part d'això, es poden enumerar diverses altres capacitats.



  • Sentinel supervisa contínuament l'estat dels nodes mestre i esclau del vostre sistema Redis.
  • Sempre que hi hagi un error o alguna cosa malament amb les instàncies de Redis, el sentinel és capaç d'avisar l'administrador o les aplicacions connectades mitjançant l'API sentinel.
  • La fase de failover la dirigeix ​​el sentinella promovent una rèplica com a nou mestre. Les rèpliques restants estan configurades per utilitzar el nou mestre. Finalment, els clients corresponents rebran una notificació de la nova adreça del node mestre.
  • A més, el sentinella Redis és un proveïdor de configuració per als clients connectats on els clients poden demanar l'adreça de la instància mestra disponible actualment i si es produeix un col·lapse sobtat, el sentinella es compromet a impulsar la nova adreça del node mestre immediatament.

A la següent secció, configurarem els sentinels de Redis amb instàncies de rèplica mestra i utilitzarem l'API sentinel per supervisar els nodes.

Configuració Sentinel

Primer, creem dues instàncies de Redis als ports 7000 i 7001. El port 7000 serà el node mestre i l'altre replicarà el mestre. Ambdues instàncies utilitzen els següents fitxers de configuració respectivament:

Configuració del node mestre

port 7000
habilitat per clúster núm
cluster-config-file nodes.conf
cluster-node-timeout 5000
apèndix

Configuració del node esclau

port 7001
habilitat per clúster núm
cluster-config-file nodes.conf
cluster-node-timeout 5000
apèndix

Ambdues instàncies començaran proporcionant el fitxer de configuració associat a cadascuna. Podem utilitzar l'ordre següent per iniciar instàncies de Redis per separat:

redis-server redis.conf

Connectem-nos a la instància Redis iniciada al port 7001 de la següent manera:

redis-cli -p 7001

Ara, podem fer d'aquesta instància una rèplica del mestre que s'executa al port 7000. L'ordre REPLICAOF es pot utilitzar de la següent manera:

rèplica de 127.0.0.1 7000

Com era d'esperar, la instància que s'executava al port 7001 es va convertir en el node de rèplica del mestre que s'executava al port 7000.

Ara, estem preparats per configurar tres sentinelles Redis per supervisar la instància mestra anterior. Hem de tenir tres fitxers de configuració per crear tres instàncies sentinella als ports 5000, 5001 i 5002, tal com es mostra a continuació.

Cadascú sentinella.conf El fitxer té l'aspecte següent, excepte que el número de port es canviarà:

port 5000
monitor sentinel masternode 127.0.0.1 7000 2
node mestre sentinel cap avall després de mil·lisegons 5000
node mestre sentinel de temps d'espera per error 60000

Ara, toca córrer els tres sentinelles. Podeu utilitzar l'executable redis-sentinel juntament amb el camí a sentinella.conf fitxer de configuració per crear una instància sentinella. En cas contrari, encara podem trucar a l'executable del servidor redis especificant el camí a sentinella.conf i la bandera -sentinella .

Comencem cada sentinella amb l'ordre següent:

redis-server sentinel.conf --sentinella

El primer sentinella s'ha iniciat al port 5000. De la mateixa manera, també podeu iniciar les altres dues instàncies.

Ara, la nostra configuració sentinel de Redis està en funcionament, tal com es mostra a la il·lustració següent:

A la secció següent, explorarem més sobre l'API Sentinel i com podem utilitzar-la per recuperar informació relacionada amb el node mestre Redis.

API Sentinel

Redis proporciona una API sentinella independent per supervisar els mestres i les rèpliques associats, subscriure's per rebre notificacions i modificar la configuració del sentinella. A més, a continuació s'enumeren diversos usos.

  • Comproveu l'estat de les instàncies mestre i esclau de Redis supervisades
  • Detalls sobre altres sentinelles
  • Rebeu notificacions d'estil push dels sentinelles en cas de fallada

L'ordre SENTINEL es pot utilitzar amb les seves subordres associades per consultar, actualitzar o configurar sentinelles de Redis i nodes supervisats.

Comproveu l'estat del node mestre

És molt important controlar o comprovar l'estat del node mestre de tant en tant. La següent comanda de l'API sentinel es pot utilitzar per recuperar els detalls mestres:

MESTRE SENTINEL < nom_master_monitorat >

nom_master_monitorat: El nom del node mestre que s'especifica al fitxer de configuració sentinel que vam crear al pas anterior.

Utilitzem aquesta ordre per consultar l'estat del mestre a la nostra configuració. En el nostre cas, el nom del node mestre és 'masternode'.

Masternode SENTINEL MASTER

S'han recuperat diverses peces d'informació i algunes d'elles són importants, com ara num-esclaus, banderes i num-altres-sentinels.

El banderes la propietat està establerta a mestre el que significa que el mestre té bona salut. Sempre que el node mestre està caigut, el s_abaix o o_avall es mostrarà la bandera. La propietat num-altres-sentinels s'estableix en 2, el que significa que el sentinella Redis ja ha reconegut els altres dos sentinelles del node mestre. A més, el nombre-esclaus La propietat mostra les rèpliques disponibles per al node mestre. En aquest cas, s'estableix a 1 perquè només tenim una rèplica.

Obteniu informació sobre les rèpliques connectades

Podem comprovar les rèpliques connectades amb el node mestre mitjançant la següent subordre SENTINEL:

RÈPLIQUES SENTINELLES < nom_master_monitorat >

En aquest exemple, el nom mestre és 'masternode'.

SENTINEL rèpliques masternode

Com era d'esperar, el Sentinel va detectar el node esclau que s'executava al port 7001.

Obteniu informació sobre els sentinelles associats

De la mateixa manera, podem consultar els detalls relacionats amb altres sentinelles associats amb el node mestre actual mitjançant la següent subordre SENTINEL:

SENTINELLES SENTINELLES < nom_node_mestre >

En aquest cas, obtindrem la informació relacionada amb el node mestre anomenat 'masternode'.

SENTINEL SENTINELS masternode

Obteniu l'adreça del node mestre

Com s'ha esmentat a la secció anterior, Redis sentinel és un proveïdor de configuració per a clients connectats. Per tant, és capaç de proporcionar l'adreça IP i el port del node mestre en execució als clients sol·licitats. La següent subordre de l'API de Sentinel es pot utilitzar per recuperar la informació esmentada.

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

Executem l'ordre anterior per al nostre escenari de la següent manera:

sentinel get-master-addr-per-name masternode

Només hem parlat d'algunes ordres de l'API sentinel. Hi ha diverses altres subordres disponibles, com ara sentinel-failover, sentinel info-cache, sentinel masters, etc. A més, hi ha moltes ordres disponibles per utilitzar-les també amb finalitats d'administració. A la secció següent, ens centrarem en el procés de migració per error Redis sentinel.

Procés de failover Sentinel

Com que el nostre sentinella està configurat, podem provar la fase de failover. Enviem el nostre node mestre a dormir durant 300 segons, cosa que simula una fallada al node mestre.

depurar dormir 300

El node mestre que s'executa al port 7000 no hauria de ser accessible ara. Per tant, els sentinelles associats notaran que el mestre no està disponible amb el +sabaix esdeveniment. Aleshores, s'establirà a +odown on 2 sentinelles confirmen que el node mestre està baixat segons el valor de quòrum. Finalment, s'iniciarà la fase de failover i, idealment, la rèplica hauria de ser promoguda al nou mestre.

Comprovem de nou l'adreça IP del node mestre i el port.

sentinel get-master-addr-per-name masternode

Com era d'esperar, la rèplica anterior s'ha ascendit al nou mestre, la qual cosa significa que el procés de migració per error sentinel té èxit. Això conclou el desplegament i les proves de les nostres tres configuracions sentinella per a un únic parell mestre-rèplica.

Conclusió

Redis sentinel és l'enfocament més fiable per garantir l'alta disponibilitat d'una determinada instància de rèplica mestra de Redis. Un sentinella és capaç de supervisar, notificar i iniciar una migració automàtica per error sense intervenció humana. A més, diversos sentinelles junts coincideixen en el fet que el node mestre no és accessible i el valor de quòrum s'utilitza com el nombre màxim de sentinelles que cal acordar quan es comprova la disponibilitat de la instància mestra. Redis sentinel ofereix una API fàcil d'utilitzar per recuperar informació sobre la salut del node mestre i les rèpliques associades i també per realitzar tasques administratives.