Vyhledávání na webu

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


Redis (Remote Dictionary Server) je velmi oblíbený a široce používaný open source, rychlý, distribuovaný a efektivní server databáze klíč-hodnota/datová struktura v paměti.

Nabízí bohatou sadu funkcí, díky nimž je efektivní pro širokou škálu případů použití: jako databáze, vrstva mezipaměti, zprostředkovatel zpráv nebo fronta; použitelné ve webových aplikacích, chatovacích aplikacích a aplikacích pro zasílání zpráv, hraní her, analýzu dat v reálném čase a mnoho dalšího.

Podporuje flexibilní datové struktury, asynchronní replikaci master-slave pro škálování výkonu čtení a ochranu před ztrátou dat, sharding na straně klienta pro škálování výkonu zápisu, dvě formy persistence pro zápis dat v paměti na disk v kompaktním formátu, klastrování a rozdělení. Obsahuje také automatické převzetí služeb při selhání pro nasazení s vysokou dostupností prostřednictvím Redis Sentinel, Lua skriptování, transakcí a mnoha dalších.

Redis je ŽÁDNÁ SQL nebo nerelační databáze a nabízí některé výkonnostní výhody oproti tradičním databázovým systémům (jako jsou MySQL/MariaDB, PostgreSQLatd.), protože všechna jeho data jsou umístěna nebo jsou uložena v paměti, takže jsou snadno přístupná aplikaci, zatímco tradiční databáze musí všechna data zapisovat nebo číst z disku nebo externího zdroje.

Redis se stává stále převládající volbou pro ukládání do mezipaměti, které umožňuje opětovné použití dat uložených v mezipaměti (uložených v hlavním paměťovém prostoru aplikace) namísto neustálého dotazování databáze na často používaná data. Je tedy skvělým společníkem RDMS (Systémy správy relačních databází), který v konečném důsledku zlepšuje výkon aplikací.

V této třídílné sérii tutoriálů Redis probereme, jak nastavit a používat některé klíčové funkce Redis, kterými jsou replikace, vysoká dostupnost pomocí Redis Sentinel a Redis Cluster, články jsou:

Tato příručka ukazuje, jak nastavit Redis Replication (s Cluster-Mode Disabled) v CentOS 8 Linux, včetně toho, jak nainstalovat Redis, nakonfigurovat hlavní a repliky a otestujte replikaci.

Důležité: Cluster Redis (tj. Cluster replikace) se zakázaným režimem clusteru má jednu skupinu uzlů ( např. master a jedna nebo dvě repliky), kde cluster Redis s povoleným režimem clusteru se může skládat ze dvou nebo více skupin uzlů (např. tři mastery, z nichž každý má podřízené jednotky nebo dva).

Předpoklady:

  1. Servery s instalací CentOS 8

Nastavení testovacího prostředí

Redis Master Server: 10.42.0.247
Redis Replica1/Slave1: 10.42.0.21
Redis Replica2/Slave2: 10.42.0.34

S výše uvedeným nastavením (které má jeden primární/hlavní uzel pro čtení/zápis a 2 replikované uzly pouze pro čtení) máme jednu skupinu uzlů, která obsahuje všechna data clusteru v každém uzlu. Jakmile se slave zařízení připojí k masteru, obdrží počáteční kopii celé databáze a všechna data, která dříve existovala na slave zařízení, budou vyřazena.

Kromě toho může klient zapisovat pouze do hlavního serveru, ale číst z libovolného uzlu v clusteru. A jak jsou zápisy prováděny na masteru, šíří se do všech připojených slave zařízení pro aktualizaci slave datových sad v reálném čase.

Krok 1: Instalace Redis na CentOS 8

1. Nejprve se přihlaste do všech uzlů CentOS 8 přes SSH a poté nainstalujte balíček Redis na všechny uzly (hlavní a repliky ) pomocí správce balíčků DNF, jak je znázorněno.


dnf install @redis

2. Po dokončení instalace balíčku Redis spusťte službu Redis, povolte její automatické spouštění při každém spuštění systému a zkontrolujte, zda je spustit a spustit následovně.

systemctl start redis
systemctl enable redis
systemctl status redis

