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ụọ).
- 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ị.