Redis (Server vzdáleného slovníku ) je velmi oblíbený a široce používaný open source, rychlý, distribuovaný a efektivní server s databází klíč-hodnota v paměti/datovou strukturou.
Nabízí bohatou sadu funkcí, díky kterým 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 , Skriptování Lua , transakce a mnoho dalších.
Být NO SQL nebo nerelační databáze Redis nabízí určité výkonnostní výhody oproti tradičním databázovým systémům (jako je MySQL/MariaDB , PostgreSQL , atd.), 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 stal 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 to tedy fantastický společník RDMS (Systémy správy relačních databází ) ke konečnému zlepšení výkonu aplikace.
V tomto třídílném Redis série tutoriálů, 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:
Část 1 :Jak nastavit replikaci Redis (se zakázaným režimem clusteru) v CentOS 8 Část 2 :Jak nastavit Redis pro vysokou dostupnost s Sentinel v CentOS 8 Část 3 :Jak nastavit Redis Cluster (s povoleným Cluster-Mode) v CentOS 8Tato příručka ukazuje, jak nastavit Redis Replication (s Režim clusteru deaktivován ) v CentOS 8 Linux, včetně toho, jak nainstalovat Redis, nakonfigurovat hlavní server a repliky a otestovat replikaci.
Důležité :Redis Cluster (tj. Replikační klastr ) se zakázaným režimem clusteru má jednu skupinu uzlů (např. hlavní). a jednu 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á slave nebo dva).
Předpoklady:
- 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
Logická reprezentace Redis Replication Diagram
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 připojí k masteru, obdrží počáteční kopii celé databáze a všechna data, která dříve existovala na slave, 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. Pro začátek se přihlaste do všech CentOS 8 uzly přes SSH, poté nainstalujte Redis balíček na všech uzlech (hlavní a repliky) pomocí správce balíčků DNF, jak je znázorněno.
# dnf install @redis
2. Po dokončení Redis instalaci balíčku, spusťte Redis povolte, aby se automaticky spouštěla při každém spuštění systému, a zkontrolujte, zda je v provozu, a to následovně.
# systemctl start redis # systemctl enable redis # systemctl status redis
3. Můžete také potvrdit, že Redis server je spuštěn a běží kontrolou naslouchacích portů pomocí příkazu ss, jak je uvedeno níže.
# ss -ltpn | grep redis-server
Potvrďte porty serveru Redis
Krok 2:Konfigurace serveru Redis Master Server
4. Redis se konfiguruje pomocí /etc/redis.conf konfigurační soubor, 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í Redis instance je nakonfigurována tak, aby naslouchala a přijímala připojení na zpětné smyčce rozhraní pomocí příkazu bind. Pro komunikaci s replikami by měl být master nakonfigurován tak, aby naslouchal na IPv4 adresu zpětné smyčky a její LAN IP adresu, 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ý se nastavuje pomocí port
směrnice. Toto je datový port pro komunikaci s aplikačními rozhraními API nebo klienty CLI.
port 6379
Konfigurace serveru Redis Master Server
7. Chcete-li volitelně zabezpečit hlavní repliku komunikace, můžeme ochránit master pomocí requirepass tak, že klienti/repliky musí před spuštěním jakýchkoli příkazů nebo zahájením procesu synchronizace replikace vydat ověřovací heslo, jinak master 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 [email protected]
Nastavte heslo pro ověření
8. Protokoly Redis jsou také uloženy v /var/log/redis/redis.log soubor, toto se nastavuje pomocí souboru protokolu direktiva a výchozí úroveň upovídanosti serveru je notice , definovaný pomocí úrovně protokolu parametr.
loglevel notice logfile /var/log/redis/redis.log
Nastavte soubor protokolu Redis a úroveň protokolu
9. Od systemd je výchozí správce systému a služeb v CentOS 8 , můžete nakonfigurovat Redis pro interakci s systemd strom dohledu nastavením dozorovaného parametr na systemd .
supervised systemd
Nastavte Redis Supervisor na Systemd
10. Po provedení všech nezbytných konfigurací uložte soubor a zavřete jej. Poté restartujte Redis službu použít nové změny.
# systemctl daemon-reload # systemctl restart redis
11. Pro přístup k Redis serveru, musíme použít redis-cli (rozhraní příkazového řádku k redis-serveru). Ve výchozím nastavení se připojuje k serveru na localhost (na adrese 127.0.0.1 port 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.
Použijte autorizaci příkaz k zadání ověřovacího hesla, 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 [email protected] 127.0.0.1:6379> client list
Přístup k serveru Redis prostřednictvím rozhraní Redis CLI
12. Chcete-li se připojit k replikě (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 (ne tento 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 Redis datový port serveru ve bráně firewall, aby se umožnila 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 Redis instance jako replika za běhu, použijte redis-cli a zavolejte REPLICAOF příkaz, jak je znázorněno.
# redis-cli replicaof 10.42.0.247 6379 OR # redis-cli 127.0.0.1:6379> REPLICAOF 10.42.0.247 6379
Připojte se k hlavní instanci Redis
15. Aby bylo připojení replikace 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 bind IP adresu 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 nakonfigurovat instanci Redis jako repliku , použijte repliku a nastavte IP adresu (nebo název hostitele) a port hlavního uzlu jako hodnoty.
replicaof 10.42.0.247 6379
Nastavení repliky na ověření podle hlavního serveru
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 [email protected]
19. Navíc, když replika ztratí spojení s hlavním serverem nebo když replikace probíhá, replika je nakonfigurována tak, aby odpovídala na požadavky klientů, pravděpodobně s „neaktuálním “data. Ale pokud se jedná o první synchronizaci, může být datová sada prázdná. Toto chování je řízeno pomocí replica-serve-stale-data parametr.
A od Redis 2.6 ve výchozím nastavení jsou repliky pouze pro čtení, toto je řízeno replikou pouze pro čtení parametr. 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 v 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 master-replika konfigurace replikace je dokončena, můžeme zkontrolovat, zda nastavení funguje správně následovně.
Na hlavním počítači spusťte následující příkazy.
# redis-cli 127.0.0.1:6379> AUTH [email protected] 127.0.0.1:6379> info replication
Zkontrolujte Redis Relocation Info na Master
23. Dále zkontrolujte stav replikace na replikách/podřízených jednotkách.
# redis-cli 127.0.0.1:6379> info replication
Zkontrolujte informace o replikaci Redis na Redis Replica 1
Zkontrolujte informace o replikaci Redis na Redis Replica 2
23. Nyní otestujeme replikaci nastavením páru klíč–hodnota v hlavní instanci a zkontrolujte, zda jsou data synchronizována s replikami.
Na hlavním zařízení proveďte toto:
# redis-cli 127.0.0.1:6379> AUTH [email protected] 127.0.0.1:6379> set domain 'www.tecmint.com'
Nastavte hodnotu klíče v hlavní instanci
24. Poté zkontrolujte, zda byla data synchronizována s replikami, jak je znázorněno.
# redis-cli 127.0.0.1:6379> get domain
Zkontrolujte stav synchronizace dat na replikách
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 jich je méně než N repliky připojené, mající zpoždění menší nebo rovné M sekund, jak je řízeno min-replicas-to-write a min-replicas-max-lag možnosti.
Chcete-li je nastavit, odkomentujte je a nastavte hodnoty podle vašich požadavků na nastavení v /etc/redis.conf , jak je znázorněno na následujícím snímku 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
Ochrana Redis Master před ztrátou zápisu
Další možnosti naleznete ve zbytku /etc/redis.conf konfigurační soubor a další podrobnosti si přečtěte o replikaci 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.
Sharing is Caring…Sdílet na FacebookuSdílet na TwitteruSdílet na LinkedinSdílet na Redditu