Vyhledávání na webu

Jak nastavit Redis Cluster v CentOS 8 – část 3


Redis Cluster je vestavěná funkce Redis, která podporuje automatické sdílení, replikaci a vysokou dostupnost, která byla dříve implementována pomocí Sentinels. Je navržen pro dva hlavní účely: jedním je automaticky rozdělit vaši datovou sadu mezi více instancí a zadruhé poskytnout určitý stupeň dostupnosti během dělení, pokračovat v operacích, když některé instance (zejména master) selžou nebo nejsou schopny komunikovat s většinou uzly v clusteru.

Cluster však přestane fungovat v případě větších poruch (např. když je většina hlavních instancí nedostupná). Pokud zároveň selžou hlavní a podřízený klastr, nemůže klastr pokračovat v normálních operacích (ačkoli řešením je přidání dalších uzlů nebo vytvoření asymetrie v klastru, aby se automaticky změnilo rozložení klastru).

Podle dokumentace ke clusteru Redis musí „minimální cluster“, který funguje podle očekávání, obsahovat alespoň 3 hlavní uzly. Ale nejvhodnější nastavení pro vysokou dostupnost by mělo mít alespoň 6 uzlů se třemi mastery a třemi slave, přičemž každý master má slave.

Důležité: Redis Cluster má také určitá omezení, kterými jsou nedostatečná podpora NATted prostředí a také těch, kde jsou IP adresy nebo porty TCP přemapovány. instance pod Docker. Navíc to nepodporuje každá klientská knihovna.

Tento článek ukazuje, jak nastavit Redis Cluster (s Cluster-Mode Disabled) v CentOS 8. Zahrnuje, jak nainstalovat Redis, nakonfigurovat uzly clusteru, vytvořit cluster a otestovat převzetí služeb při selhání clusteru.

Poznámka: V této příručce použijeme ke spuštění režimu clusteru čerstvé/prázdné instance Redis. Režim clusteru nebude fungovat s některými konfiguracemi provedenými v prvních dvou příručkách naší řady Redis, zejména nefunguje, když se používá replika parametru.

Předpoklady:

  1. Servery s instalací CentOS 8

Nastavení testovacího prostředí

Redis Master1: 10.42.0.247
Redis Master2: 10.42.0.197
Redis Master3: 10.42.0.132

Redis Slave1: 10.42.0.200
Redis Slave2: 10.42.0.21
Redis Slave3: 10.42.0.34

Naše nastavení má 3 hlavní uzly pro čtení/zápis a 3 replikované uzly pouze pro čtení, přičemž každý hlavní má jednu repliku, takže tři fragmenty obsahují všechna data clusteru v každém uzlu. Aplikační klient API nebo CLI může zapisovat pouze do hlavních uzlů, ale číst z libovolného uzlu v clusteru.

Krok 1: Instalace Redis na všechny uzly

1. Přihlaste se do všech instancí pomocí SSH a poté spusťte následující příkaz k instalaci modulu Redis pomocí správce balíčků DNF, jak je znázorněno.

dnf module install redis

2. Dále spusťte službu Redis, povolte její automatické spouštění při spouštění systému a zkontrolujte její stav, abyste ověřili, že je spuštěna (ověřte službu na všech 6 instancích ):

systemctl start redis
systemctl enable redis
systemctl status redis

Krok 2: Konfigurace instancí Redis na všech uzlech

3. Tato část popisuje, jak nakonfigurovat uzly clusteru Redis. Nezapomeňte provést konfigurace zde na všech uzlech.

Ke konfiguraci serveru Redis použijte konfigurační soubor /etc/redis.conf. Doporučuje se vytvořit zálohu původního souboru před jeho úpravou pomocí textového editoru příkazového řádku podle vašeho výběru.

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

4. Dále vyhledejte následující konfigurační parametry a upravte jejich hodnoty podle obrázku. Parametr bind nastavuje rozhraní, na kterém bude server Redis naslouchat, jeho hodnotu nastaví na IP IP instance LAN. Odstraňte 127.0.0.1, protože jsme si uvědomili, že jeho ponechání tam zpomaluje proces vytváření clusteru, zejména fázi připojování ke clusteru.

bind  10.42.0.247

Poté nastavte chráněný režim na no, abyste povolili připojení z ostatních instancí v clusteru.

protected-mode no

Parametr port definuje port, na kterém bude server Redis naslouchat připojení, výchozí hodnota je 6379. Jedná se o datový port pro komunikaci s klienty.

port 6379

5. Další sada parametrů povolí režim clusteru a nastaví některé z jeho užitečných funkcí. Pokud je parametr cluster-enabled nastaven na yes, aktivuje režim clusteru.

cluster-enabled yes

Dále parametr cluster-config-file nastavuje název konfiguračního souboru clusteru uzlu clusteru (např. nodes-6379.conf). Soubor je vytvořen v pracovním adresáři (výchozí je /var/lib/redis definovaný pomocí parametru dir) a uživatel jej nemůže upravovat.

cluster-config-file nodes-6379.conf

Další užitečnou možností clusteru je cluster-node-timeout, používá se k nastavení maximální doby v milisekundách, po kterou může být instance nedostupná, aby byla považována za stav selhání. Hodnota 15000 odpovídá 15 sekundám.

cluster-node-timeout 15000

