Otu esi ahazi Redis replication (ya na ụdị ụyọkọ nwere nkwarụ) na CentOS 8 - Part 1


Redis (Remote Dictionary Server) bụ ebe mepere emepe na-ewu ewu na nke a na-ejikarị eme ihe, ngwa ngwa, kesaa ma rụọ ọrụ nke ọma na nchekwa nchekwa data/data nhazi data.

Ọ na-enye atụmatụ bara ụba nke na-eme ka ọ dị irè maka ọtụtụ ihe eji eme ihe: dị ka nchekwa data, caching oyi akwa, onye na-ere ahịa ozi, ma ọ bụ kwụ n'ahịrị; ọdabara na ngwa webụ, nkata na ngwa izi ozi, egwuregwu, nyocha data ozugbo na ọtụtụ ndị ọzọ.

Ọ na-akwado usoro data na-agbanwe agbanwe, nna ukwu-ohu asynchronous replication ka ọnụ ọgụgụ na-agụ arụmọrụ ma na-eche nche megide mfu data, Sharding-n'akụkụ ndị ahịa ka ọnụ ọgụgụ nke arụmọrụ dee, ụdị abụọ nke nnọgidesi ike na ide data ebe nchekwa na diski n'ụdị kọmpat, nchịkọta, na nkewa. Ọ na-egosipụtakwa ọdịda na-akpaghị aka maka oke nnweta dị elu site na Redis Sentinel, Lua scripting, azụmahịa na ọtụtụ ndị ọzọ.

N'ịbụ NO SQL ma ọ bụ nchekwa data na-abụghị nke mmekọrịta, Redis na-enye ụfọdụ uru arụmọrụ karịa sistemụ nchekwa data ọdịnala (dị ka MySQL/MariaDB, PostgreSQL, wdg), n'ihi na data ya niile bi ma ọ bụ echekwara na ebe nchekwa na-eme ka ọ dị mfe ịnweta ngwa, ebe nchekwa data ọdịnala ga-ede data niile na ma ọ bụ gụọ site na diski ma ọ bụ isi mmalite.

Redis abụrụla nhọrọ na-agbasawanye maka caching, nke na-enye ohere maka ijikwa data echekwara (echekwara n'ime oghere ebe nchekwa ngwa) karịa ịjụ ajụjụ nchekwa data mgbe niile maka data a na-ejikarị. Yabụ na ọ bụ ezigbo enyi nke RDMS (Sistemụ Njikwa Database Management) iji kwalite arụmọrụ ngwa n'ikpeazụ.

N'ime usoro nkuzi Redis nke nwere akụkụ atọ, anyị ga-ekpuchi otu esi ahazi ma jiri ụfọdụ njiri mara Redis nke bụ mmegharị, nnweta dị elu site na iji Redis Sentinel na Redis Cluster, isiokwu ndị a bụ:

Ntuziaka a na-egosi otu esi edozi Redis replication (ya na Cluster-Mode Disabled) na CentOS 8 Linux, gụnyere otu esi etinye Redis, hazie nna ukwu na oyiri, wee nwalee mmegharị ahụ.

Ihe dị mkpa: Otu Redis Cluster (ya bụ ụyọkọ mmegharị) nwere ọnọdụ ụyọkọ nwere nkwarụ nwere otu ọnụ ọnụ (dịka nna ukwu na otu ma ọ bụ abụọ oyiri) ebe ụyọkọ Redis nwere ọnọdụ ụyọkọ nwere ike ịnwe otu ọnụ abụọ ma ọ bụ karịa (dịka nna ukwu atọ). onye ọ bụla nwere ohu ma ọ bụ abụọ).

  1. Sava nwere nwụnye CentOS 8

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

Site na ntọlite n'elu (nke nwere otu ọnụ ọgụgụ ọgụgụ/dee isi/isi ọnụ na ọnụ ọgụgụ 2 na-agụ naanị), anyị nwere otu ọnụ ọnụ nke nwere data ụyọkọ niile na ọnụ nke ọ bụla. Ozugbo ohu jikọọ na nna ukwu, ọ na-enweta akwụkwọ mbụ nke nchekwa data zuru ezu, a ga-atụfukwa data ọ bụla dịbu na ohu ahụ.

E wezụga nke ahụ, onye ahịa nwere ike idegara naanị nna ukwu akwụkwọ mana gụọ ya site na ọnụ ụzọ ọ bụla dị na ụyọkọ ahụ. Dịkwa ka a na-ede n'ahụ nna ukwu, ha gbasaara ndị ohu niile jikọtara ọnụ maka imelite ihe ndekọ data ohu ozugbo.

Kwụpụ 1: Wụnye Redis na CentOS 8

1. Iji malite, banye n'ime oghere CentOS 8 niile site na SSH, wee wụnye ngwugwu Redis na nodes niile (nna ukwu na replicas) site na iji njikwa ngwugwu DNF dị ka egosiri.

# dnf install @redis

