Giunsa ang Pag-setup sa usa ka Redis Cluster sa CentOS 8 - Bahin 3


Ang Redis Cluster usa ka builtin nga feature sa Redis nga nagsuporta sa automatic sharding, replication ug high availability nga kaniadto gipatuman gamit ang Sentinels. Gidisenyo kini alang sa duha ka dagkong katuyoan: ang usa mao ang awtomatikong pagbahin sa imong dataset sa daghang mga higayon ug ikaduha aron mahatagan ang pipila nga lebel sa pagkaanaa sa panahon sa mga partisyon, aron ipadayon ang mga operasyon kung ang pipila nga mga higayon (labi na ang mga agalon) mapakyas o dili makahimo sa pagpakigsulti sa kadaghanan sa mga node sa cluster.

Bisan pa, ang cluster mohunong sa pag-operate kung adunay dagkong mga kapakyasan (pananglitan kung ang kadaghanan sa mga master instance dili magamit). Usab, kung ang usa ka agalon ug ulipon mapakyas sa samang higayon, ang cluster dili makapadayon sa normal nga mga operasyon (bisan pa ang workaround mao ang pagdugang sa dugang nga mga node o paghimo og usa ka asymmetry sa cluster, aron sa pag-auto-change sa cluster layout).

Sumala sa dokumentasyon sa cluster sa Redis, ang \minimal cluster nga naglihok sama sa gipaabot nagkinahanglan nga adunay labing menos 3 nga mga master node. usa ka ulipon.

Importante: Ang Redis Cluster usab adunay pipila ka mga limitasyon nga kulang sa suporta alang sa NATted nga mga palibot ingon man kadtong diin ang mga IP address o TCP ports gi-remapped pananglitan ubos sa Docker. Dugang pa, dili tanan nga librarya sa kliyente nagsuporta niini.

Gipakita sa kini nga artikulo kung giunsa ang pag-set up sa usa ka Redis Cluster (uban ang Cluster-Mode Disabled) sa CentOS 8. Naglakip kini kung giunsa ang pag-install sa Redis, pag-configure sa mga cluster node, paghimo og cluster ug pagsulay sa cluster failover.

Mubo nga sulat: Alang niini nga giya, mogamit kami og bag-o/walay sulod nga mga higayon sa Redis aron sa pagpadagan sa cluster mode. Ang cluster mode dili molihok uban sa pipila ka mga configuration nga gihimo sa unang duha ka mga giya sa atong Redis Series, ilabi na kini dili mogana sa diha nga ang replica sa parameter gigamit.

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

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

Ang among setup adunay 3 read/write master nodes ug 3 read-only replica nodes, ang matag master adunay usa ka replica, mao nga tulo ka shards ang naglangkob sa tanang data sa cluster sa matag node. Ang usa ka aplikasyon nga API o kliyente sa CLI makasulat lamang sa mga master node apan magbasa gikan sa bisan unsang node sa cluster.

Lakang 1: Pag-instalar sa Redis sa Tanan nga Nodes

1. Pag-log in sa tanan nga mga higayon pinaagi sa SSH, dayon padagana ang mosunod nga sugo aron i-install ang Redis module gamit ang DNF package manager sama sa gipakita.

# dnf module install redis

2. Sunod, sugdi ang serbisyo sa Redis, himoa kini nga awtomatiko nga magsugod sa boot sa sistema ug susihon ang kahimtang niini aron mapamatud-an nga kini nagdagan (panghimatuud ang serbisyo sa tanan nga 6 nga mga higayon):

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

Lakang 2: Pag-configure sa Redis Instances sa tanan nga Nodes

3. Kini nga seksyon naghulagway kon unsaon pag-configure ang Redis cluster nodes. Hinumdomi nga buhaton ang mga pag-configure dinhi sa tanan nga mga node.

Gamita ang /etc/redis.conf configuration file aron ma-configure ang Redis server. Isip usa ka girekomendar nga praktis, paghimo og backup sa orihinal nga file sa dili pa kini i-edit gamit ang command-line text editor nga imong gusto.

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

4. Sunod, pangitaa ang mosunod nga mga parameter sa pag-configure ug usba ang ilang mga bili ingon sa gipakita. Ang bind parameter nagtakda sa interface sa Redis server nga paminawon, ibutang ang bili niini sa pananglitan nga LAN IP. Kuhaa ang 127.0.0.1 tungod kay nahibal-an namon nga ang pagbiya niini nagpahinay sa proseso sa paghimo sa cluster, labi na ang yugto sa pag-apil sa cluster.

bind  10.42.0.247

Dayon i-set ang protected-mode sa no aron tugotan ang mga koneksyon gikan sa ubang mga higayon sa cluster.

protected-mode no

Ang port parameter naghubit sa pantalan nga paminawon sa Redis server alang sa mga koneksyon, ang default mao ang 6379. Kini ang data port alang sa pagpakigsulti sa mga kliyente.

port 6379

5. Ang sunod nga set sa mga parameter makapahimo sa cluster mode ug magbutang sa pipila sa mga mapuslanon nga bahin niini. Ang cluster-enabled nga parameter, kung itakda sa yes, mo-activate sa cluster mode.

cluster-enabled yes

Sunod, ang cluster-config-file parameter nagtakda sa ngalan sa cluster configuration file sa cluster node (e.g nodes-6379.conf). Ang file gihimo sa nagtrabaho nga direktoryo (ang default mao ang /var/lib/redis nga gihubit gamit ang dir parameter) ug dili ma-edit sa user.