3. Zprovoznění serveru Redis můžete také potvrdit kontrolou naslouchacích portů pomocí příkazu ss následujícím způsobem.

ss -ltpn | grep redis-server

Krok 2: Konfigurace serveru Redis Master Server

4. Redis se konfiguruje pomocí konfiguračního souboru /etc/redis.conf, což je samostatně zdokumentovaný příklad konfiguračního souboru. Nejprve vytvořte zálohu původního souboru a poté jej otevřete pro úpravy pomocí zvoleného editoru příkazového řádku.

cp /etc/redis.conf /etc/redis.conf.org
vi /etc/redis.conf

5. Ve výchozím nastavení je instance Redis nakonfigurována tak, aby naslouchala a přijímala připojení na rozhraní loopback pomocí direktivy bind. Pro komunikaci s replikami by měl být master nakonfigurován tak, aby naslouchal na adrese zpětné smyčky IPv4 a své LAN IP adrese, tj. 10.42.0.247.

bind 127.0.0.1 10.42.0.247

6. Dále nastavte parametr chráněného režimu na no, abyste umožnili komunikaci s replikami, jak je znázorněno.

protected-mode no

Redis také naslouchá na portu 6379, který je nastaven pomocí direktivy port. Toto je datový port pro komunikaci s aplikačními rozhraními API nebo klienty CLI.

port 6379

7. Abychom mohli volitelně zabezpečit komunikaci master-replica, můžeme chránit master pomocí direktivy requirepass, takže klienti/repliky musí zadejte ověřovací heslo před spuštěním jakýchkoli příkazů nebo zahájením procesu synchronizace replikace, jinak hlavní server odmítne požadavek klienta/repliky (nezapomeňte nastavit bezpečné heslo).

Následující možnost použijeme pro demonstrační účely, abychom ukázali, jak to funguje.

requirepass  Securep@55Here

8. Také protokoly Redis jsou uloženy v souboru /var/log/redis/redis.log, toto se nastavuje pomocí direktivy logfile a výchozí úroveň výřečnosti serveru je notice definovaná pomocí parametru loglevel.

loglevel  notice
logfile  /var/log/redis/redis.log

9. Protože systemd je výchozí správce systému a služeb v CentOS 8, můžete nakonfigurovat Redis pro interakci strom dohledu systemd nastavením parametru supervised na systemd.

supervised systemd

10. Po provedení všech nezbytných konfigurací uložte soubor a zavřete jej. Poté restartujte službu Redis, abyste použili nové změny.

systemctl daemon-reload
systemctl restart redis

11. Pro přístup k serveru Redis potřebujeme použít redis-cli (rozhraní příkazového řádku k serveru redis). Ve výchozím nastavení se připojuje k serveru na localhost (na 127.0.0.1 portu 6379). Všimněte si, že protože je server zabezpečen před klienty pomocí hesla, spuštění příkazu před autentizací by mělo selhat.

Pomocí příkazu auth zadejte ověřovací heslo, jak je znázorněno na následujícím snímku obrazovky.

redis-cli
127.0.0.1:6379> client list
127.0.0.1:6379> AUTH Securep@55Here
127.0.0.1:6379> client list

12. Chcete-li se připojit k replikám (po jejich konfiguraci, jak je popsáno v další části), použijte -h a -p možnosti specifikovat IP adresu repliky/název hostitele a port (nikoli port 6379 musí být otevřen v bráně firewall repliky).

redis-cli -h 10.42.0.21 -p 6379

13. Dále otevřete datový port serveru Redis ve bráně firewall, abyste povolili příchozí připojení k hlavnímu serveru, a následně znovu načtěte pravidla brány firewall pomocí příkazu firewall-cmd, jak je znázorněno.

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

Krok 3: Konfigurace Redis Replica/Slave serverů

14. Chcete-li rychle nastavit instanci Redis jako repliku za chodu, použijte nástroj redis-cli a zavolejte REPLICAOF podle obrázku.

redis-cli replicaof 10.42.0.247 6379
OR
redis-cli
127.0.0.1:6379> REPLICAOF 10.42.0.247 6379

15. Aby bylo replikační připojení trvalé, musíte v konfiguračním souboru provést následující změny. Začněte zálohováním původního souboru a poté jej otevřete pro úpravy.

