Redis Sentinel

Redis Sentinel



Predpokladajme scenár, v ktorom máte vo svojej produkcii iba jednu inštanciu Redis a tá v určitom bode z nejakého dôvodu zlyhá. Vaša aplikácia ukladá údaje do vyrovnávacej pamäte v úložisku údajov Redis a váš jediný zdroj údajov je teraz mŕtvy. Jedným zo spôsobov, ako ovládať tieto druhy scenárov, je udržiavať architektúru master-slave, kde slave môžu replikovať hlavný uzol, kým sa nevráti. Klastre Redis podporujú vysokú dostupnosť do určitej miery s prístupom master-replika. Redis Sentinel je ďalší prístup, ktorý poskytuje spoľahlivejší spôsob udržania vysokej dostupnosti inštancií Redis. Monitoruje chyby hlavného uzla Redis a okamžite spustí proces prepnutia, ktorý povýši existujúci podriadený uzol na úplne nový hlavný uzol.







Okrem toho, Redis sentinel pôsobí ako prostredník, kde sa klienti pripájajú a žiadajú o najnovšiu IP adresu hlavného uzla. Takže pripojený sentinel okamžite poskytne adresu hlavného uzla.



Okrem toho sa zlyhanie hlavného uzla potvrdí, ak sa viaceré kontrolné jednotky dohodnú, že daný hlavný uzol nie je dosiahnuteľný alebo dostupný. Tým sa ukončí fáza detekcie zlyhania a okamžite sa spustí proces prepnutia. Sentinel Redis teda možno považovať za distribuovaný systém so špecifickými vlastnosťami.



Dohoda sentinelov je založená na hodnote kvóra, o ktorej sa bude diskutovať v nasledujúcej časti.





Koho Hodnota

Hodnota kvóra je maximálny počet kontrolných jednotiek, ktoré je potrebné dohodnúť, keď je hlavný uzol mimo prevádzky. Táto hodnota sa používa iba na identifikáciu zlyhania v hlavnom uzle. Proces núdzového prepnutia sa začína autorizáciou viacerých dostupných sentinelových uzlov, aby pokračovali s vybraným sentinelom ako vedúcim.

Vlastnosti Redis Sentinel

Sentinel je známy tým, že poskytuje mechanizmus vysokej dostupnosti pre úložisko údajov Redis. Okrem toho je možné uviesť niekoľko ďalších schopností.



  • Sentinel nepretržite monitoruje stav hlavných a podriadených uzlov vo vašom systéme Redis.
  • Kedykoľvek dôjde k zlyhaniu alebo niečomu nesprávnemu s vašimi inštanciami Redis, sentinel je schopný upozorniť správcu alebo pripojené aplikácie pomocou sentinel API.
  • Fázu prepnutia pri zlyhaní riadi strážca propagáciou repliky ako nového hlavného servera. Zostávajúce repliky nakonfigurované na používanie nového hlavného servera. Nakoniec budú príslušní klienti informovaní o novej adrese hlavného uzla.
  • Sentinel Redis je tiež poskytovateľom konfigurácie pre pripojených klientov, kde klienti môžu požiadať o adresu aktuálne dostupnej hlavnej inštancie a ak dôjde k náhlemu kolapsu, sentinel sa zaviaže okamžite poslať novú adresu hlavného uzla.

V ďalšej časti budeme konfigurovať Redis sentinely s inštanciami master-repliky a pomocou sentinel API monitorovať uzly.

Konfigurácia Sentinelu

Najprv vytvoríme dve inštancie Redis na portoch 7000 a 7001. Port 7000 bude hlavný uzol a druhý replikuje hlavný uzol. Obidve inštancie používajú nasledujúce konfiguračné súbory:

Konfigurácia hlavného uzla

prístav 7000
s podporou klastrov č
cluster-config-file nodes.conf
cluster-node-timeout 5000
len appendonly Áno

Konfigurácia podriadeného uzla

prístav 7001
s podporou klastrov č
cluster-config-file nodes.conf
cluster-node-timeout 5000
len appendonly Áno

