Redis Sentinel

Redis Sentinel



Oletame stsenaariumi, kus teie tootmises on ainult üks Redise eksemplar ja see mingil hetkel mingil põhjusel ebaõnnestub. Teie rakendus salvestab andmed vahemällu Redise andmesalves ja nüüd on teie ainus andmeallikas surnud. Üks viis seda tüüpi stsenaariumide juhtimiseks on säilitada ülem-alluv arhitektuur, kus alluvad saavad põhisõlme kopeerida, kuni see tagasi tuleb. Redise klastrid toetavad master-replica lähenemisviisiga kuni teatud määral kõrget kättesaadavust. Redis Sentinel on veel üks lähenemisviis, mis pakub usaldusväärsemat viisi Redise eksemplaride kõrge kättesaadavuse säilitamiseks. See jälgib Redise ülemsõlme rikete suhtes ja käivitab kohe tõrkesiirdeprotsessi, mis viib olemasoleva alamsõlme uhiuueks ülemseadmeks.







Lisaks toimib Redis sentinel vahemehena, kus kliendid ühenduvad ja küsivad uusimat põhisõlme IP-aadressi. Seega annab ühendatud valvur kohe peasõlme aadressi.



Lisaks kinnitatakse põhisõlme rike, kui mitu valvurit on kokku leppinud, et antud juht pole kättesaadav ega kättesaadav. See lõpetab rikke tuvastamise etapi ja tõrkesiirdeprotsess algab kohe. Seega võib Redise sentineli vaadelda kui spetsiifiliste omadustega hajutatud süsteemi.



Sentinellide kokkulepe põhineb kvoorumi väärtusel, mida arutatakse järgmises jaotises.





Kelle väärtus

Kvoorumi väärtus on maksimaalne valvurite arv, milles tuleb kokku leppida, kui põhisõlm on maas. Seda väärtust kasutatakse ainult põhisõlme rikke tuvastamiseks. Tõrkevahetusprotsess algab mitme saadaoleva valvesõlme autoriseerimisega, et jätkata valitud valvuri juhina.

Redis Sentineli omadused

Sentinel on tuntud Redise andmesalve kõrge kättesaadavuse mehhanismi pakkumise poolest. Peale selle saab loetleda mitmeid muid võimalusi.



  • Sentinel jälgib pidevalt teie Redise süsteemi ülem- ja alamsõlmede olekut.
  • Iga kord, kui teie Redise eksemplarides ilmneb tõrge või midagi valesti, on sentinel võimeline teavitama administraatorit või ühendatud rakendusi, kasutades sentineli API-d.
  • Tõrkevahetusfaasi juhib valvur, reklaamides koopiat uueks juhiks. Ülejäänud koopiad on konfigureeritud kasutama uut juhtvormi. Lõpuks saavad vastavad kliendid uue peasõlme aadressi.
  • Samuti on Redis sentinel ühendatud klientide konfiguratsioonipakkuja, kus kliendid saavad küsida hetkel saadaoleva põhieksemplari aadressi ja äkilise kokkuvarisemise korral on valvur pühendunud uue peasõlme aadressi viivitamatule edastamisele.

Järgmises jaotises konfigureerime Redise sentinelid põhireplica eksemplaridega ja kasutame sõlmede jälgimiseks sentinel API-t.

Sentineli konfiguratsioon

Esiteks loome kaks Redise eksemplari pordides 7000 ja 7001. Port 7000 saab põhisõlmeks ja teine ​​kopeerib ülemsõlme. Mõlemad eksemplarid kasutavad vastavalt järgmisi konfiguratsioonifaile:

Põhisõlme konfiguratsioon

sadamasse 7000
klastri toega nr
cluster-config-file nodes.conf
cluster-node-timeout 5000
lisaks jah

Slave sõlme konfiguratsioon

sadamasse 7001
klastri toega nr
cluster-config-file nodes.conf
cluster-node-timeout 5000
lisaks jah

Mõlemad eksemplarid alustavad mõlemaga seotud konfiguratsioonifaili esitamisega. Redise eksemplaride eraldi käivitamiseks saame kasutada järgmist käsku:

redis-server redis.conf

Loome ühenduse pordist 7001 alustatud Redise eksemplariga järgmiselt:

redis-cli -lk 7001

Nüüd saame selle eksemplari teha pordis 7000 töötava ülemseadme koopiaks. REPLICAOF käsku saab kasutada järgmiselt:

versiooni 127.0.0.1 koopia 7000

Ootuspäraselt sai pordis 7001 töötavast eksemplarist pordis 7000 töötava põhisõlme koopia.

Nüüd oleme ülaltoodud põhieksemplari jälgimiseks valmis konfigureerima kolm Redise sentineli. Meil peab olema kolm konfiguratsioonifaili, et luua kolm valvuri eksemplari pordides 5000, 5001 ja 5002, nagu on näidatud järgmises.

Iga sentinel.conf fail näeb välja järgmine, välja arvatud see, et pordi numbrit muudetakse:

sadamasse 5000
sentinel monitor masternode 127.0.0.1 7000 kaks
sentinel alla-pärast-millisekundite masternode 5000
sentineli tõrkeotsingu ajalõpu peasõlm 60 000

Nüüd on aeg käivitada kolm valvurit. Saate kasutada redis-sentineli käivitatavat faili koos teega sentinel.conf konfiguratsioonifail sentineli eksemplari loomiseks. Vastasel juhul saame siiski kutsuda redis-serveri käivitatava faili, määrates tee sentinel.conf ja lipp – sentinel .

Käivitame iga valvuri järgmise käsuga:

redis-server sentinel.conf -- sentinel

Esimene sentinel käivitati pordis 5000. Samamoodi saate käivitada ka ülejäänud kaks eksemplari.

