Redis kopas iestatīšana CentOS 8 - 3. daļa


Redis Cluster ir iebūvēta Redis funkcija, kas atbalsta automātisku dalīšanu, replikāciju un augstu pieejamību, kas iepriekš tika ieviesta, izmantojot Sentinels. Tas ir paredzēts diviem galvenajiem mērķiem: viens ir automātiski sadalīt datu kopu starp vairākiem gadījumiem un, otrkārt, nodrošināt zināmu pieejamību nodalījumu laikā, turpināt darbības, kad daži gadījumi (īpaši kapteiņi) neizdodas vai nespēj sazināties ar lielāko daļu mezgli kopā.

Tomēr kopa pārstāj darboties lielāku kļūmju gadījumā (piemēram, ja lielākā daļa galveno gadījumu nav pieejama). Turklāt, ja vienlaicīgi neizdodas kapteinis un vergs, klasteris nevar turpināt normālas darbības (lai gan risinājums ir pievienot vairāk mezglu vai izveidot klastera asimetriju, lai automātiski mainītu klastera izkārtojumu).

Saskaņā ar Redis klastera dokumentāciju, “minimālajam klasterim”, kas darbojas kā paredzēts, ir jābūt vismaz 3 galvenajiem mezgliem. Bet vispiemērotākajā iestatījumā augstai pieejamībai jābūt vismaz 6 mezgliem ar trim galvenajiem un trim vergiem, katram no tiem ir vergs.

Svarīgi: Redis Cluster ir arī daži ierobežojumi, kuriem trūkst atbalsta NATted vidēm, kā arī tām, kur IP adreses vai TCP porti tiek pārveidoti, piemēram, zem Docker. Turklāt ne katra klienta bibliotēka to atbalsta.

Šajā rakstā ir parādīts, kā iestatīt Redis kopu (ar atspējotu kopu režīmu) sistēmā CentOS 8. Tajā ir norādīts, kā instalēt Redis, konfigurēt kopas mezglus, izveidot kopu un pārbaudīt kopas kļūmjpārleci.

Piezīme. Šajā rokasgrāmatā mēs izmantosim jaunus/tukšus Redis gadījumus, lai palaistu klastera režīmu. Klastera režīms nedarbosies ar dažām konfigurācijām, kas veiktas mūsu Redis sērijas pirmajās divās vadlīnijās, īpaši tas nedarbojas, kad tiek izmantota parametra kopija.

  1. Serveri ar CentOS 8 instalāciju

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ūsu iestatījumā ir 3 lasīšanas/rakstīšanas galvenie mezgli un 3 tikai lasāmu kopiju mezgli, katram galvenajam ir viena kopija, tāpēc trīs lauskas satur visus klastera datus katrā mezglā. Lietojumprogrammas API vai CLI klients var rakstīt tikai galvenajiem mezgliem, bet lasīt no jebkura klastera mezgla.

1. darbība: Redis instalēšana visos mezglos

1. Piesakieties visos gadījumos, izmantojot SSH, pēc tam izpildiet šādu komandu, lai instalētu moduli Redis, izmantojot DNF pakotņu pārvaldnieku, kā parādīts.

# dnf module install redis

2. Pēc tam palaidiet pakalpojumu Redis, ļaujiet tam automātiski startēt sistēmas sāknēšanas laikā un pārbaudiet tā statusu, lai pārliecinātos, ka tas darbojas (pārbaudiet pakalpojumu visās 6 instancēs):

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

2. darbība: Redis gadījumu konfigurēšana visos mezglos

3. Šajā sadaļā ir aprakstīts, kā konfigurēt Redis kopas mezglus. Neaizmirstiet šeit veikt konfigurācijas visos mezglos.

Izmantojiet konfigurācijas failu /etc/redis.conf, lai konfigurētu Redis serveri. Kā ieteicams, pirms rediģēšanas izveidojiet oriģināla faila dublējumu, izmantojot izvēlēto komandrindas teksta redaktoru.

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

4. Pēc tam atrodiet šādus konfigurācijas parametrus un rediģējiet to vērtības, kā parādīts. Saistīšanas parametrs nosaka Redis servera interfeisu, kas klausīsies, kā vērtību iestatiet instances LAN IP. Noņemiet 127.0.0.1, jo mēs sapratām, ka tā atstāšana palēnina klastera izveides procesu, īpaši pievienošanās kopai.

bind  10.42.0.247

Pēc tam iestatiet aizsargāto režīmu uz no , lai atļautu savienojumus no citām klastera instancēm.

protected-mode no

Portas parametrs nosaka portu, kurā Redis serveris klausīsies savienojumus, noklusējums ir 6379. Šis ir datu ports saziņai ar klientiem.

port 6379

5. Nākamā parametru kopa iespējos klastera režīmu un iestatīs dažas tā noderīgās funkcijas. Parametrs, kurā iespējots kopas iestatījums uz yes , aktivizē klastera režīmu.

cluster-enabled yes

Pēc tam parametrs cluster-config-file nosaka klastera mezgla klastera konfigurācijas faila nosaukumu (piemēram, mezgli-6379.conf). Fails tiek izveidots darba direktorijā (noklusējums ir/var/lib/redis definēts, izmantojot dir parametru), un lietotājs to nevar rediģēt.

