Jinsi ya Kusanidi Nguzo ya Redis katika CentOS 8 - Sehemu ya 3


Redis Cluster ni kipengele kilichojengwa cha Redis ambacho kinaauni ugawaji kiotomatiki, urudufishaji na upatikanaji wa hali ya juu ambao ulitekelezwa hapo awali kwa kutumia Sentinels. Imeundwa kwa madhumuni mawili makuu: moja ni kugawanya hifadhidata yako kiotomatiki kati ya matukio mengi na pili kutoa kiwango fulani cha upatikanaji wakati wa kugawa, kuendelea na shughuli wakati baadhi ya matukio (hasa masters) yanashindwa au hayawezi kuwasiliana na wengi wa nodi kwenye nguzo.

Hata hivyo, kundi hilo huacha kufanya kazi iwapo kuna matatizo makubwa zaidi (k.m. wakati idadi kubwa ya matukio makuu hayapatikani). Pia, ikiwa bwana na mtumwa watashindwa kwa wakati mmoja, nguzo haiwezi kuendelea na shughuli za kawaida (ingawa kazi ni kuongeza nodi zaidi au kuunda asymmetry kwenye nguzo, kubadilisha mpangilio wa nguzo kiotomatiki).

Kulingana na nyaraka za nguzo ya Redis, nguzo ndogo inayofanya kazi inavyotarajiwa inahitaji kuwa na angalau nodi kuu 3. Lakini usanidi unaofaa zaidi kwa upatikanaji wa juu unapaswa kuwa na angalau nodi 6 na mabwana watatu na watumwa watatu, kila bwana akiwa na mtumwa.

Muhimu: Nguzo ya Redis pia ina mapungufu ambayo ni ukosefu wa usaidizi kwa mazingira ya NATted na yale ambapo anwani za IP au bandari za TCP zinarudiwa kwa mfano chini ya Docker. Zaidi ya hayo, si kila maktaba ya mteja inasaidia.

Makala haya yanaonyesha jinsi ya kusanidi Kundi la Redis (iliyo na Hali ya Cluster Imezimwa) katika CentOS 8. Inajumuisha jinsi ya kusakinisha Redis, kusanidi nodi za nguzo, kuunda kundi na kujaribu kushindwa kwa nguzo.

Kumbuka: Kwa mwongozo huu, tutatumia hali mpya/tupu za Redis kuendesha modi ya nguzo. Hali ya nguzo haitafanya kazi na usanidi fulani uliofanywa katika miongozo miwili ya kwanza ya Msururu wetu wa Redis, hasa haifanyi kazi wakati nakala ya kigezo inatumika.

  1. Seva zilizo na Usakinishaji wa 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

Mipangilio yetu ina nodi 3 kuu za kusoma/kuandika na nodi 3 za nakala za kusoma pekee, kila bwana akiwa na nakala moja, kwa hivyo vipande vitatu vina data yote ya nguzo katika kila nodi. API ya programu au mteja wa CLI anaweza kuandika tu kwa nodi kuu lakini kusoma kutoka nodi yoyote kwenye nguzo.

Hatua ya 1: Kufunga Redis kwenye Nodi Zote

1. Ingia katika matukio yote kupitia SSH, kisha endesha amri ifuatayo ili kusakinisha moduli ya Redis kwa kutumia kidhibiti cha kifurushi cha DNF kama inavyoonyeshwa.

# dnf module install redis

2. Kisha, anza huduma ya Redis, iwezeshe kuanza kiotomatiki kwenye mfumo wa kuwasha na uangalie hali yake ili kuthibitisha kuwa inaendeshwa (thibitisha huduma katika matukio yote 6):

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

Hatua ya 2: Kusanidi Matukio ya Redis kwenye Nodi zote

3. Sehemu hii inaeleza jinsi ya kusanidi nodi za nguzo za Redis. Kumbuka kufanya usanidi hapa kwenye nodi zote.

Tumia /etc/redis.conf faili ya usanidi ili kusanidi seva ya Redis. Kama mazoezi yanayopendekezwa, unda nakala rudufu ya faili asili kabla ya kuihariri kwa kutumia kihariri cha maandishi cha mstari wa amri unachokipenda.

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

4. Kisha, pata vigezo vifuatavyo vya usanidi na uhariri maadili yao kama inavyoonyeshwa. Kigezo cha kumfunga huweka kiolesura cha seva ya Redis itasikiza, weka thamani yake kwa mfano LAN IP. Ondoa 127.0.0.1 kwa sababu tuligundua kuiacha huko kunapunguza kasi ya mchakato wa kuunda nguzo, haswa hatua ya kujiunga na nguzo.

bind  10.42.0.247

Kisha weka hali iliyolindwa kuwa hapana ili kuruhusu miunganisho kutoka kwa matukio mengine kwenye nguzo.

protected-mode no

Kigezo cha bandari kinafafanua bandari ambayo seva ya Redis itasikiliza kwa miunganisho, chaguo-msingi ni 6379. Huu ni bandari ya data ya kuwasiliana na wateja.

port 6379

5. Seti inayofuata ya vigezo itawezesha hali ya nguzo na kuweka baadhi ya vipengele vyake muhimu. Kigezo kilichowezeshwa na nguzo, kinapowekwa kuwa ndiyo, huwasha modi ya nguzo.

cluster-enabled yes

Kisha, kigezo cha faili ya nguzo-usanidi huweka jina la faili ya usanidi ya nguzo ya nguzo (k.m nodes-6379.conf). Faili imeundwa kwenye saraka ya kufanya kazi (chaguo-msingi ni /var/lib/redis imefafanuliwa kwa kutumia kigezo cha dir) na haiwezi kuhaririwa na mtumiaji.

