RedisCluster集群扩容与缩容

一、传统Redis集群存在那些问题

Redis哨兵集群模式,每个节点都保存全量同步数据,冗余的数据比较多;而在Redis Cluster模式中集群中采用分片集群模式,可以减少冗余数据,缺点就是构建该集群模式成本非常高,

二、传统RedisCluster集群的原理

Redis3.0开始官方推出了集群模式 RedisCluster,原理采用hash槽的概念,预先分配16384个卡槽,并且将该卡槽分配给具体服务的节点;通过key进行crc16(key)%16384 获取余数,余数就是对应的卡槽的位置,一个卡槽可以存放多个不同的key,从而将读或者写转发到该卡槽的服务的节点。 最大的有点:动态扩容、缩容。

三、RedisCluster集群模式环境搭建

1.在/usr/rediscluster/目录下新增5个redis.conf配置文件,文件名分别为7000redis.conf、7001redis.conf、7002redis.conf、7004redis.conf、7005redis.conf、7006redis.conf
在这里插入图片描述
2.分别修改每个配置文件中的内容,如7000:

daemonize yes #后台启动
protected-mode no ; ## 允许外部访问
port 7000 #修改端口号,从7000到7005
dbfilename "7000dump.rdb" #rdb文件名称从7000到7005
cluster-enabled yes #开启cluster,去掉注释
cluster-config-file 7000nodes.conf #自动生成
cluster-node-timeout 15000 #节点通信时间
logfile   /usr/rediscluster/redislog/7000redis.log

3.启动我们的redis

/usr/redis/bin/redis-server /usr/rediscluster/7000redis.conf
/usr/redis/bin/redis-server /usr/rediscluster/7001redis.conf
/usr/redis/bin/redis-server /usr/rediscluster/7002redis.conf
/usr/redis/bin/redis-server /usr/rediscluster/7003redis.conf
/usr/redis/bin/redis-server /usr/rediscluster/7004redis.conf
/usr/redis/bin/redis-server /usr/rediscluster/7005redis.conf

在这里插入图片描述

4.连接一个redis
/usr/redis/bin/redis-cli -h 192.168.1.100 -p 7000
在这里插入图片描述
(error) CLUSTERDOWN Hash slot not served 说明没有分配hash槽

5.分配卡槽

/usr/redis/bin/redis-cli --cluster create  192.168.1.100:7000  192.168.1.100:7001  192.168.1.100:7002  192.168.1.100:7003  192.168.1.100:7004  192.168.1.100:7005  --cluster-replicas 1

(建议最好使用服务器的ip地址搭建)
在这里插入图片描述
在这里插入图片描述
6.连接一个redis
/usr/redis/bin/redis-cli -h 192.168.1.100 -p 7000
在这里插入图片描述
7.修改为Redis的集群方式连接/usr/redis/bin/redis-cli -h 192.168.1.100 -p 7000 -c,自动进行节点的代理切换
在这里插入图片描述
/usr/redis/bin/redis-cli --cluster help

四、RedisCluster集群模式扩容节点

1.新增7006redis.conf、7007redis.conf,文件配置内容同其他节点
在这里插入图片描述
2.分别启动7006、7007节点

/usr/redis/bin/redis-server /usr/rediscluster/7006redis.conf
/usr/redis/bin/redis-server /usr/rediscluster/7007redis.conf

在这里插入图片描述
3.新增一个主节点为7006

/usr/redis/bin/redis-cli --cluster add-node 192.168.1.100:7006   192.168.1.100:7000

在这里插入图片描述
4.查询7006的master-id为d012cad6e1a23e4f24f9d31cf24afd4a25a3d69c

/usr/redis/bin/redis-cli -h 192.168.1.100 -p 7000 -c
cluster nodes

在这里插入图片描述

5.新增一个从节点为7007

/usr/redis/bin/redis-cli --cluster add-node 192.168.1.100:7007   192.168.1.100:7000  --cluster-slave  --cluster-master-id       d012cad6e1a23e4f24f9d31cf24afd4a25a3d69c

在这里插入图片描述
6.新增的7006 是没有任何槽位,分配Redis槽位扩容,16384/4=4096 个卡槽

/usr/redis/bin/redis-cli --cluster reshard  192.168.1.100:7000

在这里插入图片描述
7.输入接收的master-idd012cad6e1a23e4f24f9d31cf24afd4a25a3d69c
在这里插入图片描述
8.输入分配卡槽的来源,这里选择all
在这里插入图片描述
9.再次查询7006的卡槽,发现卡槽分配成功

/usr/redis/bin/redis-cli -h 192.168.1.100 -p 7000 -c
cluster nodes

在这里插入图片描述

五、RedisCluster集群模式缩容节点

1.把7006节点的卡槽全部给到7000
d012cad6e1a23e4f24f9d31cf24afd4a25a3d69c为7006的master-id
2ab1403b76ba88a10cf375a7c818cee4886677b8为7000的master-id

/usr/redis/bin/redis-cli --cluster  reshard  192.168.1.100:7000  --cluster-from   d012cad6e1a23e4f24f9d31cf24afd4a25a3d69c  --cluster-to 2ab1403b76ba88a10cf375a7c818cee4886677b8  --cluster-slots 4096

在这里插入图片描述

2.查询缩容后的节点详情信息,发现缩容成功

/usr/redis/bin/redis-cli -h 192.168.1.100 -p 7000 -c
cluster nodes

在这里插入图片描述

  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

超级码里喵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值