redis的主从复制和哨兵模式

本文详细介绍了Redis的主从复制实现数据备份和读写分离,以及其存在的缺陷。随后讨论了哨兵模式的工作原理、投票机制和配置,包括故障检测、主节点选举和故障恢复流程。最后展示了如何配置和测试哨兵模式以实现高可用性。
摘要由CSDN通过智能技术生成

redis的集群:

高可用方案:

  1. 持久化
  2. 高可用   主从复制 哨兵模式 集群

主从复制:主从复制是redis实现高可用的基础,哨兵模式和集群都是在主从复制的基础之上实现高可用。

主从复制实现数据的多机备份,以及读写分离(主服务器负责写,从服务器只能读)

缺陷:故障无法自动恢复,需要人工干预,无法实现写操作的负载均衡

主从复制的工作原理:

主节点(master)从节点(slave)组成,数据复制是单向的,只能从主节点到从节点

主从复制节点最少要有三台

  1. 建立连接:slave向主发送一个syn command,请求和主节点建立连接
  2. 主节点收到请求之后,他不管slave是第一次连接还是重新连接,主节点都会启动一个后台进程,执行BGSAVE,主节点会把所有修改数据记录的命令加载到缓存和数据文件之中
  3. 数据文件创建完毕之后,master把数据文件传送给slave,slave会把这个数据文件先保存到硬盘,然后再加载到内存。

主从复制推荐使用AOF,通过AOF文件实现实时持久化,主从节点都开启AOF持久化服务从节点同步的就是AOF文件

主从复制流程图:

主 192.168.120.110

从1 192.168.120.70

从2 192.168.120.10

修改master节点的配置文件

vim /etc/redis/6379.conf

 bind 0.0.0.0                      #70行,修改监听地址为0.0.0.0(生产环境中,尤其是多网卡最好填写物理网卡的IP)

 daemonize yes                     #137行,开启守护进程,后台启动

 logfile /var/log/redis_6379.log   #172行,指定日志文件存放目录

 dir /var/lib/redis/6379           #264行,指定工作目录

 appendonly yes                    #700行,开启AOF持久化功能

/etc/init.d/redis_6379 restart     #重启redis服务

修改slave1节点的配置文件

#修改slave1的配置文件

vim /etc/redis/6379.conf

 bind 0.0.0.0                        #70行,修改监听地址为0.0.0.0(生产环境中需要填写物理网卡的IP)

 daemonize yes                       #137行,开启守护进程,后台启动

 logfile /var/log/redis_6379.log     #172行,指定日志文件目录

 dir /var/lib/redis/6379             #264行,指定工作目录

 replicaof 192.168.120.110 6379       #288行,指定要同步的Master节点的IP和端口

 appendonly yes                      #700行,修改为yes,开启AOF持久化功能​

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

netstat -natp | grep redis      #查看主从服务器是否已建立连接

Slave2节点跟slave1节点操作相同

测试

Master写入数据

Slave1和slave2 只能读无法写

哨兵模式的原理:

哨兵:是一个分布式系统,用于在主从结构之间,对每台redis的的服务进行监控

哨兵模式的投票机制

主节点出现故障时,从节点通过投票的方式选择一个新的master

哨兵模式的结构:

哨兵节点:监控,不存储数据

数据节点:主节点和从节点,都是数据节点

哨兵模式的投票机制:

每个哨兵节点每隔一秒,通过ping命令方式,检测主从之间的心跳线。主节点在一定时间内没有回复或者回复了错误的消息,这个时候,哨兵就会主观的认为主节点下线了,超过半数的哨兵节点认为主节点下线了,这个时候才会认为主节点是客观下线

主节点选举过程:

哨兵节点通过raft算法(选举算法),每个节点共同投票选举出一个新的master,然后新的master实现主节点转移和故障恢复通知

  1. 已经下线的从节点,不会被选为主节点
  2. 选择配置文件当中,从节点优先级最高的replica-priority 100
  3. 选择一个复制数据最完整的从节点

主节点:

cd redis-5.0.7

vim sentinel.conf

#哨兵模式的配置文件

17行

protected-mode no

#解除注释

daemonize yes

#开启后台运行逃兵模式

36行

logfile "/var/log/sentinel.log"

#指定日志文件的存放位置

65行

dir"/var/lib/redis/6379"

#指定数据库存放的位置

85行

sentinel monitor mymaster 192.168.120.110 6379 2

#声明主节点的IP和端口号.2代表至少要有2台服务认为主已经下线才会进行主从切换。一般配置为主从服务器的一半

113行

sentinel down-after-milliseconds mymaster 30000

#服务器宕机的最小时间。单位是毫秒。30秒之内如果主节点但没有响应,主观认为主下线了。时间可以改可以自定义

146行

sentinel failover-timeout mymaster 180000

#服务器宕机的最大时间,180秒之内如果主节点但没有响应,从节点开始投票,客观认为主下线了。时间可以改可以自定义

两台从节点配置和主节点配置一致即可

三台配置完成后需要先起主节点再起从节点

三台主机在redis的源码包中启动哨兵模式

redis-sentinel sentinel.conf &

#启动哨兵模式。&表示后台运行

主节点:

redis-cli -p 26379 info Sentinel

#查看整个集群的哨兵情况

查看主从信息:

tail -f /var/log/redis_6379.log

#查看主节点日志,查看主从信息

模拟故障切换:

可能会有延迟不是立刻切换

ps-elf | grep redis

#查看主节点

kill -9 redis的主进程或者/etc/init.d/redis_6379 stop停止redis都可以测试

测试新主是否可以正常插入数据

测试两从是否可以数据同步

测试旧主机是否还有插入数据

旧主失去写的功能,新主增加写的功能。从2的配置文件指向了新的主

而旧主的配置文件中指向自己的配置将会消失

流程图:

  • 24
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值