Kā iestatīt atkārtotu replikāciju (ar atspējotu kopu režīmu) programmā CentOS 8 - 1. daļa


Redis (attālais vārdnīcu serveris) ir ļoti populārs un plaši izmantots atvērtā koda, ātrs, izplatīts un efektīvs atmiņā ievietots atslēgas vērtību datu bāzes/datu struktūras serveris.

Tas piedāvā bagātīgu funkciju kopumu, kas padara to efektīvu dažādos lietošanas gadījumos: kā datu bāzi, kešatmiņas slāni, ziņojumu starpnieku vai rindu; piemērojams tīmekļa lietojumprogrammās, tērzēšanas un ziņojumapmaiņas lietojumprogrammās, spēlēs, reāllaika datu analīzē un vēl daudz vairāk.

Tas atbalsta elastīgas datu struktūras, galvenā un sloga asinhrono replikāciju, lai mērogotu lasīšanas veiktspēju un pasargātu no datu zaudēšanas, klienta puses sadrupināšanu līdz rakstīšanas mērogam, divas noturības formas atmiņas datu ierakstīšanai diskā kompaktā formātā, kopu veidošanu un sadalīšana. Tajā ir arī automātiskas kļūmes lielai pieejamībai, izmantojot Redis Sentinel, Lua skriptu izveidi, transakcijas un daudz ko citu.

Redis, būdams NO SQL vai bezrelāciju datu bāze, piedāvā dažas veiktspējas priekšrocības salīdzinājumā ar tradicionālajām datu bāzu sistēmām (piemēram, MySQL/MariaDB, PostgreSQL utt.), Jo visi tās dati atrodas vai tiek glabāti atmiņā, padarot tos viegli pieejamus lietojumprogrammai. savukārt tradicionālajām datu bāzēm visi dati ir jāraksta vai jālasa no diska vai ārēja avota.

Redis ir kļuvis par arvien izplatītāku kešatmiņas izvēli, kas ļauj atkārtoti izmantot kešatmiņā saglabātos datus (kas saglabāti lietojumprogrammas galvenajā atmiņas telpā), nevis vienmēr vaicāt datu bāzē par bieži izmantotiem datiem. Tāpēc tas ir fantastisks RDMS (Relāciju datu bāzu pārvaldības sistēmu) pavadonis, lai galu galā uzlabotu lietojumprogrammu veiktspēju.

Šajā trīsdaļīgajā Redis apmācību sērijā mēs aplūkosim, kā iestatīt un izmantot dažas no Redis galvenajām funkcijām, kuras ir replikācija, augsta pieejamība, izmantojot Redis Sentinel un Redis Cluster, raksti ir šādi:

Šajā rokasgrāmatā ir parādīts, kā iestatīt Redis replikāciju (ar atspējotu kopu režīmu) CentOS 8 Linux, tostarp to, kā instalēt Redis, konfigurēt galveno un kopijas un pārbaudīt replikāciju.

Svarīgi: Redis kopai (ti, replikācijas kopai) ar atspējotu kopas režīmu ir viena mezglu grupa (piemēram, galvenā un viena vai divas kopijas), kur Redis kopa ar iespējotu kopas režīmu var sastāvēt no divām vai vairākām mezglu grupām (piemēram, trīs galvenās katram ir vergi vai divi).

  1. Serveri ar CentOS 8 instalāciju

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

Izmantojot iepriekšminēto iestatījumu (kuram ir viens lasīšanas/rakstīšanas primārais/galvenais mezgls un 2 tikai lasāmu kopiju mezgli), mums ir viena mezglu grupa, kas satur visus klastera datus katrā mezglā. Kad vergs ir izveidojis savienojumu ar kapteini, tas saņem pilnas datu bāzes sākotnējo kopiju, un visi dati, kas iepriekš pastāvēja vergā, tiks izmesti.

Turklāt klients var rakstīt tikai galvenajam, bet lasīt no jebkura klastera mezgla. Kā raksti tiek veikti galvenajam, tie tiek izplatīti visiem savienotajiem vergiem, lai reāllaikā atjauninātu vergu datu kopas.

1. darbība: Redis instalēšana CentOS 8

1. Vispirms piesakieties visos CentOS 8 mezglos, izmantojot SSH, pēc tam instalējiet Redis pakotni visos mezglos (galvenajā un kopijās), izmantojot DNF pakotņu pārvaldnieku, kā parādīts.

# dnf install @redis

