Redis Sentinel

Redis Sentinel



Pretpostavimo scenarij u kojem imate samo jednu instancu Redisa u svojoj produkciji i ona u nekom trenutku ne uspije iz nekog razloga. Vaša aplikacija sprema podatke u Redis pohranu podataka i sada je vaš jedini izvor podataka mrtav. Jedan od načina za kontrolu ovakvih scenarija je održavanje master-slave arhitekture gdje slave mogu replicirati glavni čvor dok se ne vrati. Redis klasteri podržavaju visoku dostupnost do određenog stupnja s pristupom master-replika. Redis Sentinel još je jedan pristup koji pruža pouzdaniji način za održavanje visoke dostupnosti Redis instanci. Nadzire Redis glavni čvor radi kvarova i odmah pokreće proces prelaska u grešku koji će unaprijediti postojeći podređeni čvor u potpuno novi glavni.







Nadalje, Redis sentinel djeluje kao posrednik gdje se klijenti povezuju i traže najnoviju IP adresu glavnog čvora. Dakle, povezani stražar odmah daje adresu glavnog čvora.



Osim toga, neuspjeh glavnog čvora je potvrđen ako se više nadzornika složilo da određeni glavni nije dostupan ili dostupan. Ovime se završava faza otkrivanja greške i odmah počinje proces prelaska u grešku. Stoga se Redis sentinel može promatrati kao distribuirani sustav sa specifičnim svojstvima.



Dogovor stražara temelji se na vrijednosti kvoruma o kojoj će biti riječi u sljedećem odjeljku.





Čija je vrijednost

Vrijednost kvoruma je maksimalan broj stražara oko kojih se treba dogovoriti kada glavni čvor ne radi. Ova se vrijednost koristi samo za prepoznavanje kvara u glavnom čvoru. Proces nadogradnje počinje autorizacijom više dostupnih sentinel čvorova za nastavak s odabranim sentinel-om kao vodećim.

Značajke Redis Sentinela

Sentinel je poznat po pružanju mehanizma visoke dostupnosti za Redis pohranu podataka. Osim toga, može se navesti još nekoliko mogućnosti.



  • Sentinel kontinuirano prati status nadređenih i podređenih čvorova u vašem Redis sustavu.
  • Kad god postoji kvar ili nešto nije u redu s vašim Redis instancama, sentinel može obavijestiti administratora ili povezane aplikacije pomoću sentinel API-ja.
  • Fazu nadogradnje usmjerava stražar promicanjem replike kao novog glavnog. Preostale replike konfigurirane za korištenje novog mastera. Konačno, odgovarajući klijenti dobit će obavijest o novoj adresi glavnog čvora.
  • Također, Redis sentinel pružatelj je konfiguracije za povezane klijente gdje klijenti mogu tražiti adresu trenutno dostupne glavne instance, a ako dođe do iznenadnog kolapsa, sentinel se obvezuje da će odmah poslati novu adresu glavnog čvora.

U sljedećem odjeljku konfigurirat ćemo Redis stražare s instancama glavne replike i koristiti API sentinel za nadzor čvorova.

Sentinel konfiguracija

Prvo stvaramo dvije Redis instance na portovima 7000 i 7001. Port 7000 bit će glavni čvor, a drugi će replicirati glavni. Obje instance koriste sljedeće konfiguracijske datoteke redom:

Konfiguracija glavnog čvora

luka 7000
omogućen klaster br
cluster-config-file čvorovi.conf
cluster-node-timeout 5000
dodatno Da

Konfiguracija podređenog čvora

luka 7001
omogućen klaster br
cluster-config-file čvorovi.conf
cluster-node-timeout 5000
dodatno Da

Obje instance počet će pružanjem konfiguracijske datoteke povezane sa svakom. Možemo koristiti sljedeću naredbu za odvojeno pokretanje Redis instanci:

redis-poslužitelj redis.conf

Povežimo se na Redis instancu započetu na portu 7001 na sljedeći način:

redis-cli -str 7001

Sada ovu instancu možemo napraviti replikom mastera koji radi na portu 7000. Naredba REPLICAOF može se koristiti na sljedeći način:

replika 127.0.0.1 7000

Kao što se očekivalo, instanca koja se izvodi na portu 7001 postala je replika čvora glavnog koji radi na portu 7000.

Sada smo spremni konfigurirati tri Redis stražara za nadzor gornje glavne instance. Moramo imati tri konfiguracijske datoteke za stvaranje tri instance sentinel na portovima 5000, 5001 i 5002 kao što je prikazano u nastavku.

Svaki stražar.konf datoteka izgleda ovako osim što će se broj porta promijeniti:

luka 5000
glavno čvorište nadzornog monitora 127.0.0.1 7000 dva
sentinel down-after-milliseconds masternode 5000
sentinel failover-timeout masternode 60000

Sada je vrijeme da pokrenete tri stražara. Možete koristiti izvršnu datoteku redis-sentinel zajedno sa stazom do stražar.konf konfiguracijsku datoteku za stvaranje sentinel instance. U suprotnom, i dalje možemo pozvati izvršnu datoteku redis-poslužitelja navođenjem putanje do stražar.konf i zastava – stražar .

Pokrenimo svakog stražara pomoću sljedeće naredbe:

redis-server sentinel.conf --stražar

Prvi sentinel je pokrenut na portu 5000. Slično, možete pokrenuti i druge dvije instance.

Sada je naša postavka Redis sentinel spremna i radi kao što je prikazano na sljedećoj ilustraciji:

