Wéi konfiguréieren ech e Redis Cluster am CentOS 8 - Deel 3


Redis Cluster ass eng agebaute Redis Feature déi automatesch Sharding, Replikatioun an héich Disponibilitéit ënnerstëtzt déi virdru mat Sentinels implementéiert gouf. Et ass fir zwee Haaptzwecker entworf: een ass fir Ären Datesaz automatesch ënner multiple Instanzen opzedeelen an zweetens fir e gewësse Grad vun Disponibilitéit während Partitionen ze bidden, Operatiounen weiderzeféieren wann e puer Instanzen (besonnesch Masters) versoen oder net fäeg sinn mat der Majoritéit vun ze kommunizéieren. Noden am Cluster.

Wéi och ëmmer, de Cluster stoppt fir am Fall vu gréissere Feeler ze bedreiwen (zB wann d'Majoritéit vun de Masterinstanzen net verfügbar sinn). Och, wann e Master a Sklave gläichzäiteg feelen, kann de Cluster net normal Operatiounen weiderféieren (obwuel d'Léisung ass méi Wirbelen ze addéieren oder eng Asymmetrie am Cluster ze kreéieren, fir de Cluster Layout automatesch z'änneren).

Laut der Redis Cluster Dokumentatioun muss de Minimal Cluster dee wéi erwaart funktionnéiert mindestens 3 Masterknäppchen enthalen.Awer déi gëeegent Setup fir héich Disponibilitéit soll mindestens 6 Wirbelen mat dräi Masteren an dräi Sklaven hunn, all Master huet engem Sklave.

Wichteg: Redis Cluster huet och e puer Aschränkungen, déi e Mangel un Ënnerstëtzung fir NATted Ëmfeld sinn, souwéi déi wou IP Adressen oder TCP Ports zB ënner Docker nei gemappt ginn. Zousätzlech, net all Client Bibliothéik ënnerstëtzt et.

Dësen Artikel weist wéi Dir e Redis Cluster opbaut (mat Cluster-Mode Disabled) am CentOS 8. Et enthält wéi Dir Redis installéiere kënnt, d'Clusterknäppchen konfiguréieren, e Cluster erstellen an de Clusterfailover testen.

Notiz: Fir dëse Guide benotze mir frësch/eidel Redis Instanzen fir de Clustermodus auszeféieren. De Clustermodus funktionnéiert net mat e puer Konfiguratiounen, déi an den éischten zwee Guiden vun eiser Redis Serie gemaach goufen, besonnesch et funktionnéiert net wann d'Replika vum Parameter benotzt gëtt.

  1. Server mat CentOS 8 Installatioun

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

Eise Setup huet 3 Lies-/Schreif-Master-Knäppchen an 3-Replika-Knäppchen, all Meeschter huet eng Replika, sou datt dräi Stécker all d'Donnéeën vum Cluster an all Node enthalen. Eng Applikatioun API oder CLI Client kann nëmmen un d'Master Wirbelen schreiwen, awer aus all Node am Cluster liesen.

Schrëtt 1: Redis op All Noden installéieren

1. Log an all d'Instanzen iwwer SSH, da fuert de folgende Kommando fir de Redis Modul mat dem DNF Package Manager z'installéieren wéi gewisen.

# dnf module install redis

2. Als nächst fänkt de Redis Service un, aktivéiert et fir automatesch beim Systemboot ze starten a kontrolléiert säi Status fir z'iwwerpréiwen datt et leeft (iwwerpréift de Service op all de 6 Instanzen):

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

Schrëtt 2: Redis Instanzen op all Noden konfiguréieren

3. Dës Sektioun beschreift wéi d'Redis Cluster Noden konfiguréieren. Denkt drun d'Konfiguratiounen hei op all Noden auszeféieren.

Benotzt d' /etc/redis.conf Konfiguratiounsdatei fir de Redis Server ze konfiguréieren. Als empfohlene Praxis, erstellt e Backup vun der ursprénglecher Datei ier Dir se ännert mat engem Kommandozeilen Texteditor vun Ärer Wiel.

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

4. Als nächst fannt Dir déi folgend Konfiguratiounsparameter an ännert hir Wäerter wéi gewisen. De Bindparameter setzt d'Interface vum Redis Server nolauschteren, setzt säi Wäert op d'Instanz LAN IP. Ewechzehuelen den 127.0.0.1 well mir gemierkt hunn et do ze loossen verlangsamt de Prozess vun der Cluster Kreatioun, besonnesch d'Bühn vum Bäitrëtt zum Cluster.

bind  10.42.0.247

Setzt dann de geschützte Modus op nee fir Verbindunge vun deenen aneren Instanzen am Cluster z'erméiglechen.

protected-mode no

De Portparameter definéiert den Hafen deen de Redis Server no Verbindunge lauschtert, de Standard ass 6379. Dëst ass den Dateport fir mat Clienten ze kommunizéieren.

port 6379

5. De nächste Set vu Parameteren aktivéiert de Clustermodus an setzt e puer vun hiren nëtzlechen Features. De Cluster-aktivéierte Parameter, wann se op Jo gesat gëtt, aktivéiert de Clustermodus.

cluster-enabled yes

Als nächst setzt de Cluster-Config-Datei Parameter den Numm vun der Clusterkonfiguratiounsdatei vun engem Clusternode (zB Nodes-6379.conf). D'Datei gëtt am Aarbechtsverzeechnes erstallt (Standard ass /var/lib/redis definéiert mam Dir Parameter) an ass net editable vum Benotzer.

cluster-config-file nodes-6379.conf

Déi nächst nëtzlech Clusteroptioun ass Cluster-Node-Timeout, et gëtt benotzt fir de maximale Betrag vun Zäit a Millisekonnen ze setzen, eng Instanz kann net verfügbar sinn fir datt se an engem Ausfallzoustand considéréiert ginn. E Wäert vun 15000 entsprécht 15 Sekonnen.

cluster-node-timeout 15000

6. Mir mussen och Redis Persistenz op Disk aktivéieren. Mir kënnen ee vun de Persistenzmodi benotzen, dat ass den Append Only File (AOF): et protokolléiert (an der Datei appendonly.aof erstallt ënner dem Aarbechtsverzeichnis) all Schreifoperatioun déi vum Server erfollegräich kritt gëtt. D'Date gi wärend dem Serverstart gespillt fir den ursprénglechen Dataset ze rekonstruéieren.

Fir et z'aktivéieren, setzt den appendonly Parameter op jo.

appendonly yes

7. Nodeems Dir all d'Ännerungen gemaach hutt, de Redis Service op all Noden nei starten fir déi rezent Ännerungen anzesetzen.

# systemctl restart redis

8. Zu dësem Zäitpunkt soll all Cluster Node elo eng ID hunn. Dir kënnt dëst an der Logdatei kontrolléieren op /var/log/redis/redis.log.

# cat /var/log/redis/redis.log

9. Nächst, oppen port 6397 an 16379 op all Instanzen. De spéideren Hafen gëtt fir de Clusterbus benotzt (e Node-to-Node Kommunikatiounskanal mat engem binäre Protokoll). Dëst ass eng Basisfuerderung fir de Redis Cluster TCP Verbindungen.

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

Schrëtt 3: Erstellt de Redis Cluster

10. Fir de Cluster ze kreéieren, benotzt de Redis-cli Kommandozeil Client wéi follegt. De --cluster create erméiglecht de Cluster ze kreéieren an --cluster-replicas 1 heescht eng Replik pro Master erstellen.

Fir eise Setup deen 6 Noden huet, hu mir 3 Masters an 3 Sklaven.

Bedenkt datt déi éischt 6 Noden als Meeschter ugesi ginn (M) an déi nächst dräi ginn als Sklaven ugesinn (S). Den éischte Sklave dh 10.42.0.200:6379 replizéiert den éischte Master dh 10.42.0.247:6379, den zweete Sklave replizéiert den zweete Master, an där Uerdnung.

De folgende Kommando ass formatéiert op eng Manéier datt d'Resultat eise logesche Setup hei uewen duerstellt.

# 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. Wann d'Kreatioun vum Cluster erfollegräich ass, fuert de folgende Kommando op all Host (spezifizéieren seng IP Adress mam -h Fändel) fir all Clusterknäppchen ze lëschten.

# redis-cli -h 10.42.0.247 -p 6379 cluster nodes

Dir sollt fäeg sinn all d'Clusternoden ze gesinn, mat de Sklaven déi hir Meeschteren uginn, wéi am folgende Screenshot gewisen.

Déi verschidde Felder sinn an dëser Reiefolleg: Node ID, IP Adress: port, Fändelen, leschte Ping geschéckt, leschte Pong kritt, Configuratioun Epoch, Link-Staat, Plaze (fir Meeschter).

Schrëtt 4: Testen Redis Cluster Failover

12. An dëser Rubrik wäerte mir demonstréieren wéi e Cluster Failover testen. Als éischt, loosst eis d'Meeschteren notéieren.

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

Notéiert och d'Redis Sklaven.

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

13. Nächst, loosst eis de Redis Service op ee vun de Meeschterknäppchen stoppen zB 10.42.0.197 a kontrolléiert all Meeschternoden am Cluster.

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

Aus dem folgenden Screenshot kënnt Dir gesinn datt den Node 10.42.0.197:6367 am Ausfallzoustand ass a säi Sklave 10.42.0.21:6379 op de Masterstatus gefördert gouf.

14. Loosst eis de Redis Service nach eng Kéier op de gescheiterten Node starten an all d'Meeschteren am Cluster kontrolléieren.

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

Kontrolléiert och d'Cluster Sklaven fir ze bestätegen datt de gescheiterte Meeschter elo e Sklave ass.

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

Schrëtt 5: Datereplikatioun iwwer de Redis Cluster testen

15. Dës lescht Sektioun erklärt wéi Dir Clusterdatenreplikatioun verifizéiere kënnt. Mir wäerten e Schlëssel a Wäert op ee vun de Meeschter schafen, da probéiert et aus all de Stärekoup Wirbelen ze liesen wéi follegt. Benotzt den -c Schalter fir Cluster Support ënner redis-cli Utility z'aktivéieren an Zougang zu Daten am Cluster Modus ze kréien.

# 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

Déi ënnescht Linn ass de Redis Cluster ass de bevorzugte Wee fir automatesch Sharing, Replikatioun an héich Disponibilitéit ze kréien. Et gi vill aner gutt dokumentéiert Konfiguratiounsparameter am Rescht vun der /etc/redis.conf Datei, Dir kënnt méi Informatioun an der offizieller Dokumentatioun fannen: Redis Cluster Tutorial a Redis Cluster Spezifizéierung.

Dëst bréngt eis zum Enn vun der dräi-Deel Redis Tutorial Serie. De Feedbackformular hei drënner ka benotzt ginn fir Froen oder Kommentarer ze posten.