Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Kuinka Redis Cluster käsittelee solmuvirheitä


Kuinka Redis Cluster käsittelee solmuvirheitä


Redis -klusteri käsittelee solmuvirheitä yhdistämällä vikatunnistuksen, replikan edistämisen ja klusterin valtionhallinnan varmistamiseksi jatkuvan toiminnan ja tietojen saatavuuden varmistamiseksi. Se on suunniteltu selviytymään muutamasta solmusta edistämällä replikoita automaattisesti saavuttamattomien mestareiden korvaamiseksi pitäen avaintilan eheyden minimoimalla tiedon menetysriskit.

Klusterin viestintä ja vikaantuminen

Redis-klusterisolmut kommunikoivat erillisen TCP-pohjaisen binaariprotokollan kautta, nimeltään Redis-klusteriväylä. Jokainen solmu ylläpitää yhteyksiä kaikkiin muihin klusterin solmuihin tällä väylällä, mikä mahdollistaa jatkuvien terveystarkastusten ja tilan etenemisen. Solmut lähettävät säännöllisesti ping -paketteja varmistaakseen ikätovereidensa operatiivisen tilan ja jakaa tietoja klusterin tilasta. Tämä viestintä käyttää juoruprotokollaa klusteritietojen levittämiseen tehokkaasti, mikä auttaa solmun vikojen havaitsemisessa.

Solmut seuraavat ikätovereita aktiivisen ping -mekanismin avulla. Jos solmu ei reagoi pingsiin määritetyn aikakatkaisun aikana (Node_timeout), se merkitään mahdollisesti epäonnistuneena pfail -tilan kanssa. Tämä on alustava vika -osoitus, mikä tarkoittaa, että solmu saattaa olla saavuttamaton tai alas, mutta sitä ei vielä vahvistettu. Jos PFAIL -tila jatkuu ja se vahvistaa suurin osa masolmäsolmuista, solmu on merkitty epäonnistumiseksi, mikä osoittaa, että klusteri pidetään sitä tavoittamattomana tai alaspäin. Tämä konsensukseen perustuva vikaantumismekanismi auttaa estämään vääriä positiivisia epäonnistuneiden solmujen tunnistamisessa.

Master -solmuvirheet

Kun pääsolmu on merkitty epäonnistuneeksi, Redis -klusteri aloittaa virheenvaihtoprosessin, jolla edistetään yhtä replikastaan ​​uudeksi mestariksi. Klusterin vikailmaisin käynnistää tämän prosessin automaattisesti ilman hallinnollista interventiota. Edistetty replika ottaa vastuun palvelemisesta epäonnistuneen mestarin aiemmin hallinnoimien hash -lähtöjen palvelemisesta, varmistaen, että klusteri voi jatkaa palvelunpyyntöjä ilman manuaalista uudelleenkonfiguraatiota.

Virhella tapahtuu vain, jos on saatavana vähintään yksi kopio ja tavoitettavissa. Jos sopivaa kopiota ei ole, klusteri siirtyy virhetilaan, jossa se lopettaa kyselyjen hyväksymisen epäjohdonmukaisten tietojen tarjoamiseksi. Tämä korostaa, kuinka tärkeää on, että jokaiselle päällikölle on määritetty kopioita korkean saatavuuden ylläpitämiseksi.

Välimerkkimekaniikka ja turvallisuus

Virheenvaihdon aikana replika odottaa synkronointia kokonaan sen korvaaman päällikön kanssa varmistaen, että se on käsitellyt kaikki odottavat päivitykset tietojen menetyksen välttämiseksi. Se saavuttaa tämän sovittamalla replikaation siirtymisen päällikön kanssa, joten sillä on ajantasainen tietojoukko ennen kuin päätehtävä.

Synkronoidun jälkeen replica pyytää uutta kokoonpanon aikakautta suurimmasta osasta mestareista. Aika on looginen aikaleima, jota käytetään klusterin konfiguraatiomuutosten seuraamiseen. Konsensuksen hankkimisen jälkeen replika lähettää päivitetyn kokoonpanon kaikille solmuille ilmoittaen sen mainostamisen Masteriin ja vanhan isäntäkierroksen alentamisesta kopiointiin tai poistamiseen.

Vanha isäntä, kun se toipuu, vastaanottaa tämän kokoonpanon päivityksen ja lopettaa kyselyjen palvelemisen päällikkönä. Se ohjaa asiakaspyynnöt uudelle päällikölle varmistaen, että asiakkaat jatkavat vuorovaikutusta klusterin kanssa ilman manuaalista interventiota.

