redis cluster的水平扩容

本文详细介绍了如何进行Redis Cluster的水平扩容,包括创建新Master节点,reshard数据,添加Slave节点,以及在数据迁移完成后安全删除节点的操作过程。通过这些步骤,可以有效管理和调整Redis集群的规模。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、加入新master

mkdir -p /var/redis/7007

port 7007
cluster-enabled yes
cluster-config-file /etc/redis-cluster/node-7007.conf
cluster-node-timeout 15000
daemonize yes
pidfile /var/run/redis_7007.pid
dir /var/redis/7007
logfile /var/log/redis/7007.log
bind 192.168.31.227
appendonly yes

搞一个7007.conf,再搞一个redis_7007启动脚本

手动启动一个新的redis实例,在7007端口上

redis-trib.rb add-node 192.168.31.227:7007 192.168.31.187:7001

redis-trib.rb check 192.168.31.187:7001(可以看到每个节点的nodeId)

连接到新的redis实例上,cluster nodes,确认自己是否加入了集群,作为了一个新的master

2、reshard一些数据过去

resharding的意思就是把一部分hash slot从一些node上迁移到另外一些node上

redis-trib.rb reshard 192.168.31.187:7001

要把之前3个master上,总共4096个hashslot迁移到新的第四个master上去

How many slots do you want to move (from 1 to 16384)? 4096
What is the receiving node ID? 那当然是要7007的nodeId了
Source node : 其他三个的master node的nodeID
Source node : 其他三个的master node的nodeID
Source node : 其他三个的master node的nodeID
Source node: done

Do you want to … (yes/no) yes

3、添加node作为slave

mkdir -p /var/redis/7008

port 7008
cluster-enabled yes
cluster-config-file /etc/redis-cluster/node-7008.conf
cluster-node-timeout 15000
daemonize yes
pidfile /var/run/redis_7008.pid
dir /var/redis/7008
logfile /var/log/redis/7008.log
bind 192.168.31.227
appendonly yes

redis-trib.rb add-node --slave --master-id 28927912ea0d59f6b790a50cf606602a5ee48108 192.168.31.227:7008 192.168.31.187:7001
192.168.31.187:7001(将从节点关联到哪个主机上去)
192.168.31.227:7008(从节点的IP和端口)
4、删除node

先用resharding将数据都移除到其他节点,确保node为空之后,才能执行remove操作
1.将7007的slot平均挪给其他的master 将7007挪完
执行redis-trib.rb reshard 192.168.31.187:7001

2.redis-trib.rb del-node 192.168.31.187:7007 bd5a40a6ddccbd46a0f4a2208eb25d2453c2a8db

2个是1365,1个是1366

当你清空了一个master的hashslot时,redis cluster就会自动将其slave挂载到其他master上去

这个时候就只要删除掉master就可以了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值