Redis高可用

1、Redis集群的三种模式

主从复制:奇数,至少3台,一主两从

哨兵模式:至少3台,一主两从

cluster集群:9台 3 3 3

2、主从复制

2.1概念

和mysql的主从复制类似,主可以写,写入主的数据通过RDB方式把数据同步到从服务器,从不能更新到主,也是哨兵模式的基础

2.2缺点

无法实现故障自动化恢复,只有主能够写

主节点和从节点

数据的复制是单向的,由主复制到从

2.3主从复制的流程

基于RDB复制,在建立主从连接时,从服务器向主发送sync command请求同步命令,主服务器根据请求通过子进程创建RDB文件,将RDB文件记录的数据同步给从。

一旦主从建立,主可以读也可以写,从只能读,从进入只读模式。

在这里插入图片描述

2.4部署主从复制

192.168.230.31 redis 主

192.168.230.32 从1

192.168.230.33 从2

#关闭防火墙 安全机制
systemctl stop firewalld
setenforce 0

#时间同步
yum -y install ntpdate
ntpdate ntp.aliyun.com
#查看时间
date

#主服务器
vim /etc/redis/6379.conf
70bind 0.0.0.0
700行 appendonly yes

#从服务器
vim /etc/redis/6379.conf
70bind 0.0.0.0
287行 replicaof 192.168.230.31 6379
700行 appendonly yes

#重启
/etc/init.d/redis_6379 restart

#查看端口
netstat -antp | grep 6379

#查看日志
tail -f /var/log/redis_6379.log

3、哨兵模式

3.1概念

故障自动化恢复,主从复制完成之后,从服务器会变成只读模式。故障切换时,主故障,变成从服务器,主变成从之后,也会进入只读模式

3.2缺点

从节点一旦故障,读会受到影响

3.3工作机制

主从互相监控,出了故障主从来回切换

主切换之后变成了从,自动变成只读模式

切换方式:不是按照权重来进行切换,主宕机,其他服务器投票选举Raft算法,选一个离当前时间点更新最快的从变成主
在这里插入图片描述

3.4部署哨兵模式

192.168.230.31 redis 主

192.168.230.32 从1

192.168.230.33 从2

 cd/opt/redis-5.0.7
 
 vim sentinel.conf
 17行 protected-mode no 取消注释
 #关闭保护模式
 27行 daemonize yes
 37行 logfile "/var/log/sentinel.log"
 66dir "/var/lib/redis/6379"
 85行 sentinel monitor mymaster 192.168.230.31 6379 2
 #初始化监听,都是监听主,监听主服务器的状态。2对应的就是从服务器的数量以及投票的参与者,参与者要和从服务器的数量一致。2台服务器投票通过,主才能进行故障转移
 114行 sentinel down-after-milliseconds nymaster 30000
 #判断服务器宕机的时间周期,30秒,每30秒检测一次
 147行 failover-timeout mymaster 180000
 #判断故障节点的超时最大时间是180秒
 
 #先启动主,再启从
 redis-sentinel sentinel.conf &
 
 #查看哨兵模式的状态
 redis-cli -p 26379 info sentinel
 
 #主模拟故障
 /etc/init.d/redis_6379 stop
 
 #查看日志
tail -f /var/log/sentinel.log

4、集群

4.1概念

把每两台服务器作为主从模式,形成一个大的主从集群。解决了写操作的负载均衡,是一个较完善的高可用方案

集群是redis3.0之后的分布式存储方案

集群由多个节点组成,redis数据保存在这些节点

集群的节点分为主和从。主负责读写以及维护集群的信息,从节点进行主节点的复制(也可以查)

4.2缺点

保证高可用,对数据的完整性要求不高

4.3redis集群的数据分片

在集群概念中,引用的是hash槽的概念

创建了集群就有16384个hash槽,编号从0-16383,hash槽是平均分配的

例:3个节点

主1 0-5460

主2 5461-10922

主3 10923-16383

节点当中如果主和从全部失败,整个集群都将不可用

4.4部署集群

192.168.230.31 redis 主1

192.168.230.32 主2

192.168.230.33 主3

192.168.230.34 从1

192.168.230.35 从2

192.168.230.36 从3

systemctl stop firewalld
setenforce 0

#时间同步
yum -y install ntpdate
ntpdate ntp.aliyun.com
#查看时间
date

vim /etc/redis/6379.conf
70bind 注释
89行 protected-mode no
832行 cluster-enabled yes 取消注释
841行 取消注释
847行 取消注释
700行 appendonly yes

#重启
/etc/init.d/redis_6379 restart

redis-cli -h 192.168.230.31 --cluster create 192.168.230.31:6379 192.168.230.34:6379 192.168.230.32:6379 192.168.230.35:6379 192.168.230.33:6379 192.168.230.36:6379 --cluster-replicas 1
-----------------------------------
-h:配置集群的主连接节点
--cluster create:分配主从,前面的是主,后面的是从
--cluster-repulicas 1:表示每个主只有一个节点
-----------------------------------

redis-cli -h 192.168.230.31 -p 6379

cluster slots
#查看hash槽分配

cluster nodes
#查看节点

集群中的moved不是报错,只是系统提示客户端到指定位置的hash槽进行读或者写,系统提示什么,就去哪个节点操作即可,这个节点一定是该节点的主


redis-cli -h 192.168.230.31 -p 6379

cluster slots
#查看hash槽分配

cluster nodes
#查看节点


集群中的moved不是报错,只是系统提示客户端到指定位置的hash槽进行读或者写,系统提示什么,就去哪个节点操作即可,这个节点一定是该节点的主

集群的功能只是满足了高可用和写的负载均衡,不能保证数据的完整性
  • 24
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值