Kif Twaqqaf ir-Replikazzjoni Redis (bil-Modalità Cluster Disabled) f'CentOS 8 - Parti 1


Redis (Server tad-Dizzjunarju Remot) huwa sors miftuħ popolari ħafna u użat ħafna, veloċi, distribwit u effiċjenti fil-memorja database/server tal-istruttura tad-dejta tal-valur ewlieni.

Joffri sett għani ta 'karatteristiċi li jagħmluha effettiva għal firxa wiesgħa ta' każijiet ta 'użu: bħala database, saff ta' caching, sensar ta 'messaġġi, jew kju; applikabbli f'applikazzjonijiet tal-web, chat u applikazzjonijiet ta' messaġġi, logħob, analiżi tad-dejta f'ħin reali u ħafna aktar.

Jappoġġa strutturi flessibbli tad-dejta, replikazzjoni asinkronika master-slave biex tiskala l-prestazzjoni tal-qari u tħares kontra t-telf tad-dejta, sharding min-naħa tal-klijent għall-iskala tal-prestazzjoni tal-kitba, żewġ forom ta’ persistenza għall-kitba ta’ data fil-memorja fuq disk f’format kompatt, clustering, u qsim. Hija tinkludi wkoll failovers awtomatiċi għal skjerament ta 'disponibbiltà għolja permezz ta' Redis Sentinel, scripting Lua, tranżazzjonijiet, u ħafna aktar.

Billi hija NO SQL jew database mhux relazzjonali, Redis toffri xi benefiċċji ta' prestazzjoni fuq sistemi ta' database tradizzjonali (bħal MySQL/MariaDB, PostgreSQL, eċċ.), minħabba li d-dejta kollha tagħha toqgħod jew tinħażen fil-memorja u tagħmilha faċilment aċċessibbli għal applikazzjoni, filwaqt li d-databases tradizzjonali jridu jiktbu d-data kollha fuq jew jaqraw minn disk jew sors estern.

Redis saret għażla dejjem aktar prevalenti għall-caching, li tippermetti l-użu mill-ġdid tad-dejta fil-cache (maħżuna fl-ispazju tal-memorja prinċipali ta 'applikazzjoni) aktar milli dejjem tistaqsi database għal dejta użata ta' spiss. Għalhekk huwa ħbieb meraviljuż ta 'RDMS (Relational Database Management Systems) biex fl-aħħar mill-aħħar ittejjeb il-prestazzjoni tal-applikazzjoni.

F'din is-serje ta' tutorja ta' Redis bi tliet partijiet, se nkopru kif nistabbilixxu u nużaw xi wħud mill-karatteristiċi ewlenin ta' Redis li huma replikazzjoni, disponibbiltà għolja bl-użu ta' Redis Sentinel u Redis Cluster, l-artikoli huma:

Din il-gwida turi kif twaqqaf Redis Replication (bil-Cluster-Mode Disabled) f'CentOS 8 Linux, inkluż kif tinstalla Redis, tikkonfigura l-kaptan u r-repliki, u tittestja r-replikazzjoni.

Importanti: Cluster Redis (jiġifieri Cluster Replikazzjoni) bil-modalità cluster diżattivata għandu grupp ta’ nodi wieħed (eż. master u replika waħda jew żewġ) fejn cluster Redis bil-mod cluster attivat jista’ jikkonsisti f’żewġ gruppi ta’ nodi jew aktar (eż. tliet masters). kull wieħed ikollu skjavi jew tnejn).

  1. Servers b'Installazzjoni ta' CentOS 8

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

Bis-setup ta 'hawn fuq (li għandha nodu primarju/master wieħed ta' qari/kitba u 2 nodi ta 'repliki ta' qari biss), għandna grupp ta 'nodi wieħed li fih id-dejta kollha tal-cluster f'kull nodu. Ladarba skjav jgħaqqad ma 'kaptan, jirċievi kopja inizjali tad-database sħiħa u kwalunkwe data li kienet teżisti qabel fuq l-iskjavi se tintrema.

Barra minn hekk, klijent jista 'jikteb biss lill-kaptan iżda jaqra minn kwalunkwe node fil-cluster. U kif jikteb isiru fuq il-kaptan, huma propagati lill-iskjavi kollha konnessi għall-aġġornament tas-settijiet tad-dejta tal-iskjavi f'ħin reali.

Pass 1: Installazzjoni ta' Redis fuq CentOS 8

1. Biex tibda, idħol fin-nodi kollha CentOS 8 permezz ta 'SSH, imbagħad installa l-pakkett Redis fuq in-nodi kollha (master u repliki) billi tuża l-maniġer tal-pakkett DNF kif muri.

# dnf install @redis

2. Malli titlesta l-installazzjoni tal-pakkett Redis, ibda s-servizz Redis, ppermettih jibda awtomatikament f'kull boot tas-sistema u ċċekkja jekk huwiex qed jaħdem kif ġej.

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

