Kaip nustatyti „Redis“ replikaciją (išjungus klasterio režimą) „CentOS 8“ – 1 dalis


Redis (Nuotolinio žodyno serveris) yra labai populiarus ir plačiai naudojamas atvirojo kodo, greitas, paskirstytas ir efektyvus atmintyje esantis raktinių verčių duomenų bazės/duomenų struktūros serveris.

Jame siūlomas gausus funkcijų rinkinys, todėl jis veiksmingas įvairiais naudojimo atvejais: kaip duomenų bazė, talpyklos sluoksnis, pranešimų tarpininkas ar eilė; taikoma žiniatinklio programose, pokalbių ir pranešimų siuntimo programoms, žaidimams, duomenų analizei realiuoju laiku ir dar daugiau.

Jis palaiko lanksčias duomenų struktūras, pagrindinį-pagalbinį asinchroninį replikavimą, kad būtų padidintas skaitymo našumas ir apsaugotas nuo duomenų praradimo, kliento pusės dalijimasis, kad būtų padidintas rašymo našumas, dvi patvarumo formos atmintyje esantiems duomenims įrašyti į diską kompaktišku formatu, grupavimas ir skaidymas. Jame taip pat yra automatinių perjungimų, skirtų aukšto pasiekiamumo diegimui naudojant Redis Sentinel, Lua scenarijus, operacijas ir daug daugiau.

Kadangi BE SQL arba nesusijusių duomenų bazės, Redis siūlo tam tikrų našumo pranašumų, palyginti su tradicinėmis duomenų bazių sistemomis (pvz., MySQL/MariaDB, PostgreSQLir kt.), nes visi jo duomenys yra arba saugomi atmintyje, todėl programa lengvai pasiekiama, o tradicinės duomenų bazės turi įrašyti visus duomenis į diską ar išorinį šaltinį arba nuskaityti iš jo.

Redis tapo vis labiau paplitęs talpyklos kaupimo pasirinkimas, leidžiantis pakartotinai naudoti talpykloje saugomus duomenis (saugomus pagrindinėje programos atminties vietoje), o ne visada teirautis duomenų bazėje dėl dažnai naudojamų duomenų. Taigi tai yra puikus RDMS (Relational Database Management Systems) pagalbininkas, kuris galiausiai pagerina programos našumą.

Šioje trijų dalių Redis mokymo priemonių serijoje apžvelgsime, kaip nustatyti ir naudoti kai kurias pagrindines Redis funkcijas, tokias kaip replikacija, aukštas pasiekiamumas naudojant Redis Sentinel ir > Redis Cluster, straipsniai yra šie:

Šiame vadove parodyta, kaip nustatyti Redis replikaciją (su Cluster Mode Disabled) CentOS 8 Linux, įskaitant tai, kaip įdiegti Redis, sukonfigūruoti pagrindinį ir kopijas bei išbandyti replikaciją.

Svarbu: Redis klasteris (t. y. replikacijos klasteris) su išjungtu klasterio režimu turi vieną mazgų grupę ( pvz., pagrindinis ir viena ar dvi kopijos), kur Redis klasteris su įjungtu klasterio režimu gali būti sudarytas iš dviejų ar daugiau mazgų grupių (pvz., trys pagrindiniai įrenginiai, kurių kiekvienas turi pavaldinius arba du).

Būtinos sąlygos:

  1. Serveriai su CentOS 8 diegimu

Bandymo aplinkos sąranka

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

Naudodami aukščiau pateiktą sąranką (kurioje yra vienas skaitymo/rašymo pirminis/pagrindinis mazgas ir 2 tik skaitomi replikos mazgai), turime vieną mazgų grupę, kurioje yra visi klasterio duomenys kiekviename mazge. Kai pavaldinys prisijungia prie pagrindinio įrenginio, jis gauna pradinę visos duomenų bazės kopiją ir visi duomenys, kurie anksčiau buvo pavalduje, bus atmesti.

Be to, klientas gali rašyti tik pagrindiniam kompiuteriui, bet skaityti iš bet kurio klasterio mazgo. Rašant pagrindiniame kompiuteryje, jie perduodami visiems prijungtiems pagalbiniams įrenginiams, kad būtų atnaujinami vergų duomenų rinkiniai realiuoju laiku.

1 veiksmas: „Redis“ diegimas „CentOS 8“.

1. Pirmiausia prisijunkite prie visų CentOS 8 mazgų naudodami SSH, tada įdiekite Redis paketą visuose mazguose (pagrindiniuose ir kopijose ) naudodami DNF paketų tvarkyklę, kaip parodyta.


dnf install @redis

