Redis cluster 水平扩容和缩容方案
2021/9/19 19:06:52
本文主要是介绍Redis cluster 水平扩容和缩容方案,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1.环境介绍
软件信息 | 版本 |
操作系统 | Linux release 7.8.2003 |
redis cluster(3分片) | 4.0.12 |
ruby版本 | ruby 2.3.4p301 |
gem | 3.0.8 |
2. redis cluster集群信息以及扩容步骤
2.1 redis cluster集群信息
90cd13ebe59f0b60315604da024a73b1d5e6bf59 192.168.248.203:6002@16002 master - 0 1631993159000 3 connected 10923-16383 54c264f8925a0516a1db5354c914a57796f6a776 192.168.248.203:6000@16000 myself,master - 0 1631993155000 1 connected 0-5460 dbd2721f1d7d74966d723269366d5dc9f0dc3026 192.168.248.203:6005@16005 slave 54c264f8925a0516a1db5354c914a57796f6a776 0 1631993159783 6 connected 8bf604a68311aa62b76e5fd9f9cb533a13f572d8 192.168.248.203:6001@16001 master - 0 1631993158000 2 connected 5461-10922 ab2fad8b826f6662c5acc2b9aef207526b3dc7f3 192.168.248.203:6004@16004 slave 90cd13ebe59f0b60315604da024a73b1d5e6bf59 0 1631993157000 5 connected 93426ea4d6c6e42bb43c1db5c36b23a7bba1fbce 192.168.248.203:6003@16003 slave 8bf604a68311aa62b76e5fd9f9cb533a13f572d8 0 1631993158000 4 connected
192.168.248.203:6000 master 192.168.248.203:6001 master 192.168.248.203:6002 master 192.168.248.203:6003 slave 192.168.248.203:6004 slave 192.168.248.203:6005 slave
新扩容节点信息
192.168.248.203:6006 new master 192.168.248.203:6007 new slave
2.2 增加一个节点
ruby ./redis-trib.rb add-node --password xxx 192.168.248.203:6006 192.168.248.203:6000
备注:
192.168.248.203:6006 ——新节点信息
192.168.248.203:6000 ——已存在的节点信息
2.3 获取新加入集群的master_id
[root@redis_zxb1 ~]# redis-cli -h 192.168.248.203 -p 6000 -a xxxx -c cluster nodes|grep master|sort -k2 Warning: Using a password with '-a' option on the command line interface may not be safe. 54c264f8925a0516a1db5354c914a57796f6a776 192.168.248.203:6000@16000 myself,master - 0 1631993709000 1 connected 0-5460 8bf604a68311aa62b76e5fd9f9cb533a13f572d8 192.168.248.203:6001@16001 master - 0 1631993713474 2 connected 5461-10922 90cd13ebe59f0b60315604da024a73b1d5e6bf59 192.168.248.203:6002@16002 master - 0 1631993712000 3 connected 10923-16383 e26f5016779a035c080bf71d554d74aeb5443869 192.168.248.203:6006@16006 master - 0 1631993711000 0 connected
2.4 为新节点迁移两个slots
[root@redis_zxb1 ~]# ruby ./redis-trib.rb reshard --password xxxx --from all --to e26f5016779a035c080bf71d554d74aeb5443869 --slots 2 --yes --pipeline 100000 192.168.248.203:6000 >>> Performing Cluster Check (using node 192.168.248.203:6000) M: 54c264f8925a0516a1db5354c914a57796f6a776 192.168.248.203:6000 slots:0-5460 (5461 slots) master 1 additional replica(s) M: 90cd13ebe59f0b60315604da024a73b1d5e6bf59 192.168.248.203:6002 slots:10923-16383 (5461 slots) master 1 additional replica(s) S: dbd2721f1d7d74966d723269366d5dc9f0dc3026 192.168.248.203:6005 slots: (0 slots) slave replicates 54c264f8925a0516a1db5354c914a57796f6a776 M: 8bf604a68311aa62b76e5fd9f9cb533a13f572d8 192.168.248.203:6001 slots:5461-10922 (5462 slots) master 1 additional replica(s) M: e26f5016779a035c080bf71d554d74aeb5443869 192.168.248.203:6006 slots: (0 slots) master 0 additional replica(s) S: ab2fad8b826f6662c5acc2b9aef207526b3dc7f3 192.168.248.203:6004 slots: (0 slots) slave replicates 90cd13ebe59f0b60315604da024a73b1d5e6bf59 S: 93426ea4d6c6e42bb43c1db5c36b23a7bba1fbce 192.168.248.203:6003 slots: (0 slots) slave replicates 8bf604a68311aa62b76e5fd9f9cb533a13f572d8 [OK] All nodes agree about slots configuration. >>> Check for open slots... >>> Check slots coverage... [OK] All 16384 slots covered. Ready to move 2 slots. Source nodes: M: 54c264f8925a0516a1db5354c914a57796f6a776 192.168.248.203:6000 slots:0-5460 (5461 slots) master 1 additional replica(s) M: 90cd13ebe59f0b60315604da024a73b1d5e6bf59 192.168.248.203:6002 slots:10923-16383 (5461 slots) master 1 additional replica(s) M: 8bf604a68311aa62b76e5fd9f9cb533a13f572d8 192.168.248.203:6001 slots:5461-10922 (5462 slots) master 1 additional replica(s) Destination node: M: e26f5016779a035c080bf71d554d74aeb5443869 192.168.248.203:6006 slots: (0 slots) master 0 additional replica(s) Resharding plan: Moving slot 5461 from 8bf604a68311aa62b76e5fd9f9cb533a13f572d8 Moving slot 5461 from 192.168.248.203:6001 to 192.168.248.203:6006: ........................................................................................................
备注:
e26f5016779a035c080bf71d554d74aeb5443869 ——新加入节点的master_id
192.168.248.203:6000 ——已存在master节点的ip和port
2.5 检查迁移是否成功
[root@redis_zxb1 ~]# ruby ./redis-trib.rb check --password xxxx 192.168.248.203:6000 >>> Performing Cluster Check (using node 192.168.248.203:6000) M: 54c264f8925a0516a1db5354c914a57796f6a776 192.168.248.203:6000 slots:1-5460 (5460 slots) master 1 additional replica(s) M: 90cd13ebe59f0b60315604da024a73b1d5e6bf59 192.168.248.203:6002 slots:10923-16383 (5461 slots) master 1 additional replica(s) S: dbd2721f1d7d74966d723269366d5dc9f0dc3026 192.168.248.203:6005 slots: (0 slots) slave replicates 54c264f8925a0516a1db5354c914a57796f6a776 M: 8bf604a68311aa62b76e5fd9f9cb533a13f572d8 192.168.248.203:6001 slots:5462-10922 (5461 slots) master 1 additional replica(s) M: e26f5016779a035c080bf71d554d74aeb5443869 192.168.248.203:6006 slots:0,5461 (2 slots) master 0 additional replica(s) S: ab2fad8b826f6662c5acc2b9aef207526b3dc7f3 192.168.248.203:6004 slots: (0 slots) slave replicates 90cd13ebe59f0b60315604da024a73b1d5e6bf59 S: 93426ea4d6c6e42bb43c1db5c36b23a7bba1fbce 192.168.248.203:6003 slots: (0 slots) slave replicates 8bf604a68311aa62b76e5fd9f9cb533a13f572d8 [OK] All nodes agree about slots configuration. >>> Check for open slots... >>> Check slots coverage... [OK] All 16384 slots covered.
2.6 slots自动重均衡
ruby ./redis-trib.rb rebalance --password xxx --use-empty-masters --threshold 16 --pipeline 100000 192.168.248.203:6000 >>> Performing Cluster Check (using node 192.168.248.203:6000) [OK] All nodes agree about slots configuration. >>> Check for open slots... >>> Check slots coverage... [OK] All 16384 slots covered. >>> Rebalancing across 4 nodes. Total weight = 4 Moving 1365 slots from 192.168.248.203:6001 to 192.168.248.203:6006 ##################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################### Moving 1365 slots from 192.168.248.203:6002 to 192.168.248.203:6006 ##################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################### Moving 1364 slots from 192.168.248.203:6000 to 192.168.248.203:6006 ####################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
2.7 为新的主节点增加从节点
[root@redis_zxb1 ~]# ruby ./redis-trib.rb add-node --password xxx --slave --master-id 54c264f8925a0516a1db5354c914a57796f6a776 192.168.248.203:6007 192.168.248.203:6000 >>> Adding node 192.168.248.203:6007 to cluster 192.168.248.203:6000 >>> Performing Cluster Check (using node 192.168.248.203:6000) M: 54c264f8925a0516a1db5354c914a57796f6a776 192.168.248.203:6000 slots:1365-5460 (4096 slots) master 1 additional replica(s) M: 90cd13ebe59f0b60315604da024a73b1d5e6bf59 192.168.248.203:6002 slots:12288-16383 (4096 slots) master 1 additional replica(s) S: dbd2721f1d7d74966d723269366d5dc9f0dc3026 192.168.248.203:6005 slots: (0 slots) slave replicates 54c264f8925a0516a1db5354c914a57796f6a776 M: 8bf604a68311aa62b76e5fd9f9cb533a13f572d8 192.168.248.203:6001 slots:6827-10922 (4096 slots) master 1 additional replica(s) M: e26f5016779a035c080bf71d554d74aeb5443869 192.168.248.203:6006 slots:0-1364,5461-6826,10923-12287 (4096 slots) master 0 additional replica(s) S: ab2fad8b826f6662c5acc2b9aef207526b3dc7f3 192.168.248.203:6004 slots: (0 slots) slave replicates 90cd13ebe59f0b60315604da024a73b1d5e6bf59 S: 93426ea4d6c6e42bb43c1db5c36b23a7bba1fbce 192.168.248.203:6003 slots: (0 slots) slave replicates 8bf604a68311aa62b76e5fd9f9cb533a13f572d8 [OK] All nodes agree about slots configuration. >>> Check for open slots... >>> Check slots coverage... [OK] All 16384 slots covered. >>> Send CLUSTER MEET to node 192.168.248.203:6007 to make it join the cluster. Waiting for the cluster to join. >>> Configure node as replica of 192.168.248.203:6000. [OK] New node added correctly.
至此,Redis cluster 3个分片就已经扩容到了四个分片。
3.Redis cluster 缩容方案
新集群信息
[root@redis_zxb1 ~]# r cluster nodes Warning: Using a password with '-a' option on the command line interface may not be safe. 90cd13ebe59f0b60315604da024a73b1d5e6bf59 192.168.248.203:6002@16002 master - 0 1632043406000 3 connected 12288-16383 fa73be65bc37b9f9d64cf336766e42818ecc89c2 192.168.248.203:6007@16007 slave 54c264f8925a0516a1db5354c914a57796f6a776 0 1632043405000 1 connected dbd2721f1d7d74966d723269366d5dc9f0dc3026 192.168.248.203:6005@16005 slave e26f5016779a035c080bf71d554d74aeb5443869 0 1632043407000 7 connected e26f5016779a035c080bf71d554d74aeb5443869 192.168.248.203:6006@16006 master - 0 1632043404000 7 connected 0-1364 5461-6826 10923-12287 93426ea4d6c6e42bb43c1db5c36b23a7bba1fbce 192.168.248.203:6003@16003 slave 8bf604a68311aa62b76e5fd9f9cb533a13f572d8 0 1632043403000 4 connected 54c264f8925a0516a1db5354c914a57796f6a776 192.168.248.203:6000@16000 myself,master - 0 1632043405000 1 connected 1365-5460 ab2fad8b826f6662c5acc2b9aef207526b3dc7f3 192.168.248.203:6004@16004 slave 90cd13ebe59f0b60315604da024a73b1d5e6bf59 0 1632043405419 5 connected 8bf604a68311aa62b76e5fd9f9cb533a13f572d8 192.168.248.203:6001@16001 master - 0 1632043406443 2 connected 6827-10922
3.1 删除redis cluster 新添加的从节点
ruby redis-trib.rb del-node --password xxx 192.168.248.203:6007 'fa73be65bc37b9f9d64cf336766e42818ecc89c2' >>> Removing node fa73be65bc37b9f9d64cf336766e42818ecc89c2 from cluster 192.168.248.203:6007 >>> Sending CLUSTER FORGET messages to the cluster... >>> SHUTDOWN the node.
3.2 删除redis cluster新添加的主节点
ruby redis-trib.rb reshard --password xxx --from e26f5016779a035c080bf71d554d74aeb5443869 --to 54c264f8925a0516a1db5354c914a57796f6a776 --slots 1365 --yes --pipeline 100000 192.168.248.203:6000 ruby redis-trib.rb reshard --password xxx --from e26f5016779a035c080bf71d554d74aeb5443869 --to 8bf604a68311aa62b76e5fd9f9cb533a13f572d8 --slots 1365 --yes --pipeline 100000 192.168.248.203:6000 ruby redis-trib.rb reshard --password xxx --from e26f5016779a035c080bf71d554d74aeb5443869 --to 90cd13ebe59f0b60315604da024a73b1d5e6bf59 --slots 1366 --yes --pipeline 100000 192.168.248.203:6000
检查slots是否迁移完成
[root@redis_zxb1 ~]# ruby redis-trib.rb check --password xxxx 192.168.248.203:6000 >>> Performing Cluster Check (using node 192.168.248.203:6000) M: 54c264f8925a0516a1db5354c914a57796f6a776 192.168.248.203:6000 slots:0-5461 (5462 slots) master 0 additional replica(s) M: 90cd13ebe59f0b60315604da024a73b1d5e6bf59 192.168.248.203:6002 slots:10923-16383 (5461 slots) master 2 additional replica(s) S: dbd2721f1d7d74966d723269366d5dc9f0dc3026 192.168.248.203:6005 slots: (0 slots) slave replicates 90cd13ebe59f0b60315604da024a73b1d5e6bf59 M: e26f5016779a035c080bf71d554d74aeb5443869 192.168.248.203:6006 slots: (0 slots) master 0 additional replica(s) S: 93426ea4d6c6e42bb43c1db5c36b23a7bba1fbce 192.168.248.203:6003 slots: (0 slots) slave replicates 8bf604a68311aa62b76e5fd9f9cb533a13f572d8 S: ab2fad8b826f6662c5acc2b9aef207526b3dc7f3 192.168.248.203:6004 slots: (0 slots) slave replicates 90cd13ebe59f0b60315604da024a73b1d5e6bf59 M: 8bf604a68311aa62b76e5fd9f9cb533a13f572d8 192.168.248.203:6001 slots:5462-10922 (5461 slots) master 1 additional replica(s) [OK] All nodes agree about slots configuration. >>> Check for open slots... >>> Check slots coverage... [OK] All 16384 slots covered.
删除主节点
[root@redis_zxb1 ~]# ruby redis-trib.rb del-node --password xxxx 192.168.248.203:6006 'e26f5016779a035c080bf71d554d74aeb5443869' >>> Removing node e26f5016779a035c080bf71d554d74aeb5443869 from cluster 192.168.248.203:6006 >>> Sending CLUSTER FORGET messages to the cluster... >>> SHUTDOWN the node.
最后集群信息确认
[root@redis_zxb1 ~]# r cluster nodes Warning: Using a password with '-a' option on the command line interface may not be safe. 90cd13ebe59f0b60315604da024a73b1d5e6bf59 192.168.248.203:6002@16002 master - 0 1632044586000 10 connected 10923-16383 dbd2721f1d7d74966d723269366d5dc9f0dc3026 192.168.248.203:6005@16005 slave 90cd13ebe59f0b60315604da024a73b1d5e6bf59 0 1632044586478 10 connected 93426ea4d6c6e42bb43c1db5c36b23a7bba1fbce 192.168.248.203:6003@16003 slave 8bf604a68311aa62b76e5fd9f9cb533a13f572d8 0 1632044584437 9 connected 54c264f8925a0516a1db5354c914a57796f6a776 192.168.248.203:6000@16000 myself,master - 0 1632044585000 8 connected 0-5461 ab2fad8b826f6662c5acc2b9aef207526b3dc7f3 192.168.248.203:6004@16004 slave 90cd13ebe59f0b60315604da024a73b1d5e6bf59 0 1632044583008 10 connected 8bf604a68311aa62b76e5fd9f9cb533a13f572d8 192.168.248.203:6001@16001 master - 0 1632044585000 9 connected 5462-10922
至此,缩容已经完成。
4.最后解密
扩容所有的关键在于redis-trib.rb文件,而这个文件可以参考如下连接找到答案。即redis-trib.rb增加password部分
5.参考
https://github.com/wintersunny/redis-trib.rb---password
这篇关于Redis cluster 水平扩容和缩容方案的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-24Redis资料:新手入门快速指南
- 2024-12-24Redis资料:新手入门教程与实践指南
- 2024-12-24Redis资料:新手入门教程与实践指南
- 2024-12-07Redis高并发入门详解
- 2024-12-07Redis缓存入门:新手必读指南
- 2024-12-07Redis缓存入门:新手必读教程
- 2024-12-07Redis入门:新手必备的简单教程
- 2024-12-07Redis入门:新手必读的简单教程
- 2024-12-06Redis入门教程:从安装到基本操作
- 2024-12-06Redis缓存入门教程:轻松掌握缓存技巧