U sljedećem odjeljku istražit ćemo više o Sentinel API-ju i kako ga možemo upotrijebiti za dohvaćanje informacija povezanih s glavnim čvorom Redis.

Sentinel API

Redis pruža zaseban sentinel API za praćenje pridruženih mastera i replika, pretplatu na obavijesti i izmjenu sentinel postavki. Nadalje, u nastavku je navedeno nekoliko upotreba.

  • Provjerite status nadziranih Redis master i slave instanci
  • Pojedinosti o ostalim stražarima
  • Primajte obavijesti u obliku push-a od stražara u slučaju prestanka rada

Naredba SENTINEL može se koristiti s pripadajućim podnaredbama za postavljanje upita, ažuriranje ili postavljanje Redis stražara i nadziranih čvorova.

Provjerite status glavnog čvora

Vrlo je važno s vremena na vrijeme pratiti ili provjeravati zdravlje glavnog čvora. Sljedeća sentinel API naredba može se koristiti za dohvaćanje glavnih detalja:

GOSPODAR SENTINEL < nadzirano_glavno_ime >

monitor_master_name: Naziv glavnog čvora koji je naveden u konfiguracijskoj datoteci sentinel koju smo stvorili u prethodnom koraku.

Upotrijebimo ovu naredbu za upit glavnog statusa u našim postavkama. U našem slučaju, ime glavnog čvora je 'masternode'.

SENTINEL MASTER masternode

Dohvaćeno je nekoliko informacija, a neke od njih su važne, kao što su num-robovi, zastave i num-other-sentinels.

The zastave svojstvo je postavljeno na ovladati; majstorski što znači da je gospodar dobrog zdravlja. Kad god glavni čvor ne radi, s_dolje ili o_dolje bit će prikazana zastavica. Vlasništvo broj-ostalih-stražara je postavljen na 2 što znači da je Redis stražar već prepoznao druga dva stražara za glavni čvor. Osim toga, num-robovi svojstvo prikazuje dostupne replike za glavni čvor. U ovom slučaju, postavljeno je na 1 jer imamo samo jednu repliku.

Dobijte informacije o povezanim replikama

Možemo provjeriti replike povezane s glavnim čvorom pomoću sljedeće podnaredbe SENTINEL:

SENTINEL REPLIKE < nadzirano_glavno_ime >

U ovom primjeru, glavno ime je 'masternode'.

SENTINEL replika glavnog čvora

Kao što se očekivalo, Sentinel je otkrio podređeni čvor koji radi na portu 7001.

Dobijte informacije o pridruženim Sentinelima

Slično, možemo postaviti upit o detaljima koji se odnose na druge stražare povezane s trenutnim glavnim čvorom pomoću sljedeće podnaredbe SENTINEL:

SENTINEL SENTINELS < ime_glavnog_čvora >

U ovom slučaju, dohvaćat ćemo informacije koje se odnose na glavni čvor pod nazivom 'masternode'.

SENTINEL nadzorni čvor

Nabavite adresu glavnog čvora

Kao što je spomenuto u prethodnom odjeljku, Redis sentinel pružatelj je konfiguracije za povezane klijente. Dakle, sposoban je pružiti trenutno pokrenutu IP adresu i port glavnog čvora traženim klijentima. Sljedeća podnaredba Sentinel API može se koristiti za dohvaćanje spomenutih informacija.

SENTINEL GET-MASTER-ADDR-BY-NAME < ime_glavnog_čvora >

Izvršimo gornju naredbu za naš scenarij na sljedeći način:

sentinel get-master-addr-by-name glavno čvorište

Raspravljali smo samo o nekoliko sentinel API naredbi. Dostupno je nekoliko drugih podnaredbi kao što su sentinel-failover, sentinel info-cache, sentinel masters, itd. Nadalje, mnoge naredbe dostupne su za korištenje iu administrativne svrhe. U sljedećem odjeljku usredotočit ćemo se na proces nadogradnje Redis sentinel.

Sentinel failover proces

Budući da je naš sentinel konfiguriran, možemo testirati fazu preusmjeravanja. Pošaljimo naš glavni čvor u stanje mirovanja na 300 sekundi, što simulira kvar u glavnom čvoru.

debug spavati 300

Glavni čvor koji radi na portu 7000 sada bi trebao biti nedostupan. Dakle, povezani stražari primijetit će da je glavni nedostupan s +spust događaj. Zatim će ovo biti postavljeno na +dolje gdje 2 stražara potvrđuju da glavni čvor ne radi prema vrijednosti kvoruma. Na kraju će započeti faza nadogradnje i idealno bi bilo da replika bude promaknuta u novi master.

Provjerimo ponovo IP adresu glavnog čvora i port.

sentinel get-master-addr-by-name glavno čvorište

Kao što se i očekivalo, prethodna replika promaknuta je u novu glavnu, što znači da je proces slanja nadzora uspješan. Ovo zaključuje implementaciju i testiranje naše tri postavke sentinel za jedan par master-replika.

Zaključak

Redis sentinel najpouzdaniji je pristup osiguravanju visoke dostupnosti određene instance Redis glavne replike. Sentinel je sposoban nadzirati, obavještavati i pokretati automatski failover bez ljudske intervencije. Također, višestruki nadzornici zajedno se slažu oko činjenice da je glavni čvor nedostupan, a vrijednost kvoruma koristi se kao maksimalan broj nadzornika oko kojih se treba dogovoriti prilikom provjere dostupnosti glavne instance. Redis sentinel nudi API jednostavan za korištenje za dohvaćanje informacija o stanju glavnog čvora i pridruženih replika te obavljanje administrativnih zadataka.