linux-redis cluster 集群扩容
前言
如果redis cluster集群内存不够用了,就会涉及到扩容的情况。
环境介绍
现有节点:127.0.0.1 8001-8006
新增节点:127.0.0.1 8007-8008
同样的新节点需要启用cluster配置,并修改成对应的端口:
port 8007
cluster-enabled yes
cluster-config-file nodes-8007.conf
cluster-node-timeout 15000
port 8008
cluster-enabled yes
cluster-config-file nodes-8008.conf
cluster-node-timeout 15000
启动新增节点
/opt/redis/bin/redis-server /opt/redis/etc/redis-8007.conf
/opt/redis/bin/redis-server /opt/redis/etc/redis-8008.conf
查看当前节点情况
/opt/redis/bin/redis-cli -p 8001 -c cluster nodes
763112edb3a90acc27c510b38b7532381b3399f8 127.0.0.1:8002@18002 master - 0 1534498218146 2 connected 5461-10922
950e16960702ca43fbdae7f99682f465aa668314 127.0.0.1:8004@18004 slave 0e68888bab88379a08f72b92c8bcdfa2f48a65d4 0 1534498219000 4 connected
808bb8f2f2bdc8a4215c979d6be350eb0f6f3ef0 127.0.0.1:8005@18005 slave 599582d756a1df2de75ecb34394ecbf00d147c7c 0 1534498215000 5 connected
5cdf4e00589df7372fd4115027e16dbdec59ec3e 127.0.0.1:8006@18006 slave 763112edb3a90acc27c510b38b7532381b3399f8 0 1534498219150 6 connected
0e68888bab88379a08f72b92c8bcdfa2f48a65d4 127.0.0.1:8003@18003 master - 0 1534498219000 3 connected 10923-16383
599582d756a1df2de75ecb34394ecbf00d147c7c 127.0.0.1:8001@18001 myself,master - 0 1534498216000 1 connected 0-5460
添加一个master节点
/opt/redis/bin/redis-trib.rb add-node 127.0.0.1:8007 127.0.0.1:8001
查看节点信息
/opt/redis/bin/redis-cli -p 8001 -c cluster nodes
763112edb3a90acc27c510b38b7532381b3399f8 127.0.0.1:8002@18002 master - 0 1534498374729 2 connected 5461-10922
31606b0c96906d55708459c6e70ffa75bb8add46 127.0.0.1:8007@18007 master - 0 1534498370000 7 connected 0
950e16960702ca43fbdae7f99682f465aa668314 127.0.0.1:8004@18004 slave 0e68888bab88379a08f72b92c8bcdfa2f48a65d4 0 1534498370000 4 connected
808bb8f2f2bdc8a4215c979d6be350eb0f6f3ef0 127.0.0.1:8005@18005 slave 599582d756a1df2de75ecb34394ecbf00d147c7c 0 1534498371000 5 connected
5cdf4e00589df7372fd4115027e16dbdec59ec3e 127.0.0.1:8006@18006 slave 763112edb3a90acc27c510b38b7532381b3399f8 0 1534498373725 6 connected
0e68888bab88379a08f72b92c8bcdfa2f48a65d4 127.0.0.1:8003@18003 master - 0 1534498372000 3 connected 10923-16383
599582d756a1df2de75ecb34394ecbf00d147c7c 127.0.0.1:8001@18001 myself,master - 0 1534498370000 1 connected 1-5460
给新增的master添加一个slave
/opt/redis/bin/redis-trib.rb add-node --slave --master-id 31606b0c96906d55708459c6e70ffa75bb8add46 127.0.0.1:8008 127.0.0.1:8001
查看节点信息
/opt/redis/bin/redis-cli -p 8001 -c cluster nodes
763112edb3a90acc27c510b38b7532381b3399f8 127.0.0.1:8002@18002 master - 0 1534498374729 2 connected 5461-10922
b5677d2a5191382409e60835d8cdd7e31c6cb3f5 127.0.0.1:8008@18008 slave 31606b0c96906d55708459c6e70ffa75bb8add46 0 1534498372000 7 connected
31606b0c96906d55708459c6e70ffa75bb8add46 127.0.0.1:8007@18007 master - 0 1534498370000 7 connected 0
950e16960702ca43fbdae7f99682f465aa668314 127.0.0.1:8004@18004 slave 0e68888bab88379a08f72b92c8bcdfa2f48a65d4 0 1534498370000 4 connected
808bb8f2f2bdc8a4215c979d6be350eb0f6f3ef0 127.0.0.1:8005@18005 slave 599582d756a1df2de75ecb34394ecbf00d147c7c 0 1534498371000 5 connected
5cdf4e00589df7372fd4115027e16dbdec59ec3e 127.0.0.1:8006@18006 slave 763112edb3a90acc27c510b38b7532381b3399f8 0 1534498373725 6 connected
0e68888bab88379a08f72b92c8bcdfa2f48a65d4 127.0.0.1:8003@18003 master - 0 1534498372000 3 connected 10923-16383
599582d756a1df2de75ecb34394ecbf00d147c7c 127.0.0.1:8001@18001 myself,master - 0 1534498370000 1 connected 1-5460
执行rebalance
/opt/redis/bin/redis-trib.rb rebalance --threshold 2 127.0.0.1:8001
>>> Performing Cluster Check (using node 127.0.0.1:8001)
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
*** No rebalancing needed! All nodes are within the 2.0% threshold.
发现没有slot迁移,这时候就要手动先迁移一个slot到新的节点就可以了。
/opt/redis/bin/redis-trib.rb reshard 127.0.0.1:8001
>>> Performing Cluster Check (using node 127.0.0.1:8001)
M: 599582d756a1df2de75ecb34394ecbf00d147c7c 127.0.0.1:8001
slots:0-5460 (5461 slots) master
1 additional replica(s)
M: 763112edb3a90acc27c510b38b7532381b3399f8 127.0.0.1:8002
slots:5461-10922 (5462 slots) master
1 additional replica(s)
S: b5677d2a5191382409e60835d8cdd7e31c6cb3f5 127.0.0.1:8008
slots: (0 slots) slave
replicates 31606b0c96906d55708459c6e70ffa75bb8add46
M: 31606b0c96906d55708459c6e70ffa75bb8add46 127.0.0.1:8007
slots: (0 slots) master
1 additional replica(s)
S: 950e16960702ca43fbdae7f99682f465aa668314 127.0.0.1:8004
slots: (0 slots) slave
replicates 0e68888bab88379a08f72b92c8bcdfa2f48a65d4
S: 808bb8f2f2bdc8a4215c979d6be350eb0f6f3ef0 127.0.0.1:8005
slots: (0 slots) slave
replicates 599582d756a1df2de75ecb34394ecbf00d147c7c
S: 5cdf4e00589df7372fd4115027e16dbdec59ec3e 127.0.0.1:8006
slots: (0 slots) slave
replicates 763112edb3a90acc27c510b38b7532381b3399f8
M: 0e68888bab88379a08f72b92c8bcdfa2f48a65d4 127.0.0.1:8003
slots:10923-16383 (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.
How many slots do you want to move (from 1 to 16384)? 1
What is the receiving node ID? 31606b0c96906d55708459c6e70ffa75bb8add46
Please enter all the source node IDs.
Type 'all' to use all the nodes as source nodes for the hash slots.
Type 'done' once you entered all the source nodes IDs.
Source node #1:599582d756a1df2de75ecb34394ecbf00d147c7c
Source node #2:done
Ready to move 1 slots.
Source nodes:
M: 599582d756a1df2de75ecb34394ecbf00d147c7c 127.0.0.1:8001
slots:0-5460 (5461 slots) master
1 additional replica(s)
Destination node:
M: 31606b0c96906d55708459c6e70ffa75bb8add46 127.0.0.1:8007
slots: (0 slots) master
1 additional replica(s)
Resharding plan:
Moving slot 0 from 599582d756a1df2de75ecb34394ecbf00d147c7c
Do you want to proceed with the proposed reshard plan (yes/no)? yes
Moving slot 0 from 127.0.0.1:8001 to 127.0.0.1:8007:
完成后,再执行rebalance
/opt/redis/bin/redis-trib.rb rebalance --threshold 2 127.0.0.1:8001
>>> Performing Cluster Check (using node 127.0.0.1:8001)
[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 1366 slots from 127.0.0.1:8002 to 127.0.0.1:8007
######################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
Moving 1365 slots from 127.0.0.1:8003 to 127.0.0.1:8007
#####################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
Moving 1364 slots from 127.0.0.1:8001 to 127.0.0.1:8007
####################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
这样子就可以均衡成功了。
查看节点信息
/opt/redis/bin/redis-cli -p 8001 -c cluster nodes
763112edb3a90acc27c510b38b7532381b3399f8 127.0.0.1:8002@18002 master - 0 1534499202984 2 connected 6827-10922
b5677d2a5191382409e60835d8cdd7e31c6cb3f5 127.0.0.1:8008@18008 slave 31606b0c96906d55708459c6e70ffa75bb8add46 0 1534499201981 7 connected
31606b0c96906d55708459c6e70ffa75bb8add46 127.0.0.1:8007@18007 master - 0 1534499200978 7 connected 0-1364 5461-6826 10923-12287
950e16960702ca43fbdae7f99682f465aa668314 127.0.0.1:8004@18004 slave 0e68888bab88379a08f72b92c8bcdfa2f48a65d4 0 1534499203987 4 connected
808bb8f2f2bdc8a4215c979d6be350eb0f6f3ef0 127.0.0.1:8005@18005 slave 599582d756a1df2de75ecb34394ecbf00d147c7c 0 1534499201000 5 connected
5cdf4e00589df7372fd4115027e16dbdec59ec3e 127.0.0.1:8006@18006 slave 763112edb3a90acc27c510b38b7532381b3399f8 0 1534499199975 6 connected
0e68888bab88379a08f72b92c8bcdfa2f48a65d4 127.0.0.1:8003@18003 master - 0 1534499201000 3 connected 12288-16383
599582d756a1df2de75ecb34394ecbf00d147c7c 127.0.0.1:8001@18001 myself,master - 0 1534499202000 1 connected 1365-5460