„Redis Cluster“ tvarko mazgo gedimus, derinant gedimų aptikimą, replikos reklamą ir klasterio būsenos valdymą, kad užtikrintų nuolatinį veikimą ir duomenų prieinamumą. Jis skirtas išgyventi kelių mazgų nesėkmes, automatiškai reklamuojant replikas, kad pakeistų nepasiekiamus meistrus, išlaikant pagrindinės erdvės vientisumą, tuo pačiu sumažinant duomenų praradimo riziką.
klasterio komunikacijos ir gedimų aptikimas
„Redis“ klasterio mazgai susisiekia per tam skirtą TCP pagrįstą dvejetainį protokolą, vadinamą „Redis Cluster Bus“. Kiekvienas mazgas palaiko ryšius su kiekvienu kitu klasterio mazgu, naudodamas šią magistralę, įgalindamas nuolatinius sveikatos patikrinimus ir būsenos sklidimą. Mazgai periodiškai siunčia „Ping“ paketus, kad patvirtintų jų bendraamžių veiklos būseną ir pasidalytų informacija apie klasterio būseną. Ši komunikacija naudoja paskalų protokolą, kad būtų galima efektyviai skleisti klasterio informaciją, padedant aptikti mazgo gedimus.
Mazgai stebi bendraamžius, naudodamiesi aktyviu ping mechanizmu. Jei mazgas nereaguoja į „Pings“ per sukonfigūruotą laiko tarpą („Node_timeout“), jis pažymėtas kaip galbūt nesėkmingas naudojant „pFail“ būseną. Tai yra preliminari gedimo indikacija, tai reiškia, kad mazgas gali būti nepasiekiamas arba žemyn, tačiau jis dar nepatvirtintas. Jei „Pfail“ būklė išlieka ir ją patvirtina dauguma pagrindinių mazgų, mazgas pažymėtas kaip sugedęs, tai rodo, kad klasteris laikomas nepasiekiamu ar žemyn. Šis sutarimas pagrįstas gedimų aptikimo mechanizmas padeda išvengti klaidingų teigiamų dalykų nustatant nepavykusius mazgus.
Pagrindinio mazgo gedimų tvarkymas
Kai pagrindinis mazgas yra pažymėtas kaip nesėkmingas, „Redis Cluster“ inicijuoja failovinio procesą, kuris skatina vieną iš savo replikų tapti naujuoju meistru. Šį procesą automatiškai sukelia klasterio gedimo detektorius be administracinės intervencijos. Paskelbta replika perima atsakomybę už tai, kad būtų įteiktas maišos laiko tarpsniai, kuriuos anksčiau valdė nesėkmingas meistras, užtikrinant, kad klasteris galėtų tęsti tarnybos užklausas be rankinės pertvarkymo.
Failover įvyksta tik tuo atveju, jei yra bent viena replika ir pasiekiama, kad būtų galima reklamuoti. Jei nėra tinkamos replikos, klasteris patenka į klaidos būseną, kur ji nustos priimti klausimus, kad būtų išvengta nenuoseklių duomenų. Tai pabrėžia, kad svarbu, kad kiekvienas meistras būtų sukonfigūruotas replikoms, kad būtų galima išlaikyti aukštą prieinamumą.
„Failover“ mechanika ir sauga
Per „Failover“ replika laukia, kad visiškai sinchronizuosis su meistru, kurį jis pakeičia, užtikrinant, kad ji apdorojo visus laukiančius atnaujinimus, kad išvengtų duomenų praradimo. Tai pasiekia suderindamas replikacijos poslinkį su pagrindiniu meistru, taigi, prieš imdamasi pagrindinio vaidmens, jis turi naujausią duomenų rinkinį.
Kai sinchronizuota, replika prašo naujos konfigūracijos epochos iš daugumos meistrų. Epocha yra loginis laiko žyma, naudojama klasterio konfigūracijos pokyčiams sekti. Gavęs sutarimą, replika transliuoja atnaujintą konfigūraciją į visus mazgus, paskelbdama apie savo reklamą „Master“ ir senojo pagrindinio meistro žeminimui į repliką ar pašalinimą.
Senasis meistras, kai jis atsigauna, gauna šį konfigūracijos atnaujinimą ir nustoja aptarnauti užklausas kaip meistras. Tai nukreipia kliento užklausas į naująjį meistrą, užtikrinant, kad klientai skaidriai ir toliau bendrauja su klasteriu be rankinės intervencijos.
Tinklo skaidinių tvarkymo ir padalijimo smegenų scenarijai
„Redis Cluster“ naudoja daugumos sutarimą, kad būtų išvengta dalijimosi smegenų klausimų tinklo skaidinių metu. Meistrui nepavyks tik tuo atveju, jei jį nepasiekiama daugiau nei pusė klasterio meistrų. Meistrai, kurie negali bendrauti su dauguma, nustos priimti raštus, užkirsdami kelią skirtingoms duomenų būsenoms tarp skaidinių.
Tačiau jei mažumos skaidinyje yra klientų, kurie ir toliau rašo meistrui prieš perpardavimą, gali būti prarasti rašyti. Iš naujo sumažina šią riziką atsisakius rašyti mažumos pusėje po laiko ir daugumos pusėje greitai nepavykus dėl nepasiekiamo meistro.
Nepaisant šių atsargumo priemonių, „Failover Windows“ gali būti prarasti raštai, nes „Redis“ naudoja asinchroninį replikaciją tarp meistrų ir replikų. Kadangi atsakymai rašyti komandas ir replikacijos atnaujinimai siunčiami beveik vienu metu, rašymo praradimo langas yra labai siauras, bet ne neįmanomas.
konfigūracijos parinktys, turinčios įtakos gedimų tvarkymui
„Redis“ klasteris apima konfigūracijos parinktis, kurios daro įtaką prieinamumui ir elgsenai mazgo gedimų metu:
-`klasteris-require-Full-Coverage` (Numatytasis taip): klasteris nustoja priimti rašymą, jei dėl mazgo gedimų atskleidžiama bet kuri rakto vietos dalis, užtikrinant stiprią duomenų nuoseklumą.
-„Cluster-Arla-Reads-Down“ (numatytasis Nr.): kontroliuoja, ar skaitymai leidžiami, kai klasteris yra gedimo būsenoje. Įgalinus tai leidžia skaityti iš mazgų net ir dalinių gedimų metu, tačiau gali rizikuoti pasenusius duomenis.
Šie parametrai leidžia administratoriams subalansuoti prieinamumą ir nuoseklumą, atsižvelgiant į taikymo reikalavimus.
rankinis failovo palaikymas
Be automatinio perėjimo, „Redis Cluster“ teikia rankinį perleidimo komandą, kurią galima išduoti replikos mazguose. Tai naudinga priežiūros ar testavimo scenarijams, kai administratorius nori pakeisti pagrindinius vaidmenis nelaukdamas tikrojo gedimo įvykio.
Rankinis failoveris veikia blokuodamas klientus ant dabartinio meistro, laukiant, kol replika visiškai pasivys, ir tada reklamuodamas repliką sklandžiu atominiu perėjimu. Tai neužtikrina duomenų praradimo keičiant vaidmenį ir minimaliai sutrikdant klientus.
Santrauka
„Redis Cluster“ tvarko mazgo gedimus pirmiausia per gedimų aptikimo ir perlaidymo sistemą, pagrįstą nuolatiniu stebėjimu per „Redis Cluster“ magistralę ir paskalų protokolą. Mazgai nustato nepasiekiamus meistrus ir automatiškai reklamuoja replikas po sutarimo proceso, kuriame reikalaujama, kad dauguma meistrų susitartų dėl nesėkmės. „Failover“ yra skirtas sumažinti duomenų praradimą, užtikrinant, kad replikos prieš reklamavimą yra visiškai sinchronizuota. Tinklo skaidiniai yra valdomi priimant daugumą pagrįstų sprendimų, kad būtų išvengta padalijimo smegenų sąlygų, nors siaurą rašymo praradimo langą gali įvykti dėl asinchroninio replikacijos. Konfigūracijos parinktys leidžia sureguliuoti prieinamumą ir nuoseklumą gedimų metu, o rankinės perlaidos komandos suteikia operatoriams kontroliuoti techninę priežiūrą.
Ši architektūra suteikia galimybę „Redis“ klasteriui užtikrinti aukštą prieinamumą ir skaidinių toleranciją automatiškai atsigauti po pagrindinio mazgo gedimų, užtikrinant, kad klasteris išlieka veikiantis ir pastovus pagal gedimo scenarijus.