2. Mgbe emechara nrụnye ngwugwu Redis, malite ọrụ Redis, mee ka ọ malite na-akpaghị aka na sistemụ ọ bụla buut wee lelee ma ọ dị elu ma na-agba ọsọ dị ka ndị a.

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

3. Ị nwekwara ike kwado na ihe nkesa Redis dị elu ma na-arụ ọrụ site na ịlele ọdụ ụgbọ mmiri na-ege ntị site na iji iwu ss, dị ka ndị a.

# ss -ltpn | grep redis-server

Kwụpụ 2: Na-ahazi Redis Master Server

4. A na-ahazi Redis site na iji faịlụ nhazi /etc/redis.conf, faịlụ nhazi ihe atụ nke edebere onwe ya. Mbụ, mepụta nkwado ndabere na mpaghara faịlụ mbụ, wee mepee ya maka idezi site na iji nchịkọta nhọrọ-ahịrị iwu gị.

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

5. Site na ndabara, a na-ahazi ihe atụ Redis ka ọ gee ntị ma nabata njikọ na interface loopback, na-eji ntuziaka ejikọta. Iji kparịta ụka na ụdị oyiri ahụ, ekwesịrị ịhazi nna ya ukwu ka ọ gee ntị na adreesị IPv4 loopback yana adreesị IP LAN ya bụ 10.42.0.247.

bind 127.0.0.1 10.42.0.247

6. Ọzọ, tọọ paramita echekwabara na ọ dịghị iji kwe ka nkwurịta okwu na ụdị oyiri dị ka egosiri.

protected-mode no

Ọzọkwa, Redis na-ege ntị na ọdụ ụgbọ mmiri 6379 nke edobere site na iji iwu ọdụ ụgbọ mmiri. Nke a bụ ọdụ data maka iji API ngwa ma ọ bụ ndị ahịa CLI na-ekwurịta okwu.

port 6379

7. Iji chekwaa nzikọrịta ozi nke nna ukwu- oyiri, anyị nwere ike ichebe nna ukwu site na iji ntuziakapasspass, nke mere na ndị ahịa/oyiri ga-enye paswọọdụ nyocha tupu ha agbaa iwu ọ bụla ma ọ bụ malite usoro ịmekọrịta mmegharị, ma ọ bụghị ya, nna ukwu ga-ajụ. Arịrịọ onye ahịa/oyiri (cheta ịtọọ paswọọdụ echekwara).

Anyị ga-eji nhọrọ ndị a maka ebumnuche ngosi, iji gosi ka ọ si arụ ọrụ.

