Kif Twaqqaf Redis Cluster f'CentOS 8 - Parti 3


Redis Cluster hija karatteristika Redis integrata li tappoġġja sharding awtomatiku, replikazzjoni u disponibbiltà għolja li qabel kienet implimentata bl-użu Sentinels. Hija mfassla għal żewġ għanijiet ewlenin: wieħed huwa li awtomatikament taqsam is-sett tad-dejta tiegħek fost istanzi multipli u t-tieni li jipprovdi ċertu grad ta’ disponibbiltà waqt il-ħitan, biex ikomplu l-operazzjonijiet meta xi każijiet (speċjalment il-kaptani) ifallu jew ma jkunux jistgħu jikkomunikaw mal-maġġoranza ta’ nodi fil-cluster.

Madankollu, il-cluster jieqaf jopera fil-każ ta’ fallimenti akbar (eż. meta l-maġġoranza tal-istanzi prinċipali ma jkunux disponibbli). Ukoll, jekk kaptan u skjav ifallu fl-istess ħin, il-cluster ma jistax ikompli l-operazzjonijiet normali (għalkemm il-soluzzjoni hija li żżid aktar nodi jew toħloq asimetrija fil-cluster, biex tbiddel awtomatikament it-tqassim tal-cluster).

Skont id-dokumentazzjoni tal-cluster Redis, il-\cluster minimu li jaħdem kif mistenni jeħtieġ li jkun fih mill-inqas 3 nodi prinċipali. Iżda l-aktar setup adattat għal disponibbiltà għolja għandu jkollu mill-inqas 6 nodi bi tliet masters u tliet skjavi, kull kaptan ikollu skjav.

Importanti: Redis Cluster għandu wkoll xi limitazzjonijiet li huma nuqqas ta' appoġġ għal ambjenti NATted kif ukoll dawk fejn l-indirizzi IP jew il-portijiet TCP huma mmappjati mill-ġdid pereżempju taħt Docker. Barra minn hekk, mhux kull librerija tal-klijenti tappoġġjaha.