2. Baigę diegti Redis paketą, paleiskite Redis paslaugą, įgalinkite ją automatiškai paleisti kiekvieną kartą paleidžiant sistemą ir patikrinkite, ar veikia taip.

systemctl start redis
systemctl enable redis
systemctl status redis

3. Taip pat galite patvirtinti, kad Redis serveris yra sukurtas ir veikia, patikrindami klausymo prievadus naudodami komandą ss, kaip nurodyta toliau.

ss -ltpn | grep redis-server

2 veiksmas: „Redis Master Server“ konfigūravimas

4. Redis sukonfigūruotas naudojant /etc/redis.conf konfigūracijos failą, savaime dokumentuotą konfigūracijos failą. Pirmiausia sukurkite originalaus failo atsarginę kopiją, tada atidarykite ją redagavimui naudodami pasirinktą komandų eilutės rengyklę.

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

5. Pagal numatytuosius nustatymus Redis egzempliorius sukonfigūruotas klausytis ir priimti ryšius grįžimo sąsajoje, naudojant susiejimo direktyvą. Norint susisiekti su kopijomis, pagrindinis įrenginys turi būti sukonfigūruotas taip, kad klausytųsi IPv4 atgalinio adreso ir LAN IP adreso, t. y. 10.42.0.247.

bind 127.0.0.1 10.42.0.247

6. Tada nustatykite apsaugoto režimo parametrą į ne, kad galėtumėte susisiekti su kopijomis, kaip parodyta.

protected-mode no

Be to, „Redis“ klausosi prievado 6379, kuris nustatytas naudojant prievado direktyvą. Tai duomenų prievadas, skirtas bendrauti su programų API arba CLI klientais.

port 6379

7. Norėdami pasirinktinai apsaugoti pagrindinės kopijos ryšius, galime apsaugoti pagrindinį įrenginį naudodami requirepass direktyvą, kad klientai/kopijos turėtų išduokite autentifikavimo slaptažodį prieš paleisdami bet kokias komandas arba pradėdami replikacijos sinchronizavimo procesą, kitaip pagrindinis įrenginys atmes kliento/replikos užklausą (nepamirškite nustatyti saugaus slaptažodžio).

Mes naudosime šią parinktį demonstravimo tikslais, kad parodytume, kaip ji veikia.

requirepass  Securep@55Here

8. Be to, „Redis“ žurnalai saugomi faile /var/log/redis/redis.log, tai nustatoma naudojant direktyvą logfile o numatytasis serverio išsamumo lygis yra pranešimas, apibrėžtas naudojant parametrą loglevel.

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

9. Kadangi systemd yra numatytoji sistemos ir paslaugų tvarkyklė CentOS 8, galite sukonfigūruoti Redis, kad ji veiktų su systemd priežiūros medį, nustatydami parametrą prižiūrimas į systemd.

supervised systemd

10. Atlikę visas reikiamas konfigūracijas, išsaugokite failą ir uždarykite jį. Tada iš naujo paleiskite Redis paslaugą, kad pritaikytumėte naujus pakeitimus.

systemctl daemon-reload
systemctl restart redis

11. Norėdami pasiekti Redis serverį, turime naudoti redis-cli (komandinės eilutės sąsają su redis-serveriu). Pagal numatytuosius nustatymus jis prisijungia prie serverio localhost (prie 127.0.0.1 prievado 6379). Atminkite, kad serveris yra apsaugotas nuo klientų naudojant slaptažodį, todėl komandos paleidimas prieš autentifikavimą turėtų nepavykti.

Naudokite komandą auth, kad pateiktumėte autentifikavimo slaptažodį, kaip parodyta toliau pateiktoje ekrano kopijoje.

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. Norėdami prisijungti prie replikos (sukonfigūravę, kaip aprašyta kitame skyriuje), naudokite -h ir -p parinktis, kad atitinkamai nurodytumėte kopijos IP adresą/pagrindinio kompiuterio pavadinimą ir prievadą (ne tas prievadas 6379 turi būti atidarytas replikos užkardoje).

redis-cli -h 10.42.0.21 -p 6379

13. Tada užkardoje atidarykite Redis serverio duomenų prievadą, kad būtų galima prisijungti prie pagrindinio pagrindinio įrenginio, ir iš naujo įkelkite ugniasienės taisykles naudodami komandą firewall-cmd, kaip parodyta.

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

3 veiksmas: sukonfigūruokite „Redis Replica/Slave“ serverius

14. Norėdami greitai nustatyti Redis egzempliorių kaip repliką, naudokite redis-cli paslaugų programą ir iškvieskite REPLICAOF komandą, kaip parodyta.

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

