Redis Sentinel

Redis Sentinel



Tarkime, kad scenarijus, kai jūsų gamyboje yra tik vienas „Redis“ egzempliorius ir jis tam tikru momentu nepavyksta dėl kokios nors priežasties. Jūsų programa talpina duomenis Redis duomenų saugykloje ir dabar jūsų vienintelis duomenų šaltinis neveikia. Vienas iš būdų valdyti tokius scenarijus yra išlaikyti pagrindinio-pavaldaus architektūrą, kurioje vergai gali replikuoti pagrindinį mazgą, kol jis sugrįžta. „Redis“ klasteriai palaiko aukštą pasiekiamumą iki tam tikro laipsnio naudojant pagrindinio kopijavimo metodą. „Redis Sentinel“ yra dar vienas metodas, suteikiantis patikimesnį būdą palaikyti aukštą Redis egzempliorių prieinamumą. Jis stebi pagrindinį Redis mazgą, ar nėra gedimų, ir nedelsdamas suaktyvina perjungimo procesą, kuris pakeis esamą pagalbinį mazgą į visiškai naują pagrindinį mazgą.







Be to, „Redis Sentinel“ veikia kaip tarpininkas, kur klientai prisijungia ir prašo pateikti naujausią pagrindinio mazgo IP adresą. Taigi, prijungtas sargybinis nedelsdamas pateikia pagrindinio mazgo adresą.



Be to, pagrindinio mazgo gedimas patvirtinamas, jei keli kontroliniai sutaria, kad tam tikras pagrindinis mazgas nepasiekiamas arba nepasiekiamas. Tai užbaigia gedimų aptikimo fazę ir iškart prasideda gedimo perkėlimo procesas. Vadinasi, Redis sentinel gali būti vertinamas kaip paskirstyta sistema su specifinėmis savybėmis.



Sargybinių susitarimas grindžiamas kvorumo verte, kuri bus aptarta kitame skyriuje.





Kieno Vertė

Kvorumo reikšmė yra didžiausias kontrolinių elementų skaičius, dėl kurio reikia susitarti, kai pagrindinis mazgas neveikia. Ši reikšmė naudojama tik pagrindinio mazgo gedimui nustatyti. Perjungimo procesas prasideda kelių galimų kontrolinių mazgų leidimu tęsti pasirinktam kontroliniui kaip lyderiui.

Redis Sentinel savybės

Sentinel yra žinomas dėl to, kad teikia aukšto pasiekiamumo mechanizmą Redis duomenų saugykloje. Be to, galima išvardyti keletą kitų galimybių.



  • „Sentinel“ nuolat stebi jūsų Redis sistemos pagrindinio ir pavaldinio mazgų būseną.
  • Kai jūsų Redis egzemplioriai sugenda ar kažkas negerai, „sentinel“ gali pranešti administratoriui arba prijungtoms programoms naudodamas „sentinel“ API.
  • Perdavimo fazei vadovauja sargybinis, reklamuodamas repliką kaip naują pagrindinį. Likusios kopijos sukonfigūruotos naudoti naują pagrindinį failą. Galiausiai atitinkami klientai gaus pranešimą apie naują pagrindinio mazgo adresą.
  • Be to, „Redis sentinel“ yra prijungtų klientų konfigūracijos teikėjas, kuriame klientai gali paprašyti šiuo metu turimo pagrindinio egzemplioriaus adreso, o jei įvyktų staigus žlugimas, sargybinis įsipareigoja nedelsiant persiųsti naują pagrindinio mazgo adresą.

Kitame skyriuje sukonfigūruosime „Redis“ sentinels su pagrindinės replikos egzemplioriais ir naudosime „sentinel“ API mazgams stebėti.

Sentinelio konfigūracija

Pirmiausia sukuriame du Redis egzempliorius 7000 ir 7001 prievaduose. 7000 prievadas bus pagrindinis mazgas, o kitas atkartos pagrindinį mazgą. Abu egzemplioriai atitinkamai naudoja šiuos konfigūracijos failus:

Pagrindinio mazgo konfigūracija

uostas 7000
klasteris įjungtas Nr
cluster-config-file nodes.conf
klasterio mazgo laikas 5000
papildomai taip

Vergo mazgo konfigūracija

uostas 7001
klasteris įjungtas Nr
cluster-config-file nodes.conf
klasterio mazgo laikas 5000
papildomai taip

