当前位置: 首页 > article >正文

redis—cluster集群

一:Redis Cluster特点

  • 多主多从,去中心化:从节点作为备用,复制主节点,不做读写操作,不提供服务
  • 不支持处理多个key:因为数据分散在多个节点,在数据量大高并发的情况下会影响性能;
  • 支持动态扩容节点:这是我认为算是Rerdis Cluster最大的优点之一;
  • 节点之间相互通信,相互选举,不再依赖sentinel:准确来说是主节点之间相互“监督”,保证及时故障转移

二:Redis Cluster与其它集群模式的区别

  • 相比较sentinel模式,多个master节点保证主要业务(比如master节点主要负责写)稳定性,不需要搭建多个sentinel实例监控一个master节点
  • 相比较一主多从的模式,不需要手动切换,具有自我故障检测,故障转移的特点
  • 相比较其他两个模式而言,对数据进行分片(sharding),不同节点存储的数据是不一样的
  • 从某种程度上来说,Sentinel模式主要针对高可用(HA),而Cluster模式是不仅针对大数据量,高并发,同时也支持HA。

三:redis-cluster实验部署

1.准备工作:

6台虚拟机(Red Hat Enterprise Linux 9)下载软件redis

搭建三主三从架构

172.25.254.10

[root@localhost ~]# yum install redis -y

172.25.254.20

[root@localhost ~]# yum install redis -y

172.25.254.30

[root@localhost ~]# yum install redis -y

172.25.254.100

[root@localhost ~]# yum install redis -y

172.25.254.110

[root@localhost ~]# yum install redis -y

172.25.254.120

[root@localhost ~]# yum install redis -y

2.172.25.254.10主机

修改redis配置文件

[root@localhost ~]# vim /etc/redis/redis.conf

修改端口号

设置密码123456

设置requirepass密码

开启cluster集群功能,指定集群配置文件

节点加入集群的超时时间

启动redis

[root@localhost ~]# systemctl enable --now redis

检测redis端口是否启动成功

[root@localhost ~]# netstat -antlupe |grep redis

开启redis

[root@localhost ~]# redis-cli

在172.25.254.10主机上将修改过的配置文件传递到其他5台虚拟机上

[root@localhost ~]# for i in 20 30 100 110 120;do scp /etc/redis/redis.conf root@172.25.254.$i:/etc/redis/redis.conf;done

3.配置cluster集群

各台虚拟机开启redis

172.25.254.20

[root@localhost ~]# systemctl enable --now redis

172.25.254.30

[root@localhost ~]# systemctl enable --now redis

172.25.254.100

[root@localhost ~]# systemctl enable --now redis

172.25.254.110

[root@localhost ~]# systemctl enable --now redis

172.25.254.120

[root@localhost ~]# systemctl enable --now redis

172.25.254.10主机上开启集群认证

注意:开启集群前,各台虚拟机记得关闭防火墙

[root@localhost redis]# systemctl stop firewalld.service 

[root@localhost ~]# redis-cli --cluster create -a 123456 172.25.254.10:6379 172.25.254.20:6379 172.25.254.30:6379 172.25.254.100:6379 172.25.254.110:6379 172.25.254.120:6379 --cluster-replicas 1

显示集群添加成功

查看一组一从的对应关系,关系随机对应。

172.25.254.100对应的master为172.25.254.20

172.25.254.110对应的master为172.25.254.10

172.25.254.120对应的master为172.25.254.30

可以使用命令检测集群节点信息

[root@localhost ~]# redis-cli -a 123456 --cluster check 172.25.254.10:6379

4.测试

172.25.254.10上

可以创建lee用户失败

[root@localhost ~]# redis-cli -a 123456

127.0.0.1:6379> set name lee

信息指引到172.25.254.20主机

在172.25.254.20上

可以创建lee用户成功

[root@localhost ~]# redis-cli -a 123456

cluster集群创建成功

 

四:集群扩容

添加新的机子进入集群(172.25.254.40和172.25.254.130)

将原来的三主三从变为了四主四从

172.25.254.40

下载redis软件包

[root@localhost ~]# yum install redis -y

启动redis

[root@localhost ~]# systemctl start redis

172.25.254.130

下载redis软件包

[root@localhost ~]# yum install redis -y

启动redis

[root@localhost ~]# systemctl start redis

172.25.254.10主机上

将172.25.254.40添加到172.25.254.20所在的集群中

[root@localhost ~]# redis-cli -a 123456 --cluster add-node 172.25.254.40:6379 172.25.254.20:6379

172.25.254.10主机上测集群节点信息

[root@localhost ~]# redis-cli -a 123456 --cluster check 172.25.254.10:6379 

显示有四个master:172.25.254.10,172.25.254.20,172.25.254.30,172.25.254.40

其中172.25.254.40底下没有槽位则不能存储数据

172.25.254.10主机上

对172.25.254.40主机分享槽位,将172.25.254.20集群中重新划分槽位

[root@localhost ~]# redis-cli -a 123456 --cluster reshard 172.25.254.20:6379 

将172.25.254.130主机添加到172.25.254.20集群中

[root@localhost ~]# redis-cli -a 123456 --cluster add-node 172.25.254.130:6379 172.25.254.20:6379 --cluster-slave --cluster-master-id 2f5e5888581db794171bca6e364850933a342072

使用命令检测集群节点信息

[root@localhost ~]#  redis-cli -a 123456 --cluster check 172.25.254.10:6379

172.25.254.130对应的master为172.25.254.40

五:clsuter集群维护

添加节点的时候是先添加node节点到集群,然后分配槽位,删除节点的操作与添加节点的操作正好相反,是先将被删除的Redis node上的槽位迁移到集群中的其他Redis node节点上,然后再将其删除,如果一个Redis node节点上的槽位没有被完全迁移,删除该node的时候会提示有数据且无法删除

将节点从集群中移除

删除172.25.254.130节点,则删除172.25.254.130对应的id

[root@localhost ~]# redis-cli -a 123456 --cluster del-node 172.25.254.130:6379 b371e1c8d310946e051684176cf14e31f05cec17 

再次使用命令查询节点

[root@localhost ~]#  redis-cli -a 123456 --cluster check 172.25.254.10:6379

172.25.254.130节点被删除

恢复槽位

[root@localhost ~]# redis-cli -a 123456 --cluster reshard 172.25.254.20:6379


http://www.kler.cn/news/360035.html

相关文章:

  • 在C++中,使用基于range的for循环迭代range
  • Meta因称其AI模型Llama为“开源” 遭炮轰,被指“污染” 开源术语
  • Nature 正刊丨年轻的小行星家族是陨石的主要来源
  • [DICOM活久见-2]认识DICOM的多帧图像,并且用pydicom拆分为单帧图像
  • C++学习路线(十九)
  • ReactNative项目根据平台去判断允许用户是热更新还是强更新或者若更新
  • docker基础使用创建固定硬盘大小为40G的虚拟机
  • qt继承结构
  • yolo自动化项目实例解析(八)自建UI-键鼠录制回放
  • linux主机定时发送邮件(s-nail)
  • 不常用的css合集
  • 从网络请求到Excel:自动化数据抓取和保存的完整指南
  • 【设计模式七大设计原则】
  • 网络相关(HTTP/TCP/UDP/IP)
  • 【VUE小型网站开发】优化通用配置
  • Python爬虫:获取去哪儿网目的地下的景点数据
  • Java 解决阿里云OSS服务器私有权限图片通过URL无法预览的问题
  • 【Linux】实验:mkdir 命令 、 tee 命令
  • 保研推荐信模板
  • 十年编程路,一生踏征途