cluster-config-file nodes-6379.conf

Nākamā noderīgā klastera opcija ir klastera-mezgla taimauts. To izmanto, lai iestatītu maksimālo laika daudzumu milisekundēs, kad instance nevar būt pieejama, lai to varētu izskatīt kļūmes stāvoklī. Vērtība 15000 ir ekvivalenta 15 sekundēm.

cluster-node-timeout 15000

6. Mums arī jāiespējo Redis noturība diskā. Mēs varam izmantot vienu no noturības režīmiem, ti, tikai pievienošanas failu (AOF): tas reģistrē (failā appendonly.aof, kas izveidots darba direktorijā) katru rakstīšanas darbību, kuru serveris ir veiksmīgi saņēmis. Dati tiks atskaņoti servera startēšanas laikā, lai rekonstruētu sākotnējo datu kopu.

Lai to iespējotu, iestatiet parametru appendonly uz yes .

appendonly yes

7. Pēc visu izmaiņu veikšanas restartējiet pakalpojumu Redis visos mezglos, lai piemērotu pēdējās izmaiņas.

# systemctl restart redis

8. Šajā brīdī katram klastera mezglam tagad vajadzētu būt ID. To var pārbaudīt žurnāla failā, kas atrodas /var/log/redis/redis.log.

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

9. Pēc tam visos gadījumos atveriet portu 6397 un 16379. Vēlāko portu izmanto kopas kopnei (mezglu-mezglu sakaru kanāls, izmantojot bināro protokolu). Šī ir Redis kopas TCP savienojumu pamatprasība.

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

3. darbība: Redis kopas izveide

10. Lai izveidotu kopu, izmantojiet komandrindas klientu redis-cli šādi. --klastera izveide ļauj izveidot kopu, un --kopas-kopijas 1 nozīmē izveidot vienu repliku katram masteram.

Mūsu uzstādīšanai, kurai ir 6 mezgli, mums būs 3 kapteiņi un 3 vergi.

Ņemiet vērā, ka pirmie 6 mezgli tiks uzskatīti par galvenajiem (M) un nākamie trīs mezgli tiks uzskatīti par vergiem (S) . Pirmais vergs, t.i., 10.42.0.200:6379, atkārto pirmo masteru, t.i., 10.42.0.247:6379, otrais vergs - šajā otrajā secībā.

Šī komanda ir formatēta tā, lai rezultāts atspoguļotu mūsu loģisko iestatījumu iepriekš.

# 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. Kad klastera izveide ir veiksmīga, izpildiet šādu komandu jebkurā resursdatorā (norādiet tā IP adresi, izmantojot karodziņu -h ), lai uzskaitītu visus klastera mezglus.

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

Jums vajadzētu redzēt visus klastera mezglus ar vergiem, kas norāda viņu kapteiņus, kā parādīts nākamajā ekrānuzņēmumā.

Dažādi lauki ir šādā secībā: mezgla ID, IP adrese: ports, karodziņi, pēdējais nosūtītais ping, pēdējais saņemtais teniss, konfigurācijas laikmets, saites stāvoklis, sloti (meistariem).

4. darbība: Redis klastera kļūmjpārlēces pārbaude

12. Šajā sadaļā mēs parādīsim, kā pārbaudīt klastera kļūmjpārleci. Pirmkārt, ņemsim vērā meistarus.

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

Ņem vērā arī Redis vergus.

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

13. Pēc tam apturēsim Redis servisu vienā no galvenajiem mezgliem, piemēram, 10.42.0.197, un pārbaudīsim visus galvenos mezglus kopā.

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

No šī ekrānuzņēmuma var redzēt, ka mezgls 10.42.0.197:6367 ir kļūmes stāvoklī un tā vergs 10.42.0.21:6379 ir paaugstināts par galveno statusu.

14. Tagad sāksim pakalpojumu Redis vēlreiz neizdevušajā mezglā un pārbaudīsim visus kapteiņa kopas.

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

Pārbaudiet arī klastera vergus, lai apstiprinātu, ka neizdevies meistars tagad ir vergs.

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

5. darbība. Datu replikācijas pārbaude visā Redis kopā

15. Šajā pēdējā sadaļā ir paskaidrots, kā pārbaudīt klastera datu replikāciju. Vienam no meistariem mēs izveidosim atslēgu un vērtību, pēc tam mēģināsim to nolasīt no visiem klastera mezgliem šādi. Izmantojiet slēdzi -c , lai iespējotu klastera atbalstu redis-cli utilītā un piekļūtu datiem klastera režīmā.

# 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

Apakšējā līnija ir Redis klasteris ir vēlamais veids, kā iegūt automātisku šķembu veidošanu, replikāciju un augstu pieejamību. Pārējā failā /etc/redis.conf ir daudz citu labi dokumentētu konfigurācijas parametru. Plašāku informāciju varat atrast oficiālajā dokumentācijā: Redis klastera apmācība un Redis klastera specifikācija.

Tas mūs noved pie trīsdaļīgās Redis apmācības sērijas beigām. Zemāk esošo atsauksmju veidlapu var izmantot, lai izliktu jautājumus vai komentārus.