当前redis-cluster状态目前redis服务器有18台,配置都是双核4G的。每台上面一个节点,端口为6001,redis-cluster为9主9从[root@CACHE_S1 ~]# redi
当前redis-cluster状态
目前redis服务器有18台,配置都是双核4G的。每台上面一个节点,端口为6001,redis-cluster为9主9从
[root@CACHE_S1 ~]# redis-cli -h 192.168.1.38 -p 6001192.168.1.38:6001> cluster nodes302af3d6cb5ed01dea2df5f0244249d5ca929324 192.168.1.42:6001 slave 7a3a4435fdc47d46d0015fc902a7afce1ab4a1d7 0 1493085470593 20 connected6b4045212d9c286e6761a66f318c02d7f364fdc0 192.168.1.46:6001 master - 0 1493085471595 9 connected 5461-7281cb3fad467085c1afa92a416690269c90d35927a5 192.168.1.48:6001 master - 0 1493085471093 11 connected 1820-36409ef4d41a6bbb2611c83ac8d50ffe462eed7b88fe 192.168.1.51:6001 slave fe242df63905aa36599a286879a214909e8e9d7a 0 1493085471695 14 connected5c90fd23af7b13c05d5f2df2065889a534072e27 192.168.1.52:6001 slave f0b576b5d788bcaf04818a09aa55c5a415f5e1b3 0 1493085472096 15 connected01f80e39f8194cf500c925648f15bf1a7ba9d2d4 192.168.1.40:6001 slave 7c68b4b70c1dcef1872ad209b06e6d31107ed3e1 0 1493085472096 12 connected7c68b4b70c1dcef1872ad209b06e6d31107ed3e1 192.168.1.49:6001 master - 0 1493085470593 12 connected 0-1819f0b576b5d788bcaf04818a09aa55c5a415f5e1b3 192.168.1.44:6001 master - 0 1493085472096 7 connected 9102-10922b5184f5cc369302954c0c6b78d1da9d81aad5c75 192.168.1.45:6001 master - 0 1493085472096 8 connected 7282-9101e1e6fc6761801aff8cf12bdf66c925f7cefce139 192.168.1.38:6001 myself,slave 6b4045212d9c286e6761a66f318c02d7f364fdc0 0 0 1 connected8130193c3a3fb3b08eb508c284651f5cf04f4edf 192.168.1.47:6001 master - 0 1493085470593 10 connected 3641-546034d3ca2d97cd690615918e4fe8c044720b97630e 192.168.1.41:6001 master - 0 1493085471595 21 connected 14564-16383030cf3fbea41f973a530d771bc96df315049a1d3 192.168.1.80:6001 slave 34d3ca2d97cd690615918e4fe8c044720b97630e 0 1493085472096 21 connected7a3a4435fdc47d46d0015fc902a7afce1ab4a1d7 192.168.1.50:6001 master - 0 1493085470793 20 connected 12743-1456305d46d482b554a1f1d06c99f2429e3b45bbfb285 192.168.1.79:6001 slave cb3fad467085c1afa92a416690269c90d35927a5 0 1493085471093 17 connectedef22883b4606798fc651f9dacab94a8b10a46339 192.168.1.39:6001 slave 8130193c3a3fb3b08eb508c284651f5cf04f4edf 0 1493085471093 10 connecteded4aec201945440d2db62636096daaae42cdbe07 192.168.1.53:6001 slave b5184f5cc369302954c0c6b78d1da9d81aad5c75 0 1493085470091 16 connectedfe242df63905aa36599a286879a214909e8e9d7a 192.168.1.43:6001 master - 0 1493085470092 6 connected 10923-12742
查看redis-cluster 中节点对应的主从关系
[root@CACHE_S1 ~]# redis-cli -h 192.168.1.38 -p 6001192.168.1.38:6001> info
Master | Slave |
---|---|
41 | 80 |
43 | 51 |
44 | 52 |
45 | 53 |
46 | 38 |
47 | 39 |
48 | 79 |
49 | 40 |
50 | 42 |
需求
由于业务缩减,不需要使用这么多资源,要节省成本,将18个节点,缩减为6个节点(已经很奢侈了)。顾虑就是担心节点上的数据丢失调整后的
Master | Slave |
---|---|
43 | 51 |
44 | 52 |
45 | 53 |
具体操作
1、删除需要清理的slave节点
[root@CACHE_S1 ~]# /data/redis-3.0.5/src/redis-trib.rb del-node 192.168.1.80:6001 '030cf3fbea41f973a530d771bc96df315049a1d3'[root@CACHE_S1 ~]# /data/redis-3.0.5/src/redis-trib.rb del-node 192.168.1.79:6001 '05d46d482b554a1f1d06c99f2429e3b45bbfb285'[root@CACHE_S1 ~]# /data/redis-3.0.5/src/redis-trib.rb del-node 192.168.1.42:6001 '302af3d6cb5ed01dea2df5f0244249d5ca929324'[root@CACHE_S1 ~]# /data/redis-3.0.5/src/redis-trib.rb del-node 192.168.1.40:6001 '01f80e39f8194cf500c925648f15bf1a7ba9d2d4'[root@CACHE_S1 ~]# /data/redis-3.0.5/src/redis-trib.rb del-node 192.168.1.39:6001 'ef22883b4606798fc651f9dacab94a8b10a46339'[root@CACHE_S1 ~]# /data/redis-3.0.5/src/redis-trib.rb del-node 192.168.1.38:6001 'e1e6fc6761801aff8cf12bdf66c925f7cefce139'
2、清除多余的master节点
要注意两个地方:
1、如果主节点有从节点,将从节点转移到其他主节点再删除比如要将38上的从节点转移到主节点48上,前面我们已经把slave 38从cluster中移除了,现在我们手动还原它
[root@CACHE_S1 ~]# /data/redis-3.0.5/src/redis-trib.rb add-node --slave --master-id 6b4045212d9c286e6761a66f318c02d7f364fdc0 192.168.1.38:6001 192.168.1.46:6001
更改38主节点到48
[root@CACHE_S1 ~]# redis-cli -h 192.168.1.38 -p 6001192.168.1.38:6001> cluster replicate cb3fad467085c1afa92a416690269c90d35927a5 # node id 为48的,现在46上只有solt了 OK
2、如果主节点有slot,去掉分配的slot,然后再删除主节点
[root@CACHE_S1 ~]# /data/redis-3.0.5/src/redis-trib.rb reshard 192.168.1.46:6001Connecting to node 192.168.1.46:6001: OKConnecting to node 192.168.1.44:6001: OKConnecting to node 192.168.1.49:6001: OKConnecting to node 192.168.1.52:6001: OKConnecting to node 192.168.1.41:6001: OKConnecting to node 192.168.1.50:6001: OKConnecting to node 192.168.1.43:6001: OKConnecting to node 192.168.1.48:6001: OKConnecting to node 192.168.1.47:6001: OKConnecting to node 192.168.1.45:6001: OKConnecting to node 192.168.1.51:6001: OKConnecting to node 192.168.1.53:6001: OK>>> Performing Cluster Check (using node 192.168.1.46:6001) M: 6b4045212d9c286e6761a66f318c02d7f364fdc0 192.168.1.46:6001 slots:0-123,1820-1944,3641-3764,5461-7405,9102-9227,10923-11046,12743-12867,14564-14687 (2817 slots) master # 46上2817个solt 0 additional replica(s) M: f0b576b5d788bcaf04818a09aa55c5a415f5e1b3 192.168.1.44:6001 slots:9228-10922 (1695 slots) master 1 additional replica(s) M: 7c68b4b70c1dcef1872ad209b06e6d31107ed3e1 192.168.1.49:6001 slots:124-1819 (1696 slots) master 0 additional replica(s) S: 5c90fd23af7b13c05d5f2df2065889a534072e27 192.168.1.52:6001 slots: (0 slots) slave replicates f0b576b5d788bcaf04818a09aa55c5a415f5e1b3 M: 34d3ca2d97cd690615918e4fe8c044720b97630e 192.168.1.41:6001 slots:14688-16383 (1696 slots) master 0 additional replica(s) M: 7a3a4435fdc47d46d0015fc902a7afce1ab4a1d7 192.168.1.50:6001 slots:12868-14563 (1696 slots) master 0 additional replica(s) M: fe242df63905aa36599a286879a214909e8e9d7a 192.168.1.43:6001 slots:11047-12742 (1696 slots) master 1 additional replica(s) M: cb3fad467085c1afa92a416690269c90d35927a5 192.168.1.48:6001 slots:1945-3640 (1696 slots) master 0 additional replica(s) M: 8130193c3a3fb3b08eb508c284651f5cf04f4edf 192.168.1.47:6001 slots:3765-5460 (1696 slots) master 0 additional replica(s) M: b5184f5cc369302954c0c6b78d1da9d81aad5c75 192.168.1.45:6001 slots:7406-9101 (1696 slots) master 1 additional replica(s) S: 9ef4d41a6bbb2611c83ac8d50ffe462eed7b88fe 192.168.1.51:6001 slots: (0 slots) slave replicates fe242df63905aa36599a286879a214909e8e9d7a S: ed4aec201945440d2db62636096daaae42cdbe07 192.168.1.53:6001 slots: (0 slots) slave replicates b5184f5cc369302954c0c6b78d1da9d81aad5c75 [OK] All nodes agree about slots configuration. >>> Check for open slots... >>> Check slots coverage... [OK] All 16384 slots covered. How many slots do you want to move (from 1 to 16384)? 2817 # 移除solt数量 What is the receiving node ID? fe242df63905aa36599a286879a214909e8e9d7a #要接收的master id,这里是43的id Please enter all the source node IDs. Type 'all' to use all the nodes as source nodes for the hash slots. # all会重新分配的 Type 'done' once you entered all the source nodes IDs. Source node #1:6b4045212d9c286e6761a66f318c02d7f364fdc0 # 需要移除的master id Source node #2:done Do you want to proceed with the proposed reshard plan (yes/no)? yes //取消slot后,reshard
接下来就删除节点
[root@CACHE_S1 ~]# /data/redis-3.0.5/src/redis-trib.rb del-node 192.168.1.46:6001 '6b4045212d9c286e6761a66f318c02d7f364fdc0'
上面的都是演示,下面来进入正题删除master节点
主节点分配
43 接收 46,47的slot44 接收 49,50的slot45 接收 41,48的slot47
[root@CACHE_S1 ~]# /data/redis-3.0.5/src/redis-trib.rb reshard 192.168.1.47:6001[root@CACHE_S1 ~]# /data/redis-3.0.5/src/redis-trib.rb del-node 192.168.1.47:6001 '8130193c3a3fb3b08eb508c284651f5cf04f4edf'
49
[root@CACHE_S1 ~]# /data/redis-3.0.5/src/redis-trib.rb reshard 192.168.1.49:6001[root@CACHE_S1 ~]# /data/redis-3.0.5/src/redis-trib.rb del-node 192.168.1.49:6001 '7c68b4b70c1dcef1872ad209b06e6d31107ed3e1'
50
[root@CACHE_S1 ~]# /data/redis-3.0.5/src/redis-trib.rb reshard 192.168.1.50:6001[root@CACHE_S1 ~]# /data/redis-3.0.5/src/redis-trib.rb del-node 192.168.1.50:6001 '7a3a4435fdc47d46d0015fc902a7afce1ab4a1d7'
41
[root@CACHE_S1 ~]# /data/redis-3.0.5/src/redis-trib.rb reshard 192.168.1.41:6001[root@CACHE_S1 ~]# /data/redis-3.0.5/src/redis-trib.rb del-node 192.168.1.41:6001 '34d3ca2d97cd690615918e4fe8c044720b97630e'
48
[root@CACHE_S1 ~]# /data/redis-3.0.5/src/redis-trib.rb reshard 192.168.1.48:6001[root@CACHE_S1 ~]# /data/redis-3.0.5/src/redis-trib.rb del-node 192.168.1.48:6001 'cb3fad467085c1afa92a416690269c90d35927a5'
重新分配所有slot
这时候所有主节点的slot分配不均衡,需要手动进行分配,和前面将主节点的是slot分配到其他主节点的方法一样,最好计算下怎样才平均些
参考地址
http://blog.csdn.net/donggang1992/article/details/50965599http://blog.51yip.com/nosql/1726.html