Giunsa ang Pag-setup sa Redis Replication (nga adunay Cluster-Mode Disabled) sa CentOS 8 - Bahin 1


Ang Redis (Remote Dictionary Server) kay sikat kaayo ug kaylap nga gigamit nga open source, paspas, apod-apod ug episyente nga in-memory key-value database/data structure server.

Nagtanyag kini usa ka daghang hugpong sa mga bahin nga naghimo niini nga epektibo alang sa usa ka halapad nga mga kaso sa paggamit: ingon usa ka database, layer sa caching, broker sa mensahe, o pila; magamit sa mga aplikasyon sa web, mga aplikasyon sa chat ug pagmemensahe, dula, real-time nga data analytics ug daghan pa.

Gisuportahan niini ang flexible nga mga istruktura sa datos, master-slave asynchronous replication aron sukdon ang performance sa pagbasa ug magbantay batok sa pagkawala sa datos, client-side sharding sa scale writing performance, duha ka porma sa pagpadayon sa pagsulat sa in-memory data ngadto sa disk sa usa ka compact format, clustering, ug pagbahinbahin. Nagpakita usab kini og mga awtomatikong failover alang sa taas nga pag-deploy pinaagi sa Redis Sentinel, Lua scripting, mga transaksyon, ug daghan pa.

Ingon nga NO SQL o non-relational database, ang Redis nagtanyag sa pipila ka mga benepisyo sa performance sa tradisyonal nga mga sistema sa database (sama sa MySQL/MariaDB, PostgreSQL, ug uban pa), tungod kay ang tanan nga datos niini anaa o gitipigan sa memorya nga kini dali nga ma-access sa usa ka aplikasyon, samtang ang tradisyonal nga mga database kinahanglan nga isulat ang tanan nga datos o basahon gikan sa disk o usa ka eksternal nga gigikanan.

Ang Redis nahimong mas kaylap nga pagpili alang sa caching, nga nagtugot sa paggamit pag-usab sa cached data (gitipigan sulod sa main memory space sa usa ka aplikasyon) kay sa kanunay nga pagpangutana sa usa ka database alang sa kanunay nga gigamit nga datos. Mao nga kini usa ka hinanduraw nga kauban sa RDMS (Relational Database Management Systems) aron sa katapusan mapaayo ang pasundayag sa aplikasyon.

Niini nga tulo ka bahin nga serye sa tutorial sa Redis, atong tabonan kung giunsa ang pag-set up ug paggamit sa pipila nga mga panguna nga bahin sa Redis nga mao ang pagkopya, taas nga magamit gamit ang Redis Sentinel ug Redis Cluster, ang mga artikulo mao ang:

Gipakita sa kini nga giya kung giunsa ang pag-setup sa Redis Replication (uban ang Cluster-Mode Disabled) sa CentOS 8 Linux, lakip kung giunsa ang pag-install sa Redis, pag-configure sa master ug mga replika, ug pagsulay sa replikasyon.

Importante: Ang Redis Cluster (ie Replication Cluster) nga adunay cluster mode disabled adunay usa ka node group (eg master ug usa o duha ka replicas) diin ang Redis cluster nga adunay cluster mode enabled mahimong naglangkob sa duha o daghan pa nga node groups (eg tulo ka masters. ang matag usa adunay mga ulipon o duha).

  1. Mga server nga adunay CentOS 8 nga Pag-install

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

Uban sa setup sa ibabaw (nga adunay usa ka read/write primary/master node ug 2 read-only replica nodes), kita adunay usa ka node group nga naglangkob sa tanang data sa cluster sa matag node. Kung ang usa ka ulipon makonektar sa usa ka agalon, makadawat kini usa ka inisyal nga kopya sa tibuuk nga database ug ang bisan unsang datos nga naglungtad kaniadto sa ulipon ilabay.

Gawas pa, ang usa ka kliyente makasulat lamang sa agalon apan magbasa gikan sa bisan unsang node sa cluster. Ug samtang ang mga pagsulat gihimo sa agalon, gipakaylap nila ang tanan nga konektado nga mga ulipon alang sa pag-update sa mga dataset sa ulipon sa tinuud nga oras.

Lakang 1: Pag-instalar sa Redis sa CentOS 8

1. Sa pagsugod, pag-log in sa tanang CentOS 8 nodes pinaagi sa SSH, unya i-install ang Redis package sa tanang node (master ug replicas) gamit ang DNF package manager sama sa gipakita.

# dnf install @redis

2. Sa pagkahuman sa pag-instalar sa pakete sa Redis, sugdi ang serbisyo sa Redis, pahimoa kini nga awtomatiko nga magsugod sa matag boot sa sistema ug susihon kung kini nagdagan ug nagdagan sama sa mosunod.

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

