Kaip sukonfigūruoti „Redis“ grupę „CentOS 8“ - 3 dalis


„Redis Cluster“ yra įmontuota „Redis“ funkcija, palaikanti automatinį dalijimą, replikavimą ir aukštą prieinamumą, kuri anksčiau buvo įdiegta naudojant „Sentinels“. Jis sukurtas dviem pagrindiniais tikslais: vienas yra automatiškai padalyti duomenų rinkinį į kelis egzempliorius ir, antra, suteikti tam tikrą prieinamumą pertvarų metu, tęsti operacijas, kai kai kuriems atvejams (ypač meistrams) nepavyksta arba jie negali bendrauti su dauguma mazgai klasteryje.

Tačiau klasteris nustoja veikti didesnių gedimų atveju (pvz., Kai dauguma pagrindinių egzempliorių nepasiekiami). Be to, jei pagrindinis ir pavaldusis nepavyksta tuo pačiu metu, klasteris negali tęsti įprastų operacijų (nors sprendimas yra pridėti daugiau mazgų arba sukurti klasterio asimetriją, kad automatiškai pakeistų klasterio išdėstymą).

Remiantis „Redis“ sankaupos dokumentais, „minimaliame klasteryje“, kuris veikia taip, kaip tikėtasi, reikia turėti bent 3 pagrindinius mazgus. Tačiau tinkamiausia sąlyga, užtikrinanti aukštą prieinamumą, turėtų turėti mažiausiai 6 mazgus su trimis pagrindiniais ir trimis vergais, kurių kiekvienas turi vergą.

Svarbu: „Redis Cluster“ taip pat yra tam tikrų apribojimų, dėl kurių trūksta palaikymo „NATted“ aplinkoms, taip pat toms, kur IP adresai ar TCP prievadai yra pertvarkomi, pvz., „Docker“. Be to, ne kiekviena kliento biblioteka ją palaiko.

Šiame straipsnyje parodyta, kaip nustatyti „Redis“ sankaupą (su išjungtu klasterio režimu) sistemoje „CentOS 8“. Jame pateikiama, kaip įdiegti „Redis“, konfigūruoti sankaupos mazgus, sukurti sankaupą ir išbandyti sankaupos perjungimą.

Pastaba: Šiame vadove klasterio režimui paleisti naudosime naujus/tuščius „Redis“ egzempliorius. Klasterio režimas neveiks kai kuriomis konfigūracijomis, atliktomis pirmuose dviejuose „Redis“ serijos vadovuose, ypač jis neveikia, kai naudojama parametro kopija.

  1. Serveriai su „CentOS 8“ diegimu

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

Mūsų sąrankoje yra 3 skaitymo/rašymo pagrindiniai mazgai ir 3 tik skaitymo kopijų mazgai, kurių kiekvienas turi po vieną kopiją, taigi trijuose fragmentuose yra visi klasterio duomenys kiekviename mazge. Programos API arba CLI klientas gali rašyti tik į pagrindinius mazgus, bet nuskaityti iš bet kurio sankaupos mazgo.

1 žingsnis: „Redis“ diegimas visuose mazguose

1. Prisijunkite prie visų egzempliorių per SSH, tada paleiskite šią komandą, kad įdiegtumėte „Redis“ modulį naudodami DNF paketų tvarkyklę, kaip parodyta.

# dnf module install redis

2. Tada paleiskite „Redis“ paslaugą, įgalinkite ją automatiškai paleisti įkrovos metu ir patikrinkite jos būseną, kad patikrintumėte, ar ji veikia (patikrinkite paslaugą visuose 6 egzemplioriuose):

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

2 žingsnis: „Redis“ egzempliorių konfigūravimas visuose mazguose

3. Šiame skyriuje aprašoma, kaip sukonfigūruoti „Redis“ sankaupos mazgus. Nepamirškite atlikti konfigūracijų čia visuose mazguose.

Norėdami sukonfigūruoti „Redis“ serverį, naudokite konfigūracijos failą /etc/redis.conf. Kaip rekomenduojama, prieš redaguodami sukurkite originalaus failo atsarginę kopiją naudodami pasirinktą komandinės eilutės teksto rengyklę.

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

4. Tada raskite šiuos konfigūracijos parametrus ir redaguokite jų vertes, kaip parodyta. „Bind“ parametras nustato „Redis“ serverio sąsają, kurios klausys, nustato jos reikšmę egzemplioriaus LAN IP. Pašalinkite 127.0.0.1, nes supratome, kad jį palikę, sulėtėja grupių kūrimo procesas, ypač prisijungimo prie grupės etapas.

bind  10.42.0.247

Tada nustatykite apsaugotą režimą į no , kad būtų leidžiama jungtis iš kitų egzempliorių grupėje.

protected-mode no

Uosto parametras apibrėžia prievadą, kurio „Redis“ serveris klausys ryšių, numatytasis parametras yra 6379. Tai duomenų uostas, skirtas bendrauti su klientais.

port 6379

5. Kitas parametrų rinkinys įgalins grupių režimą ir nustatys keletą naudingų jo funkcijų. Parametras, įgalinantis grupę, kai nustatytas kaip yes , suaktyvina grupių režimą.

cluster-enabled yes

Tada parametras „cluster-config-file“ nustato klasterio mazgo klasterio konfigūracijos failo pavadinimą (pvz., Mazgai-6379.conf). Failas sukurtas darbo kataloge (numatytasis parametras yra/var/lib/redis apibrėžtas naudojant dir parametrą) ir vartotojo redaguoti negalima.

