地址规划
主机名 | ip地 | 端口 |
redis01 | 10.0.0.10 | 6379、6380 |
redis02 | 10.0.0.60 | 6379、6380 |
redis03 | 10.0.0.61 | 6379、6380 |
redis04 | 10.0.0.70 | 6379、6380 |
redis05 | 10.0.0.71 | 6379、6380 |
redis06 | 10.0.0.72 | 6379、6380 |
其中前三台为老集群节点,后三台为新集群节点,本篇针对生成环境,在线迁移集群,不停机。
集群搭建在https://www.cnblogs.com/zh-dream/p/12249767.html
准备工作
1 [root@redis01 module]# mkdir -p 6379/etc 2 [root@redis01 module]# mkdir -p 6380/etc 3 4 [root@redis01 module]# cp redis-5.0.0/etc/redis.conf 6379/etc/ 5 6 [root@redis01 module]# cp redis-5.0.0/etc/redis.conf 6380/etc/ 7 8 [root@redis01 module]# mkdir 6380/{data,run,logs} 9 [root@redis01 module]# mkdir 6379/{data,run,logs}
修改配置文件
1 [root@redis01 module]# sed -ri -e 's@^(dir /data/module/).*@16380/data@' -e 's@^(pidfile ).*@1/data/module/6380/run/redis_6380.pid@' -e 's/^(port )6379/16380/' -e 's@^(logfile "/data/module/).*@16380/logs/redis_6380.log"@' -e 's@^# cluster-config-file nodes-6379.conf@cluster-config-file nodes-6380.conf@' 6380/etc/redis.conf 2 3 [root@redis01 module]# sed -ri -e 's@^(dir /data/module/).*@16379/data@' -e 's@^(pidfile ).*@1/data/module/6379/run/redis_6379.pid@' -e 's@^(logfile "/data/module/).*@16379/logs/redis_6379.log"@' -e 's@^# cluster-config-file nodes-6379.conf@cluster-config-file nodes-6379.conf@' 6379/etc/redis.conf
启动redis实例
1 [root@redis01 module]# for i in 79 80;do redis-server 63$i/etc/redis.conf;done 2 3 [root@redis01 module]# ss -lntp 4 State Recv-Q Send-Q Local Address:Port Peer Address:Port 5 LISTEN 0 511 10.0.0.10:6379 *:* users:(("redis-server",pid=16372,fd=7)) 6 LISTEN 0 511 10.0.0.10:6380 *:* users:(("redis-server",pid=16374,fd=7)) 7 LISTEN 0 128 *:22 *:* users:(("sshd",pid=743,fd=3)) 8 LISTEN 0 100 127.0.0.1:25 *:* users:(("master",pid=834,fd=13)) 9 LISTEN 0 511 10.0.0.10:16379 *:* users:(("redis-server",pid=16372,fd=10)) 10 LISTEN 0 511 10.0.0.10:16380 *:* users:(("redis-server",pid=16374,fd=10)) 11 LISTEN 0 128 :::22 :::* users:(("sshd",pid=743,fd=4)) 12 LISTEN 0 100 ::1:25 :::* users:(("master",pid=834,fd=14))
建立集群
先加入主节点
1 [root@redis01 module]# redis-cli --cluster create 10.0.0.10:6379 10.0.0.60:6379 10.0.0.61:6379 2 >>> Performing hash slots allocation on 3 nodes... 3 Master[0] -> Slots 0 - 5460 4 Master[1] -> Slots 5461 - 10922 5 Master[2] -> Slots 10923 - 16383 6 M: aca05ab1ffe0079493ad73cd045b14bd21941e07 10.0.0.10:6379 7 slots:[0-5460] (5461 slots) master 8 M: e6fd058cb888fbe014bbc93d59eaf0595b1d514c 10.0.0.60:6379 9 slots:[5461-10922] (5462 slots) master 10 M: c934fb00e04727cbe3ebec8ec52b629df8a4c760 10.0.0.61:6379 11 slots:[10923-16383] (5461 slots) master 12 Can I set the above configuration? (type 'yes' to accept): yes 13 >>> Nodes configuration updated 14 >>> Assign a different config epoch to each node 15 >>> Sending CLUSTER MEET messages to join the cluster 16 Waiting for the cluster to join 17 18 >>> Performing Cluster Check (using node 10.0.0.10:6379) 19 M: aca05ab1ffe0079493ad73cd045b14bd21941e07 10.0.0.10:6379 20 slots:[0-5460] (5461 slots) master 21 M: c934fb00e04727cbe3ebec8ec52b629df8a4c760 10.0.0.61:6379 22 slots:[10923-16383] (5461 slots) master 23 M: e6fd058cb888fbe014bbc93d59eaf0595b1d514c 10.0.0.60:6379 24 slots:[5461-10922] (5462 slots) master 25 [OK] All nodes agree about slots configuration. 26 >>> Check for open slots... 27 >>> Check slots coverage... 28 [OK] All 16384 slots covered.
在集群指定主从关系
1 [root@redis01 module]# redis-cli --cluster add-node --cluster-slave 10.0.0.60:6380 10.0.0.10:6379 2 >>> Adding node 10.0.0.60:6380 to cluster 10.0.0.10:6379 3 >>> Performing Cluster Check (using node 10.0.0.10:6379) 4 M: aca05ab1ffe0079493ad73cd045b14bd21941e07 10.0.0.10:6379 5 slots:[0-5460] (5461 slots) master 6 M: c934fb00e04727cbe3ebec8ec52b629df8a4c760 10.0.0.61:6379 7 slots:[10923-16383] (5461 slots) master 8 M: e6fd058cb888fbe014bbc93d59eaf0595b1d514c 10.0.0.60:6379 9 slots:[5461-10922] (5462 slots) master 10 [OK] All nodes agree about slots configuration. 11 >>> Check for open slots... 12 >>> Check slots coverage... 13 [OK] All 16384 slots covered. 14 Automatically selected master 10.0.0.10:6379 15 >>> Send CLUSTER MEET to node 10.0.0.60:6380 to make it join the cluster. 16 Waiting for the cluster to join 17 18 >>> Configure node as replica of 10.0.0.10:6379. 19 [OK] New node added correctly. 20 [root@redis01 module]# redis-cli --cluster add-node --cluster-slave 10.0.0.61:6380 10.0.0.60:6379 21 >>> Adding node 10.0.0.61:6380 to cluster 10.0.0.60:6379 22 >>> Performing Cluster Check (using node 10.0.0.60:6379) 23 M: e6fd058cb888fbe014bbc93d59eaf0595b1d514c 10.0.0.60:6379 24 slots:[5461-10922] (5462 slots) master 25 M: aca05ab1ffe0079493ad73cd045b14bd21941e07 10.0.0.10:6379 26 slots:[0-5460] (5461 slots) master 27 1 additional replica(s) 28 S: 25b3f9781fd913d2c783ab24fa2c79a74a08070b 10.0.0.60:6380 29 slots: (0 slots) slave 30 replicates aca05ab1ffe0079493ad73cd045b14bd21941e07 31 M: c934fb00e04727cbe3ebec8ec52b629df8a4c760 10.0.0.61:6379 32 slots:[10923-16383] (5461 slots) master 33 [OK] All nodes agree about slots configuration. 34 >>> Check for open slots... 35 >>> Check slots coverage... 36 [OK] All 16384 slots covered. 37 Automatically selected master 10.0.0.60:6379 38 >>> Send CLUSTER MEET to node 10.0.0.61:6380 to make it join the cluster. 39 Waiting for the cluster to join 40 41 >>> Configure node as replica of 10.0.0.60:6379. 42 [OK] New node added correctly. 43 [root@redis01 module]# redis-cli --cluster add-node --cluster-slave 10.0.0.10:6380 10.0.0.61:6379 44 >>> Adding node 10.0.0.10:6380 to cluster 10.0.0.61:6379 45 >>> Performing Cluster Check (using node 10.0.0.61:6379) 46 M: c934fb00e04727cbe3ebec8ec52b629df8a4c760 10.0.0.61:6379 47 slots:[10923-16383] (5461 slots) master 48 M: aca05ab1ffe0079493ad73cd045b14bd21941e07 10.0.0.10:6379 49 slots:[0-5460] (5461 slots) master 50 1 additional replica(s) 51 M: e6fd058cb888fbe014bbc93d59eaf0595b1d514c 10.0.0.60:6379 52 slots:[5461-10922] (5462 slots) master 53 1 additional replica(s) 54 S: 25b3f9781fd913d2c783ab24fa2c79a74a08070b 10.0.0.60:6380 55 slots: (0 slots) slave 56 replicates aca05ab1ffe0079493ad73cd045b14bd21941e07 57 S: 9b88fbde76b12e035d71056881c8ed09ce6aeb0d 10.0.0.61:6380 58 slots: (0 slots) slave 59 replicates e6fd058cb888fbe014bbc93d59eaf0595b1d514c 60 [OK] All nodes agree about slots configuration. 61 >>> Check for open slots... 62 >>> Check slots coverage... 63 [OK] All 16384 slots covered. 64 Automatically selected master 10.0.0.61:6379 65 >>> Send CLUSTER MEET to node 10.0.0.10:6380 to make it join the cluster. 66 Waiting for the cluster to join 67 68 >>> Configure node as replica of 10.0.0.61:6379. 69 [OK] New node added correctly.
检测集群状态
1 [root@redis01 module]# redis-cli --cluster check 10.0.0.10:6379 2 10.0.0.10:6379 (aca05ab1...) -> 0 keys | 5461 slots | 1 slaves. 3 10.0.0.61:6379 (c934fb00...) -> 0 keys | 5461 slots | 1 slaves. 4 10.0.0.60:6379 (e6fd058c...) -> 0 keys | 5462 slots | 1 slaves. 5 [OK] 0 keys in 3 masters. 6 0.00 keys per slot on average. 7 >>> Performing Cluster Check (using node 10.0.0.10:6379) 8 M: aca05ab1ffe0079493ad73cd045b14bd21941e07 10.0.0.10:6379 9 slots:[0-5460] (5461 slots) master 10 1 additional replica(s) 11 M: c934fb00e04727cbe3ebec8ec52b629df8a4c760 10.0.0.61:6379 12 slots:[10923-16383] (5461 slots) master 13 1 additional replica(s) 14 S: 9b88fbde76b12e035d71056881c8ed09ce6aeb0d 10.0.0.61:6380 15 slots: (0 slots) slave 16 replicates e6fd058cb888fbe014bbc93d59eaf0595b1d514c 17 S: f2a07c9d27d6d62d40bec2bc6914fd0757e7d072 10.0.0.10:6380 18 slots: (0 slots) slave 19 replicates c934fb00e04727cbe3ebec8ec52b629df8a4c760 20 S: 25b3f9781fd913d2c783ab24fa2c79a74a08070b 10.0.0.60:6380 21 slots: (0 slots) slave 22 replicates aca05ab1ffe0079493ad73cd045b14bd21941e07 23 M: e6fd058cb888fbe014bbc93d59eaf0595b1d514c 10.0.0.60:6379 24 slots:[5461-10922] (5462 slots) master 25 1 additional replica(s) 26 [OK] All nodes agree about slots configuration. 27 >>> Check for open slots... 28 >>> Check slots coverage... 29 [OK] All 16384 slots covered.
#在集群中插入几条数据,待迁移后检测使用
将迁移的目标节点加入集群
添加主节点
1 [root@redis01 module]# redis-cli --cluster add-node 10.0.0.70:6379 10.0.0.10:6379 2 >>> Adding node 10.0.0.70:6379 to cluster 10.0.0.10:6379 3 >>> Performing Cluster Check (using node 10.0.0.10:6379) 4 M: aca05ab1ffe0079493ad73cd045b14bd21941e07 10.0.0.10:6379 5 slots:[0-5460] (5461 slots) master 6 1 additional replica(s) 7 M: c934fb00e04727cbe3ebec8ec52b629df8a4c760 10.0.0.61:6379 8 slots:[10923-16383] (5461 slots) master 9 1 additional replica(s) 10 S: 9b88fbde76b12e035d71056881c8ed09ce6aeb0d 10.0.0.61:6380 11 slots: (0 slots) slave 12 replicates e6fd058cb888fbe014bbc93d59eaf0595b1d514c 13 S: f2a07c9d27d6d62d40bec2bc6914fd0757e7d072 10.0.0.10:6380 14 slots: (0 slots) slave 15 replicates c934fb00e04727cbe3ebec8ec52b629df8a4c760 16 S: 25b3f9781fd913d2c783ab24fa2c79a74a08070b 10.0.0.60:6380 17 slots: (0 slots) slave 18 replicates aca05ab1ffe0079493ad73cd045b14bd21941e07 19 M: e6fd058cb888fbe014bbc93d59eaf0595b1d514c 10.0.0.60:6379 20 slots:[5461-10922] (5462 slots) master 21 1 additional replica(s) 22 [OK] All nodes agree about slots configuration. 23 >>> Check for open slots... 24 >>> Check slots coverage... 25 [OK] All 16384 slots covered. 26 >>> Send CLUSTER MEET to node 10.0.0.70:6379 to make it join the cluster. 27 [OK] New node added correctly.
28 [root@redis01 module]# redis-cli --cluster add-node 10.0.0.71:6379 10.0.0.10:6379 29 >>> Adding node 10.0.0.71:6379 to cluster 10.0.0.10:6379 30 >>> Performing Cluster Check (using node 10.0.0.10:6379) 31 M: aca05ab1ffe0079493ad73cd045b14bd21941e07 10.0.0.10:6379 32 slots:[0-5460] (5461 slots) master 33 1 additional replica(s) 34 M: c934fb00e04727cbe3ebec8ec52b629df8a4c760 10.0.0.61:6379 35 slots:[10923-16383] (5461 slots) master 36 1 additional replica(s) 37 M: 76206b5fd10ffff1f0bf4287ff1bdbad9eb0c01a 10.0.0.70:6379 38 slots: (0 slots) master 39 S: 9b88fbde76b12e035d71056881c8ed09ce6aeb0d 10.0.0.61:6380 40 slots: (0 slots) slave 41 replicates e6fd058cb888fbe014bbc93d59eaf0595b1d514c 42 S: f2a07c9d27d6d62d40bec2bc6914fd0757e7d072 10.0.0.10:6380 43 slots: (0 slots) slave 44 replicates c934fb00e04727cbe3ebec8ec52b629df8a4c760 45 S: 25b3f9781fd913d2c783ab24fa2c79a74a08070b 10.0.0.60:6380 46 slots: (0 slots) slave 47 replicates aca05ab1ffe0079493ad73cd045b14bd21941e07 48 M: e6fd058cb888fbe014bbc93d59eaf0595b1d514c 10.0.0.60:6379 49 slots:[5461-10922] (5462 slots) master 50 1 additional replica(s) 51 [OK] All nodes agree about slots configuration. 52 >>> Check for open slots... 53 >>> Check slots coverage... 54 [OK] All 16384 slots covered. 55 >>> Send CLUSTER MEET to node 10.0.0.71:6379 to make it join the cluster. 56 [OK] New node added correctly.
57 [root@redis01 module]# redis-cli --cluster add-node 10.0.0.72:6379 10.0.0.10:6379 58 >>> Adding node 10.0.0.72:6379 to cluster 10.0.0.10:6379 59 >>> Performing Cluster Check (using node 10.0.0.10:6379) 60 M: aca05ab1ffe0079493ad73cd045b14bd21941e07 10.0.0.10:6379 61 slots:[0-5460] (5461 slots) master 62 1 additional replica(s) 63 M: fd7f797b72b9f6c04de8d879743b2f6b508a7415 10.0.0.71:6379 64 slots: (0 slots) master 65 M: c934fb00e04727cbe3ebec8ec52b629df8a4c760 10.0.0.61:6379 66 slots:[10923-16383] (5461 slots) master 67 1 additional replica(s) 68 M: 76206b5fd10ffff1f0bf4287ff1bdbad9eb0c01a 10.0.0.70:6379 69 slots: (0 slots) master 70 S: 9b88fbde76b12e035d71056881c8ed09ce6aeb0d 10.0.0.61:6380 71 slots: (0 slots) slave 72 replicates e6fd058cb888fbe014bbc93d59eaf0595b1d514c 73 S: f2a07c9d27d6d62d40bec2bc6914fd0757e7d072 10.0.0.10:6380 74 slots: (0 slots) slave 75 replicates c934fb00e04727cbe3ebec8ec52b629df8a4c760 76 S: 25b3f9781fd913d2c783ab24fa2c79a74a08070b 10.0.0.60:6380 77 slots: (0 slots) slave 78 replicates aca05ab1ffe0079493ad73cd045b14bd21941e07 79 M: e6fd058cb888fbe014bbc93d59eaf0595b1d514c 10.0.0.60:6379 80 slots:[5461-10922] (5462 slots) master 81 1 additional replica(s) 82 [OK] All nodes agree about slots configuration. 83 >>> Check for open slots... 84 >>> Check slots coverage... 85 [OK] All 16384 slots covered. 86 >>> Send CLUSTER MEET to node 10.0.0.72:6379 to make it join the cluster. 87 [OK] New node added correctly.
添加从节点
1 [root@redis01 module]# redis-cli --cluster add-node --cluster-slave 10.0.0.70:6380 10.0.0.71:6379 2 >>> Adding node 10.0.0.70:6380 to cluster 10.0.0.71:6379 3 >>> Performing Cluster Check (using node 10.0.0.71:6379) 4 M: fd7f797b72b9f6c04de8d879743b2f6b508a7415 10.0.0.71:6379 5 slots: (0 slots) master 6 S: 9b88fbde76b12e035d71056881c8ed09ce6aeb0d 10.0.0.61:6380 7 slots: (0 slots) slave 8 replicates e6fd058cb888fbe014bbc93d59eaf0595b1d514c 9 M: 76206b5fd10ffff1f0bf4287ff1bdbad9eb0c01a 10.0.0.70:6379 10 slots: (0 slots) master 11 M: e6fd058cb888fbe014bbc93d59eaf0595b1d514c 10.0.0.60:6379 12 slots:[5461-10922] (5462 slots) master 13 1 additional replica(s) 14 S: f2a07c9d27d6d62d40bec2bc6914fd0757e7d072 10.0.0.10:6380 15 slots: (0 slots) slave 16 replicates c934fb00e04727cbe3ebec8ec52b629df8a4c760 17 M: d44d3c8baf3ffd9041ef22ad1fdbc840d886aca4 10.0.0.72:6379 18 slots: (0 slots) master 19 S: 25b3f9781fd913d2c783ab24fa2c79a74a08070b 10.0.0.60:6380 20 slots: (0 slots) slave 21 replicates aca05ab1ffe0079493ad73cd045b14bd21941e07 22 M: aca05ab1ffe0079493ad73cd045b14bd21941e07 10.0.0.10:6379 23 slots:[0-5460] (5461 slots) master 24 1 additional replica(s) 25 M: c934fb00e04727cbe3ebec8ec52b629df8a4c760 10.0.0.61:6379 26 slots:[10923-16383] (5461 slots) master 27 1 additional replica(s) 28 [OK] All nodes agree about slots configuration. 29 >>> Check for open slots... 30 >>> Check slots coverage... 31 [OK] All 16384 slots covered. 32 Automatically selected master 10.0.0.71:6379 33 >>> Send CLUSTER MEET to node 10.0.0.70:6380 to make it join the cluster. 34 Waiting for the cluster to join 35 36 >>> Configure node as replica of 10.0.0.71:6379. 37 [OK] New node added correctly.
38 [root@redis01 module]# redis-cli --cluster add-node --cluster-slave 10.0.0.71:6380 10.0.0.72:6379 39 >>> Adding node 10.0.0.71:6380 to cluster 10.0.0.72:6379 40 >>> Performing Cluster Check (using node 10.0.0.72:6379) 41 M: d44d3c8baf3ffd9041ef22ad1fdbc840d886aca4 10.0.0.72:6379 42 slots: (0 slots) master 43 M: aca05ab1ffe0079493ad73cd045b14bd21941e07 10.0.0.10:6379 44 slots:[0-5460] (5461 slots) master 45 1 additional replica(s) 46 S: f2a07c9d27d6d62d40bec2bc6914fd0757e7d072 10.0.0.10:6380 47 slots: (0 slots) slave 48 replicates c934fb00e04727cbe3ebec8ec52b629df8a4c760 49 S: 2585c89e3e905202c3df1f8c0d75fe716591a972 10.0.0.70:6380 50 slots: (0 slots) slave 51 replicates fd7f797b72b9f6c04de8d879743b2f6b508a7415 52 M: 76206b5fd10ffff1f0bf4287ff1bdbad9eb0c01a 10.0.0.70:6379 53 slots: (0 slots) master 54 M: c934fb00e04727cbe3ebec8ec52b629df8a4c760 10.0.0.61:6379 55 slots:[10923-16383] (5461 slots) master 56 1 additional replica(s) 57 S: 9b88fbde76b12e035d71056881c8ed09ce6aeb0d 10.0.0.61:6380 58 slots: (0 slots) slave 59 replicates e6fd058cb888fbe014bbc93d59eaf0595b1d514c 60 M: fd7f797b72b9f6c04de8d879743b2f6b508a7415 10.0.0.71:6379 61 slots: (0 slots) master 62 1 additional replica(s) 63 S: 25b3f9781fd913d2c783ab24fa2c79a74a08070b 10.0.0.60:6380 64 slots: (0 slots) slave 65 replicates aca05ab1ffe0079493ad73cd045b14bd21941e07 66 M: e6fd058cb888fbe014bbc93d59eaf0595b1d514c 10.0.0.60:6379 67 slots:[5461-10922] (5462 slots) master 68 1 additional replica(s) 69 [OK] All nodes agree about slots configuration. 70 >>> Check for open slots... 71 >>> Check slots coverage... 72 [OK] All 16384 slots covered. 73 Automatically selected master 10.0.0.72:6379 74 >>> Send CLUSTER MEET to node 10.0.0.71:6380 to make it join the cluster. 75 Waiting for the cluster to join 76 77 >>> Configure node as replica of 10.0.0.72:6379. 78 [OK] New node added correctly.
79 [root@redis01 module]# redis-cli --cluster add-node --cluster-slave 10.0.0.72:6380 10.0.0.70:6379 80 >>> Adding node 10.0.0.72:6380 to cluster 10.0.0.70:6379 81 >>> Performing Cluster Check (using node 10.0.0.70:6379) 82 M: 76206b5fd10ffff1f0bf4287ff1bdbad9eb0c01a 10.0.0.70:6379 83 slots: (0 slots) master 84 M: aca05ab1ffe0079493ad73cd045b14bd21941e07 10.0.0.10:6379 85 slots:[0-5460] (5461 slots) master 86 1 additional replica(s) 87 M: c934fb00e04727cbe3ebec8ec52b629df8a4c760 10.0.0.61:6379 88 slots:[10923-16383] (5461 slots) master 89 1 additional replica(s) 90 S: f2a07c9d27d6d62d40bec2bc6914fd0757e7d072 10.0.0.10:6380 91 slots: (0 slots) slave 92 replicates c934fb00e04727cbe3ebec8ec52b629df8a4c760 93 S: 9b88fbde76b12e035d71056881c8ed09ce6aeb0d 10.0.0.61:6380 94 slots: (0 slots) slave 95 replicates e6fd058cb888fbe014bbc93d59eaf0595b1d514c 96 M: e6fd058cb888fbe014bbc93d59eaf0595b1d514c 10.0.0.60:6379 97 slots:[5461-10922] (5462 slots) master 98 1 additional replica(s) 99 S: 2585c89e3e905202c3df1f8c0d75fe716591a972 10.0.0.70:6380 100 slots: (0 slots) slave 101 replicates fd7f797b72b9f6c04de8d879743b2f6b508a7415 102 M: fd7f797b72b9f6c04de8d879743b2f6b508a7415 10.0.0.71:6379 103 slots: (0 slots) master 104 1 additional replica(s) 105 M: d44d3c8baf3ffd9041ef22ad1fdbc840d886aca4 10.0.0.72:6379 106 slots: (0 slots) master 107 1 additional replica(s) 108 S: e6124e0803cc6a3b5b3b030a733f1e58d3cbb80c 10.0.0.71:6380 109 slots: (0 slots) slave 110 replicates d44d3c8baf3ffd9041ef22ad1fdbc840d886aca4 111 S: 25b3f9781fd913d2c783ab24fa2c79a74a08070b 10.0.0.60:6380 112 slots: (0 slots) slave 113 replicates aca05ab1ffe0079493ad73cd045b14bd21941e07 114 [OK] All nodes agree about slots configuration. 115 >>> Check for open slots... 116 >>> Check slots coverage... 117 [OK] All 16384 slots covered. 118 Automatically selected master 10.0.0.70:6379 119 >>> Send CLUSTER MEET to node 10.0.0.72:6380 to make it join the cluster. 120 Waiting for the cluster to join 121 122 >>> Configure node as replica of 10.0.0.70:6379. 123 [OK] New node added correctly.
检查新节点的槽数,新添加的主节点槽数都是0,需要重新分片
1 [root@redis01 module]# redis-cli --cluster check 10.0.0.70:6379 2 10.0.0.70:6379 (76206b5f...) -> 0 keys | 0 slots | 1 slaves. 3 10.0.0.10:6379 (aca05ab1...) -> 1 keys | 5461 slots | 1 slaves. 4 10.0.0.61:6379 (c934fb00...) -> 1 keys | 5461 slots | 1 slaves. 5 10.0.0.60:6379 (e6fd058c...) -> 1 keys | 5462 slots | 1 slaves. 6 10.0.0.71:6379 (fd7f797b...) -> 0 keys | 0 slots | 1 slaves. 7 10.0.0.72:6379 (d44d3c8b...) -> 0 keys | 0 slots | 1 slaves. 8 [OK] 3 keys in 6 masters. 9 0.00 keys per slot on average. 10 >>> Performing Cluster Check (using node 10.0.0.70:6379) 11 M: 76206b5fd10ffff1f0bf4287ff1bdbad9eb0c01a 10.0.0.70:6379 12 slots: (0 slots) master 13 1 additional replica(s) 14 M: aca05ab1ffe0079493ad73cd045b14bd21941e07 10.0.0.10:6379 15 slots:[0-5460] (5461 slots) master 16 1 additional replica(s) 17 M: c934fb00e04727cbe3ebec8ec52b629df8a4c760 10.0.0.61:6379 18 slots:[10923-16383] (5461 slots) master 19 1 additional replica(s) 20 S: f2a07c9d27d6d62d40bec2bc6914fd0757e7d072 10.0.0.10:6380 21 slots: (0 slots) slave 22 replicates c934fb00e04727cbe3ebec8ec52b629df8a4c760 23 S: 9b88fbde76b12e035d71056881c8ed09ce6aeb0d 10.0.0.61:6380 24 slots: (0 slots) slave 25 replicates e6fd058cb888fbe014bbc93d59eaf0595b1d514c 26 M: e6fd058cb888fbe014bbc93d59eaf0595b1d514c 10.0.0.60:6379 27 slots:[5461-10922] (5462 slots) master 28 1 additional replica(s) 29 S: 2585c89e3e905202c3df1f8c0d75fe716591a972 10.0.0.70:6380 30 slots: (0 slots) slave 31 replicates fd7f797b72b9f6c04de8d879743b2f6b508a7415 32 M: fd7f797b72b9f6c04de8d879743b2f6b508a7415 10.0.0.71:6379 33 slots: (0 slots) master 34 1 additional replica(s) 35 M: d44d3c8baf3ffd9041ef22ad1fdbc840d886aca4 10.0.0.72:6379 36 slots: (0 slots) master 37 1 additional replica(s) 38 S: e6124e0803cc6a3b5b3b030a733f1e58d3cbb80c 10.0.0.71:6380 39 slots: (0 slots) slave 40 replicates d44d3c8baf3ffd9041ef22ad1fdbc840d886aca4 41 S: 25b3f9781fd913d2c783ab24fa2c79a74a08070b 10.0.0.60:6380 42 slots: (0 slots) slave 43 replicates aca05ab1ffe0079493ad73cd045b14bd21941e07 44 S: 54924e469a1003913f135de3116c7d53c41b5e69 10.0.0.72:6380 45 slots: (0 slots) slave 46 replicates 76206b5fd10ffff1f0bf4287ff1bdbad9eb0c01a 47 [OK] All nodes agree about slots configuration. 48 >>> Check for open slots... 49 >>> Check slots coverage... 50 [OK] All 16384 slots covered.
重新分片
1 [root@redis01 module]# redis-cli --cluster reshard 10.0.0.70:6379 2 >>> Performing Cluster Check (using node 10.0.0.70:6379) 3 M: 76206b5fd10ffff1f0bf4287ff1bdbad9eb0c01a 10.0.0.70:6379 4 slots: (0 slots) master 5 1 additional replica(s) 6 M: aca05ab1ffe0079493ad73cd045b14bd21941e07 10.0.0.10:6379 7 slots:[0-5460] (5461 slots) master 8 1 additional replica(s) 9 M: c934fb00e04727cbe3ebec8ec52b629df8a4c760 10.0.0.61:6379 10 slots:[10923-16383] (5461 slots) master 11 1 additional replica(s) 12 S: f2a07c9d27d6d62d40bec2bc6914fd0757e7d072 10.0.0.10:6380 13 slots: (0 slots) slave 14 replicates c934fb00e04727cbe3ebec8ec52b629df8a4c760 15 S: 9b88fbde76b12e035d71056881c8ed09ce6aeb0d 10.0.0.61:6380 16 slots: (0 slots) slave 17 replicates e6fd058cb888fbe014bbc93d59eaf0595b1d514c 18 M: e6fd058cb888fbe014bbc93d59eaf0595b1d514c 10.0.0.60:6379 19 slots:[5461-10922] (5462 slots) master 20 1 additional replica(s) 21 S: 2585c89e3e905202c3df1f8c0d75fe716591a972 10.0.0.70:6380 22 slots: (0 slots) slave 23 replicates fd7f797b72b9f6c04de8d879743b2f6b508a7415 24 M: fd7f797b72b9f6c04de8d879743b2f6b508a7415 10.0.0.71:6379 25 slots: (0 slots) master 26 1 additional replica(s) 27 M: d44d3c8baf3ffd9041ef22ad1fdbc840d886aca4 10.0.0.72:6379 28 slots: (0 slots) master 29 1 additional replica(s) 30 S: e6124e0803cc6a3b5b3b030a733f1e58d3cbb80c 10.0.0.71:6380 31 slots: (0 slots) slave 32 replicates d44d3c8baf3ffd9041ef22ad1fdbc840d886aca4 33 S: 25b3f9781fd913d2c783ab24fa2c79a74a08070b 10.0.0.60:6380 34 slots: (0 slots) slave 35 replicates aca05ab1ffe0079493ad73cd045b14bd21941e07 36 S: 54924e469a1003913f135de3116c7d53c41b5e69 10.0.0.72:6380 37 slots: (0 slots) slave 38 replicates 76206b5fd10ffff1f0bf4287ff1bdbad9eb0c01a 39 [OK] All nodes agree about slots configuration. 40 >>> Check for open slots... 41 >>> Check slots coverage... 42 [OK] All 16384 slots covered. 43 How many slots do you want to move (from 1 to 16384)? 5461 44 What is the receiving node ID? 76206b5fd10ffff1f0bf4287ff1bdbad9eb0c01a 45 Please enter all the source node IDs. 46 Type 'all' to use all the nodes as source nodes for the hash slots. 47 Type 'done' once you entered all the source nodes IDs. 48 Source node #1: aca05ab1ffe0079493ad73cd045b14bd21941e07 49 Source node #2: done 50 51 Ready to move 5461 slots. 52 Source nodes: 53 M: aca05ab1ffe0079493ad73cd045b14bd21941e07 10.0.0.10:6379 54 slots:[0-5460] (5461 slots) master 55 1 additional replica(s) 56 Destination node: 57 M: 76206b5fd10ffff1f0bf4287ff1bdbad9eb0c01a 10.0.0.70:6379 58 slots: (0 slots) master 59 1 additional replica(s) 60 Resharding plan: 61 Moving slot 0 from aca05ab1ffe0079493ad73cd045b14bd21941e07 62 Moving slot 1 from aca05ab1ffe0079493ad73cd045b14bd21941e07 63 Moving slot 2 from aca05ab1ffe0079493ad73cd045b14bd21941e07 64 65 Do you want to proceed with the proposed reshard plan (yes/no)? yes 66 Moving slot 0 from 10.0.0.10:6379 to 10.0.0.70:6379: 67 Moving slot 1 from 10.0.0.10:6379 to 10.0.0.70:6379: 68 Moving slot 2 from 10.0.0.10:6379 to 10.0.0.70:6379: 69 Moving slot 3 from 10.0.0.10:6379 to 10.0.0.70:6379: 70 Moving slot 4 from 10.0.0.10:6379 to 10.0.0.70:6379: 71 Moving slot 5 from 10.0.0.10:6379 to 10.0.0.70:6379: 72 Moving slot 6 from 10.0.0.10:6379 to 10.0.0.70:6379: 73 Moving slot 7 from 10.0.0.10:6379 to 10.0.0.70:6379: 74 Moving slot 8 from 10.0.0.10:6379 to 10.0.0.70:6379: 75 76 77 78 [root@redis01 module]# redis-cli --cluster reshard 10.0.0.71:6379 79 80 [OK] All nodes agree about slots configuration. 81 >>> Check for open slots... 82 >>> Check slots coverage... 83 [OK] All 16384 slots covered. 84 How many slots do you want to move (from 1 to 16384)? 5461 85 What is the receiving node ID? fd7f797b72b9f6c04de8d879743b2f6b508a7415 86 Please enter all the source node IDs. 87 Type 'all' to use all the nodes as source nodes for the hash slots. 88 Type 'done' once you entered all the source nodes IDs. 89 Source node #1: e6fd058cb888fbe014bbc93d59eaf0595b1d514c 90 Source node #2: done 91 92 Moving slot 10915 from e6fd058cb888fbe014bbc93d59eaf0595b1d514c 93 Moving slot 10916 from e6fd058cb888fbe014bbc93d59eaf0595b1d514c 94 Moving slot 10917 from e6fd058cb888fbe014bbc93d59eaf0595b1d514c 95 Moving slot 10918 from e6fd058cb888fbe014bbc93d59eaf0595b1d514c 96 Moving slot 10919 from e6fd058cb888fbe014bbc93d59eaf0595b1d514c 97 Moving slot 10920 from e6fd058cb888fbe014bbc93d59eaf0595b1d514c 98 99 Do you want to proceed with the proposed reshard plan (yes/no)? yes 100 101 Moving slot 10915 from 10.0.0.60:6379 to 10.0.0.71:6379: 102 Moving slot 10916 from 10.0.0.60:6379 to 10.0.0.71:6379: 103 Moving slot 10917 from 10.0.0.60:6379 to 10.0.0.71:6379: 104 Moving slot 10918 from 10.0.0.60:6379 to 10.0.0.71:6379: 105 Moving slot 10919 from 10.0.0.60:6379 to 10.0.0.71:6379: 106 Moving slot 10920 from 10.0.0.60:6379 to 10.0.0.71:6379: 107 Moving slot 10921 from 10.0.0.60:6379 to 10.0.0.71:6379: 108 [root@redis01 module]# redis-cli --cluster reshard 10.0.0.72:6379 109 110 [OK] All nodes agree about slots configuration. 111 >>> Check for open slots... 112 >>> Check slots coverage... 113 [OK] All 16384 slots covered. 114 How many slots do you want to move (from 1 to 16384)? 5461 115 What is the receiving node ID? d44d3c8baf3ffd9041ef22ad1fdbc840d886aca4 116 Please enter all the source node IDs. 117 Type 'all' to use all the nodes as source nodes for the hash slots. 118 Type 'done' once you entered all the source nodes IDs. 119 Source node #1: c934fb00e04727cbe3ebec8ec52b629df8a4c760 120 Source node #2: done
查看是否老集群的哈希槽都移到了新集群节点上
1 [root@redis01 module]# redis-cli --cluster check 10.0.0.70:6379 2 10.0.0.70:6379 (76206b5f...) -> 1 keys | 5461 slots | 2 slaves. 3 10.0.0.10:6379 (aca05ab1...) -> 0 keys | 0 slots | 0 slaves. 4 10.0.0.61:6379 (c934fb00...) -> 0 keys | 0 slots | 0 slaves. 5 10.0.0.60:6379 (e6fd058c...) -> 0 keys | 1 slots | 1 slaves. 6 10.0.0.71:6379 (fd7f797b...) -> 1 keys | 5461 slots | 1 slaves. 7 10.0.0.72:6379 (d44d3c8b...) -> 1 keys | 5461 slots | 2 slaves. 8 [OK] 3 keys in 6 masters. 9 0.00 keys per slot on average. 10 >>> Performing Cluster Check (using node 10.0.0.70:6379) 11 M: 76206b5fd10ffff1f0bf4287ff1bdbad9eb0c01a 10.0.0.70:6379 12 slots:[0-5460] (5461 slots) master 13 2 additional replica(s) 14 M: aca05ab1ffe0079493ad73cd045b14bd21941e07 10.0.0.10:6379 15 slots: (0 slots) master 16 M: c934fb00e04727cbe3ebec8ec52b629df8a4c760 10.0.0.61:6379 17 slots: (0 slots) master 18 S: f2a07c9d27d6d62d40bec2bc6914fd0757e7d072 10.0.0.10:6380 19 slots: (0 slots) slave 20 replicates d44d3c8baf3ffd9041ef22ad1fdbc840d886aca4 21 S: 9b88fbde76b12e035d71056881c8ed09ce6aeb0d 10.0.0.61:6380 22 slots: (0 slots) slave 23 replicates e6fd058cb888fbe014bbc93d59eaf0595b1d514c 24 M: e6fd058cb888fbe014bbc93d59eaf0595b1d514c 10.0.0.60:6379 25 slots:[10922] (1 slots) master 26 1 additional replica(s) 27 S: 2585c89e3e905202c3df1f8c0d75fe716591a972 10.0.0.70:6380 28 slots: (0 slots) slave 29 replicates fd7f797b72b9f6c04de8d879743b2f6b508a7415 30 M: fd7f797b72b9f6c04de8d879743b2f6b508a7415 10.0.0.71:6379 31 slots:[5461-10921] (5461 slots) master 32 1 additional replica(s) 33 M: d44d3c8baf3ffd9041ef22ad1fdbc840d886aca4 10.0.0.72:6379 34 slots:[10923-16383] (5461 slots) master 35 2 additional replica(s) 36 S: e6124e0803cc6a3b5b3b030a733f1e58d3cbb80c 10.0.0.71:6380 37 slots: (0 slots) slave 38 replicates d44d3c8baf3ffd9041ef22ad1fdbc840d886aca4 39 S: 25b3f9781fd913d2c783ab24fa2c79a74a08070b 10.0.0.60:6380 40 slots: (0 slots) slave 41 replicates 76206b5fd10ffff1f0bf4287ff1bdbad9eb0c01a 42 S: 54924e469a1003913f135de3116c7d53c41b5e69 10.0.0.72:6380 43 slots: (0 slots) slave 44 replicates 76206b5fd10ffff1f0bf4287ff1bdbad9eb0c01a 45 [OK] All nodes agree about slots configuration. 46 >>> Check for open slots... 47 >>> Check slots coverage... 48 [OK] All 16384 slots covered. 49 50 51 52 [root@redis01 module]# redis-cli --cluster info 10.0.0.70:6379 53 10.0.0.70:6379 (76206b5f...) -> 1 keys | 5461 slots | 2 slaves. 54 10.0.0.10:6379 (aca05ab1...) -> 0 keys | 0 slots | 0 slaves. 55 10.0.0.61:6379 (c934fb00...) -> 0 keys | 0 slots | 0 slaves. 56 10.0.0.60:6379 (e6fd058c...) -> 0 keys | 1 slots | 1 slaves. 57 10.0.0.71:6379 (fd7f797b...) -> 1 keys | 5461 slots | 1 slaves. 58 10.0.0.72:6379 (d44d3c8b...) -> 1 keys | 5461 slots | 2 slaves. 59 [OK] 3 keys in 6 masters. 60 0.00 keys per slot on average.
在新节点检查之前插入的数据
1 [root@redis01 module]# redis-cli -c -h 10.0.0.70 -p 6379 2 10.0.0.70:6379> get name 3 -> Redirected to slot [5798] located at 10.0.0.71:6379 4 "tom" 5 10.0.0.71:6379> get foo 6 -> Redirected to slot [12182] located at 10.0.0.72:6379 7 "bar"
提示:上面的操作可以使用 redis-cli --cluster reshard --cluster-from <sourcenode-id> --cluster-to <destnode-id> --cluster-slots <number of slots> --cluster-yes
删除原来的节点
先删除从节点
1 [root@redis01 module]# redis-cli --cluster del-node 10.0.0.10:6380 e6124e0803cc6a3b5b3b030a733f1e58d3cbb80c 2 >>> Removing node e6124e0803cc6a3b5b3b030a733f1e58d3cbb80c from cluster 10.0.0.10:6380 3 >>> Sending CLUSTER FORGET messages to the cluster... 4 >>> SHUTDOWN the node. 5 [root@redis01 module]# redis-cli --cluster del-node 10.0.0.60:6380 25b3f9781fd913d2c783ab24fa2c79a74a08070b 6 >>> Removing node 25b3f9781fd913d2c783ab24fa2c79a74a08070b from cluster 10.0.0.60:6380 7 >>> Sending CLUSTER FORGET messages to the cluster... 8 >>> SHUTDOWN the node. 9 [root@redis01 module]# redis-cli --cluster del-node 10.0.0.61:6380 9b88fbde76b12e035d71056881c8ed09ce6aeb0d 10 >>> Removing node 9b88fbde76b12e035d71056881c8ed09ce6aeb0d from cluster 10.0.0.61:6380 11 >>> Sending CLUSTER FORGET messages to the cluster... 12 >>> SHUTDOWN the node.
注意:
1 一定不要写错ID 这个主要是以id号来删除节点 输入错了节点id 会出现如下错误信息: 2 3 [ERR] Node 10.0.0.71:6380 is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0. 4 5 需要启动这个节点,修复一下就好了 6 7 [root@redis05 module]# redis-server 6380/etc/redis.conf 8 9 [root@redis01 module]# redis-cli --cluster fix 10.0.0.71:6380
从集群中删除迁移之前的master主节点。
1 删除master主节点时需注意下面节点: 2 - 如果主节点有从节点,需要将从节点转移到其他主节点或提前删除从节点 3 - 如果主节点有slot,去掉分配的slot,然后再删除主节点。 4 5 6 除master主节点时,必须确保它上面的slot为0,即必须为空!否则可能会导致整个redis cluster集群无法工作! 7 8 如果要移除的master节点不是空的,需要先用重新分片命令来把数据移到其他的节点。 9 另外一个移除master节点的方法是先进行一次手动的失效备援,等它的slave被选举为新的master,并且它被作为一个新的slave被重新加到集群中来之后再移除它。 10 很明显,如果你是想要减少集群中的master数量,这种做法没什么用。在这种情况下你还是需要用重新分片来移除数据后再移除它。
11 [root@redis01 module]# redis-cli --cluster del-node 10.0.0.60:6379 e6fd058cb888fbe014bbc93d59eaf0595b1d514c 12 >>> Removing node e6fd058cb888fbe014bbc93d59eaf0595b1d514c from cluster 10.0.0.60:6379 13 [ERR] Node 10.0.0.60:6379 is not empty! Reshard data away and try again.
由于已经将原来的三个master主节点的slot全部抽完了,即slot现在都为0,且他们各自的slave节点也已在上面删除
可以删除主节点
1 [root@redis01 module]# redis-cli --cluster del-node 10.0.0.10:6379 f2a07c9d27d6d62d40bec2bc6914fd0757e7d072 2 >>> Removing node f2a07c9d27d6d62d40bec2bc6914fd0757e7d072 from cluster 10.0.0.10:6379 3 >>> Sending CLUSTER FORGET messages to the cluster... 4 >>> SHUTDOWN the node. 5 6 [root@redis01 module]# redis-cli --cluster del-node 10.0.0.60:6379 e6fd058cb888fbe014bbc93d59eaf0595b1d514c 7 >>> Removing node e6fd058cb888fbe014bbc93d59eaf0595b1d514c from cluster 10.0.0.60:6379 8 >>> Sending CLUSTER FORGET messages to the cluster... 9 >>> SHUTDOWN the node. 10 11 12 13 [root@redis01 module]# redis-cli --cluster del-node 10.0.0.61:6379 c934fb00e04727cbe3ebec8ec52b629df8a4c760 14 >>> Removing node c934fb00e04727cbe3ebec8ec52b629df8a4c760 from cluster 10.0.0.61:6379 15 >>> Sending CLUSTER FORGET messages to the cluster... 16 >>> SHUTDOWN the node.