requirepass  [email 

8. Ọzọkwa, Redis ndekọ na-echekwara na /var/log/redis/redis.log faịlụ, a na-edozi site na iji logfile ntuziaka na ndabara nkesa verbosity larịị bụ ọkwa, kọwaa site na iji loglevel parameter.

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

9. Ebe ọ bụ na systemd bụ usoro ndabara na onye njikwa ọrụ na CentOS 8, ị nwere ike hazie Redis ka ya na osisi nlekọta sistemu na-emekọrịta ihe site na ịtọ ntọala a na-elekọta na sistemu.

supervised systemd

10. Mgbe ịmechara nhazi niile dị mkpa, chekwaa faịlụ ma mechie ya. Mgbe ahụ malitegharịa ọrụ Redis ka itinye mgbanwe ọhụrụ ahụ.

# systemctl daemon-reload
# systemctl restart redis

11. Iji nweta ihe nkesa Redis, anyị kwesịrị iji redis-cli (akara akara iwu na redis-server). Site na ndabara, ọ na-ejikọ na ihe nkesa na localhost (na 127.0.0.1 ọdụ ụgbọ mmiri 6379). Rịba ama na n'ihi na echekwara ihe nkesa ahụ n'aka ndị ahịa na-eji paswọọdụ, na-agba ọsọ iwu tupu nyocha kwesịrị ịda.

Jiri iwu auth weta paswọọdụ nyocha dị ka egosiri na nseta ihuenyo na-esonụ.

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

12. Iji jikọọ na oyiri (mgbe ịhazi ha dị ka akọwara na ngalaba na-esote), jiri nhọrọ -h na -p iji kọwaa adreesị IP/aha nnabata na oyiri na ọdụ ụgbọ mmiri n'otu n'otu (ọ bụghị ọdụ ụgbọ mmiri 6379 ga-emeghe na firewall oyiri).

# redis-cli -h 10.42.0.21 -p 6379

13. Na-esote, mepee ọdụ data ihe nkesa Redis na firewall iji kwe ka njikọ inbound na nna ukwu, ma mesịa bugharịa iwu firewall site na iji firewall-cmd iwu dị ka egosiri.

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

Kwụpụ 3: Na-ahazi Redis oyiri/Sava ohu

14. Iji tọọ ihe atụ Redis ngwa ngwa dị ka oyiri na ofufe, jiri redis-cli utility wee kpọọ iwu REPLICAOF dị ka egosiri.

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

15. Iji mee ka njikọ mmegharị na-adịgide adịgide, ịkwesịrị ime mgbanwe ndị a na faịlụ nhazi. Malite site na ịkwado faịlụ izizi, wee mepee ya maka dezie.

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

16. Iji kwe ka ndị ahịa jikọọ na oyiri iji gụọ data, gbakwunye adreesị IP oyiri na ntuziaka ejikọta.

# replica1
bind 127.0.0.1 10.42.0.21

# replica2
bind 127.0.0.1 10.42.0.34

17. Iji hazie ihe atụ Redis dị ka oyiri, jiri oyiri paramita wee tọọ adreesị IP nke onye nwe ọnụ (ma ọ bụ aha nnabata) na ọdụ ụgbọ mmiri dị ka ụkpụrụ.

replicaof 10.42.0.247 6379

18. Ọzọ, ebe ọ bụ na a na-echekwa ihe nna ukwu anyị site na iji paswọọdụ, anyị kwesịrị ịtọ paswọọdụ na nhazi oyiri iji mee ka o kwenye na nna ukwu ahụ, na-eji paramita masterauth.

masterauth [email 

19. Ọzọkwa, mgbe oyiri tụfuru njikọ ya na nna ukwu, ma ọ bụ mgbe mmegharị ahụ na-amalite, a na-ahazi oyiri ka ọ zaghachi arịrịọ ndị ahịa, ikekwe na data \out of date. Ma ọ bụrụ na ọ bụ mmekọrịta mbụ, mgbe ahụ, Ntọala data nwere ike ịbụ ihe efu. A na-achịkwa omume a site na paramita data oyiri-serve-stale-data.

Ma, ebe ọ bụ na Redis 2.6 site na ndabara oyiri na-agụ-naanị, nke a na-achịkwa nke a site na oke-agụ naanị. Ị nwere ike ime mgbanwe nhazi oyiri ndị ọzọ ka ọ dabara mkpa ngwa gị.

20. Ozugbo ịmechara mgbanwe niile dị mkpa, malitegharịa ọrụ Redis na oyiri niile.

# systemctl restart redis

21. Ọzọkwa, na-emeghe ọdụ ụgbọ mmiri 6379 na firewall na-ekwe ka njikọ si nna ukwu na ndị ahịa na oyiri, na bugharịa firewall iwu.

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

Kwụpụ 4: Lelee Ọnọdụ Mpịakọta nke Nna-ukwu

22. Ozugbo nhazi nhazi nke nna ukwu- oyiri, anyị nwere ike ịlele ma ọ bụrụ na nhazi ahụ na-arụ ọrụ nke ọma dị ka ndị a.

Na nna ukwu, mee iwu ndị a.

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

23. Ọzọkwa, lelee ọnọdụ mmegharị na oyiri/ndị ohu dị ka ndị a.

# redis-cli
127.0.0.1:6379> info replication

23. Ugbu a, ka anyị nwalee mmegharị ahụ site na ntọala igodo-uru na ihe atụ ukwu ma lelee ma ọ bụrụ na synced data na oyiri.

Na nna ukwu, mee nke a:

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

24. Mgbe ahụ lelee ma ọ bụrụ na emekọrịtala data ahụ na oyiri dị ka egosiri.

# redis-cli
127.0.0.1:6379> get domain

25. Redis nwere njirimara nke na-enyere onye ọkachamara aka ịmachi ihe ize ndụ nke ịla n'iyi ụfọdụ na-ede ma ọ bụrụ na ezughị ezu oyiri dị, na ọnụ ọgụgụ nke sekọnd.

Nke a pụtara na nna ukwu nwere ike ịkwụsị ịnakwere ederede ma ọ bụrụ na ọ dị ihe na-erughị N oyiri ejikọrọ, na-enwe lag na-erughị ma ọ bụ ha nhata karịa M sekọnd, dị ka nhọrọ min-replicas-to-write na min-replicas-max-lag na-achịkwa n'otu n'otu.

Iji tọọ ha, kwughachi ha ma tọọ ụkpụrụ dị ka ihe ntọlite ị chọrọ na /etc/redis.conf, dị ka egosiri na nseta ihuenyo na-esonụ. Nhazi a pụtara na, site na ping ikpeazụ na oyiri, mgbe 10 sekọnd, ọ bụrụ na e nwere ihe na-erughị 2 oyiri online, nna ukwu ga-akwụsị ịnakwere na-ede.

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

Ị nwere ike ịchọta nhọrọ ndị ọzọ n'ime faịlụ nhazi /etc/redis.conf yana maka nkọwa ndị ọzọ gụpụta maka mmegharị na akwụkwọ Redis.

N'isiokwu na-esonụ, anyị ga-ekpuchi otú e si edozi Redis maka nnukwu nnweta na Sentinel na CentOS 8. Ruo mgbe ahụ, nọrọ na-ekpochi ma cheta ịkọrọ gị echiche na ajụjụ site na iji nkọwa nkọwa anyị dị n'okpuru ebe a ka ị ga-erute anyị.