Redis Sentinel

Redis Sentinel



Předpokládejme scénář, kdy máte ve své produkci pouze jednu instanci Redis a ta v určitém okamžiku z nějakého důvodu selže. Vaše aplikace ukládá data do úložiště dat Redis a nyní je váš jediný zdroj dat mrtvý. Jedním ze způsobů, jak ovládat tyto druhy scénářů, je udržovat architekturu master-slave, kde mohou slave replikovat hlavní uzel, dokud se nevrátí. Klastry Redis podporují vysokou dostupnost do určité míry pomocí přístupu master-replika. Redis Sentinel je další přístup, který poskytuje spolehlivější způsob, jak udržet vysokou dostupnost instancí Redis. Monitoruje selhání hlavního uzlu Redis a okamžitě spouští proces převzetí služeb při selhání, který povýší existující podřízený uzel na zcela nový hlavní uzel.







Kromě toho, Redis sentinel funguje jako prostředník, kde se klienti připojují a žádají o nejnovější IP adresu hlavního uzlu. Připojený hlídač tedy okamžitě poskytne adresu hlavního uzlu.



Selhání hlavního uzlu je navíc potvrzeno, pokud se více hlídek dohodlo, že daný hlavní uzel není dosažitelný nebo dostupný. Tím je fáze detekce selhání ukončena a okamžitě se spustí proces převzetí služeb při selhání. Sentinel Redis lze tedy považovat za distribuovaný systém se specifickými vlastnostmi.



Dohoda sentinelů je založena na hodnotě kvóra, o které bude pojednáno v následující části.





Čí Hodnota

Hodnota kvora je maximální počet hlídek, které je třeba dohodnout, když je hlavní uzel mimo provoz. Tato hodnota se používá pouze k identifikaci selhání v hlavním uzlu. Proces převzetí služeb při selhání začíná autorizací více dostupných sentinelových uzlů, aby pokračovaly s vybraným sentinelem jako vedoucím.

Vlastnosti Redis Sentinel

Sentinel je známý tím, že poskytuje mechanismus vysoké dostupnosti pro úložiště dat Redis. Kromě toho lze uvést několik dalších funkcí.



  • Sentinel nepřetržitě monitoruje stav hlavních a podřízených uzlů ve vašem systému Redis.
  • Kdykoli dojde k selhání nebo k něčemu v nepořádku s vašimi instancemi Redis, je sentinel schopen upozornit správce nebo připojené aplikace pomocí sentinel API.
  • Fáze převzetí služeb při selhání je řízena hlídačem povýšením repliky jako nového hlavního serveru. Zbývající repliky konfigurované pro použití nového hlavního serveru. Nakonec budou odpovídající klienti informováni o nové adrese hlavního uzlu.
  • Sentinel Redis je také poskytovatelem konfigurace pro připojené klienty, kde klienti mohou požádat o adresu aktuálně dostupné hlavní instance, a pokud dojde k náhlému zhroucení, sentinel se zavazuje okamžitě odeslat adresu nového hlavního uzlu.

V další části budeme konfigurovat Redis sentinely s instancemi master-repliky a používat sentinel API k monitorování uzlů.

Konfigurace Sentinelu

Nejprve vytvoříme dvě instance Redis na portech 7000 a 7001. Port 7000 bude hlavním uzlem a druhý replikuje hlavní uzel. Obě instance používají následující konfigurační soubory:

Konfigurace hlavního uzlu

přístav 7000
s podporou clusteru ne
cluster-config-file nodes.conf
cluster-node-timeout 5000
pouze appendonly Ano

Konfigurace slave uzlu

přístav 7001
s podporou clusteru ne
cluster-config-file nodes.conf
cluster-node-timeout 5000
pouze appendonly Ano

Obě instance začnou poskytnutím konfiguračního souboru spojeného s každou z nich. Pro samostatné spuštění instancí Redis můžeme použít následující příkaz:

redis-server redis.conf

Pojďme se připojit k instanci Redis spuštěné na portu 7001 následovně:

redis-cli -p 7001

Nyní můžeme z této instance vytvořit repliku hlavního serveru, který běží na portu 7000. Příkaz REPLICAOF lze použít následovně:

replika 127.0.0.1 7000

Jak se očekávalo, instance běžící na portu 7001 se stala replikou hlavního uzlu běžícího na portu 7000.

Nyní jsme připraveni nakonfigurovat tři hlídky Redis pro monitorování výše uvedené hlavní instance. Potřebujeme mít tři konfigurační soubory k vytvoření tří instancí hlídek na portech 5000, 5001 a 5002, jak je znázorněno níže.

Každý sentinel.conf soubor vypadá následovně kromě toho, že se změní číslo portu:

přístav 5000
Sentinel monitor masternode 127.0.0.1 7000 dva
hlavní uzel sentinel down-after-miliseconds 5000
hlavní uzel sentinel failover-timeout 60 000

Nyní je čas spustit tři strážce. Spolu s cestou k můžete použít spustitelný soubor redis-sentinel sentinel.conf konfigurační soubor pro vytvoření instance sentinelu. Jinak můžeme stále volat spustitelný soubor redis-server zadáním cesty k sentinel.conf a vlajka -stráž .

Spusťte každý hlídač pomocí následujícího příkazu:

redis-server sentinel.conf --stráž

První hlídač byl spuštěn na portu 5000. Podobně můžete spustit i další dvě instance.

Nyní je naše nastavení Redis sentinel spuštěno a běží, jak je znázorněno na následujícím obrázku:

