Vyhledávání na webu

Jak nastavit Redis pro vysokou dostupnost s Sentinel v CentOS 8 – část 2


Redis poskytuje vysokou dostupnost prostřednictvím distribuovaného systému Redis Sentinel. Sentinel pomáhá monitorovat instance Redis, zjišťovat selhání a automaticky přepínat role, což umožňuje nasazení Redis, aby odolalo jakémukoli druhu selhání.

Zahrnuje monitorování instancí Redis (master a repliky), podporuje upozornění na jiné služby/procesy nebo správce systému prostřednictvím skriptu, automatické převzetí služeb při selhání pro povýšení repliky na master, když hlavní server selže a poskytuje konfiguraci pro klienty, aby zjistili aktuální hlavní server nabízející konkrétní službu.

Tento článek ukazuje, jak nastavit Redis pro vysokou dostupnost pomocí Redis Sentinel v CentOS 8, včetně konfigurace sentinelů, kontroly stavu nastavení a testování Sentinel převzetí služeb při selhání.

Předpoklad:

  1. Jak nastavit replikaci Redis (se zakázaným režimem clusteru) v CentOS 8 – část 1

Nastavení testovacího prostředí

Master Server and Sentinel1: 10.42.0.247
Redis Replica1 and Sentinel2: 10.42.0.21
Redis Replica2 and Sentinel3: 10.42.0.34

Podle dokumentace Redis Sentinel jsou pro robustní nasazení potřeba alespoň tři instance Sentinel. S ohledem na naše výše uvedené nastavení, pokud master selže, Sentinels2 a Sentinel3 se dohodnou na selhání a budou moci autorizovat převzetí služeb při selhání. operace klienta mohou pokračovat.

Krok 1: Spuštění a povolení Redis Sentinel Service

1. V systému CentOS 8 je služba Redis Sentinel nainstalována vedle serveru Redis (což jsme již provedli v nastavení replikace Redis).

Chcete-li spustit službu Redis sentinel a povolit její automatické spouštění při spouštění systému, použijte následující příkazy systemctl. Zkontrolujte také jeho stav a ověřte, že je v provozu (proveďte to na všech uzlech):

systemctl start redis-sentinel
systemctl enable redis-sentinel
systemctl status redis-sentinel

Krok 2: Konfigurace Redis Sentinel na všech uzlech Redis

2. V této části vysvětlíme, jak nakonfigurovat Sentinel na všech našich uzlech. Služba Sentinel má podobný formát konfigurace jako server Redis. Chcete-li jej nakonfigurovat, použijte samostatně zdokumentovaný konfigurační soubor /etc/redis-sentinel.conf.

Nejprve vytvořte zálohu původního souboru a otevřete jej pro úpravy.

cp /etc/redis-sentinel.conf /etc/redis-sentinel.conf.orig
vi /etc/redis-sentinel.conf

3. Ve výchozím nastavení Sentinel naslouchá na portu 26379, ověřte to ve všech instancích. Pamatujte, že parametr bind musíte nechat zakomentovaný (nebo nastavit na 0.0.0.0).

port 26379

4. Dále řekněte Sentinelu, aby sledoval našeho mastera a zvážil jej ve stavu „Objektivně dolů “ pouze tehdy, souhlasí-li alespoň 2 senátoři kvora. „mymaster “ můžete nahradit vlastním názvem.

#On Master Server and Sentinel1
sentinel monitor mymaster 127.0.0.1 6379 2

#On Replica1 and Sentinel2
sentinel monitor mymaster 10.42.0.247 6379 2

#On Replica1 and Sentinel3
sentinel monitor mymaster 10.42.0.247 6379 2

Důležité: Příkaz sentinel monitor MUSÍ být umístěn před příkaz sentinel auth-pass, aby se předešlo chybě „Žádný takový hlavní s zadané jméno. ” při restartování služby sentinel.

5. Pokud má master Redis, který chcete monitorovat, nastaveno heslo (v našem případě má master), zadejte heslo, aby se instance Sentinel mohla ověřit u chráněné instance.

 
sentinel auth-pass mymaster Securep@55Here

6. Poté nastavte počet milisekund, po které by měl být hlavní (nebo jakákoli připojená replika nebo hlídací modul) nedosažitelný, aby jej bylo možné považovat ve stavu „Subjektivně dolů“.