3. Mahimo usab nimo nga kumpirmahon nga ang Redis server naglihok ug nagdagan pinaagi sa pagsusi sa mga port sa pagpaminaw gamit ang ss command, ingon sa mosunod.

# ss -ltpn | grep redis-server

Lakang 2: Pag-configure sa Redis Master Server

4. Ang Redis gi-configure gamit ang /etc/redis.conf configuration file, usa ka self-documented example configuration file. Una, paghimo og backup sa orihinal nga file, dayon ablihi kini alang sa pag-edit gamit ang imong command-line editor nga gipili.

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

5. Sa kasagaran, usa ka Redis nga pananglitan ang gi-configure aron maminaw ug modawat sa mga koneksyon sa loopback interface, gamit ang bind directive. Aron makigkomunikar sa mga replika, ang agalon kinahanglang ma-configure aron maminaw sa IPv4 loopback address ug sa LAN IP address niini i.e 10.42.0.247.

bind 127.0.0.1 10.42.0.247

6. Sunod, i-set ang protected-mode parameter sa no aron tugotan ang komunikasyon sa mga replika sama sa gipakita.

protected-mode no

Usab, si Redis naminaw sa port 6379 nga gitakda gamit ang port nga direktiba. Kini ang data port alang sa pagpakigsulti sa mga API sa aplikasyon o mga kliyente sa CLI.

port 6379

7. Aron opsyonal nga ma-secure ang master-replica nga mga komunikasyon, mahimo natong panalipdan ang master gamit ang requirepass nga direktiba, aron ang mga kliyente/replika kinahanglan nga mag-isyu sa usa ka authentication password sa dili pa magpadagan sa bisan unsa nga mga sugo o magsugod sa proseso sa pag-synchronize sa replikasyon, kung dili ang agalon mobalibad sa hangyo sa kliyente/replica (hinumdomi ang pagbutang og luwas nga password).

Among gamiton ang mosunod nga opsyon alang sa mga katuyoan sa pagpasundayag, aron ipakita kon sa unsang paagi kini molihok.