Dan l-artikolu juri kif twaqqaf Redis Cluster (b'Cluster-Mode Disabled) f'CentOS 8. Jinkludi kif tinstalla Redis, tikkonfigura n-nodi tal-cluster, toħloq cluster u tittestja l-failover tal-cluster.

Nota: Għal din il-gwida, se nużaw istanzi Redis friski/vojta biex inħaddmu l-modalità cluster. Il-mod ta 'cluster mhux se jaħdem b'xi konfigurazzjonijiet magħmula fl-ewwel żewġ gwidi tas-Serje Redis tagħna, partikolarment ma taħdimx meta r-replika tal-parametru tkun qed tintuża.

  1. Servers b'Installazzjoni ta' CentOS 8

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

Is-setup tagħna għandha 3 nodi prinċipali ta 'qari/kitba u 3 nodi ta' repliki ta 'qari biss, kull kaptan ikollu replika waħda, għalhekk tliet shards fihom id-dejta kollha tal-cluster f'kull nodu. Klijent API jew CLI ta 'applikazzjoni jista' jikteb biss lin-nodi prinċipali iżda jaqra minn kwalunkwe nodu fil-cluster.

Pass 1: Installazzjoni ta 'Redis fuq in-Nodi kollha

1. Idħol fl-istanzi kollha permezz ta 'SSH, imbagħad ħaddem il-kmand li ġej biex tinstalla l-modulu Redis billi tuża l-maniġer tal-pakkett DNF kif muri.

# dnf module install redis

2. Sussegwentement, ibda s-servizz Redis, ppermettilu jibda awtomatikament mal-boot tas-sistema u ċċekkja l-istatus tiegħu biex tivverifika li qed taħdem (ivverifika s-servizz fuq is-6 każijiet kollha):

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

Pass 2: Konfigurazzjoni ta' Instanzi Redis fuq in-Nodi kollha

3. Din it-taqsima tiddeskrivi kif tikkonfigura n-nodi tal-cluster Redis. Ftakar li twettaq il-konfigurazzjonijiet hawn fuq in-nodi kollha.

Uża l-fajl tal-konfigurazzjoni /etc/redis.conf biex tikkonfigura s-server Redis. Bħala prattika rakkomandata, oħloq backup tal-fajl oriġinali qabel ma teditjah billi tuża editur tat-test tal-linja tal-kmand tal-għażla tiegħek.

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

4. Sussegwentement, sib il-parametri tal-konfigurazzjoni li ġejjin u editja l-valuri tagħhom kif muri. Il-parametru tal-bind jistabbilixxi l-interface tas-server Redis se jisma ', issettja l-valur tiegħu għall-istanza LAN IP. Neħħi l-127.0.0.1 għax indunajna li nħalluh hemm inaqqas il-proċess tal-ħolqien tal-cluster, partikolarment l-istadju li tingħaqad mal-cluster.

bind  10.42.0.247

Imbagħad issettja l-modalità protetta għal no biex tippermetti konnessjonijiet mill-istanzi l-oħra fuq il-cluster.

protected-mode no

Il-parametru tal-port jiddefinixxi l-port li s-server Redis se jisma fuqu għall-konnessjonijiet, il-default huwa 6379. Dan huwa l-port tad-dejta għall-komunikazzjoni mal-klijenti.

port 6379

5. Is-sett ta 'parametri li jmiss se jippermetti l-modalità cluster u jistabbilixxi xi wħud mill-karatteristiċi utli tiegħu. Il-parametru attivat mill-cluster, meta ssettjat għal iva, jattiva l-modalità cluster.

cluster-enabled yes

Sussegwentement, il-parametru cluster-config-file jistabbilixxi l-isem tal-fajl tal-konfigurazzjoni tal-cluster ta’ node ta’ cluster (eż. nodes-6379.conf). Il-fajl jinħoloq fid-direttorju tax-xogħol (default huwa /var/lib/redis definit bl-użu tal-parametru dir) u mhuwiex editjabbli mill-utent.

cluster-config-file nodes-6379.conf

L-għażla ta 'cluster utli li jmiss hija cluster-node-timeout, hija użata biex tissettja l-ammont massimu ta' ħin f'millisekondi istanza tista 'tkun mhux disponibbli biex tiġi kkunsidrata fi stat ta' falliment. Valur ta' 15000 huwa ekwivalenti għal 15-il sekonda.

cluster-node-timeout 15000

6. Għandna bżonn ukoll li nippermettu l-persistenza Redis fuq disk. Nistgħu nużaw wieħed mill-modi ta 'persistenza, jiġifieri l-Append Only File (AOF): jirreġistra (fil-fajl appendonly.aof maħluqa taħt id-direttorju tax-xogħol) kull operazzjoni ta' kitba riċevuta b'suċċess mis-server. Id-dejta tintlagħab waqt l-istartjar tas-server biex tinbena mill-ġdid is-sett tad-dejta oriġinali.

Biex tattivah, issettja l-parametru appendonly għal iva.

appendonly yes

7. Wara li tagħmel il-bidliet kollha, terġa 'tibda s-servizz Redis fuq in-nodi kollha biex tapplika l-bidliet riċenti.

# systemctl restart redis

8. F'dan il-punt, kull node tal-cluster issa għandu jkollu ID. Tista' tiċċekkja dan fil-logfile li jinsab f'/var/log/redis/redis.log.

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

9. Sussegwentement, tiftaħ il-port 6397 u 16379 fuq l-istanzi kollha. Il-port aktar tard jintuża għall-cluster bus (kanal ta 'komunikazzjoni minn node għal nodu li juża protokoll binarju). Dan huwa rekwiżit bażiku għall-konnessjonijiet TCP tal-cluster Redis.

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

Pass 3: Ħolqien tar-Redis Cluster

10. Biex toħloq il-cluster, uża l-klijent tal-linja tal-kmand redis-cli kif ġej. Il---cluster create tippermetti l-ħolqien ta' cluster u --cluster-replicas 1 tfisser li toħloq replika waħda għal kull kaptan.

Għas-setup tagħna li għandha 6 nodi, se jkollna 3 kaptani u 3 skjavi.

Innota li l-ewwel 6 nodi se jitqiesu bħala masters (M) u t-tlieta li jmiss se jitqiesu skjavi (S). L-ewwel skjav jiġifieri 10.42.0.200:6379 jirreplika l-ewwel kaptan jiġifieri 10.42.0.247:6379, it-tieni skjav jirreplika t-tieni kaptan, f'dik l-ordni.

Il-kmand li ġej huwa fformattjat b'tali mod li r-riżultat jirrappreżenta s-setup loġiku tagħna hawn fuq.

# 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. Ladarba l-ħolqien tal-cluster jirnexxi, ħaddem il-kmand li ġej fuq kwalunkwe host (speċifika l-indirizz IP tiegħu billi tuża l-marka -h) biex telenka n-nodi tal-cluster kollha.

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

Għandek tkun tista 'tara n-nodi tal-clusters kollha, bl-iskjavi jindikaw il-kaptani tagħhom, kif muri fil-screenshot li ġej.

L-oqsma differenti huma f'din l-ordni: node ID, indirizz IP:port, bnadar, l-aħħar ping mibgħut, l-aħħar pong riċevut, konfigurazzjoni epoch, link-state, slots (għall-kaptani).

Pass 4: Ittestjar Redis Cluster Failover

12. F'din it-taqsima, se nuru kif tittestja failover ta' cluster. L-ewwel, ejja nieħdu nota tal-kaptani.

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

Ukoll, ħu nota tal-iskjavi Redis.

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

13. Sussegwentement, ejja nwaqqfu s-servizz Redis fuq wieħed min-nodi prinċipali eż 10.42.0.197 u ċċekkja n-nodi prinċipali kollha fil-cluster.

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

Mill-screenshot li ġej, tista 'tara li n-node 10.42.0.197:6367 huwa fi stat ta' falliment u l-iskjav tiegħu 10.42.0.21:6379 ġie promoss għal status ta 'kaptan.

14. Issa ejja nibdew is-servizz Redis għal darb'oħra fuq in-nodu fallut u ċċekkja l-kaptani kollha fil-cluster.

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

Ukoll, iċċekkja l-iskjavi cluster biex tikkonferma li l-kaptan fallut issa huwa skjav.

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

Pass 5: Ittestjar tar-Replikazzjoni tad-Data Madwar ir-Redis Cluster

15. Din l-aħħar taqsima tispjega kif tivverifika r-replikazzjoni tad-dejta tal-cluster. Aħna se noħolqu ċavetta u valur fuq wieħed mill-kaptani, imbagħad nippruvaw naqrawha min-nodi kollha tal-cluster kif ġej. Uża l-iswiċċ -c biex tippermetti l-appoġġ tal-cluster taħt l-utilità redis-cli u aċċess għad-dejta fil-modalità cluster.

# 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

L-aħħar linja hija r-Redis Cluster huwa l-mod preferut biex tikseb sharding awtomatiku, replikazzjoni, u disponibbiltà għolja. Hemm ħafna parametri oħra ta 'konfigurazzjoni dokumentati tajjeb fil-bqija tal-fajl /etc/redis.conf, tista' ssib aktar informazzjoni fid-dokumentazzjoni uffiċjali: Redis cluster tutorja u Redis cluster speċifikazzjoni.

Dan iwassalna għall-aħħar tas-serje ta 'tutorial Redis bi tliet partijiet. Il-formola ta' feedback hawn taħt tista' tintuża biex tpoġġi mistoqsijiet jew kummenti.