Obidve inštancie začnú poskytnutím konfiguračného súboru spojeného s každou z nich. Na samostatné spustenie inštancií Redis môžeme použiť nasledujúci príkaz:

redis-server redis.conf

Pripojme sa k inštancii Redis spustenej na porte 7001 takto:

redis-cli -p 7001

Teraz môžeme z tejto inštancie urobiť repliku mastera, ktorý beží na porte 7000. Príkaz REPLICAOF možno použiť nasledovne:

replika 127.0.0.1 7000

Ako sa očakávalo, inštancia spustená na porte 7001 sa stala replikou uzla hlavného servera spusteného na porte 7000.

Teraz sme pripravení nakonfigurovať tri kontrolné zariadenia Redis na monitorovanie vyššie uvedenej hlavnej inštancie. Na vytvorenie troch kontrolných inštancií na portoch 5000, 5001 a 5002 potrebujeme tri konfiguračné súbory, ako je uvedené nižšie.

Každý sentinel.conf súbor vyzerá nasledovne okrem toho, že sa zmení číslo portu:

prístav 5000
hlavný uzol sentinelového monitora 127.0.0.1 7000 dva
hlavný uzol sentinel down-after-miliseconds 5000
hlavný uzol sentinel failover-timeout 60 000

Teraz je čas spustiť troch strážcov. Môžete použiť spustiteľný súbor redis-sentinel spolu s cestou k sentinel.conf konfiguračný súbor na vytvorenie inštancie sentinelu. V opačnom prípade môžeme stále zavolať spustiteľný súbor redis-server zadaním cesty k sentinel.conf a vlajka – strážca .

Začnime každý sentinel pomocou nasledujúceho príkazu:

redis-server sentinel.conf --sentinel

Prvý sentinel bol spustený na porte 5000. Podobne môžete spustiť aj ďalšie dve inštancie.

Teraz je naše nastavenie Redis sentinel v prevádzke, ako je znázornené na nasledujúcom obrázku:

V nasledujúcej časti budeme skúmať viac o Sentinel API a o tom, ako ho môžeme využiť na získanie informácií súvisiacich s hlavným uzlom Redis.

Sentinel API

Redis poskytuje samostatné sentinelové API na monitorovanie pridružených predlôh a replík, prihlásenie na odber upozornení a úpravu nastavení sentinelu. Ďalej je uvedených niekoľko použití.

  • Skontrolujte stav monitorovaných inštancií Redis master a slave
  • Podrobnosti o ďalších sentineloch
  • Prijímajte upozornenia v štýle push od strážcov v prípade zlyhania

Príkaz SENTINEL možno použiť s jeho priradenými podpríkazmi na dopytovanie, aktualizáciu alebo nastavenie kontrolných jednotiek Redis a monitorovaných uzlov.

Skontrolujte stav hlavného uzla

Je veľmi dôležité z času na čas monitorovať alebo kontrolovať zdravie hlavného uzla. Nasledujúci príkaz sentinel API možno použiť na získanie podrobností o hlavnom počítači:

SENTINELSKÝ MAJSTER < monitorovaný_master_name >

monitorovaný_master_name: Názov hlavného uzla, ktorý je zadaný v konfiguračnom súbore sentinelu, ktorý sme vytvorili v predchádzajúcom kroku.

Použime tento príkaz na zistenie stavu hlavného servera v našom nastavení. V našom prípade je názov hlavného uzla „masternode“.

Masternode SENTINEL MASTER

Bolo získaných niekoľko informácií a niekoľko z nich je dôležitých, ako napríklad num-slave, vlajky a num-other-sentinely.

The vlajky vlastnosť je nastavená na majster čo znamená, že majster je v dobrom zdravotnom stave. Kedykoľvek je hlavný uzol vypnutý, s_dole alebo o_dole zobrazí sa vlajka. Vlastníctvo num-other-sentinels je nastavený na 2, čo znamená, že kontrolný uzol Redis už rozpoznal ďalšie dva kontrolné body pre hlavný uzol. Okrem toho, num-otroci zobrazí dostupné repliky pre hlavný uzol. V tomto prípade je nastavená na 1, pretože máme iba jednu repliku.

