Wéi Setup Redis Replikatioun (mat Cluster-Modus behënnert) an CentOS 8 - Deel 1


Redis (Remote Dictionary Server) ass e ganz populäre a wäit benotzte Open Source, séier, verdeelt an effizient In-Memory Schlësselwäert Datebank/Datestrukturserver.

Et bitt e räiche Set vu Funktiounen, déi et fir eng breet Palette vu Benotzungsfäll effektiv maachen: als Datebank, Cachingschicht, Messagebroker oder Schlaang; applicabel an Webapplikatiounen, Chat- a Messagerieapplikatiounen, Gaming, Echtzäit Datenanalyse a sou vill méi.

Et ënnerstëtzt flexibel Datestrukturen, Master-Sklave asynchrone Replikatioun fir d'Liesleistung ze skaléieren a Schutz géint Dateverloscht, Client-Säit Sharding fir d'Schreifleistung ze skaléieren, zwou Forme vu Persistenz fir In-Memory Daten op Disk an engem kompakten Format ze schreiwen, Clustering, an opzedeelen. Et enthält och automatesch Failovers fir héich Disponibilitéit Deployment iwwer Redis Sentinel, Lua Scripting, Transaktiounen, a vill méi.

Sinn eng KENG SQL oder net-relational Datebank, Redis bitt e puer Leeschtungsvirdeeler iwwer traditionell Datebanksystemer (wéi MySQL/MariaDB, PostgreSQL, etc.), well all seng Donnéeën wunnen oder an der Erënnerung gespäichert sinn, sou datt et liicht zougänglech ass fir eng Applikatioun, wärend traditionell Datenbanken all Donnéeën op oder vun enger Disk oder enger externer Quell liesen musse schreiwen.

Redis ass eng ëmmer méi heefeg Wiel fir Caching ginn, wat d'Wiederbenotzen vun cachéierten Donnéeën erlaabt (gespäichert an der Haaptspeicherraum vun enger Applikatioun) anstatt ëmmer eng Datebank fir dacks benotzten Donnéeën ze froen. Also ass et e fantastesche Begleeder vun RDMS (Relational Datebank Management Systemer) fir schlussendlech d'Applikatioun Leeschtung ze verbesseren.

An dëser dräi-Deel Redis Tutorial Serie wäerte mir iwwerdecken wéi Dir e puer vun de Redis 'Schlësselfeatures opstellt a benotzt, déi Replikatioun sinn, héich Disponibilitéit mat Redis Sentinel a Redis Cluster, d'Artikelen sinn:

Dëse Guide weist wéi Dir Redis Replikatioun opstellt (mat Cluster-Mode Disabled) an CentOS 8 Linux, och wéi Dir Redis installéiere wëllt, de Master a Repliken konfiguréieren an d'Replikatioun testen.

Wichteg: E Redis Cluster (dh e Replikatiounscluster) mam Clustermodus behënnert huet eng eenzeg Nodegrupp (zB e Master an een oder zwee Repliken) wou e Redis Cluster mat Clustermodus aktivéiert aus zwee oder méi Nodegruppen besteet (zB dräi Masters) Jiddereen huet Sklaven oder zwee).

  1. Server mat CentOS 8 Installatioun

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

Mat dem uewe genannte Setup (deen en eenzege liesen/schreiwen primär/Master Node an 2 read-only replica Node huet), hu mir eng eenzeg Node Grupp déi all d'Daten vum Cluster an all Node enthält. Wann e Sklave mat engem Master verbënnt, kritt en eng initial Kopie vun der voller Datebank an all Daten, déi virdru um Sklave existéiert hunn, ginn verworf.

Ausserdeem kann e Client nëmmen un de Master schreiwen, awer aus all Node am Cluster liesen. A wéi d'Schreiwe um Master ausgefouert ginn, propagéiert se op all verbonne Sklaven fir d'Sklave-Datasets an Echtzäit ze aktualiséieren.

Schrëtt 1: Redis installéieren op CentOS 8

1. Fir unzefänken, loggt Iech an all CentOS 8 Noden iwwer SSH un, installéiert dann de Redis Package op all Noden (Master a Repliken) mam DNF Package Manager wéi gewisen.

# dnf install @redis

2. No der Fäerdegstellung vun der Redis Package Installatioun, start de Redis Service, aktivéiert et automatesch bei all Systemboot ze starten a kontrolléiert ob et op a leeft wéi follegt.

# systemctl start redis
# systemctl enable redis
# systemctl status redis

3. Dir kënnt och bestätegen datt de Redis-Server up a Lafen ass, andeems Dir d'Nolauschterer Ports iwwerpréift mat dem ss Kommando, wéi follegt.

