RedisCluster集群扩容与缩容

追求适度,才能走向成功;人在顶峰,迈步就是下坡;身在低谷,抬足既是登高;弦,绷得太紧会断;人,思虑过度会疯;水至清无鱼,人至真无友,山至高无树;适度,不是中庸,而是一种明智的生活态度。

导读:本篇文章讲解 RedisCluster集群扩容与缩容,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

一、传统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

在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/131224.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!