Redis Sentinel

Redis Sentinel



Predpostavimo, da imate v produkciji samo en primerek Redisa, ki zaradi nekega razloga na neki točki ne uspe. Vaša aplikacija shranjuje podatke v podatkovno shrambo Redis in zdaj je vaš edini vir podatkov mrtev. Eden od načinov za nadzor tovrstnih scenarijev je vzdrževanje arhitekture glavni-podrejeni, kjer lahko podrejeni posnemajo glavno vozlišče, dokler se ne vrne. Grozdi Redis podpirajo visoko razpoložljivost do neke mere s pristopom glavne replike. Redis Sentinel je še en pristop, ki zagotavlja bolj zanesljiv način za vzdrževanje visoke razpoložljivosti primerkov Redis. Nadzoruje glavno vozlišče Redis glede napak in takoj sproži postopek preklopa, ki bo obstoječe podrejeno vozlišče povišal v popolnoma novo glavno.







Poleg tega Redis sentinel deluje kot posrednik, kjer se stranke povežejo in zahtevajo najnovejši naslov IP glavnega vozlišča. Tako povezani nadzornik takoj zagotovi naslov glavnega vozlišča.



Poleg tega je okvara glavnega vozlišča potrjena, če se več nadzornikov strinja, da dani glavni ni dosegljiv ali na voljo. S tem se zaključi faza odkrivanja napak in takoj se začne postopek samodejnega preklopa. Zato lahko na Redis sentinel gledamo kot na porazdeljen sistem s posebnimi lastnostmi.



Dogovor nadzornikov temelji na vrednosti kvoruma, o kateri bomo razpravljali v naslednjem razdelku.





Čigava vrednost

Vrednost kvoruma je največje število nadzornikov, o katerih se je treba dogovoriti, ko glavno vozlišče ne deluje. Ta vrednost se uporablja samo za identifikacijo napake v glavnem vozlišču. Postopek samodejnega preklopa se začne z avtorizacijo več razpoložljivih kontrolnih vozlišč za nadaljevanje z izbranim kontrolnim kot vodilnim.

Značilnosti Redis Sentinel

Sentinel je znan po zagotavljanju mehanizma visoke razpoložljivosti za podatkovno shrambo Redis. Poleg tega je mogoče našteti več drugih zmogljivosti.



  • Sentinel nenehno spremlja status glavnih in podrejenih vozlišč v vašem sistemu Redis.
  • Kadarkoli pride do napake ali česa narobe z vašimi primerki Redis, lahko sentinel obvesti skrbnika ali povezane aplikacije z uporabo API-ja sentinel.
  • Fazo preklopa usmerja nadzornik tako, da repliko promovira kot novega glavnega. Preostale replike, konfigurirane za uporabo novega glavnega. Končno bodo ustrezne stranke prejele obvestilo o novem naslovu glavnega vozlišča.
  • Redis sentinel je tudi ponudnik konfiguracije za povezane odjemalce, kjer lahko odjemalci zahtevajo naslov trenutno razpoložljivega glavnega primerka in če pride do nenadnega kolapsa, je nadzornik zavezan nemudoma potisniti nov naslov glavnega vozlišča.

V naslednjem razdelku bomo konfigurirali nadzornike Redis s primerki glavne replike in uporabili API za nadzornike za nadzor vozlišč.

Konfiguracija Sentinel

Najprej ustvarimo dva primerka Redisa na vratih 7000 in 7001. Vrata 7000 bodo glavno vozlišče, drugo pa podvaja glavno. Oba primerka uporabljata naslednje konfiguracijske datoteke:

Konfiguracija glavnega vozlišča

pristanišče 7000
št
cluster-config-file vozlišča.conf
cluster-node-timeout 5000
dodatek ja

Konfiguracija podrejenega vozlišča

pristanišče 7001
št
cluster-config-file vozlišča.conf
cluster-node-timeout 5000
dodatek ja