cluster-config-file nodes-6379.conf

Ang sunod nga mapuslanon nga kapilian sa cluster mao ang cluster-node-timeout, kini gigamit sa pagtakda sa pinakataas nga gidugayon sa oras sa milliseconds ang usa ka pananglitan mahimong dili magamit aron kini makonsiderar sa usa ka kahimtang sa kapakyasan. Ang kantidad nga 15000 katumbas sa 15 segundos.

cluster-node-timeout 15000

6. Kita usab kinahanglan nga makahimo sa Redis pagpadayon sa disk. Mahimo natong gamiton ang usa sa mga mode sa pagpadayon, nga mao ang Append Only File (AOF): kini nag-log (sa file appendonly.aof nga gimugna ubos sa working directory) matag write operation nga malampusong nadawat sa server. Ang datos ipadula sa panahon sa pagsugod sa server aron matukod pag-usab ang orihinal nga dataset.

Aron mahimo kini, itakda ang appendonly parameter sa yes.

appendonly yes

7. Human sa paghimo sa tanan nga mga pagbag-o, i-restart ang serbisyo sa Redis sa tanan nga mga node aron magamit ang bag-ong mga pagbag-o.

# systemctl restart redis

8. Niini nga punto, ang matag cluster node kinahanglan nga adunay ID. Mahimo nimong susihon kini sa logfile nga nahimutang sa /var/log/redis/redis.log.

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

9. Sunod, ablihi ang port 6397 ug 16379 sa tanang higayon. Ang ulahi nga pantalan gigamit alang sa cluster bus (usa ka node-to-node nga channel sa komunikasyon gamit ang binary protocol). Kini usa ka sukaranan nga kinahanglanon alang sa mga koneksyon sa Redis cluster TCP.

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

Lakang 3: Paghimo sa Redis Cluster

10. Sa paghimo sa cluster, gamita ang redis-cli command-line nga kliyente sama sa mosunod. Ang --cluster create makapahimo sa cluster creation ug --cluster-replicas 1 nagpasabot sa paghimo og usa ka replika kada master.

Alang sa among setup nga adunay 6 ka node, kami adunay 3 ka agalon ug 3 ka mga ulipon.

Timan-i nga ang unang 6 ka node isipon nga master (M) ug ang sunod nga tulo isipon nga slaves (S). Ang unang ulipon i.e 10.42.0.200:6379 nagsundog sa unang agalon i.e 10.42.0.247:6379, ang ikaduhang ulipon nagsundog sa ikaduhang agalon, sa maong han-ay.

Ang mosunod nga sugo giporma sa paagi nga ang resulta magrepresentar sa atong lohikal nga setup sa ibabaw.

# 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. Sa higayon nga malampuson ang paghimo sa cluster, padagana ang mosunod nga command sa bisan unsang host (specific its IP address using the -h flag) to list all cluster nodes.

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

Kinahanglan nimo nga makita ang tanan nga mga cluster node, nga ang mga ulipon nagpaila sa ilang mga agalon, ingon sa gipakita sa mosunod nga screenshot.

Ang lain-laing mga natad anaa niini nga han-ay: node ID, IP address: pantalan, mga bandila, katapusan nga ping gipadala, katapusan nga pong nadawat, configuration panahon, link-estado, mga slots (alang sa mga masters).

Lakang 4: Pagsulay sa Redis Cluster Failover

12. Niini nga seksyon, atong ipakita kung giunsa pagsulay ang usa ka cluster failover. Una, atong hinumdoman ang mga agalon.

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

Usab, timan-i ang mga ulipon sa Redis.

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

13. Sunod, atong hunongon ang serbisyo sa Redis sa usa sa mga master node e.g 10.42.0.197 ug susihon ang tanang master node sa cluster.

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

Gikan sa mosunod nga screenshot, imong makita nga ang node 10.42.0.197:6367 anaa sa pakyas nga kahimtang ug ang ulipon niini 10.42.0.21:6379 gi-promote sa master status.

14. Karon atong sugdan ang serbisyo sa Redis sa makausa pa sa napakyas nga node ug susihon ang tanan nga mga agalon sa cluster.

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

Usab, susiha ang cluster nga mga ulipon aron makumpirma nga ang napakyas nga agalon usa na ka ulipon.

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

Lakang 5: Pagsulay sa Replikasyon sa Data Sa tibuok Redis Cluster

15. Kining kataposang seksyon nagpatin-aw unsaon pag-verify sa cluster data replication. Maghimo kami usa ka yawe ug kantidad sa usa sa mga agalon, unya sulayi nga basahon kini gikan sa tanan nga mga cluster node sama sa mosunod. Gamita ang switch nga -c aron mahimo ang suporta sa cluster ubos sa redis-cli utility ug access data sa cluster mode.

# 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

Ang hinungdan mao ang Redis Cluster mao ang gipalabi nga paagi aron makakuha og awtomatik nga sharding, replikasyon, ug taas nga pagkaanaa. Adunay daghang uban pang maayo nga dokumentado nga mga parameter sa pagsumpo sa nahabilin nga /etc/redis.conf file, makit-an nimo ang dugang nga kasayuran sa opisyal nga dokumentasyon: Redis cluster tutorial ug Redis cluster specification.

Nagdala kini kanamo sa katapusan sa tulo ka bahin nga serye sa panudlo sa Redis. Ang feedback nga porma sa ubos mahimong gamiton sa pag-post og mga pangutana o komento.