Následující konfigurace znamená, že master bude považován za neúspěšný, jakmile od našich pingů neobdržíme žádnou odpověď do 5 sekund (1 sekunda odpovídá 1000 milisekundám).

sentinel down-after-milliseconds mymaster 5000

7. Dále nastavte časový limit pro přepnutí při selhání v milisekundách, který definuje mnoho věcí (přečtěte si dokumentaci parametru v konfiguračním souboru).

sentinel failover-timeout mymaster 180000

8. Poté nastavte počet replik, které lze překonfigurovat tak, aby po převzetí služeb při selhání současně používaly novou předlohu. Protože máme dvě repliky, nastavíme jednu repliku, protože druhá bude povýšena na novou předlohu.

sentinel parallel-syncs mymaster 1

Všimněte si, že konfigurační soubory na Redis Replica1 a Sentinel2 a Reddis Replica1 a Sentinel2 by měly být totožné.

9. Dále restartujte služby Sentinel na všech uzlech, aby se použily poslední změny.

systemctl restart redis-sentinel

10. Dále otevřete port 26379 ve bráně firewall na všech uzlech, aby instance Sentinel mohly začít mluvit a přijímat připojení od ostatních Sentinel instance pomocí firewall-cmd.

firewall-cmd --zone=public --permanent --add-port=26379/tcp
firewall-cmd --reload

11. Všechny repliky budou automaticky objeveny. Důležité je, že Sentinel automaticky aktualizuje konfiguraci o další informace o replikách. Můžete to potvrdit otevřením konfiguračního souboru Sentinel pro každou instanci a prohlédnutím.

Když se například podíváte na konec konfiguračního souboru hlavního serveru, měli byste vidět příkazy known-sentinels a known-replica, jak je znázorněno na následujícím snímku obrazovky.

U replica1 a replica2 by to měl být stejný případ.

Všimněte si, že konfigurace Sentinel je také přepsána/aktualizována pokaždé, když je replika povýšena na hlavní stav během převzetí služeb při selhání a pokaždé, když je v nastavení objeven nový Sentinel.

Krok 3: Zkontrolujte stav nastavení Redis Sentinel

12. Nyní zkontrolujte stav/informace Sentinel na hlavním serveru pomocí příkazu info sentinel následovně.

redis-cli -p 26379 info sentinel

Z výstupu příkazu, jak je vidět na následujícím snímku obrazovky, máme dvě repliky/otroky a tři strážce.

13. Chcete-li zobrazit podrobné informace o master (nazývaném mymaster), použijte příkaz sentinel master.

redis-cli -p 26379 sentinel master mymaster

14. Chcete-li zobrazit podrobné informace o otrocích a sentinelech, použijte příkaz sentinel slaves a sentinel sentinelspříkaz resp.

redis-cli -p 26379 sentinel slaves mymaster
redis-cli -p 26379 sentinel sentinels mymaster

15. Dále se zeptejte na adresu master podle jména z podřízených instancí pomocí příkazu sentinel get-master-addr-by-name následovně.

Výstupem by měla být IP adresa a port aktuální hlavní instance:

redis-cli -p 26379 sentinel get-master-addr-by-name mymaster

Krok 4: Otestujte funkci Sentinel Failover

16. Nakonec otestujeme automatické převzetí služeb při selhání v našem nastavení Sentinel. Na hlavním zařízení Redis/Sentinel uveďte hlavní zařízení Redis (běžící na portu 6379) do režimu spánku po dobu 60 sekund . Poté se zeptejte na adresu aktuálního hlavního serveru na replikách/podřízených zařízeních následovně.

redis-cli -p 6379
127.0.0.1:6379> AUTH Securep@55Here
127.0.0.1:6379>  debug sleep 60
redis-cli -p 26379 sentinel get-master-addr-by-name mymaster
redis-cli -p 26379 sentinel get-master-addr-by-name mymaster

Z výstupu pro dotaz je nyní nový hlavní server replica/slave2 s IP adresou 10.42.0.34, jak je vidět na následujícím snímku obrazovky.

Další informace můžete získat z dokumentace Redis Sentinel. Pokud však máte nějaké nápady, které byste mohli sdílet nebo dotazy, níže uvedený formulář zpětné vazby je vaší vstupní branou k nám.

V dalším a posledním díle této série se podíváme na to, jak nastavit Redis Cluster v CentOS 8. Půjde o samostatný článek z prvních dvou.