Oba primerka se bosta začela z zagotavljanjem konfiguracijske datoteke, povezane z vsakim. Za ločeni zagon primerkov Redis lahko uporabimo naslednji ukaz:

redis-strežnik redis.conf

Povežimo se s primerkom Redis, ki se začne na vratih 7001, kot sledi:

redis-cli -str 7001

Zdaj lahko naredimo ta primerek repliko glavnega, ki se izvaja na vratih 7000. Ukaz REPLICAOF lahko uporabite na naslednji način:

replika 127.0.0.1 7000

Kot je bilo pričakovano, je primerek, ki se izvaja na vratih 7001, postal replika vozlišča glavnega dela, ki se izvaja na vratih 7000.

Zdaj smo pripravljeni konfigurirati tri nadzornike Redis za spremljanje zgornjega glavnega primerka. Potrebujemo tri konfiguracijske datoteke, da ustvarimo tri primerke sentinel na vratih 5000, 5001 in 5002, kot je prikazano v nadaljevanju.

Vsak sentinel.conf datoteka izgleda takole, le da bo številka vrat spremenjena:

pristanišče 5000
glavno vozlišče nadzornega monitorja 127.0.0.1 7000 dva
glavno vozlišče sentinel navzdol po milisekundah 5000
glavno vozlišče sentinel failover-timeout 60000

Zdaj je čas, da zaženete tri stražarje. Izvršljivo datoteko redis-sentinel lahko uporabite skupaj s potjo do sentinel.conf konfiguracijsko datoteko za ustvarjanje primerka sentinel. V nasprotnem primeru lahko še vedno pokličemo izvršljivo datoteko redis-server, tako da podamo pot do sentinel.conf in zastava – stražar .

Zaženimo vsakega stražarja z naslednjim ukazom:

redis-server sentinel.conf --stražar

Prvi sentinel je bil zagnan na vratih 5000. Podobno lahko zaženete tudi druga dva primerka.

Zdaj je naša nastavitev Redis sentinel pripravljena in deluje, kot je prikazano na naslednji sliki:

V naslednjem razdelku bomo raziskali več o API-ju Sentinel in o tem, kako ga lahko uporabimo za pridobivanje informacij, povezanih z glavnim vozliščem Redis.

Sentinel API

Redis ponuja ločen API za nadzor za spremljanje povezanih matric in replik, naročanje na obvestila in spreminjanje nastavitev nadzora. Poleg tega je v nadaljevanju navedenih več uporab.

  • Preverite stanje nadzorovanih glavnih in podrejenih primerkov Redis
  • Podrobnosti o drugih stražarjih
  • Prejemajte potisna obvestila nadzornikov v primeru preklopa

Ukaz SENTINEL je mogoče uporabiti s povezanimi podukazi za poizvedovanje, posodabljanje ali nastavitev nadzornikov in nadzorovanih vozlišč Redis.

Preverite status glavnega vozlišča

Zelo pomembno je, da občasno spremljate ali preverjate zdravje glavnega vozlišča. Za pridobitev glavnih podrobnosti lahko uporabite naslednji ukaz sentinel API:

SENTINEL MASTER < nadzirano_glavno_ime >

nadzirano_glavno_ime: Ime glavnega vozlišča, ki je določeno v konfiguracijski datoteki nadzornika, ki smo jo ustvarili v prejšnjem koraku.

Uporabimo ta ukaz za poizvedbo o glavnem statusu v naši nastavitvi. V našem primeru je ime glavnega vozlišča 'masternode'.

Glavno vozlišče SENTINEL MASTER

Pridobljenih je bilo več informacij in nekaj izmed njih je pomembnih, kot so num-slaves, flags in num-other-sentinels.

The zastave lastnost je nastavljena na gospodar kar pomeni, da je mojster dobrega zdravja. Kadarkoli glavno vozlišče ne deluje, je s_dol oz o_dol prikazana bo zastavica. Lastnina število-drugih-stražarjev je nastavljen na 2, kar pomeni, da je nadzornik Redis že prepoznal druga dva nadzornika za glavno vozlišče. Poleg tega je num-sužnji prikaže razpoložljive replike za glavno vozlišče. V tem primeru je nastavljen na 1, ker imamo samo eno repliko.