15. Jei norite, kad replikacijos ryšys būtų nuolatinis, konfigūracijos faile turite atlikti šiuos pakeitimus. Pradėkite kurdami atsarginę originalaus failo kopiją, tada atidarykite ją redaguoti.

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

16. Kad klientai galėtų prisijungti prie kopijos ir skaityti duomenis, pridėkite kopijos IP adresą prie susiejimo direktyvos.

replica1
bind 127.0.0.1 10.42.0.21

replica2
bind 127.0.0.1 10.42.0.34

Redis egzemplioriaus nustatymas kaip kopija

17. Norėdami sukonfigūruoti „Redis“ egzempliorių kaip repliką, naudokite parametrą replicaof ir nustatykite pagrindinio mazgo IP adresą (arba pagrindinio kompiuterio pavadinimą) ir prievadą kaip vertybes.

replicaof 10.42.0.247 6379

Kopijos nustatymas autentifikuoti pagrindiniam kompiuteriui

18. Be to, kadangi mūsų pagrindinis egzempliorius yra apsaugotas slaptažodžiu, kopijos konfigūracijoje turime nustatyti slaptažodį, kad būtų galima autentifikuoti pagrindinį elementą, naudojant masterauth parametras.

masterauth Securep@55Here

19. Be to, kai kopija praranda ryšį su pagrindiniu kompiuteriu arba kai vykdoma replikacija, replika sukonfigūruojama atsakyti į kliento užklausas, galbūt su „pasenusi > ” duomenis. Bet jei tai pirmas sinchronizavimas, duomenų rinkinys gali būti tiesiog tuščias. Šį elgesį valdo parametras replica-serve-stale-data.

Kadangi pagal numatytuosius nustatymus Redis 2.6 kopijos yra tik skaitomos, tai valdoma parametru replica-only. Galite atlikti kitus kopijos konfigūracijos koregavimus, kad atitiktų jūsų programos poreikius.

20. Atlikę visus reikiamus pakeitimus, iš naujo paleiskite „Redis“ paslaugą visose kopijose.

systemctl restart redis

21. Be to, užkardoje atidarykite prievadą 6379, kad būtų galima prisijungti iš pagrindinio ir klientų prie kopijų, ir iš naujo įkelkite ugniasienės taisykles.

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

4 veiksmas: patikrinkite pagrindinės kopijos replikacijos būseną

22. Baigę pagrindinės replikos replikacijos konfigūraciją, galime patikrinti, ar sąranka veikia gerai, kaip nurodyta toliau.

Pagrindiniame kompiuteryje paleiskite šias komandas.

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

23. Taip pat patikrinkite replikacijos būseną kopijose/pavaldžiuose įrenginiuose, kaip nurodyta toliau.

redis-cli
127.0.0.1:6379> info replication

23. Dabar išbandykime replikaciją nustatydami rakto reikšmę pagrindiniame egzemplioriuje ir patikrinkime, ar duomenys sinchronizuojami su kopijomis.

Meistre atlikite šiuos veiksmus:

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

24. Tada patikrinkite, ar duomenys buvo sinchronizuoti su kopijomis, kaip parodyta.

redis-cli
127.0.0.1:6379> get domain

Pagrindinės instancijos apsauga nuo pavojaus prarasti kai kuriuos raštus

25. „Redis“ turi funkciją, kuri įgalina pagrindinį egzempliorių iki nurodyto sekundžių skaičiaus apriboti kai kurių įrašų praradimo riziką, jei nebus pakankamai kopijų.

Tai reiškia, kad pagrindinis kompiuteris gali nustoti priimti rašymą, jei prijungta mažiau nei N kopijų, kurių delsa mažesnė arba lygi M sekundėms, kontroliuojama min. Atitinkamai parinktys -replicas-to-write ir min-replicas-max-lag.

Norėdami jas nustatyti, panaikinkite komentarus ir nustatykite reikšmes pagal savo sąrankos reikalavimus /etc/redis.conf, kaip parodyta toliau esančioje ekrano kopijoje. Ši konfigūracija reiškia, kad nuo paskutinio ping iki replikų, po 10 sekundžių, jei internete yra mažiau nei 2 kopijos, pagrindinis kompiuteris nustos priimti įrašus.

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

Daugiau parinkčių rasite likusioje /etc/redis.conf konfigūracijos failo dalyje, o daugiau informacijos apie replikaciją skaitykite Redis dokumentacijoje.

Kitame straipsnyje aptarsime, kaip nustatyti „Redis“, kad būtų užtikrintas aukštas pasiekiamumas naudojant „Sentinel“ CentOS 8. Iki tol būkite užrakinti ir nepamirškite pasidalinti savo mintimis ir klausimais naudodami toliau pateiktą komentarų formą, kad galėtumėte susisiekti su mumis.