Käsittelyverkon osiot ja split-brain skenaariot

Redis-klusteri käyttää enemmistöpohjaista konsensusta välttääkseen jakautuneet aivojen ongelmat verkkoosioiden aikana. Mestari epäonnistuu vain, jos yli puolet klusterin mestareista ei ole saavutettavissa. Mestarit, jotka eivät voi kommunikoida enemmistön kanssa, lopettavat kirjoitusten hyväksymisen estäen erojen väliset tiedot.

Jos vähemmistöosio sisältää kuitenkin asiakkaita, jotka jatkavat kirjoittamista mestarille ennen virheenvaihtoa, kirjoitushäviöitä on potentiaalia. Redis lieventää tätä riskiä kieltäytymällä vähemmistöpuolella aikakatkaisun ja enemmistön puolella epäonnistumalla nopeasti saavuttamattoman päällikön yli.

Näistä varotoimenpiteistä huolimatta kirjoitukset voivat kadottaa vikaantumisikkunoiden aikana, koska Redis käyttää asynkronista replikaatiota mestareiden ja kopioiden välillä. Koska komentojen kirjoittamiseen ja replikointipäivityksiin lähetetään melkein samanaikaisesti samanaikaisesti, menettämistä koskeva ikkuna on hyvin kapea, mutta ei mahdoton.

Konfigurointivaihtoehdot, jotka vaikuttavat vikojen käsittelyyn

Redis -klusteri sisältää määritysvaihtoehdot, jotka vaikuttavat saatavuuteen ja käyttäytymiseen solmun vikojen aikana:

-`klusterin täydentäminen" (oletus kyllä): Klusteri lakkaa vastaanottavista kirjoituksista, jos jokin osa avaintilasta paljastetaan solmun vikojen takia, mikä varmistaa vahvan datan johdonmukaisuuden.
-`Cluster-Allow-Reads-kun-alas` (oletus no): Ohjaa lukematta, sallittua, kun klusteri on vikatilassa. Tämän salliminen sallii solmujen lukemat jopa osittaisten vikojen aikana, mutta voi riskiä tarjoillaan.

Näiden asetusten avulla järjestelmänvalvojat voivat tasapainottaa saatavuutta ja johdonmukaisuutta sovellusvaatimusten perusteella.

Manuaalinen vikaantumistuki

Automaattisen virheenvaihdon lisäksi Redis -klusteri tarjoaa manuaalisen virheenvaihtokomennon, joka voidaan antaa replisosolmuille. Tämä on hyödyllistä ylläpito- tai testausskenaarioissa, joissa järjestelmänvalvoja haluaa vaihtaa päärooleja odottamatta todellista epäonnistumistapahtumaa.

Manuaalinen virhetoiminta toimii estämällä asiakkaita nykyisessä päällikössä, odottaen replikan tarttumista kokonaan ja mainostamalla sitten replikan sileällä atomissiirtymällä. Tämä ei varmista, että tiedon menetys roolin muutoksen aikana ja asiakkaiden vähimmäishäiriöt.

Yhteenveto

Redis -klusteri käsittelee solmuvirheitä pääasiassa viantunnistus- ja vikaantumisjärjestelmän kautta, joka perustuu jatkuvaan seurantaan Redis -klusterin väylän ja juoruprotokollan kautta. Solmut havaitsevat saavuttamattomat mestarit ja edistävät replikoita automaattisesti konsensusprosessin jälkeen, jonka mukaan suurin osa mestarista on sopinut epäonnistumisesta. Virhella on suunniteltu minimoimaan tietojen menetys varmistamalla, että replikat synkronoidaan täysin ennen ylennystä. Verkko-osiot hallitaan enemmistöpohjaisten päätösten avulla jakautuvien aivojen olosuhteiden estämiseksi, vaikka asynkronisen replikaation vuoksi voi tapahtua kapea kirjoitushäviö. Konfigurointivaihtoehdot mahdollistavat saatavuuden virittämisen vikojen aikana vikojen aikana, ja manuaaliset vikakomennot antavat operaattoreille hallinnan huoltoa varten.

Tämä arkkitehtuuri antaa Redis -klusterille mahdollisuuden tarjota korkean saatavuuden ja osioiden toleranssin automaattisen palautumisen kanssa pääsolmun vikoista, varmistaen, että klusteri pysyy toiminnallisena ja johdonmukaisena vika skenaarioissa.