Nüüd on meie Redise sentineli seadistus valmis ja töötab, nagu on näidatud järgmisel joonisel:

Järgmises jaotises uurime rohkem Sentineli API kohta ja seda, kuidas saame seda kasutada Redise peasõlmega seotud teabe hankimiseks.

Sentineli API

Redis pakub eraldi sentineli API-d, et jälgida seotud meistreid ja koopiaid, tellida teavitusi ja muuta sentineli sätteid. Lisaks on allpool loetletud mitmed kasutusalad.

  • Kontrollige jälgitavate Redise ülem- ja alamjuhtumite olekut
  • Üksikasjad teiste sentinellide kohta
  • Saate tõrkeotsingu korral valvuritelt push-stiilis teatisi

Käsku SENTINEL saab kasutada koos sellega seotud alamkäskudega, et teha päringuid, värskendada või seadistada Redise valvureid ja jälgitavaid sõlme.

Kontrollige põhisõlme olekut

Väga oluline on aeg-ajalt jälgida või kontrollida peasõlme tervist. Põhiandmete toomiseks saab kasutada järgmist sentinel API käsku:

SENTINEL MASTER < jälgitav_ülema_nimi >

monitored_master_name: Põhisõlme nimi, mis on määratud eelmises etapis loodud sentineli konfiguratsioonifailis.

Kasutage seda käsku oma seadistuses põhioleku päringu tegemiseks. Meie puhul on põhisõlme nimi 'masternode'.

SENTINEL MASTER masternode

Leitud on mitu teavet ja mõned neist on olulised, näiteks num-slaves, lipud ja num-muud-sentinels.

The lipud atribuut on seatud meister mis tähendab, et kaptenil on hea tervis. Kui põhisõlm on maas, siis s_down või o_alla kuvatakse lipp. Kinnistu num-muud-valvurid on seatud väärtusele 2, mis tähendab, et Redise sentinell tundis juba kaks ülejäänud kontrollpunkti põhisõlme jaoks ära. Lisaks on num-orjad atribuut kuvab peasõlme saadaolevad koopiad. Sel juhul on see seatud väärtusele 1, kuna meil on ainult üks koopia.

Hankige teavet ühendatud koopiate kohta

Peasõlmega ühendatud koopiaid saame kontrollida järgmise alamkäsu SENTINEL abil:

SENTINELLI KOopiad < jälgitav_ülema_nimi >

Selles näites on põhinimi 'masternode'.

SENTINEL koopiad masternode

Nagu oodatud, tuvastas Sentinel alamsõlme, mis töötab pordis 7001.

Hankige teavet seotud sentinelide kohta

Sarnaselt saame küsida üksikasju, mis on seotud praeguse peasõlmega seotud teiste valvuritega, kasutades järgmist SENTINEL-i alamkäsku:

SENTINEL SENTINELS < master_node_name >

Sel juhul hangime teabe, mis on seotud põhisõlmega nimega 'masternode'.

SENTINEL sentinels masternode

Hankige põhisõlme aadress

Nagu eelmises jaotises mainitud, on Redis sentinel ühendatud klientide konfiguratsiooni pakkuja. Seega on see võimeline andma taotletud klientidele praegu töötava peasõlme IP-aadressi ja pordi. Mainitud teabe toomiseks saab kasutada järgmist Sentineli API alamkäsku.

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

Käivitame ülaltoodud käsu meie stsenaariumi jaoks järgmiselt:

sentinel get-master-addr-by-name masternode

Arutasime vaid mõnda sentineli API käsku. Saadaval on ka mitmed muud alamkäsud, nagu sentinel-failover, sentinel info-cache, sentinel masters jne. Lisaks on palju käske saadaval kasutamiseks ka administreerimise eesmärgil. Järgmises jaotises keskendume Redis sentineli tõrkeotsingu protsessile.

Sentineli tõrkeotsingu protsess

Kuna meie sentinel on konfigureeritud, saame testida tõrkeotsingu faasi. Saadame oma põhisõlme 300 sekundiks magama, mis simuleerib riket peasõlmes.

silumine magama 300

Peasõlm, mis töötab pordis 7000, peaks olema praegu kättesaamatu. Seega märkavad seotud valvurid, et juht pole rakendusega saadaval +maha sündmus. Seejärel seatakse see väärtusele +odown kus 2 valvurit kinnitavad, et põhisõlm on maas vastavalt kvoorumi väärtusele. Lõpuks algab tõrkeotsingu faas ja ideaaljuhul tuleks koopia ülendada uueks masteriks.

Kontrollime uuesti peasõlme IP-aadressi ja porti.

sentinel get-master-addr-by-name masternode

Ootuspäraselt on eelmine koopia üle viidud uueks põhivormiks, mis tähendab, et valvuri tõrkesiirdeprotsess on edukas. Sellega on lõpetatud meie kolme valvuri seadistuste juurutamine ja testimine ühe peamise koopia paari jaoks.

Järeldus

Redise sentinel on kõige usaldusväärsem viis, et tagada antud Redise peamise koopia eksemplari kõrge kättesaadavus. Valvur on võimeline jälgima, teavitama ja algatama automaatset tõrkevahetust ilma inimese sekkumiseta. Samuti nõustuvad mitu valvurit koos tõsiasjaga, et põhisõlm on kättesaamatu ja kvoorumi väärtust kasutatakse kontrollpunktide maksimaalse arvuna, milles tuleb põhieksemplari saadavuse kontrollimisel kokku leppida. Redis sentinel pakub lihtsalt kasutatavat API-t, et hankida teavet põhisõlme ja sellega seotud koopiate seisundi kohta ning täita ka haldusülesandeid.