cluster-config-file nodes-6379.conf

Chaguo lifuatalo la nguzo muhimu ni muda wa kuisha kwa nguzo, hutumika kuweka kiwango cha juu zaidi cha muda katika milisekunde mfano unaweza kukosa kupatikana ili kuzingatiwa katika hali ya kutofaulu. Thamani ya 15000 ni sawa na sekunde 15.

cluster-node-timeout 15000

6. Tunahitaji pia kuwezesha kuendelea kwa Redis kwenye diski. Tunaweza kutumia mojawapo ya njia za kuendelea, hiyo ni Faili ya Kuongeza Pekee (AOF): inaingia (katika faili appendonly.aof iliyoundwa chini ya saraka ya kufanya kazi) kila operesheni ya uandishi iliyopokelewa kwa mafanikio na seva. Data itachezwa wakati wa kuanzisha seva ili kuunda upya hifadhidata asili.

Ili kuiwasha, weka kigezo cha nyongeza kuwa ndiyo.

appendonly yes

7. Baada ya kufanya mabadiliko yote, fungua upya huduma ya Redis kwenye nodes zote ili kutumia mabadiliko ya hivi karibuni.

# systemctl restart redis

8. Katika hatua hii, kila nodi ya nguzo inapaswa sasa kuwa na kitambulisho. Unaweza kuangalia hii kwenye faili ya kumbukumbu iliyoko /var/log/redis/redis.log.

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

9. Ifuatayo, fungua bandari 6397 na 16379 kwa matukio yote. Lango la baadaye linatumika kwa basi la nguzo (njia ya mawasiliano ya nodi hadi nodi kwa kutumia itifaki ya binary). Hili ni hitaji la msingi kwa miunganisho ya TCP ya nguzo ya Redis.

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

Hatua ya 3: Kuunda Nguzo ya Redis

10. Ili kuunda nguzo, tumia mteja wa mstari wa amri wa redis-cli kama ifuatavyo. --cluster create huwezesha uundaji wa nguzo na --cluster-replicas 1 inamaanisha kuunda nakala moja kwa kila bwana.

Kwa usanidi wetu ambao una nodi 6, tutakuwa na mabwana 3 na watumwa 3.

Kumbuka kwamba nodi 6 za kwanza zitachukuliwa kuwa mabwana (M) na tatu zinazofuata zitachukuliwa kuwa watumwa (S). Mtumwa wa kwanza yaani 10.42.0.200:6379 anaiga bwana wa kwanza yaani 10.42.0.247:6379, mtumwa wa pili anaiga bwana wa pili, kwa utaratibu huo.

Amri ifuatayo imeundwa kwa njia ambayo matokeo yatawakilisha usanidi wetu wa kimantiki hapo juu.

# 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. Mara tu uundaji wa nguzo unapofaulu, endesha amri ifuatayo kwa seva pangishi yoyote (taja anwani yake ya IP kwa kutumia -h bendera) ili kuorodhesha nodi zote za nguzo.

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

Unapaswa kuwa na uwezo wa kuona nodi zote za nguzo, na watumwa wakionyesha mabwana zao, kama inavyoonyeshwa kwenye picha ya skrini ifuatayo.

Sehemu tofauti ziko katika mpangilio huu: Kitambulisho cha nodi, anwani ya IP: bandari, bendera, ping ya mwisho iliyotumwa, pongi ya mwisho iliyopokelewa, enzi ya usanidi, hali ya kiungo, nafasi (kwa mabwana).

Hatua ya 4: Kujaribu Kushindwa kwa Nguzo ya Redis

12. Katika sehemu hii, tutaonyesha jinsi ya kujaribu kushindwa kwa nguzo. Kwanza, hebu tuzingatie mabwana.

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

Pia, zingatia watumwa wa Redis.

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

13. Kisha, hebu tuache huduma ya Redis kwenye mojawapo ya nodes za bwana k.m 10.42.0.197 na angalia nodes zote za bwana kwenye nguzo.

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

Kutoka kwa picha ya skrini ifuatayo, unaweza kuona kwamba nodi 10.42.0.197:6367 iko katika hali ya kushindwa na mtumwa wake 10.42.0.21:6379 amepandishwa cheo na kuwa bwana.

14. Sasa hebu tuanze huduma ya Redis mara nyingine tena kwenye node iliyoshindwa na angalia mabwana wote katika nguzo.

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

Pia, angalia watumwa wa nguzo ili kuthibitisha kwamba bwana aliyeshindwa sasa ni mtumwa.

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

Hatua ya 5: Kujaribu Kurudia Data Katika Nguzo ya Redis

15. Sehemu hii ya mwisho inaeleza jinsi ya kuthibitisha urudufishaji wa data ya nguzo. Tutaunda ufunguo na thamani kwenye moja ya mabwana, kisha jaribu kuisoma kutoka kwa nodes zote za nguzo kama ifuatavyo. Tumia swichi ya -c ili kuwezesha usaidizi wa nguzo chini ya matumizi ya redis-cli na kufikia data katika modi ya nguzo.

# 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

Jambo la msingi ni Kundi la Redis ndiyo njia inayopendelewa ya kupata sharding kiotomatiki, urudufishaji, na upatikanaji wa juu. Kuna vigezo vingine vingi vya usanidi vilivyoandikwa vyema katika faili iliyosalia ya /etc/redis.conf, unaweza kupata maelezo zaidi katika hati rasmi: Mafunzo ya nguzo ya Redis na ubainifu wa nguzo ya Redis.

Hii inatuleta hadi mwisho wa mfululizo wa mafunzo wa Redis wa sehemu tatu. Fomu ya maoni iliyo hapa chini inaweza kutumika kutuma maswali au maoni.