# ss -ltpn | grep redis-server

Schrëtt 2: Redis Master Server konfiguréieren

4. Redis gëtt mat der /etc/redis.conf Konfiguratiounsdatei konfiguréiert, eng selbstdokumentéiert Beispill Konfiguratiounsdatei. Als éischt, erstellt e Backup vun der ursprénglecher Datei, maach se dann op fir z'änneren mat Ärem Kommandozeilen Editor vun der Wiel.

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

5. Par défaut ass eng Redis Instanz konfiguréiert fir Verbindungen op der Loopback Interface ze lauschteren an ze akzeptéieren, mat der Binddirektiv. Fir mat de Repliken ze kommunizéieren, sollt de Master konfiguréiert sinn fir op der IPv4 Loopback Adress a seng LAN IP Adress ze lauschteren, dh 10.42.0.247.

bind 127.0.0.1 10.42.0.247

6. Als nächst setzt de geschützte Modus-Parameter op nee fir d'Kommunikatioun mat de Repliken z'erméiglechen wéi se gewisen.

protected-mode no

Och Redis lauschtert um Hafen 6379 deen mat der Port Direktiv gesat gëtt. Dëst ass den Dateport fir mat Applikatioun APIen oder CLI Clienten ze kommunizéieren.

port 6379

7. Fir optional d'Master-Replica-Kommunikatioun ze sécheren, kënne mir de Master mat der Requirepass-Direktiv schützen, sou datt d'Clienten/Repliken en Authentifikatiounspasswuert mussen ausginn ier Dir Kommandoen ausféiert oder e Replikatiounssynchroniséierungsprozess starten, soss refuséiert de Master de Client/Replika Ufro (erënnert un e séchert Passwuert ze setzen).

Mir benotzen déi folgend Optioun fir Demonstratiounszwecker, fir ze weisen wéi et funktionnéiert.