requirepass  [email 

8. Usab, ang Redis logs gitipigan sa /var/log/redis/redis.log file, kini gitakda gamit ang logfile directive ug ang default server verbosity level mao ang notice, nga gihubit gamit ang loglevel parameter.

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

9. Tungod kay ang systemd mao ang default nga sistema ug tigdumala sa serbisyo sa CentOS 8, mahimo nimong i-configure ang Redis aron makig-uban sa punoan sa pagdumala sa systemd pinaagi sa pagbutang sa gidumala nga parameter sa systemd.

supervised systemd

10. Human sa paghimo sa tanan nga gikinahanglan nga mga configuration, i-save ang file ug isira kini. Dayon i-restart ang serbisyo sa Redis aron magamit ang bag-ong mga pagbag-o.

# systemctl daemon-reload
# systemctl restart redis

11. Aron ma-access ang Redis server, kinahanglan natong gamiton ang redis-cli (usa ka command-line interface sa redis-server). Sa kasagaran, kini nagkonektar sa server sa localhost (sa 127.0.0.1 port 6379). Timan-i nga tungod kay ang server gisiguro gikan sa mga kliyente gamit ang usa ka password, ang pagpadagan sa usa ka mando sa wala pa ang pag-authenticate kinahanglan mapakyas.

Gamita ang authentication command aron ihatag ang authentication password sama sa gipakita sa mosunod nga screenshot.

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

12. Aron makonektar sa usa ka replika (pagkahuman sa pag-configure niini ingon nga gihulagway sa sunod nga seksyon), gamita ang -h ug -p nga mga kapilian aron itakda ang replika nga IP address/hostname ug port matag usa (dili ang port 6379 kinahanglan nga bukas sa firewall sa replika).

# redis-cli -h 10.42.0.21 -p 6379

13. Sunod, ablihi ang Redis server data port sa firewall aron tugotan ang mga inbound nga koneksyon sa master, ug pagkahuman i-reload ang mga lagda sa firewall gamit ang firewall-cmd nga sugo sama sa gipakita.

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

Lakang 3: Pag-configure sa Redis Replica/Slave Servers

14. Aron dali nga mabutang ang usa ka Redis nga pananglitan ingon usa ka replika sa dali, gamita ang redis-cli utility ug tawagan ang REPLICAOF nga mando sama sa gipakita.

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

15. Sa paghimo sa usa ka replikasyon koneksyon permanente, kamo kinahanglan nga sa paghimo sa mosunod nga mga kausaban sa configuration file. Pagsugod pinaagi sa pag-back up sa orihinal nga file, dayon ablihi kini alang sa pag-edit.

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

16. Aron tugutan ang mga kliyente nga makonektar sa replika aron mabasa ang datos, idugang ang replika nga IP address sa direktiba sa bind.

# replica1
bind 127.0.0.1 10.42.0.21

# replica2
bind 127.0.0.1 10.42.0.34

17. Aron ma-configure ang usa ka Redis nga pananglitan ingon usa ka replika, gamita ang replicaof parameter ug itakda ang IP address sa master node (o hostname) ug port ingon mga kantidad.

replicaof 10.42.0.247 6379

18. Sunod, tungod kay ang among master nga pananglitan giprotektahan gamit ang usa ka password, kinahanglan namon nga itakda ang password sa replica configuration aron kini ma-authenticate sa master, gamit ang masterauth parameter.

masterauth [email 

19. Dugang pa, sa diha nga ang usa ka replika mawad-an sa iyang koneksyon uban sa agalon, o sa diha nga ang replikasyon nagpadayon, ang replika gi-configure aron sa pagtubag sa mga hangyo sa mga kliyente, nga posible uban sa \wala sa petsa nga data. Apan kon kini mao ang unang synchronization, nan ang data set mahimo nga walay sulod. Kini nga kinaiya kontrolado sa replica-serve-stale-data parameter.

Ug, tungod kay ang Redis 2.6 pinaagi sa default nga mga replika kay read-only, kini kontrolado sa replica-read-only parameter. Mahimo nimong buhaton ang uban pang mga pagbag-o sa pag-configure sa kopya nga mohaum sa imong mga panginahanglanon sa aplikasyon.

20. Kung nahimo na nimo ang tanan nga kinahanglan nga mga pagbag-o, i-restart ang serbisyo sa Redis sa tanan nga mga replika.

# systemctl restart redis

21. Usab, ablihi ang port 6379 sa firewall aron tugotan ang mga koneksyon gikan sa agalon ug mga kliyente ngadto sa mga replika, ug i-reload ang mga lagda sa firewall.

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

Lakang 4: Susiha ang Master-replica Replication Status

22. Sa dihang kompleto na ang master-replica replication configuration, atong masusi kung maayo ba ang pag-set up sama sa mosunod.

Sa agalon, padagana ang mosunod nga mga sugo.

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

23. Usab, susiha ang kahimtang sa replikasyon sa mga replika/ulipon sama sa mosunod.

# redis-cli
127.0.0.1:6379> info replication

23. Karon atong sulayan ang replikasyon pinaagi sa mga setting sa usa ka yawe nga bili sa master nga pananglitan ug susihon kung ang datos gi-sync sa mga replika.

Sa agalon, buhata kini:

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

24. Unya susiha kon ang data na-sync sa mga replika sama sa gipakita.

# redis-cli
127.0.0.1:6379> get domain

25. Ang Redis adunay feature nga makapahimo sa usa ka master instance nga limitahan ang risgo nga mawad-an sa pipila ka mga sinulat kung dili igo nga mga replika ang magamit, sa usa ka piho nga gidaghanon sa mga segundo.

Kini nagpasabot nga ang usa ka agalon mahimong mohunong sa pagdawat sa mga sinulat kon adunay ubos pa sa N replika nga konektado, nga adunay lag nga mas ubos o katumbas sa M segundos, ingon nga kontrolado sa min-replicas-to-write ug min-replicas-max-lag nga mga kapilian matag usa.

Aron mabutang kini, uncomment kanila ug itakda ang mga kantidad sumala sa imong mga kinahanglanon sa pag-setup sa /etc/redis.conf, sama sa gipakita sa mosunod nga screenshot. Kini nga configuration nagpasabot nga, gikan sa katapusang ping ngadto sa mga replika, human sa 10 segundos, kung adunay ubos pa sa 2 replika sa online, ang agalon mohunong sa pagdawat sa mga sinulat.

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

Makita nimo ang dugang nga mga kapilian sa nahabilin sa /etc/redis.conf configuration file ug para sa dugang detalye basaha ang bahin sa replikasyon sa Redis documentation.

Sa sunod nga artikulo, among hisgotan kung giunsa ang pag-set up sa Redis alang sa taas nga pagkaanaa sa Sentinel sa CentOS 8. Hangtud niana, magpabilin nga naka-lock ug hinumdomi nga ipaambit ang imong mga hunahuna ug mga pangutana gamit ang among porma sa komento sa ubos naa aron maabot nimo kami.