6. Musíme také povolit Redis persistenci na disku. Můžeme použít jeden z režimů persistence, to je Append Only File (AOF): zaznamenává se (do souboru appendonly.aof vytvořeného v pracovním adresáři) každá operace zápisu úspěšně přijatá serverem. Data se přehrají během spouštění serveru za účelem rekonstrukce původní datové sady.

Chcete-li jej povolit, nastavte parametr appendonly na yes.

appendonly yes

7. Po provedení všech změn restartujte službu Redis na všech uzlech, abyste použili poslední změny.

systemctl restart redis

8. V tomto okamžiku by nyní měl mít každý uzel clusteru ID. Můžete to zkontrolovat v souboru protokolu na adrese /var/log/redis/redis.log.

cat /var/log/redis/redis.log

9. Dále otevřete port 6397 a 16379 na všech instancích. Pozdější port se používá pro klastrovou sběrnici (komunikační kanál node-to-node využívající binární protokol). Toto je základní požadavek pro připojení TCP clusteru Redis.

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

Krok 3: Vytvoření clusteru Redis

10. Chcete-li vytvořit cluster, použijte klienta redis-cli příkazového řádku následovně. --cluster create umožňuje vytvoření clusteru a --cluster-replicas 1 znamená vytvoření jedné repliky na hlavní server.

Pro naše nastavení, které má 6 uzlů, budeme mít 3 mastery a 3 slave.

Všimněte si, že prvních 6 uzlů bude považováno za master (M) a další tři budou považovány za slave (S). První slave, tj. 10.42.0.200:6379 replikuje prvního mastera, tj. 10.42.0.247:6379, druhý slave replikuje druhého master, v tomto pořadí.

Následující příkaz je naformátován tak, aby výsledek představoval naše výše uvedené logické nastavení.

redis-cli --cluster create 10.42.0.247:6379 10.42.0.197:6379 10.42.0.132:6379 10.42.0.200:6379 10.42.0.21:6379 10.42.0.34:6379 --cluster-replicas 1

11. Jakmile je vytvoření clusteru úspěšné, spusťte následující příkaz na libovolném hostiteli (uveďte jeho IP adresu pomocí příznaku -h), aby se zobrazily všechny uzly clusteru.

redis-cli -h 10.42.0.247 -p 6379 cluster nodes

Měli byste být schopni vidět všechny uzly clusteru, přičemž podřízené jednotky označují své mastery, jak je znázorněno na následujícím snímku obrazovky.

Různá pole jsou v tomto pořadí: ID uzlu, IP adresa:port, příznaky, poslední odeslaný ping, poslední přijatý pong, konfigurační epocha, stav spojení, sloty (pro mastery).

Krok 4: Testování Redis Cluster Failover

12. V této části si ukážeme, jak testovat převzetí služeb při selhání clusteru. Nejprve si všimněme mistrů.

redis-cli -h 10.42.0.247 -p 6379 cluster nodes  | grep master

Všimněte si také otroků Redis.

redis-cli -h 10.42.0.247 -p 6379 cluster nodes  | grep slave

13. Dále zastavme službu Redis na jednom z hlavních uzlů, např. 10.42.0.197, a zkontrolujte všechny hlavní uzly v clusteru.

systemctl stop redis
redis-cli -h 10.42.0.247 -p 6379 cluster nodes | grep master

Z následujícího snímku obrazovky můžete vidět, že uzel 10.42.0.197:6367 je ve stavu selhání a jeho podřízený 10.42.0.21:6379 byl povýšen do stavu hlavního.

14. Nyní znovu spustíme službu Redis na neúspěšném uzlu a zkontrolujeme všechny hlavní servery v clusteru.

systemctl start redis
redis-cli -h 10.42.0.247 -p 6379 cluster nodes  | grep master

Zkontrolujte také podřízené jednotky klastru, abyste potvrdili, že neúspěšný hlavní server je nyní podřízeným zařízením.

redis-cli -h 10.42.0.247 -p 6379 cluster nodes  | grep slave

Krok 5: Testování replikace dat napříč clusterem Redis

15. Tato poslední část vysvětluje, jak ověřit replikaci dat clusteru. Na jednom z masterů vytvoříme klíč a hodnotu a pokusíme se je přečíst ze všech uzlů clusteru následovně. Pomocí přepínače -c povolte podporu clusteru v obslužném programu redis-cli a přistupujte k datům v režimu clusteru.

redis-cli -c -h 10.42.0.247 -p 6379 set name 'TecMint.com'
redis-cli -c -h 10.42.0.247 -p 6379 get name
redis-cli -c -h 10.42.0.21 -p 6379 get name
redis-cli -c -h 10.42.0.132 -p 6379 get name
redis-cli -c -h 10.42.0.200 -p 6379 get name
redis-cli -c -h 10.42.0.197 -p 6379 get name
redis-cli -c -h 10.42.0.34 -p 6379 get name

Pointa je, že Redis Cluster je preferovaný způsob, jak získat automatické sdílení, replikaci a vysokou dostupnost. Ve zbytku souboru /etc/redis.conf je mnoho dalších dobře zdokumentovaných konfiguračních parametrů, více informací najdete v oficiální dokumentaci: Redis cluster tutorial a Redis specifikace clusteru.

Tím se dostáváme ke konci třídílné série tutoriálů Redis. Níže uvedený formulář zpětné vazby lze použít k odeslání dotazů nebo komentářů.