Abu egzemplioriai prasidės pateikiant su kiekvienu susietą konfigūracijos failą. Galime naudoti šią komandą, norėdami atskirai paleisti Redis egzempliorius:

redis-server redis.conf

Prisijunkite prie „Redis“ egzemplioriaus, pradėto nuo 7001 prievado, taip:

redis-cli -p 7001

Dabar galime padaryti šį egzempliorių pagrindinio, veikiančio 7000 prievadu, kopija. REPLICAOF komandą galima naudoti taip:

127.0.0.1 kopija 7000

Kaip ir tikėtasi, egzempliorius, veikiantis 7001 prievadu, tapo pagrindinio, veikiančio 7000 prievadu, replikos mazgu.

Dabar esame pasirengę sukonfigūruoti tris „Redis“ sentinels, kad galėtume stebėti aukščiau pateiktą pagrindinį egzempliorių. Turime turėti tris konfigūracijos failus, kad sukurtume tris kontrolinius egzempliorius 5000, 5001 ir 5002 prievaduose, kaip parodyta toliau.

Kiekvienas sentinel.conf failas atrodo taip, išskyrus tai, kad prievado numeris bus pakeistas:

uostas 5000
Sentinel monitor masternode 127.0.0.1 7000 du
sargybinis žemyn po milisekundžių pagrindinio mazgo 5000
Sentinel failover-timeout mastermazgas 60 000

Dabar atėjo laikas paleisti tris sargybinius. Galite naudoti redis-sentinel vykdomąjį failą kartu su keliu į sentinel.conf konfigūracijos failą, kad sukurtumėte kontrolinį egzempliorių. Kitu atveju vis tiek galime iškviesti vykdomąjį failą redis-server, nurodydami kelią į sentinel.conf ir vėliava – sargyba .

Pradėkime kiekvieną sargybinį naudodami šią komandą:

redis-server sentinel.conf -- Sentinel

Pirmasis sargybinis buvo paleistas prie 5000 prievado. Taip pat galite paleisti kitus du atvejus.

Dabar mūsų Redis sentinel sąranka yra nustatyta ir veikia, kaip parodyta šioje iliustracijoje:

Kitame skyriuje mes ištirsime daugiau apie „Sentinel“ API ir kaip galime ją panaudoti norėdami gauti informaciją, susijusią su „Redis“ pagrindiniu mazgu.

Sentinel API

„Redis“ teikia atskirą „Sentinel“ API, kad būtų galima stebėti susijusius pagrindinius elementus ir kopijas, prenumeruoti pranešimus ir modifikuoti „Sentinel“ nustatymus. Be to, toliau išvardyti keli naudojimo būdai.

  • Patikrinkite stebimų Redis pagrindinio ir pavaldinio egzempliorių būseną
  • Išsami informacija apie kitus sargybinius
  • Gaukite „push“ tipo pranešimus iš sargybinių įvykus gedimui

Komanda SENTINEL gali būti naudojama su su ja susijusiomis subkomandomis norint užklausti, atnaujinti arba nustatyti Redis sarginius ir stebimus mazgus.

Patikrinkite pagrindinio mazgo būseną

Labai svarbu retkarčiais stebėti arba patikrinti pagrindinio mazgo būklę. Norint gauti pagrindinę informaciją, galima naudoti šią „sentinel“ API komandą:

SENTINEL MASTER < stebimas_savininko_vardas >

monitored_master_name: Pagrindinio mazgo pavadinimas, nurodytas kontrolinio konfigūracijos faile, kurį sukūrėme ankstesniame žingsnyje.

Naudokime šią komandą, kad pateiktume užklausą pagrindinės būsenos sąrankoje. Mūsų atveju pagrindinio mazgo pavadinimas yra 'masternode'.

SENTINEL MASTER masternode

Buvo gauta keletas informacijos dalių, o kai kurios iš jų yra svarbios, pvz., vergų skaičius, vėliavėlės ir kitų sargybinių skaičius.

The vėliavos nuosavybė nustatyta meistras o tai reiškia, kad meistras yra geros sveikatos. Kai pagrindinis mazgas neveikia, s_down arba o_žemyn bus rodoma vėliava. Nuosavybė kitų sargybinių skaičius yra nustatytas į 2, o tai reiškia, kad Redis sargybinis jau atpažino kitus du pagrindinio mazgo kontrolierius. Be to, vergų skaičius ypatybė rodo turimas pagrindinio mazgo kopijas. Šiuo atveju jis nustatytas į 1, nes turime tik vieną kopiją.