3. Tista 'wkoll tikkonferma li s-server Redis qed jaħdem billi tiċċekkja l-portijiet tas-smigħ billi tuża l-kmand ss, kif ġej.

# ss -ltpn | grep redis-server

Pass 2: Konfigurazzjoni ta 'Redis Master Server

4. Redis huwa kkonfigurat bl-użu tal-fajl ta 'konfigurazzjoni /etc/redis.conf, fajl ta' konfigurazzjoni ta 'eżempju ddokumentat lilu nnifsu. L-ewwel, oħloq backup tal-fajl oriġinali, imbagħad iftaħ għall-editjar billi tuża l-editur tal-linja tal-kmand tal-għażla tiegħek.

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

5. B'mod awtomatiku, istanza Redis hija kkonfigurata biex tisma' u taċċetta konnessjonijiet fuq l-interface loopback, bl-użu tad-direttiva bind. Biex jikkomunika mar-repliki, il-kaptan għandu jkun ikkonfigurat biex jisma 'l-indirizz IPv4 loopback u l-indirizz IP LAN tiegħu jiġifieri 10.42.0.247.

bind 127.0.0.1 10.42.0.247

6. Sussegwentement, issettja l-parametru tal-modalità protetta għal no biex tippermetti komunikazzjoni mar-repliki kif muri.

protected-mode no

Ukoll, Redis jisma fuq il-port 6379 li huwa ssettjat bl-użu tad-direttiva port. Dan huwa l-port tad-dejta għall-komunikazzjoni mal-APIs tal-applikazzjoni jew mal-klijenti CLI.

port 6379

7. Biex b'mod fakultattiv niżguraw il-komunikazzjonijiet master-replica, nistgħu nipproteġu lill-kaptan billi tuża d-direttiva requirepass, sabiex il-klijenti/repliki jkollhom joħorġu password ta 'awtentikazzjoni qabel ma jmexxu xi kmandi jew jibdew proċess ta' sinkronizzazzjoni ta 'replikazzjoni, inkella l-kaptan jirrifjuta l- talba tal-klijent/replika (ftakar li tistabbilixxi password sigura).

Aħna se nużaw l-għażla li ġejja għal skopijiet ta 'dimostrazzjoni, biex nuru kif taħdem.

requirepass  [email 

8. Ukoll, zkuk Redis huma maħżuna fil-/var/log/redis/redis.log fajl, dan huwa stabbilit bl-użu tad-direttiva logfile u l-livell ta ' verbosity server default huwa avviż, definit bl-użu tal-parametru loglevel.

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

9. Peress li systemd huwa s-sistema default u l-maniġer tas-servizz f'CentOS 8, tista 'tikkonfigura Redis biex jinteraġixxi mas-siġra ta' superviżjoni systemd billi tistabbilixxi l-parametru sorveljat għal systemd.

supervised systemd

10. Wara li tagħmel il-konfigurazzjonijiet kollha meħtieġa, issalva l-fajl u agħlaq. Imbagħad erġa ibda s-servizz Redis biex tapplika l-bidliet il-ġodda.

# systemctl daemon-reload
# systemctl restart redis

11. Biex taċċessa s-server Redis, għandna bżonn nużaw ir-redis-cli (interface tal-linja tal-kmand għar-redis-server). B'mod awtomatiku, jgħaqqad mas-server fuq il-localhost (f'127.0.0.1 port 6379). Innota li minħabba li s-server huwa assigurat mill-klijenti bl-użu ta 'password, it-tħaddim ta' kmand qabel l-awtentikazzjoni għandu jfalli.

Uża l-kmand tal-awtentikazzjoni biex tforni l-password tal-awtentikazzjoni kif muri fil-screenshot li ġej.

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

12. Biex tikkonnettja ma 'replika (wara kkonfigurathom kif deskritt fit-taqsima li jmiss), uża l-għażliet -h u -p biex tispeċifika l-indirizz IP/hostname tar-replika u port rispettivament (mhux dak il-port 6379 għandu jkun miftuħ fil-firewall tar-replika).

# redis-cli -h 10.42.0.21 -p 6379

13. Sussegwentement, iftaħ il-port tad-dejta tas-server Redis fil-firewall biex tippermetti konnessjonijiet deħlin mal-kaptan, u sussegwentement erġa' tagħbija r-regoli tal-firewall billi tuża l-kmand tal-firewall-cmd kif muri.

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

Pass 3: Konfigurazzjoni ta' Redis Replica/Slave Servers

14. Biex issettja malajr istanza Redis bħala replika fuq il-fly, uża l-utilità redis-cli u ċempel il-kmand REPLICAOF kif muri.

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

