Redis主从+哨兵模式实现高可用

2021年8月17日17:08:14 发表评论
摘要

【心语】花开不是为了花落,是为了绽放,生命不是为了活着,是为了活得精彩。打磨自己的过程很疼,但最终能塑造一个更好的自己。在最美的时光,做最好的自己!

背景介绍:
为了提升redis高可用性,我们除了备份redis dump数据之外,还需要创建Redis主从架构,可以利用从数据库持久化(数据持久化通俗讲就是把数据保存到磁盘上,保证不会因为断电等因素丢失数据)
Redis需要经常将内存中的数据同步到磁盘来保证持久化。Redis支持两种持久化方式,一种是 Snapshotting(快照)也是默认方式,另一种是 APPend-only file (缩写 aof)的方式

Rdies 主从复制,当用户网Master端写入数据时,通过Redis Sync机制将数据文件发送至Slave,Slave也会执行相同的操作确保数据一致,且实现Redis主从复制非常简单,同时slave上还可以开启二级slave,三级slave从库,跟Mysql的主从类似
Redis的复制功能是支持多个数据库之间的数据同步,一类是主数据库(Master)一类是从数据库(Slave),主数据库可以进行读写操作,当发生写操作的时候自动将数据同步到从数据库,而从数据库一般是只读的,并接收主数据库同步过来的数据,一个主数据库可以有多个从数据库。而一个从数据库只能有一个主数据。
通过Redis的复制功能可以很好的实现数据库的读写分离,提高服务器的负载能力,主数据主要进行写操作,而从数据库负责读操作
主从复制过程:
1、当一个从数据库启动时,会向主数据库发送sync命令
2、主数据库接收到sync命令后会开始在后台保存快照(执行RDB操作),并将保存期间接收到的命令缓存起来
3、当快照完成后,会载入快照文件并执行收到的缓存的命令
4、从数据库收到后,会载入快照文件并执行收到的缓存的命令

注意:Redis2.8之前的版本:当主从数据库同步的时候从数据库因为网络原因断开重连后会从新执行上述操作,不支持断点续传。Redis2.8的版本之后支持断点续传。
哨兵模式的优缺点

缺点

1、dis的哨兵模式,可以实现主从切换,但是需要多个哨兵,因为一旦物理机宕机或者系统宕机,哨兵宕机之后就无法实现切换,

2、一从的模式redis也是单台提供服务,从是复制很浪费资源如果服务量级起来很难支持在线扩容,在集群容量达到上限时在线扩容会变的很复杂

优点:
1、哨兵模式是基于主从模式的,所有的主从优点。哨兵模式都具有。主从可以自动切换,系统更健壮,可用性更高

实验准备
Mster:192.168.44.133
Slave:192.168.45.125
slave:192.168.45.212
备注:至少要保证有两个哨兵在运行,要不然物理机宕机后哨兵进程也不存在了,就无法进行主从切换
1、安装系统环境
[root@localhost ~]# yum -y install wget gcc gcc-c++
Redis主从+哨兵模式实现高可用
2、下载软件
[root@localhost ~]# wget -c http://mirrors.rootpei.com/redis/redis-5.0.3.tar.gz
Redis主从+哨兵模式实现高可用
3、解压缩
[root@MQ1 ~]# tar xf redis-5.0.3.tar.gz -C /usr/local/
4、安装
[root@MQ1 local]# cd redis-5.0.3/
[root@MQ1 redis-5.0.3]# make
Redis主从+哨兵模式实现高可用
[root@MQ1 redis-5.0.3]# cd src/
[root@MQ1 src]# make install
Redis主从+哨兵模式实现高可用
5、拷贝配置文件到etc下面,方便管理

[root@MQ1 redis-5.0.3]# cp redis.conf /etc/
6、制作软链接方便启动
[root@MQ1 src]# ln -s /usr/local/redis-5.0.3/src/redis-* /usr/bin/
#注意每台服务器上操作相同部署好redis
#主库修改下配置文件
[root@MQ1 src]# vim /etc/redis.conf
把bind 127.0.0.1 改为地址,也可以改外 0.0.0.0

Redis主从+哨兵模式实现高可用
7、首先配置好redis 主从,请在Slave服务器下面操作
slaveof 192.168.44.133 6379
root@localhost redis-5.0.3]# vim /etc/redis.conf

Redis主从+哨兵模式实现高可用
[root@MQ1 local]# redis-cli
Redis主从+哨兵模式实现高可用
查看到主从配置成功
8、启动redis
[root@MQ1 src]# nohup redis-server /etc/redis.conf &
Redis主从+哨兵模式实现高可用
#主从配置完成我们演示下是否数据同步了
在主库创建key 及values 如图所示
[root@MQ1 src]# redis-cli -h 192.168.44.133 -p 6379
Redis主从+哨兵模式实现高可用

Redis主从+哨兵模式实现高可用
#登录Redis从库查看,如图所示
Redis主从+哨兵模式实现高可用
两台都能查询到,说明主从同步OK
注意事项:
如果你使用主从复制,那么要确保你的Master激活了持久化,或者你确保它不会在宕掉之后自动重启,原因:Slave 是Master的完整备份,因此如果Master通过一个空数据集重启,SLAVE也会被清掉

在配置redis复制功能的时候主数据库设置了密码,需要在从数据的配置文件中通过Masterauth参数设置主数据库的密码,这样从数据库在连接主数据库时就会自动使用auth命令认证了。相当于做了一个免密钥登录

9、配置哨兵配置文件并启动哨兵模式
[root@localhost redis-5.0.3]# vim sentinel.conf
Redis主从+哨兵模式实现高可用
说明:指定Master Ip地址,端口 票数 Slave 端都需要操作 这个1代表几台哨兵就写几台
10、启动哨兵模式
[root@localhost redis-5.0.3]# nohup redis-sentinel sentinel.conf &
Redis主从+哨兵模式实现高可用
11、测试哨兵模式是否正常
[root@MQ1 src]# ps -ef|grep redis
[root@MQ1 src]# pkill redis
Redis主从+哨兵模式实现高可用
12、去slave上使用 info命令查看状态
Redis主从+哨兵模式实现高可用
Redis主从+哨兵模式实现高可用
Master 由原来的192.168.44.133 切换成192.168.45.154了以上哨兵模式部署完成
在次启动之前的master 会自动变成slave
Redis主从+哨兵模式实现高可用

  • 微信公众号
  • 这是我的微信公众号扫一扫
  • weinxin
  • 我的QQ技术群
  • 我的QQ技术群扫一扫
  • weinxin
admin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: