RedisCluster集群扩容与缩容

目录

  • 一、传统Redis集群存在那些问题
  • 二、传统RedisCluster集群的原理
  • 三、RedisCluster集群模式环境搭建
  • 四、RedisCluster集群模式扩容节点
  • 五、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
RedisCluster集群扩容与缩容_第1张图片
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

RedisCluster集群扩容与缩容_第2张图片

4.连接一个redis
/usr/redis/bin/redis-cli -h 192.168.1.100 -p 7000
RedisCluster集群扩容与缩容_第3张图片
(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地址搭建)
RedisCluster集群扩容与缩容_第4张图片
RedisCluster集群扩容与缩容_第5张图片
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,自动进行节点的代理切换
RedisCluster集群扩容与缩容_第6张图片
/usr/redis/bin/redis-cli --cluster help

四、RedisCluster集群模式扩容节点

1.新增7006redis.conf、7007redis.conf,文件配置内容同其他节点
RedisCluster集群扩容与缩容_第7张图片
2.分别启动7006、7007节点

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

RedisCluster集群扩容与缩容_第8张图片
3.新增一个主节点为7006

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

RedisCluster集群扩容与缩容_第9张图片
4.查询7006的master-id为d012cad6e1a23e4f24f9d31cf24afd4a25a3d69c

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

RedisCluster集群扩容与缩容_第10张图片

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

RedisCluster集群扩容与缩容_第11张图片
6.新增的7006 是没有任何槽位,分配Redis槽位扩容,16384/4=4096 个卡槽

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

RedisCluster集群扩容与缩容_第12张图片
7.输入接收的master-idd012cad6e1a23e4f24f9d31cf24afd4a25a3d69c
RedisCluster集群扩容与缩容_第13张图片
8.输入分配卡槽的来源,这里选择all
RedisCluster集群扩容与缩容_第14张图片
9.再次查询7006的卡槽,发现卡槽分配成功

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

RedisCluster集群扩容与缩容_第15张图片

五、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

RedisCluster集群扩容与缩容_第16张图片

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

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

RedisCluster集群扩容与缩容_第17张图片

你可能感兴趣的:(Redis,redis,扩容,缩容)