15. Biex tagħmel konnessjoni ta 'replikazzjoni permanenti, trid tagħmel il-bidliet li ġejjin fil-fajl tal-konfigurazzjoni. Ibda billi tagħmel backup tal-fajl oriġinali, imbagħad iftaħ għall-editjar.

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

16. Biex il-klijenti jkunu jistgħu jikkonnettjaw mar-replika biex jaqraw id-dejta, żid l-indirizz IP tar-replika mad-direttiva tal-bind.

# replica1
bind 127.0.0.1 10.42.0.21

# replica2
bind 127.0.0.1 10.42.0.34

17. Biex tikkonfigura istanza Redis bħala replika, uża l-parametru replicaof u ssettja l-indirizz IP (jew hostname) u l-port tan-node prinċipali bħala valuri.

replicaof 10.42.0.247 6379

18. Sussegwentement, peress li l-istanza prinċipali tagħna hija protetta bl-użu ta 'password, għandna bżonn nissettjaw il-password fil-konfigurazzjoni tar-replika biex tkun tista' jawtentika lill-kaptan, billi tuża l-parametru masterauth.

masterauth [email 

19. Barra minn hekk, meta replika titlef il-konnessjoni tagħha mal-kaptan, jew meta r-replikazzjoni tkun għaddejja, ir-replika hija kkonfigurata biex twieġeb għat-talbiet tal-klijenti, possibilment b'dejta\skaduta . Iżda jekk tkun l-ewwel sinkronizzazzjoni, allura is-sett tad-dejta jista' jkun biss vojt Din l-imġieba hija kkontrollata mill-parametru replica-serve-stale-data.

U, peress li r-repliki ta' Redis 2.6 awtomatikament huma ta' qari biss, dan huwa kkontrollat mill-parametru tar-replika li jinqara biss. Tista 'tagħmel aġġustamenti oħra tal-konfigurazzjoni tar-repliki biex taqdi l-ħtiġijiet tal-applikazzjoni tiegħek.

20. Ladarba tkun għamilt il-bidliet kollha meħtieġa, ibda mill-ġdid is-servizz Redis fuq ir-repliki kollha.

# systemctl restart redis

21. Ukoll, iftaħ il-port 6379 fil-firewall biex tippermetti konnessjonijiet mill-kaptan u l-klijenti għar-repliki, u erġa' tagħbija r-regoli tal-firewall.

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

Pass 4: Iċċekkja l-Istatus tar-Replikazzjoni Master-replica

22. Ladarba l-konfigurazzjoni tar-replikazzjoni master-replikazzjoni tkun kompluta, nistgħu niċċekkjaw jekk it-twaqqif hux qed jaħdem tajjeb kif ġej.

Fuq il-kaptan, mexxi l-kmandi li ġejjin.

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

23. Ukoll, iċċekkja l-istatus tar-replikazzjoni fuq ir-repliki/iskjavi kif ġej.

# redis-cli
127.0.0.1:6379> info replication

23. Issa ejja nittestjaw ir-replikazzjoni billi tissettja valur ewlieni fl-istanza prinċipali u tivverifika jekk id-dejta hijiex issinkronizzata mar-repliki.

Fuq il-kaptan, agħmel dan:

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

24. Imbagħad iċċekkja jekk id-dejta ġietx issinkronizzata mar-repliki kif muri.

# redis-cli
127.0.0.1:6379> get domain

25. Redis għandha karatteristika li tippermetti lill-istanza prinċipali tillimita r-riskju li titlef xi kitbiet f'każ li ma jkunx hemm biżżejjed repliki disponibbli, għal numru speċifikat ta' sekondi.

Dan ifisser li kaptan jista' jieqaf jaċċetta kitbiet jekk ikun hemm inqas minn N repliki konnessi, li jkollhom dewmien inqas jew ugwali minn M sekondi, kif ikkontrollat mill-għażliet min-repliki-to-write u min-replicas-max-lag rispettivament.

Biex issettjahom, neħħihom il-kumment u ssettja l-valuri skont ir-rekwiżiti tas-setup tiegħek f'/etc/redis.conf, kif muri fil-screenshot li ġej. Din il-konfigurazzjoni tfisser li, mill-aħħar ping għar-repliki, wara 10 sekondi, jekk ikun hemm inqas minn 2 repliki online, il-kaptan jieqaf jaċċetta l-kitbiet.

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

Tista' ssib aktar għażliet fil-bqija tal-fajl ta' konfigurazzjoni /etc/redis.conf u għal aktar dettall aqra dwar ir-replikazzjoni fid-dokumentazzjoni ta' Redis.

Fl-artiklu li jmiss, se nkopru kif twaqqaf Redis għal disponibbiltà għolja ma 'Sentinel f'CentOS 8. Sa dak iż-żmien, ibqa' msakkra u ftakar li taqsam il-ħsieb u l-mistoqsijiet tiegħek billi tuża l-formola tal-kummenti tagħna hawn taħt hemm għalik biex tilħaqna.