redis cluster配置好,并运行一段时间后,我们想添加节点,或者删除节点,该怎么办呢。
一,redis cluster命令行
查看复制打印?
//集群(cluster)
CLUSTER INFO 打印集群的信息
CLUSTER NODES 列出集群当前已知的所有节点(node),以及这些节点的相关信息。
//节点(node)
CLUSTER MEET
CLUSTER FORGET
CLUSTER REPLICATE
CLUSTER SAVECONFIG 将节点的配置文件保存到硬盘里面。
//槽(slot)
CLUSTER ADDSLOTS
CLUSTER DELSLOTS
CLUSTER FLUSHSLOTS 移除指派给当前节点的所有槽,让当前节点变成一个没有指派任何槽的节点。
CLUSTER SETSLOT
CLUSTER SETSLOT
CLUSTER SETSLOT
CLUSTER SETSLOT
//键 (key)
CLUSTER KEYSLOT
CLUSTER COUNTKEYSINSLOT
CLUSTER GETKEYSINSLOT
这些命令是集群所独有的。执行上述命令要先登录
查看复制打印?
[root@manage redis]# redis-cli -c -p 6382 -h 192.168.10.220 //登录
192.168.10.220:6382> cluster info //查看集群情况
cluster_state:ok
cluster_slots_assigned:16384
cluster_slots_ok:16384
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:6
cluster_size:3
cluster_current_epoch:8
cluster_my_epoch:4
cluster_stats_messages_sent:82753
cluster_stats_messages_received:82754
二,添加节点
1,新配置二个测试节点
查看复制打印?
# cd /etc/redis
//新增配置
# cp redis-6379.conf redis-6378.conf && sed -i "s/6379/6378/g" redis-6378.conf
# cp redis-6382.conf redis-6385.conf && sed -i "s/6382/6385/g" redis-6385.conf
//启动
# redis-server /etc/redis/redis-6385.conf > /var/log/redis/redis-6385.log 2>&1 &
# redis-server /etc/redis/redis-6378.conf > /var/log/redis/redis-6378.log 2>&1 &
2,添加主节点
# redis-trib.rb add-node 192.168.10.219:6378 192.168.10.219:6379
注释:
192.168.10.219:6378是新增的节点
192.168.10.219:6379集群任一个旧节点
3,添加从节点
# redis-trib.rb add-node --slave --master-id 03ccad2ba5dd1e062464bc7590400441fafb63f2 192.168.10.220:6385 192.168.10.219:6379
注释:
--slave,表示添加的是从节点
--master-id 03ccad2ba5dd1e062464bc7590400441fafb63f2,主节点的node id,在这里是前面新添加的6378的node id
192.168.10.220:6385,新节点
192.168.10.219:6379集群任一个旧节点
4,重新分配slot
查看复制打印?
# redis-trib.rb reshard 192.168.10.219:6378 //下面是主要过程
How many slots do you want to move (from 1 to 16384)? 1000 //设置slot数1000
What is the receiving node ID? 03ccad2ba5dd1e062464bc7590400441fafb63f2 //新节点node id
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:all //表示全部节点重新洗牌
Do you want to proceed with the proposed reshard plan (yes/no)? yes //确认重新分
新增加的主节点,是没有slots的,