Získajte informácie o pripojených replikách

Repliky spojené s hlavným uzlom môžeme skontrolovať pomocou nasledujúceho podpríkazu SENTINEL:

REPLIKÁTY SENTINELU < monitorovaný_master_name >

V tomto príklade je hlavný názov „masternode“.

Masternode repliky SENTINEL

Ako sa očakávalo, Sentinel zistil, že podriadený uzol beží na porte 7001.

Získajte informácie o pridružených hliadkach

Podobne môžeme pomocou nasledujúceho podpríkazu SENTINEL zistiť podrobnosti týkajúce sa iných kontrolných jednotiek priradených k aktuálnemu hlavnému uzlu:

SENTINELY SENTINELY < názov_hlavného_uzla >

V tomto prípade budeme získavať informácie súvisiace s hlavným uzlom s názvom „masternode“.

Masternode sentinels SENTINEL

Získajte adresu hlavného uzla

Ako bolo uvedené v predchádzajúcej časti, Redis sentinel je poskytovateľ konfigurácie pre pripojených klientov. Je teda schopný poskytnúť aktuálne spustenú IP adresu hlavného uzla a port požadovaným klientom. Na získanie uvedených informácií možno použiť nasledujúci podpríkaz Sentinel API.

SENTINEL GET-MASTER-ADDR-BY-NAME < názov_hlavného_uzla >

Vykonajme vyššie uvedený príkaz pre náš scenár takto:

sentinel get-master-addr-by-name masternode

Diskutovali sme len o niekoľkých príkazoch sentinel API. K dispozícii je niekoľko ďalších čiastkových príkazov, ako napríklad sentinel-failover, sentinel info-cache, sentinel master, atď. Okrem toho je k dispozícii mnoho príkazov, ktoré je možné použiť aj na účely správy. V nasledujúcej časti sa zameriame na proces núdzového prepnutia Redis sentinel.

Sentinel Failover Process

Keďže je náš strážca nakonfigurovaný, môžeme otestovať fázu zlyhania. Pošlime náš hlavný uzol do režimu spánku na 300 sekúnd, čo simuluje zlyhanie hlavného uzla.

ladenie spať 300

Hlavný uzol, ktorý beží na porte 7000, by mal byť teraz nedostupný. Takže pridružení strážcovia si všimnú, že majster nie je dostupný s +zostup udalosť. Potom sa to nastaví na +odol kde 2 sentinely potvrdzujú, že hlavný uzol je nefunkčný podľa hodnoty kvóra. Nakoniec sa spustí fáza núdzového prepnutia a v ideálnom prípade by mala byť replika povýšená na novú predlohu.

Znova skontrolujte IP adresu hlavného uzla a port.

sentinel get-master-addr-by-name masternode

Ako sa očakávalo, predchádzajúca replika bola povýšená na nový hlavný server, čo znamená, že proces núdzového prepnutia sentinelu je úspešný. Týmto sa ukončuje nasadenie a testovanie našich troch nastavení stráženia pre jeden pár master-replika.

Záver

Redis sentinel je najspoľahlivejší prístup na zabezpečenie vysokej dostupnosti danej inštancie hlavnej repliky Redis. Sentinel je schopný monitorovať, upozorňovať a spúšťať automatické prepnutie pri zlyhaní bez ľudského zásahu. Viaceré sentinely sa tiež spoločne zhodujú na skutočnosti, že hlavný uzol je nedosiahnuteľný a hodnota kvóra sa používa ako maximálny počet strážcov, ktoré je potrebné dohodnúť pri kontrole dostupnosti hlavnej inštancie. Redis sentinel ponúka ľahko použiteľné API na získavanie informácií o stave hlavného uzla a súvisiacich replík a tiež na vykonávanie administratívnych úloh.