Gaukite informacijos apie prijungtas kopijas

Su pagrindiniu mazgu susietas kopijas galime patikrinti naudodami šią SENTINEL antrinę komandą:

SENTINEL RESKLIKAS < stebimas_savininko_vardas >

Šiame pavyzdyje pagrindinis pavadinimas yra „masternode“.

SENTINEL kopijos masternode

Kaip ir tikėtasi, „Sentinel“ aptiko vergų mazgą, veikiantį 7001 prievade.

Gaukite informacijos apie susijusius sargybinius

Panašiai galime užklausti informacijos, susijusios su kitais sargybiniais, susietais su dabartiniu pagrindiniu mazgu, naudodami šią SENTINEL antrinę komandą:

SENTINEL SENTINELS < pagrindinio mazgo_pavadinimas >

Tokiu atveju gausime informaciją, susijusią su pagrindiniu mazgu, pavadintu „masternode“.

SENTINEL sentinels masternode

Gaukite pagrindinio mazgo adresą

Kaip minėta ankstesniame skyriuje, „Redis sentinel“ yra prijungtų klientų konfigūracijos teikėjas. Taigi, ji gali pateikti šiuo metu veikiančio pagrindinio mazgo IP adresą ir prievadą prašomiems klientams. Šią Sentinel API subkomandą galima naudoti minėtai informacijai gauti.

SENTINEL GET-MASTER-ADDR-BY-NAME < pagrindinio mazgo_pavadinimas >

Vykdykime aukščiau pateiktą komandą mūsų scenarijui taip:

sentinel get-master-addr-by-name masternode

Mes aptarėme tik keletą „sentinel“ API komandų. Galimos kelios kitos subkomandos, pvz., Sentinel-failover, Sentinel info-cache, Sentinel Masters ir tt Be to, daug komandų galima naudoti ir administravimo tikslais. Kitame skyriuje daugiausia dėmesio skirsime Redis sentinel nesėkmingo perkėlimo procesui.

„Sentinel Failover“ procesas

Kadangi mūsų sargybinis yra sukonfigūruotas, galime išbandyti perjungimo fazę. Nusiųsime pagrindinį mazgą miegoti 300 sekundžių, o tai imituoja pagrindinio mazgo gedimą.

derinti miegoti 300

Pagrindinis mazgas, kuris veikia 7000 prievadu, dabar turėtų būti nepasiekiamas. Taigi, susiję sargybiniai pastebės, kad pagrindinis kompiuteris nepasiekiamas +smukimas įvykis. Tada tai bus nustatyta +odown kur 2 kontrolieriai patvirtina, kad pagrindinis mazgas neveikia pagal kvorumo reikšmę. Galiausiai prasidės perkėlimo etapas ir idealiu atveju kopija turėtų būti perkelta į naują pagrindinį kompiuterį.

Dar kartą patikrinkime pagrindinio mazgo IP adresą ir prievadą.

sentinel get-master-addr-by-name masternode

Kaip ir tikėtasi, ankstesnė kopija buvo perkelta į naują pagrindinį pagrindą, o tai reiškia, kad kontrolinio perkėlimo procesas yra sėkmingas. Tai užbaigia mūsų trijų kontrolinių konfigūracijų, skirtų vienai pagrindinės kopijos porai, diegimą ir testavimą.

Išvada

Redis sentinel yra patikimiausias būdas užtikrinti aukštą tam tikro Redis pagrindinės kopijos egzemplioriaus prieinamumą. Sargybinis gali stebėti, pranešti ir inicijuoti automatinį perjungimą be žmogaus įsikišimo. Be to, keli kontrolieriai kartu sutinka, kad pagrindinis mazgas nepasiekiamas, o kvorumo reikšmė naudojama kaip didžiausias kontrolinių elementų skaičius, dėl kurio reikia susitarti tikrinant, ar nėra pagrindinio egzemplioriaus. Redis sentinel siūlo lengvai naudojamą API, leidžiančią gauti informaciją apie pagrindinio mazgo ir susijusių kopijų būklę bei atlikti administracines užduotis.