Pridobite informacije o povezanih replikah

Z naslednjim podukazom SENTINEL lahko preverimo replike, povezane z glavnim vozliščem:

REPLIKE SENTINEL < nadzirano_glavno_ime >

V tem primeru je glavno ime 'masternode'.

Glavno vozlišče replik SENTINEL

Kot je bilo pričakovano, je Sentinel zaznal podrejeno vozlišče, ki teče na vratih 7001.

Pridobite informacije o povezanih nadzornikih

Podobno lahko poizvedujemo po podrobnostih, povezanih z drugimi nadzorniki, povezanimi s trenutnim glavnim vozliščem, z uporabo naslednjega podukaza SENTINEL:

SENTINEL SENTINELS < ime_glavnega_vozlišča >

V tem primeru bomo pridobivali informacije, povezane z glavnim vozliščem z imenom 'masternode'.

SENTINEL nadzorno glavno vozlišče

Pridobite naslov glavnega vozlišča

Kot je bilo omenjeno v prejšnjem razdelku, je Redis sentinel ponudnik konfiguracije za povezane odjemalce. Torej je sposoben zahtevanim odjemalcem zagotoviti naslov IP in vrata trenutno delujočega glavnega vozlišča. Za pridobitev omenjenih informacij je mogoče uporabiti naslednji podukaz Sentinel API.

SENTINEL GET-MASTER-ADDR-BY-NAME < ime_glavnega_vozlišča >

Izvedimo zgornji ukaz za naš scenarij na naslednji način:

glavno vozlišče sentinel get-master-addr-by-name

Razpravljali smo le o nekaj ukazih sentinel API. Na voljo je več drugih podukazov, kot so sentinel-failover, sentinel info-cache, sentinel masters itd. Poleg tega je veliko ukazov na voljo tudi za uporabo v skrbniške namene. V naslednjem razdelku se bomo osredotočili na postopek preklopa Redis sentinel ob napaki.

Sentinel Failover Process

Ker je naš nadzornik konfiguriran, lahko preizkusimo fazo preklapljanja. Pošljimo naše glavno vozlišče v mirovanje za 300 sekund, kar simulira napako v glavnem vozlišču.

razhroščevanje spati 300

Glavno vozlišče, ki deluje na vratih 7000, bi moralo biti zdaj nedosegljivo. Torej bodo povezani nadzorniki opazili, da glavni ni na voljo z +sdol dogodek. Potem bo to nastavljeno na +odol kjer 2 nadzornika potrdita, da glavno vozlišče ne deluje glede na vrednost kvoruma. Končno se bo začela faza samodejnega preklopa in v idealnem primeru bi morala biti replika povišana v novega glavnega.

Ponovno preverimo naslov IP in vrata glavnega vozlišča.

glavno vozlišče sentinel get-master-addr-by-name

Kot je bilo pričakovano, je bila prejšnja replika povišana v novo glavno, kar pomeni, da je postopek nadzora ob napaki uspešen. S tem se zaključi uvedba in testiranje naših treh nastavitev nadzornika za en sam par master-replika.

Zaključek

Redis sentinel je najbolj zanesljiv pristop za zagotavljanje visoke razpoložljivosti danega primerka glavne replike Redis. Sentinel je sposoben nadzorovati, obveščati in sprožiti samodejni preklop brez človeškega posredovanja. Poleg tega se več nadzornikov skupaj strinja glede dejstva, da je glavno vozlišče nedosegljivo, vrednost kvoruma pa se uporablja kot največje število nadzornikov, o katerih se je treba dogovoriti pri preverjanju razpoložljivosti glavnega primerka. Redis sentinel ponuja API, ki je enostaven za uporabo, za pridobivanje informacij o zdravju glavnega vozlišča in povezanih replik ter izvajanje skrbniških nalog.