Kako nastaviti replikacijo Redis (z onemogočenim grozdnim načinom) v CentOS 8 - 1. del


Redis (strežnik oddaljenih slovarjev) je zelo priljubljen in pogosto uporabljan odprtokodni, hitri, porazdeljeni in učinkoviti strežnik baze podatkov/podatkovne strukture ključ-vrednost v pomnilniku.

Ponuja bogat nabor funkcij, zaradi katerih je učinkovit za številne primere uporabe: kot baza podatkov, predpomnilnik, posrednik sporočil ali čakalna vrsta; uporaben v spletnih aplikacijah, aplikacijah za klepet in sporočanje, igranju iger, sprotni analizi podatkov in še veliko več.

Podpira prilagodljive podatkovne strukture, asinhrono replikacijo master-slave za povečanje zmogljivosti branja in zaščito pred izgubo podatkov, ostrenje na strani odjemalca za povečanje zmogljivosti pisanja, dve obliki trajnosti za zapisovanje podatkov v pomnilnik na disk v kompaktni obliki, združevanje v skupine in razdelitev. Ponuja tudi samodejne odpovedi za visoko razpoložljivo uvajanje prek Redis Sentinel, skripte Lua, transakcije in še veliko več.

Redis kot NO SQL ali nerelacijska baza podatkov ponuja nekaj prednosti glede zmogljivosti v primerjavi s tradicionalnimi sistemi baz podatkov (kot so MySQL/MariaDB, PostgreSQL itd.), Ker so vsi njeni podatki shranjeni ali shranjeni v pomnilniku, zaradi česar je lahko dostopen do aplikacije, medtem ko morajo tradicionalne zbirke podatkov vse podatke zapisovati na disk ali brati z diska ali zunanjega vira.

Redis postaja vse bolj razširjena izbira za predpomnjenje, ki omogoča ponovno uporabo predpomnjenih podatkov (shranjenih v glavnem pomnilniškem prostoru aplikacije), namesto da vedno poizveduje po zbirki podatkov za pogosto uporabljene podatke. Torej je fantastičen spremljevalec RDMS (relacijski sistemi za upravljanje baz podatkov), da se na koncu izboljša zmogljivost aplikacije.

V tej tridelni vadnici Redis bomo obravnavali, kako nastaviti in uporabiti nekatere ključne značilnosti Redisa, ki so replikacija, visoka razpoložljivost z uporabo Redis Sentinel in Redis Cluster, članki so:

V tem priročniku je prikazano, kako nastaviti replikacijo Redis (z onemogočenim načinom grozda) v CentOS 8 Linux, vključno z namestitvijo Redisa, konfiguriranjem glavne in replike ter preskušanjem replikacije.

Pomembno: Grozd Redis (tj. Grozd podvajanja) z onemogočenim načinom gruče ima eno skupino vozlišč (npr. Glavna in ena ali dve replici), medtem ko je gruča Redis z omogočenim načinom gruče lahko sestavljena iz dveh ali več skupin vozlišč (npr. Tri glavne vsak ima sužnja ali dva).

  1. Strežniki z namestitvijo CentOS 8

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

Z zgornjo nastavitvijo (ki ima eno samo branje/pisanje primarnega/glavnega vozlišča in 2 vozlišči samo za branje replike) imamo eno skupino vozlišč, ki vsebuje vse podatke gruče v vsakem vozlišču. Ko se pomožni sistem poveže z glavno enoto, prejme začetno kopijo celotne baze podatkov in vsi podatki, ki so prej obstajali na pomožni enoti, bodo zavrženi.

Poleg tega lahko odjemalec piše samo v glavno enoto, vendar bere iz katerega koli vozlišča v gruči. In ko se zapisovanje izvaja v glavno enoto, so se razširili na vse povezane pomožne enote za posodobitev naborov podrejenih podatkov v realnem času.

1. korak: Namestitev Redisa na CentOS 8

1. Za začetek se prijavite v vsa vozlišča CentOS 8 prek SSH, nato pa namestite paket Redis na vsa vozlišča (glavni in replike) z uporabo upravitelja paketov DNF, kot je prikazano.