2. Pabeidzot Redis pakotnes instalēšanu, palaidiet pakalpojumu Redis, ļaujiet tam automātiski startēt pie katras sistēmas sāknēšanas un pārbaudiet, vai tas darbojas un darbojas šādi.

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

3. Varat arī pārbaudīt, vai serveris Redis darbojas un darbojas, pārbaudot klausīšanās portus, izmantojot komandu ss, šādi.

# ss -ltpn | grep redis-server

2. darbība: Redis Master Server konfigurēšana

4. Redis tiek konfigurēts, izmantojot konfigurācijas failu /etc/redis.conf, kas ir pašdokumentēts konfigurācijas faila piemērs. Vispirms izveidojiet oriģināla faila dublējumu un pēc tam atveriet to rediģēšanai, izmantojot izvēlēto komandrindas redaktoru.

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

5. Pēc noklusējuma Redis instance ir konfigurēta, lai klausītos un pieņemtu savienojumus atgriezeniskās saites saskarnē, izmantojot saistīšanas direktīvu. Lai sazinātos ar kopijām, galvenajam aparātam jābūt konfigurētam tā, lai tas klausītos IPv4 loopback adresi un tā LAN IP adresi, t.i., 10.42.0.247.

bind 127.0.0.1 10.42.0.247

6. Pēc tam iestatiet aizsargātā režīma parametru uz no , lai ļautu sazināties ar replikām, kā parādīts.

protected-mode no

Rediss klausās arī portā 6379, kas iestatīts, izmantojot direktīvu port . Šis ir datu ports saziņai ar lietojumprogrammu API vai CLI klientiem.

port 6379

7. Lai pēc izvēles nodrošinātu galveno-kopiju sakarus, mēs varam aizsargāt galveno, izmantojot direktyvu Requepass, lai klientiem/kopijām pirms jebkādu komandu izpildīšanas vai replicēšanas sinhronizācijas procesa uzsākšanas būtu jāizsniedz autentifikācijas parole, pretējā gadījumā kapteinis atteiks klienta/kopijas pieprasījums (neaizmirstiet iestatīt drošu paroli).

Demonstrācijas nolūkos mēs izmantosim šo iespēju, lai parādītu, kā tā darbojas.