requirepass  [email 

8. Och Redis Logbicher ginn an der /var/log/redis/redis.log Datei gespäichert, dëst gëtt mat der Logfile-Direktiv gesat an de Standardserververbositéitsniveau ass Notiz, definéiert mam Loglevel-Parameter.

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

9. Zënter systemd ass de Standardsystem a Servicemanager am CentOS 8, kënnt Dir Redis konfiguréieren fir mat dem systemd Iwwerwaachungsbaum ze interagéieren andeems Dir den iwwerwaachte Parameter op systemd setzt.

supervised systemd

10. Nodeems Dir all déi néideg Konfiguratiounen gemaach hutt, späichert d'Datei a schléisst se. Da starten de Redis Service nei fir déi nei Ännerungen z'applizéieren.

# systemctl daemon-reload
# systemctl restart redis

11. Fir Zougang zum Redis-Server ze kréien, musse mir de Redis-cli benotzen (eng Kommandozeil-Interface zum Redis-Server). Par défaut verbënnt et mam Server um localhost (um 127.0.0.1 Hafen 6379). Bedenkt datt well de Server vu Cliente mat engem Passwuert geséchert ass, e Kommando auszeféieren virun der Authentifikatioun sollt ausfalen.

Benotzt den Auth-Kommando fir d'Authentifikatiounspasswuert ze liwweren wéi am folgenden Screenshot gewisen.

# redis-cli
127.0.0.1:6379> client list
127.0.0.1:6379> AUTH [email 
127.0.0.1:6379> client list

12. Fir mat enger Replica ze verbannen (nodeems se konfiguréiert goufen wéi an der nächster Sektioun beschriwwen), benotzt d'Optiounen -h an -p fir d'Replica IP Adress/Hostnumm ze spezifizéieren an port respektiv (net datt port 6379 muss an der Replica d'Firewall opgemaach ginn).

# redis-cli -h 10.42.0.21 -p 6379

13. Als nächst, öffnen de Redis-Server-Datenhafen an der Firewall fir inbound Verbindungen zum Master z'erméiglechen, a spéider d'Firewall-Regele mat dem Firewall-cmd Kommando eroflueden wéi gewisen.

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

Schrëtt 3: Redis Replica/Sklave Server konfiguréieren

14. Fir séier eng Redis Instanz als Replica op der Flucht ze setzen, benotzt de Redis-cli Utility a rufft de REPLICAOF Kommando wéi gewisen.

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

15. Fir eng Replikatiounsverbindung permanent ze maachen, musst Dir déi folgend Ännerungen an der Konfiguratiounsdatei maachen. Fänkt un mat der ursprénglecher Datei ze backen, maach se dann op fir z'änneren.

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

16. Fir Clienten z'erméiglechen, mat der Replica ze verbannen fir Daten ze liesen, füügt d'Replica IP Adress un d'Binddirektiv.

# replica1
bind 127.0.0.1 10.42.0.21

# replica2
bind 127.0.0.1 10.42.0.34

17. Fir eng Redis Instanz als Replica ze konfiguréieren, benotzt de Replicaof Parameter a setzt d'IP Adress vum Master Node (oder Hostnumm) a Port als Wäerter.

replicaof 10.42.0.247 6379

18. Als nächst, well eis Meeschterinstanz mat engem Passwuert geschützt ass, musse mir d'Passwuert an der Replica-Konfiguratioun setzen fir et z'erméiglechen fir dem Master z'authentifizéieren, mam Masterauth-Parameter.

masterauth [email 

19. Zousätzlech, wann eng Replika seng Verbindung mam Master verléiert, oder wann d'Replikatioun amgaang ass, ass d'Replika konfiguréiert fir op Client Ufroen ze äntweren, méiglecherweis mat aus aktuellen Donnéeën. Awer wann et déi éischt Synchroniséierung, dann den Dateset kann einfach eidel sinn. Dëst Verhalen gëtt vum Replica-serve-stale-data Parameter kontrolléiert.

A well Redis 2.6 als Standard-Replikaen nëmme liesen sinn, gëtt dëst vum Replica-read-only Parameter kontrolléiert. Dir kënnt aner Replik Konfiguratiounsanpassunge maachen fir Är Uwendungsbedierfnesser ze passen.

20. Wann Dir all déi néideg Ännerungen gemaach hutt, starten de Redis Service op all Repliken nei.

# systemctl restart redis

21. Och opzemaachen port 6379 an der Firewall fir Verbindunge vum Meeschter a Clienten op d'Repliquen z'erméiglechen, a lued d'Firewallregelen nei.

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

Schrëtt 4: Kontrolléiert de Master-Replikatiouns-Replikatiounsstatus

22. Wann d'Master-Replika-Replikatiounskonfiguratioun fäerdeg ass, kënne mir kucken ob de Setup gutt funktionnéiert wéi follegt.

Op de Master, lafen déi folgend Kommandoen.

# redis-cli
127.0.0.1:6379> AUTH [email 
127.0.0.1:6379> info replication

23. Kontrolléiert och de Replikatiounsstatus op de Repliken/Sklaven wéi follegt.

# redis-cli
127.0.0.1:6379> info replication

23. Loosst eis elo d'Replikatioun testen duerch Astellungen e Schlësselwäert an der Masterinstanz a kontrolléiert ob d'Donnéeën mat de Repliken synchroniséiert sinn.

Op de Meeschter, maacht dat:

# redis-cli
127.0.0.1:6379> AUTH [email 
127.0.0.1:6379> set domain 'linux-console.net'

24. Da kontrolléiert ob d'Donnéeën op d'Repliken synchroniséiert goufen wéi gewisen.

# redis-cli
127.0.0.1:6379> get domain

25. Redis huet eng Fonktioun datt e Meeschter Instanz erlaabt de Risiko vun Verléierer e puer schreift am Fall net genuch replicas sinn sinn limitéiert, op eng spezifizéiert Zuel vu Sekonnen.

Dat heescht, datt e Meeschter kann ophalen Schreiwen ze akzeptéieren wann et manner wéi N replicas verbonne sinn, mat enger Lag manner oder gläich wéi M Sekonnen, wéi kontrolléiert vun der min-Replicas-ze-schreiwen an min-Replicas-max-lag Optiounen respektiv.

Fir se ze setzen, decommentéiert se a setzt d'Wäerter no Äre Setupfuerderungen an /etc/redis.conf, wéi am folgenden Screenshot gewisen. Dës Konfiguratioun bedeit datt, vum leschte Ping op d'Replikaen, no 10 Sekonnen, wann et manner wéi 2 Repliken online sinn, de Meeschter ophalen Schreiwen ze akzeptéieren.

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

Dir kënnt méi Optiounen am Rescht vun der /etc/redis.conf Konfiguratiounsdatei fannen a fir méi Detailer iwwer Replikatioun an der Redis Dokumentatioun liesen.

Am nächsten Artikel, wäerte mir Cover wéi Redis fir héich Disponibilitéit mat Sentinel am CentOS 8. Bis dohinner, bleiwen gespaart an erënneren Är thoughtrs a Froen ze deelen mat eisem Kommentar Form hei ënnendrënner ass do fir Iech eis ze erreechen.