V následující části prozkoumáme více o Sentinel API a o tom, jak jej můžeme využít k načtení informací souvisejících s hlavním uzlem Redis.

Sentinel API

Redis poskytuje samostatné rozhraní API pro hlídání pro monitorování přidružených předloh a replik, přihlášení k odběru oznámení a úpravy nastavení hlídek. Dále je uvedeno několik použití.

  • Zkontrolujte stav monitorovaných instancí Redis master a slave
  • Podrobnosti o dalších hlídkách
  • Přijímat oznámení ve stylu push od hlídačů v případě převzetí služeb při selhání

Příkaz SENTINEL lze použít s jeho přidruženými dílčími příkazy k dotazování, aktualizaci nebo nastavení kontrolních uzlů a monitorovaných uzlů Redis.

Zkontrolujte stav hlavního uzlu

Je velmi důležité čas od času monitorovat nebo kontrolovat stav hlavního uzlu. Následující příkaz sentinel API lze použít k načtení hlavních podrobností:

SENTINELSKÝ MISTR < monitorované_master_name >

monitorované_master_name: Název hlavního uzlu, který je zadán v konfiguračním souboru sentinelu, který jsme vytvořili v předchozím kroku.

Použijme tento příkaz k dotazu na hlavní stav v našem nastavení. V našem případě je název hlavního uzlu 'masternode'.

Masternode SENTINEL MASTER

Bylo získáno několik informací a několik z nich je důležitých, jako jsou num-slave, vlajky a num-other-sentinely.

The vlajky vlastnost je nastavena na mistr což znamená, že pán je v dobrém zdravotním stavu. Kdykoli je hlavní uzel mimo provoz, s_dolů nebo o_dolů zobrazí se vlajka. Vlastnictví num-other-sentinels je nastaven na 2, což znamená, že hlídač Redis již rozpoznal další dva hlídací uzel pro hlavní uzel. Kromě toho, num-otroci zobrazí dostupné repliky pro hlavní uzel. V tomto případě je nastavena na 1, protože máme pouze jednu repliku.

Získejte informace o připojených replikách

Můžeme zkontrolovat repliky připojené k hlavnímu uzlu pomocí následujícího dílčího příkazu SENTINEL:

REPLIKÁTY SENTINELU < monitorované_master_name >

V tomto příkladu je hlavní název ‚masternode‘.

Masternode repliky SENTINEL

Podle očekávání Sentinel detekoval podřízený uzel běžící na portu 7001.

Získejte informace o přidružených hlídkách

Podobně se můžeme dotázat na podrobnosti související s dalšími hlídkami přidruženými k aktuálnímu hlavnímu uzlu pomocí následujícího dílčího příkazu SENTINEL:

STRÁŽNÍ HLÍDKY < název_hlavního_uzlu >

V tomto případě budeme načítat informace související s hlavním uzlem s názvem „masternode“.

Masternode sentinels SENTINEL

Získejte adresu hlavního uzlu

Jak bylo zmíněno v předchozí části, Redis sentinel je poskytovatel konfigurace pro připojené klienty. Je tedy schopen poskytnout aktuálně běžící IP adresu hlavního uzlu a port požadovaným klientům. K načtení zmíněných informací lze použít následující dílčí příkaz Sentinel API.

SENTINEL GET-MASTER-ADDR-BY-NAME < název_hlavního_uzlu >

Provedeme výše uvedený příkaz pro náš scénář takto:

sentinel get-master-addr-by-name masternode

Probrali jsme pouze několik příkazů sentinel API. K dispozici je několik dalších dílčích příkazů, jako je sentinel-failover, sentinel info-cache, sentinel master atd. Kromě toho je k dispozici mnoho příkazů, které lze použít také pro účely administrace. V následující části se zaměříme na proces převzetí služeb při selhání sentinelu Redis.

Sentinel Failover Process

Protože je naše hlídka nakonfigurována, můžeme otestovat fázi selhání. Pošleme náš hlavní uzel do spánku na 300 sekund, což simuluje selhání hlavního uzlu.

ladit spát 300

Hlavní uzel, který běží na portu 7000, by nyní měl být nedostupný. Přidružení strážci si tedy všimnou, že velitel není k dispozici s +dolů událost. Poté bude toto nastaveno na +odown kde 2 sentinely potvrzují, že hlavní uzel je dole podle hodnoty kvora. Nakonec se spustí fáze převzetí služeb při selhání a v ideálním případě by měla být replika povýšena na novou předlohu.

Znovu zkontrolujeme IP adresu hlavního uzlu a port.

sentinel get-master-addr-by-name masternode

Podle očekávání byla předchozí replika povýšena na novou hlavní server, což znamená, že proces převzetí služeb při selhání sentinelu je úspěšný. Tím končí nasazení a testování našich tří nastavení hlídek pro jeden pár master-replika.

Závěr

Redis sentinel je nejspolehlivější přístup k zajištění vysoké dostupnosti dané instance Redis master repliky. Hlídač je schopen monitorovat, upozorňovat a spouštět automatické převzetí služeb při selhání bez lidského zásahu. Také více hlídačů společně souhlasí s tím, že hlavní uzel je nedosažitelný a hodnota kvora se používá jako maximální počet hlídek, které je třeba dohodnout při kontrole dostupnosti hlavní instance. Redis sentinel nabízí snadno použitelné rozhraní API pro získávání informací o stavu hlavního uzlu a souvisejících replik a také pro provádění administrativních úloh.