Jinsi ya Kusanidi Marudio ya Redis (iliyo na Njia ya Nguzo Imezimwa) katika CentOS 8 - Sehemu ya 1


Redis (Seva ya Kamusi ya Mbali) ni chanzo huria maarufu sana na kinachotumiwa sana, kwa haraka, kilichosambazwa na chenye ufanisi katika hifadhidata/seva ya muundo wa ufunguo wa kumbukumbu.

Inatoa seti nyingi za vipengele vinavyoifanya kuwa bora kwa anuwai ya matukio ya matumizi: kama hifadhidata, safu ya kache, wakala wa ujumbe, au foleni; inatumika katika programu za wavuti, programu za gumzo na ujumbe, michezo ya kubahatisha, uchanganuzi wa data wa wakati halisi na mengine mengi.

Inaauni miundo ya data inayoweza kunyumbulika, urudufishaji wa asynchronous wa bwana-slave ili kuongeza utendaji wa usomaji na kulinda dhidi ya upotevu wa data, ugawaji wa upande wa mteja ili kuongeza utendakazi wa uandishi, aina mbili za kuendelea kwa kuandika data ya kumbukumbu hadi diski katika umbizo la kompakt, nguzo, na kugawa. Pia inaangazia kushindwa kiotomatiki kwa uwekaji wa upatikanaji wa juu kupitia Redis Sentinel, uandishi wa Lua, miamala na mengine mengi.

Kwa kuwa hakuna SQL au hifadhidata isiyo ya uhusiano, Redis hutoa faida fulani za utendakazi juu ya mifumo ya jadi ya hifadhidata (kama vile MySQL/MariaDB, PostgreSQL, n.k.), kwa sababu data yake yote inakaa au kuhifadhiwa kwenye kumbukumbu kuifanya ipatikane kwa urahisi na programu, wakati hifadhidata za kitamaduni zinapaswa kuandika data zote kwa au kusoma kutoka kwa diski au chanzo cha nje.

Redis imekuwa chaguo linaloenea zaidi la kuweka akiba, ambayo inaruhusu matumizi tena ya data iliyohifadhiwa (iliyohifadhiwa ndani ya nafasi kuu ya kumbukumbu ya programu) badala ya kuuliza kila wakati hifadhidata kwa data inayotumiwa mara kwa mara. Kwa hivyo ni mshirika mzuri wa RDMS (Mifumo ya Usimamizi wa Hifadhidata ya Uhusiano) ili hatimaye kuboresha utendaji wa programu.

Katika mfululizo huu wa mafunzo wa Redis wa sehemu tatu, tutashughulikia jinsi ya kusanidi na kutumia baadhi ya vipengele muhimu vya Redis ambavyo ni urudufishaji, upatikanaji wa juu kwa kutumia Redis Sentinel na Redis Cluster, vifungu ni:

Mwongozo huu unaonyesha jinsi ya kusanidi Redis Replication (iliyo na Hali ya Cluster Imezimwa) katika CentOS 8 Linux, ikijumuisha jinsi ya kusakinisha Redis, kusanidi kuu na nakala, na kujaribu urudufishaji.

Muhimu: Nguzo ya Redis (yaani Nguzo ya Kuiga) iliyo na hali ya nguzo imezimwa ina kikundi kimoja cha nodi (k.m. bwana na nakala moja au mbili) ambapo nguzo ya Redis iliyo na hali ya nguzo iliyowezeshwa inaweza kuwa na vikundi viwili au zaidi vya nodi (k.m. mabwana watatu kila mmoja ana watumwa au wawili).

  1. Seva zilizo na Usakinishaji wa CentOS 8

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

Kwa usanidi ulio hapo juu (ulio na nodi kuu ya kusoma/kuandika/kuandika na nodi 2 za nakala za kusoma tu), tuna kikundi kimoja cha nodi ambacho kina data zote za nguzo katika kila nodi. Mara mtumwa anapounganishwa na bwana, anapokea nakala ya awali ya hifadhidata kamili na data yoyote ambayo hapo awali ilikuwepo kwa mtumwa itatupwa.

Mbali na hilo, mteja anaweza kuandika tu kwa bwana lakini kusoma kutoka kwa nodi yoyote kwenye nguzo. Na jinsi maandishi yanavyofanywa kwa bwana, yalienezwa kwa watumwa wote waliounganishwa kwa kusasisha hifadhidata za watumwa kwa wakati halisi.

Hatua ya 1: Kufunga Redis kwenye CentOS 8

1. Kuanza, ingia kwenye nodi zote za CentOS 8 kupitia SSH, kisha usakinishe kifurushi cha Redis kwenye nodi zote (master na replicas) ukitumia kidhibiti cha kifurushi cha DNF kama inavyoonyeshwa.