# dnf install @redis

2. Po končani namestitvi paketa Redis zaženite storitev Redis, omogočite samodejni zagon ob vsakem zagonu sistema in preverite, ali deluje in deluje na naslednji način.

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

3. Lahko preverite, ali strežnik Redis deluje in preverite vrata za poslušanje z ukazom ss, kot sledi.

# ss -ltpn | grep redis-server

2. korak: Konfiguriranje strežnika Redis Master

4. Redis je konfiguriran s konfiguracijsko datoteko /etc/redis.conf, samo-dokumentirano primerno konfiguracijsko datoteko. Najprej ustvarite varnostno kopijo izvirne datoteke, nato jo odprite za urejanje z izbranim urejevalnikom ukazne vrstice.

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

5. Primerka Redis je privzeto konfigurirana tako, da posluša in sprejema povezave v vmesniku povratne zanke z uporabo bind direktive. Za komunikacijo z replikami je treba glavno enoto konfigurirati za poslušanje naslova povratne zanke IPv4 in njegovega IP-naslova LAN, tj. 10.42.0.247.

bind 127.0.0.1 10.42.0.247

6. Nato nastavite parameter zaščitenega načina na no , da omogočite komunikacijo z replikami, kot je prikazano.

protected-mode no

Redis posluša tudi na vratih 6379, ki so nastavljena z direktivo port . To so podatkovna vrata za komunikacijo z aplikacijskimi API-ji ali odjemalci CLI.

port 6379

7. Če želimo po želji zaščititi komunikacijo glavna-replika, lahko zaščitimo glavno enoto z uporabo zahteve passpass, tako da morajo odjemalci/replike izdati geslo za preverjanje pristnosti, preden zaženejo kakršne koli ukaze ali začnejo postopek sinhronizacije replikacije, sicer bo glavni zavrnil zahteva odjemalca/replike (ne pozabite nastaviti varnega gesla).

Naslednjo možnost bomo uporabili za predstavitvene namene, da pokažemo, kako deluje.