cluster-config-file nodes-6379.conf

Kita naudinga sankaupos parinktis yra „cluster-node-timeout“, ji naudojama norint nustatyti maksimalų laiko kiekį milisekundėmis, kai egzempliorius gali būti nepasiekiamas, kad jis būtų laikomas gedimo būsena. 15000 vertė yra lygi 15 sekundžių.

cluster-node-timeout 15000

6. Taip pat turime įgalinti „Redis“ atkaklumą diske. Mes galime naudoti vieną iš atkaklumo režimų, tai yra „Pridėti failą“ (AOF): jis registruoja kiekvieną įrašymo operaciją, kurią sėkmingai gauna serveris. Duomenys bus atkuriami paleidus serverį, kad būtų atkurtas pradinis duomenų rinkinys.

Norėdami jį įgalinti, nustatykite „appendonly“ parametrą į yes .

appendonly yes

7. Atlikę visus pakeitimus, iš naujo paleiskite „Redis“ paslaugą visuose mazguose, kad pritaikytumėte naujausius pakeitimus.

# systemctl restart redis

8. Šiuo metu kiekvienas klasterio mazgas dabar turėtų turėti ID. Tai galite patikrinti žurnalo faile, esančiame /var/log/redis/redis.log.

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

9. Tada atidarykite 6397 ir 16379 prievadus visais atvejais. Vėlesnis prievadas naudojamas sankaupos magistralei (mazgas-mazgas ryšio kanalas, naudojant dvejetainį protokolą). Tai yra pagrindinis „Redis“ grupės TCP ryšių reikalavimas.

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

3 žingsnis: „Redis“ grupės kūrimas

10. Norėdami sukurti klasterį, naudokite „redis-cli“ komandinės eilutės klientą taip. --cluster create įgalina kurti grupes, o --cluster-replicas 1 reiškia sukurti vieną repliką šablonui.

Mūsų sąrankoje, kurioje yra 6 mazgai, turėsime 3 pagrindinius ir 3 vergus.

Atkreipkite dėmesį, kad pirmieji 6 mazgai bus laikomi pagrindiniais (M) , o kiti trys - vergais (S) . Pirmasis vergas, t. Y. 10.42.0.200:6379, pakartoja pirmąjį pagrindinį valdytoją, t. Y. 10.42.0.247:6379, antrasis vergas atkartoja antrąjį valdovą tokia tvarka.

Ši komanda yra suformatuota taip, kad rezultatas atspindėtų mūsų loginę sąranką aukščiau.

# 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. Kai klasteris bus sėkmingai sukurtas, vykdykite šią komandą bet kuriame pagrindiniame kompiuteryje (nurodykite jo IP adresą naudodami vėliavą -h ), kad išvardytumėte visus sankaupos mazgus.

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

Turėtumėte matyti visus sankaupos mazgus, vergams nurodydami savo šeimininkus, kaip parodyta kitoje ekrano kopijoje.

Skirtingi laukai yra tokia tvarka: mazgo ID, IP adresas: prievadas, vėliavos, paskutinis išsiųstas pingas, paskutinis gautas tenisas, konfigūracijos epocha, nuorodos būsena, lizdai (meistrams).

4 žingsnis: „Redis Cluster Failover“ testavimas

12. Šiame skyriuje mes parodysime, kaip išbandyti klasterio perjungimą. Pirmiausia atkreipkime dėmesį į meistrus.

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

Taip pat atkreipkite dėmesį į Redio vergus.

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

13. Toliau sustabdykime „Redis“ paslaugą viename iš pagrindinių mazgų, pvz., 10.42.0.197, ir patikrinkime visus pagrindinius mazgus grupėje.

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

Iš šios ekrano kopijos galite pamatyti, kad mazgas 10.42.0.197:6367 yra nepavykusios būsenos ir jo vergas 10.42.0.21:6379 buvo paaukštintas iki pagrindinio statuso.

14. Dabar pradėkime „Redis“ paslaugą dar kartą nepavykusiame mazge ir patikrinkime visus klasterio meistrus.

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

Be to, patikrinkite klasterio vergus, kad patvirtintumėte, jog nepavykęs šeimininkas dabar yra vergas.

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

5 žingsnis: Duomenų replikavimo visoje „Redis“ grupėje testavimas

15. Šiame paskutiniame skyriuje paaiškinama, kaip patikrinti grupių duomenų replikaciją. Vienam iš meistrų sukursime raktą ir vertę, tada pabandysime juos perskaityti iš visų klasterio mazgų taip. Naudokite jungiklį -c , kad įgalintumėte sankaupos palaikymą naudodami „redis-cli“ įrankį ir pasiektumėte duomenis grupių režimu.

# 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

Esmė yra tai, kad „Redis Cluster“ yra pageidaujamas būdas gauti automatinį dalijimą, replikavimą ir aukštą prieinamumą. Likusioje failo /etc/redis.conf dalyje yra daug kitų gerai dokumentuotų konfigūracijos parametrų, daugiau informacijos galite rasti oficialiuose dokumentuose: „Redis“ grupių pamoka ir „Redis“ grupių specifikacija.

Tai priveda mus prie trijų dalių „Redis“ pamokų ciklo pabaigos. Žemiau pateiktą atsiliepimų formą galima naudoti norint pateikti klausimus ar komentarus.