cp /etc/redis.conf /etc/redis.conf.org
vi /etc/redis.conf

16. Chcete-li klientům umožnit připojení k replice za účelem čtení dat, přidejte do direktivy vazby adresu IP repliky.

replica1
bind 127.0.0.1 10.42.0.21

replica2
bind 127.0.0.1 10.42.0.34

Nastavení instance Redis jako repliky

17. Chcete-li konfigurovat instanci Redis jako repliku, použijte parametr replicaof a nastavte IP adresu (nebo název hostitele) a port hlavního uzlu jako hodnoty.

replicaof 10.42.0.247 6379

Nastavení Replica na Authenticate to Master

18. Dále, protože naše hlavní instance je chráněna heslem, musíme heslo nastavit v konfiguraci repliky, aby se mohla autentizovat k hlavnímu serveru pomocí masterauth parametr.

masterauth Securep@55Here

19. Navíc, když replika ztratí spojení s hlavním serverem nebo když replikace probíhá, je replika nakonfigurována tak, aby odpovídala na požadavky klientů, přičemž může být „neaktuální “data. Ale pokud se jedná o první synchronizaci, může být datový soubor prázdný. Toto chování je řízeno parametrem replica-serve-stale-data.

A protože Redis 2.6 jsou ve výchozím nastavení repliky pouze pro čtení, řídí se to parametrem replica-read-only. Můžete provést další úpravy konfigurace replik, aby vyhovovaly potřebám vaší aplikace.

20. Jakmile provedete všechny potřebné změny, restartujte službu Redis na všech replikách.

systemctl restart redis

21. Otevřete také port 6379 ve bráně firewall, abyste povolili připojení z hlavního serveru a klientů k replikám, a znovu načtěte pravidla brány firewall.

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

Krok 4: Zkontrolujte stav replikace hlavní repliky

22. Jakmile je konfigurace replikace master-replica dokončena, můžeme následujícím způsobem zkontrolovat, zda nastavení funguje správně.

Na hlavním počítači spusťte následující příkazy.

redis-cli
127.0.0.1:6379> AUTH Securep@55Here
127.0.0.1:6379> info replication

23. Dále zkontrolujte stav replikace na replikách/podřízených zařízeních.

redis-cli
127.0.0.1:6379> info replication

23. Nyní otestujeme replikaci nastavením páru klíč–hodnota v hlavní instanci a zkontrolujeme, zda jsou data synchronizována s replikami.

Na masteru proveďte toto:

redis-cli
127.0.0.1:6379> AUTH Securep@55Here
127.0.0.1:6379> set domain 'linux-console.net'

24. Poté zkontrolujte, zda byla data synchronizována s replikami, jak je znázorněno.

redis-cli
127.0.0.1:6379> get domain

Ochrana hlavní instance před rizikem ztráty některých zápisů

25. Redis má funkci, která umožňuje hlavní instanci omezit riziko ztráty některých zápisů v případě, že není k dispozici dostatek replik, na určený počet sekund.

To znamená, že master může přestat přijímat zápisy, pokud je připojeno méně než N replik, které mají zpoždění menší nebo rovné M sekund, jak je řízeno min. -replicas-to-write a min-replicas-max-lag.

Chcete-li je nastavit, odkomentujte je a nastavte hodnoty podle vašich požadavků na nastavení v /etc/redis.conf, jak ukazuje následující snímek obrazovky. Tato konfigurace znamená, že od posledního pingu po repliky, po 10 sekundách, pokud jsou online méně než 2 repliky, master přestane přijímat zápisy.

min-replicas-to-write 2
min-replicas-max-lag 10

Další možnosti naleznete ve zbytku konfiguračního souboru /etc/redis.conf a podrobnější informace o replikaci najdete v dokumentaci Redis.

V příštím článku se budeme zabývat tím, jak nastavit Redis pro vysokou dostupnost se Sentinelem v CentOS 8. Do té doby zůstaňte uzamčeni a nezapomeňte se podělit o své myšlenky a otázky pomocí níže uvedeného formuláře pro komentáře, abyste nás mohli kontaktovat.