# dnf install @redis

2. Baada ya kukamilika kwa usakinishaji wa kifurushi cha Redis, anza huduma ya Redis, uiwezesha kuanza kiatomati kwenye kila boot ya mfumo na uangalie ikiwa iko na inafanya kazi kama ifuatavyo.

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

3. Unaweza pia kuthibitisha kwamba seva ya Redis iko na inafanya kazi kwa kuangalia bandari za kusikiliza kwa kutumia amri ya ss, kama ifuatavyo.

# ss -ltpn | grep redis-server

Hatua ya 2: Kusanidi Seva Kuu ya Redis

4. Redis imeundwa kwa kutumia faili ya usanidi /etc/redis.conf, faili ya usanidi wa mfano wa kibinafsi. Kwanza, unda nakala rudufu ya faili asili, kisha uifungue kwa uhariri ukitumia kihariri chako cha mstari wa amri.

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

5. Kwa chaguo-msingi, mfano wa Redis umesanidiwa ili kusikiliza na kukubali miunganisho kwenye kiolesura cha kitanzi, kwa kutumia mwongozo wa kumfunga. Ili kuwasiliana na nakala, bwana anapaswa kusanidiwa kusikiliza kwenye anwani ya kitanzi ya IPv4 na anwani yake ya IP ya LAN yaani 10.42.0.247.

bind 127.0.0.1 10.42.0.247

6. Kisha, weka kigezo cha hali ya ulinzi kuwa hapana ili kuruhusu mawasiliano na nakala kama inavyoonyeshwa.

protected-mode no

Pia, Redis husikiliza kwenye port 6379 ambayo imewekwa kwa kutumia port maelekezo. Hiki ni kituo cha data cha kuwasiliana na API za programu au wateja wa CLI.

port 6379

7. Ili kwa hiari kupata mawasiliano ya nakala-msingi, tunaweza kulinda bwana kwa kutumia maagizo ya demandpass, ili wateja/nakili watoe nenosiri la uthibitishaji kabla ya kutekeleza amri zozote au kuanza mchakato wa ulandanishi wa urudiaji, vinginevyo bwana atakataa mteja/replica ombi (kumbuka kuweka nenosiri salama).

Tutatumia chaguo lifuatalo kwa madhumuni ya maonyesho, ili kuonyesha jinsi inavyofanya kazi.