requirepass  [email 

8. Tudi dnevniki Redis so shranjeni v datoteki /var/log/redis/redis.log, to je nastavljeno z direktivo dnevnika datotek in privzeta raven podrobnosti strežnika je opomba, določena s parametrom loglevel.

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

9. Ker je systemd privzeti upravitelj sistema in storitev v CentOS 8, lahko Redis konfigurirate tako, da komunicira z nadzornim drevesom systemd, tako da nadzorni parameter nastavite na systemd.

supervised systemd

10. Ko naredite vse potrebne konfiguracije, shranite datoteko in jo zaprite. Nato znova zaženite storitev Redis, da uveljavite nove spremembe.

# systemctl daemon-reload
# systemctl restart redis

11. Za dostop do strežnika Redis moramo uporabiti redis-cli (vmesnik ukazne vrstice do strežnika redis). Privzeto se poveže s strežnikom na lokalnem gostitelju (na vratih 127.0.0.1 6379). Ker je strežnik zavarovan pred odjemalci z geslom, zagon ukaza pred preverjanjem pristnosti ne bi mogel uspeti.

Z ukazom auth potrdite geslo za preverjanje pristnosti, kot je prikazano na naslednjem posnetku zaslona.

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

12. Če se želite povezati z repliko (po konfiguraciji, kot je opisano v naslednjem razdelku), z možnostmi -h in -p določite naslov/ime gostitelja replike in vrata (ne, da mora biti vrata 6379 odprta v požarnem zidu replike).

# redis-cli -h 10.42.0.21 -p 6379

13. Nato v požarnem zidu odprite podatkovna vrata strežnika Redis, da omogočite dohodne povezave z glavno enoto, nato znova naložite pravila požarnega zidu z ukazom firewall-cmd, kot je prikazano.

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

3. korak: Konfiguriranje strežnikov Redis Replica/Slave

14. Če želite primerek Redis hitro nastaviti kot kopijo sproti, uporabite pripomoček redis-cli in pokličite ukaz REPLICAOF, kot je prikazano.

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

15. Če želite povezavo za kopiranje narediti trajno, morate v konfiguracijski datoteki narediti naslednje spremembe. Začnite z varnostno kopijo izvirne datoteke, nato pa jo odprite za urejanje.

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

16. Če želite odjemalcem omogočiti povezavo z repliko za branje podatkov, dodajte naslov IP replike v direktivo o vezavi.

# replica1
bind 127.0.0.1 10.42.0.21

# replica2
bind 127.0.0.1 10.42.0.34

17. Če želite primerek Redis konfigurirati kot repliko, uporabite parameter replicaof in nastavite naslov IP glavnega vozlišča (ali ime gostitelja) in vrata kot vrednosti.

replicaof 10.42.0.247 6379

18. Nato, ker je naš glavni primerek zaščiten z geslom, moramo geslo nastaviti v konfiguraciji replike, da omogočimo njegovo overjanje s pomočjo parametra masterauth.

masterauth [email 

19. Poleg tega, ko replika izgubi povezavo z glavno enoto ali ko je replikacija v teku, je replika konfigurirana tako, da odgovarja na zahteve strank, po možnosti z\"zastarelimi" podatki. Če pa gre za prvo sinhronizacijo, potem nabor podatkov je lahko prazen. To vedenje nadzoruje parameter replica-serve-stale-data.

In ker so privzete replike Redis 2.6 samo za branje, to nadzoruje parameter samo za branje replike. Lahko naredite druge prilagoditve konfiguracije replike, ki ustrezajo vašim potrebam aplikacije.

20. Ko izvedete vse potrebne spremembe, znova zaženite storitev Redis na vseh replikah.

# systemctl restart redis

21. Odprite tudi vrata 6379 v požarnem zidu, da omogočite povezave glavne in odjemalske strani do replik ter znova naložite pravila požarnega zidu.

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

4. korak: Preverite stanje replikacije glavne replike

22. Ko je konfiguracija replikacije glavna-replika končana, lahko preverimo, ali nastavitev deluje v redu, kot sledi.

Na glavni enoti zaženite naslednje ukaze.

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

23. Preverite tudi stanje kopiranja na replikah/pomožnih napravah, kot sledi.

# redis-cli
127.0.0.1:6379> info replication

23. Zdaj preizkusimo kopiranje z nastavitvami ključ-vrednost v glavnem primerku in preverimo, ali so podatki sinhronizirani z replikami.

Na mojstru naredite to:

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

24. Nato preverite, ali so bili podatki sinhronizirani z replikami, kot je prikazano.

# redis-cli
127.0.0.1:6379> get domain

25. Redis ima funkcijo, ki glavnemu primerku omogoča, da na določeno število sekund omeji tveganje izgube nekaterih zapisov, če ni na voljo dovolj kopij.

To pomeni, da mojster lahko preneha sprejemati zapise, če je povezanih manj kot N replik in ima zaostanek manjši ali enak M sekund, kot ga nadzirata možnosti min-replike-za-zapisovanje in min-replike-max-lag.

Če jih želite nastaviti, jih razkomentirajte in nastavite vrednosti glede na vaše nastavitvene zahteve v /etc/redis.conf, kot je prikazano na naslednjem posnetku zaslona. Ta konfiguracija pomeni, da bo, od zadnjega pinga do replik, po 10 sekundah, če sta v spletu manj kot 2 replici, poveljnik prenehal sprejemati zapise.

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

Več možnosti najdete v preostali konfiguracijski datoteki /etc/redis.conf, za podrobnejše informacije o kopiranju pa preberite v dokumentaciji Redis.

V naslednjem članku bomo opisali, kako nastaviti Redis za visoko razpoložljivost s sistemom Sentinel v CentOS 8. Do takrat ostanite zaklenjeni in ne pozabite deliti svojih mnenj in vprašanj z uporabo spodnjega obrazca za komentar, da boste lahko stopili v stik z nami.