requirepass  [email 

8. Redis žurnāli tiek saglabāti arī failā /var/log/redis/redis.log, tas tiek iestatīts, izmantojot logfile direktīvu, un servera noklusējuma daudzveidības līmenis ir paziņojums, kas definēts, izmantojot loglevel parametru.

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

9. Tā kā SystemD ir noklusējuma sistēmas un pakalpojumu pārvaldnieks CentOS 8, Redis var konfigurēt mijiedarbībai ar systemd uzraudzības koku, iestatot uzraudzīto parametru systemd.

supervised systemd

10. Pēc visu nepieciešamo konfigurāciju veikšanas saglabājiet failu un aizveriet to. Pēc tam restartējiet pakalpojumu Redis, lai lietotu jaunās izmaiņas.

# systemctl daemon-reload
# systemctl restart redis

11. Lai piekļūtu Redis serverim, mums jāizmanto redis-cli (komandrindas interfeiss redis-serverim). Pēc noklusējuma tas izveido savienojumu ar vietējā hosta serveri (portā 127.0.0.1 6379). Ņemiet vērā, ka, tā kā serveris tiek aizsargāts no klientiem, izmantojot paroli, komandas palaišana pirms autentifikācijas neizdodas.

Izmantojiet komandu auth, lai norādītu autentifikācijas paroli, kā parādīts nākamajā ekrānuzņēmumā.

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

12. Lai izveidotu savienojumu ar kopiju (pēc to konfigurēšanas, kā aprakstīts nākamajā sadaļā), izmantojiet opcijas -h un -p , lai norādītu replikas IP adresi/resursdatora nosaukumu un attiecīgi (nevis replikas ugunsmūrī jābūt atvērtam 6379 portam).

# redis-cli -h 10.42.0.21 -p 6379

13. Pēc tam ugunsmūrī atveriet Redis servera datu portu, lai atļautu ienākošos savienojumus ar galveno, un pēc tam atkārtoti ielādējiet ugunsmūra noteikumus, izmantojot komandu firewall-cmd, kā parādīts.

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

3. darbība: Redis Replica/Slave Server konfigurēšana

14. Lai ātri iestatītu Redis instanci kā reprodukciju, izmantojiet utilītu redis-cli un izsauciet komandu REPLICAOF, kā parādīts.

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

15. Lai replikācijas savienojums būtu pastāvīgs, konfigurācijas failā jāveic šādas izmaiņas. Sāciet ar sākotnējā faila dublēšanu un pēc tam atveriet to rediģēšanai.

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

16. Lai ļautu klientiem izveidot savienojumu ar reprodukciju, lai lasītu datus, pievienojiet replikas IP adresi saistīšanas direktīvai.

# replica1
bind 127.0.0.1 10.42.0.21

# replica2
bind 127.0.0.1 10.42.0.34

17. Lai konfigurētu Redis gadījumu kā repliku, izmantojiet parametra replica un kā vērtības iestatiet galvenā mezgla IP adresi (vai resursdatora nosaukumu) un portu.

replicaof 10.42.0.247 6379

18. Pēc tam, tā kā mūsu galvenā instance ir aizsargāta, izmantojot paroli, mums ir jāiestata parole kopijas konfigurācijā, lai tā varētu autentificēties galvenajam, izmantojot parametru masterauth.

masterauth [email 

19. Turklāt, kad replika zaudē savienojumu ar galveno vai ja notiek replikācija, replika ir konfigurēta tā, lai tā atbildētu uz klienta pieprasījumiem, iespējams, ar “novecojušiem” datiem. Bet, ja tā ir pirmā sinhronizācija, tad datu kopa var būt tikai tukša. Šo rīcību kontrolē parametrs replica-serve-stale-data.

Tā kā Redis 2.6 pēc noklusējuma kopijas ir tikai lasāmas, to kontrolē parametrs, kas paredzēts tikai lasīšanai. Varat veikt citas kopijas konfigurācijas korekcijas, kas atbilst jūsu lietojumprogrammas vajadzībām.

20. Kad esat veicis visas nepieciešamās izmaiņas, restartējiet pakalpojumu Redis visās replikās.

# systemctl restart redis

21. Atveriet arī ugunsmūra 6379 portu, lai ļautu savienojumiem no galvenā un klienta ar kopijām, un atkārtoti ielādējiet ugunsmūra kārtulas.

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

4. solis: Pārbaudiet Master-replica Replication Status

22. Kad galvenā replikas replikācijas konfigurācija ir pabeigta, mēs varam pārbaudīt, vai iestatīšana darbojas labi, šādi.

Galvenajā ierīcē izpildiet šādas komandas.

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

23. Pārbaudiet arī replikācijas statusu kopijās/vergos šādi.

# redis-cli
127.0.0.1:6379> info replication

23. Tagad pārbaudīsim replikāciju, iestatot atslēgas vērtību galvenajā instancē, un pārbaudiet, vai dati ir sinhronizēti ar kopijām.

Uz kapteiņa rīkojieties šādi:

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

24. Pēc tam pārbaudiet, vai dati ir sinhronizēti ar kopijām, kā parādīts.

# redis-cli
127.0.0.1:6379> get domain

25. Redis ir funkcija, kas ļauj galvenajam gadījumam līdz noteiktam sekunžu skaitam ierobežot dažu rakstu zaudēšanas risku, ja nav pietiekami daudz kopiju.

Tas nozīmē, ka kapteinis var pārtraukt rakstību pieņemšanu, ja ir pievienotas mazāk nekā N kopijas, kuru kavēšanās ir mazāka vai vienāda ar M sekundēm, ko kontrolē attiecīgi opcijas min-replicas-to-write un min-replicas-max-lag.

Lai tos iestatītu, noņemiet komentārus un iestatiet vērtības atbilstoši iestatīšanas prasībām mapē /etc/redis.conf, kā parādīts nākamajā ekrānuzņēmumā. Šī konfigurācija nozīmē, ka no pēdējās ping līdz kopijām pēc 10 sekundēm, ja tiešsaistē ir mazāk nekā 2 kopijas, kapteinis pārtrauks pieņemt rakstus.

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

Papildu opcijas varat atrast pārējā konfigurācijas failā /etc/redis.conf, lai iegūtu sīkāku informāciju par replikāciju Redis dokumentācijā.

Nākamajā rakstā mēs aplūkosim, kā iestatīt Redis augstai pieejamībai ar Sentinel CentOS 8. Līdz tam palieciet bloķēts un atcerieties dalīties savos jautājumos un jautājumos, izmantojot mūsu zemāk esošo komentāru veidlapu, lai jūs varētu ar mums sazināties.