requirepass  [email 

8. Pia, kumbukumbu za Redis zimehifadhiwa kwenye /var/log/redis/redis.log faili, hii imewekwa kwa kutumia mwongozo wa faili ya kumbukumbu na kiwango cha kitenzi cha seva chaguo-msingi ni taarifa, kinachofafanuliwa kwa kutumia kigezo cha loglevel.

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

9. Kwa kuwa systemd ni mfumo chaguo-msingi na meneja wa huduma katika CentOS 8, unaweza kusanidi Redis kuingiliana na mti wa usimamizi wa systemd kwa kuweka kigezo kinachosimamiwa kwa systemd.

supervised systemd

10. Baada ya kufanya usanidi wote muhimu, hifadhi faili na uifunge. Kisha anza upya huduma ya Redis ili kutumia mabadiliko mapya.

# systemctl daemon-reload
# systemctl restart redis

11. Ili kufikia seva ya Redis, tunahitaji kutumia redis-cli (kiolesura cha mstari wa amri kwa redis-server). Kwa chaguo-msingi, inaunganisha kwa seva kwenye mwenyeji wa ndani (kwa 127.0.0.1 bandari 6379). Kumbuka kwamba kwa sababu seva inalindwa kutoka kwa wateja kwa kutumia nenosiri, kuendesha amri kabla ya uthibitishaji kunapaswa kushindwa.

Tumia amri ya uthibitishaji kusambaza nenosiri la uthibitishaji kama inavyoonyeshwa kwenye picha ya skrini ifuatayo.

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

12. Ili kuunganisha kwa nakala (baada ya kusanidi kama ilivyoelezwa katika sehemu inayofuata), tumia chaguo za -h na -p ili kubainisha anwani ya IP/jina la mwenyeji na bandari mtawalia (sio kwamba bandari 6379 lazima iwe wazi kwenye ngome ya replica).

# redis-cli -h 10.42.0.21 -p 6379

13. Kisha, fungua mlango wa data wa seva ya Redis kwenye ngome ili kuruhusu miunganisho ya ndani kwa bwana, na kisha upakie upya sheria za ngome kwa kutumia amri ya ngome-cmd kama inavyoonyeshwa.

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

Hatua ya 3: Kusanidi Redis Replica/Seva za Mtumwa

14. Kuweka kwa haraka mfano wa Redis kama nakala kwenye kuruka, tumia matumizi ya redis-cli na uite amri ya REPLICAOF kama inavyoonyeshwa.

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

15. Kufanya muunganisho wa urudufishaji kudumu, unahitaji kufanya mabadiliko yafuatayo kwenye faili ya usanidi. Anza kwa kuweka nakala ya faili asili, kisha uifungue ili ihaririwe.

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

16. Ili kuruhusu wateja kuunganishwa kwenye nakala ili kusoma data, ongeza nakala ya anwani ya IP kwenye maagizo ya kuunganisha.

# replica1
bind 127.0.0.1 10.42.0.21

# replica2
bind 127.0.0.1 10.42.0.34

17. Ili kusanidi mfano wa Redis kama nakala, tumia kigezo cha replicaof na uweke anwani ya IP ya nodi kuu (au jina la mpangishaji) na mlango kama thamani.

replicaof 10.42.0.247 6379

18. Kisha, kwa kuwa mfano wetu mkuu unalindwa kwa kutumia nenosiri, tunahitaji kuweka nenosiri katika usanidi wa replica ili kuiwezesha kuthibitisha kwa bwana, kwa kutumia parameter masterauth.

masterauth [email 

19. Zaidi ya hayo, nakala inapopoteza muunganisho wake na bwana, au wakati urudufishaji unaendelea, nakala inasanidiwa ili kujibu maombi ya mteja, ikiwezekana na data iliyopitwa na wakati. Lakini ikiwa ni ulandanishi wa kwanza, basi seti ya data inaweza tu kuwa tupu. Tabia hii inadhibitiwa na kigezo cha replica-serve-stale-data.

Na, kwa kuwa Redis 2.6 kwa nakala chaguo-msingi husomwa tu, hii inadhibitiwa na kigezo cha kusoma-tu cha nakala. Unaweza kufanya marekebisho mengine ya usanidi wa nakala ili kukidhi mahitaji yako ya programu.

20. Mara tu umefanya mabadiliko yote muhimu, anzisha upya huduma ya Redis kwenye nakala zote.

# systemctl restart redis

21. Pia, fungua bandari 6379 kwenye firewall ili kuruhusu miunganisho kutoka kwa bwana na wateja kwa replicas, na upakie upya sheria za firewall.

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

Hatua ya 4: Angalia Hali ya Kurudufisha-replica ya Mwalimu

22. Pindi usanidi wa urudufishaji wa nakala kuu unapokamilika, tunaweza kuangalia kama usanidi unafanya kazi vizuri kama ifuatavyo.

Kwenye bwana, endesha amri zifuatazo.

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

23. Pia, angalia hali ya urudufishaji kwenye nakala/watumwa kama ifuatavyo.

# redis-cli
127.0.0.1:6379> info replication

23. Sasa hebu tujaribu urudufishaji kwa kuweka thamani ya ufunguo katika mfano mkuu na tuangalie ikiwa data imesawazishwa kwa nakala.

Kwa bwana, fanya hivi:

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

24. Kisha angalia ikiwa data imesawazishwa kwa nakala kama inavyoonyeshwa.

# redis-cli
127.0.0.1:6379> get domain

25. Redis ina kipengele kinachowezesha mfano mkuu kupunguza hatari ya kupoteza baadhi ya maandishi ikiwa hakuna nakala za kutosha zinazopatikana, kwa idadi maalum ya sekunde.

Hii ina maana kwamba bwana anaweza kuacha kukubali maandishi ikiwa kuna nakala chini ya N zilizounganishwa, kuwa na upungufu chini au sawa na sekunde M, kama inavyodhibitiwa na chaguzi ndogo za nakala-kuandika na min-replicas-max-lag mtawalia.

Ili kuziweka, ziondoe maoni na uweke thamani kulingana na mahitaji yako ya usanidi katika /etc/redis.conf, kama inavyoonyeshwa kwenye picha ya skrini ifuatayo. Usanidi huu unamaanisha kuwa, kutoka kwa ping ya mwisho hadi nakala, baada ya sekunde 10, ikiwa kuna nakala chini ya 2 mkondoni, bwana ataacha kukubali maandishi.

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

Unaweza kupata chaguo zaidi katika faili iliyosalia ya /etc/redis.conf na kwa undani zaidi soma kuhusu urudufishaji katika hati za Redis.

Katika makala inayofuata, tutashughulikia jinsi ya kusanidi Redis kwa upatikanaji wa juu na Sentinel katika CentOS 8. Hadi wakati huo, kaa umefungwa na kumbuka kushiriki mawazo na maswali yako kwa kutumia fomu yetu ya maoni hapa chini iko kwa ajili yako ili uwasiliane nasi.