Redis 高可用(主从复制—哨兵机制)

  • 什么是主从复制?(读写分离、备份、高可用、宕机容错机制、集群)
  • 哨兵机制—高可用、监听的作用
  • redis持久化机制(数据恢复 rdb存储和aof的优缺点)
  • redis 中的事务
  • 发布订阅
  • 缓存雪崩、击穿。

Redis如何实现主从复制——修改配置文件

概述

1.redis的复制功能是支持多个数据库之间的数据同步。一类是主数据库(master)一类是从数据库(slave),主数据库可以进行读写操作,当发生写操作的时候自动将数据同步到从数据库,而从数据库一般是只读的,并接收主数据库同步过来的数据,一个主数据库可以有多个从数据库,而一个从数据库只能有一个主数据库

2、通过redis的复制功能可以很好的实现数据库的读写分离,提高服务器的负载能力。主数据库主要进行写操作,而从数据库负责读操作

3.主从复制过程
在这里插入图片描述

过程:

1:当一个从数据库启动时,会向主数据库发送sync命令

2:主数据库接收到sync命令后会开始在后台保存快照(执行rdb操作),并将保存期间接收到的命令缓存起来

3:当快照完成后,redis会将快照文件和所有缓存的命令发送给从数据库。

4:从数据库收到后,会载入快照文件并执行收到的缓存的命令

总结:

  1. 角色: 主(master)从(slave)
  2. redis只支持一主多从

问题

Redis只有一个主数据库,如果主数据库挂了该怎么办?——哨兵机制
主从数据库全部挂了怎么办?—keepalived 监听自动重启,通过邮件通知运维人员。

扫描二维码关注公众号,回复: 8789515 查看本文章

哨兵机制——监听功能,只负责用来投票选举

哨兵机制,它监听的是主服务器还是监听所有的主从服务器呢?

哨兵机制—是一种应用程序,对redis无任何影响。

Redis的哨兵(sentinel) 系统用于管理多个 Redis 服务器,该系统执行以下三个任务:

  1. 监控(Monitoring): 哨兵(sentinel) 会不断地检查你的Master和Slave是否运作正常。

  2. 提醒(Notification):当被监控的某个 Redis出现问题时, 哨兵(sentinel) 可以通过 API 向管理员或者其他应用程序发送通知。

  3. 自动故障迁移(Automatic failover):当一个Master不能正常工作时,哨兵(sentinel) 会开始一次自动故障迁移操作,它会将失效Master的其中一个Slave升级为新的Master, 并让失效Master的其他Slave改为复制新的Master; 当客户端试图连接失效的Master时,集群也会向客户端返回新Master的地址,使得集群可以使用Master代替失效Master。

哨兵(sentinel) 是一个分布式系统,你可以在一个架构中运行多个哨兵(sentinel) 进程,这些进程使用流言协议(gossipprotocols)来接收关于Master是否下线的信息,并使用投票协议(agreement protocols)来决定是否执行自动故障迁移,以及选择哪个Slave作为新的Master.

每个哨兵(sentinel) 会向其它哨兵(sentinel)、master、slave定时发送消息,以确认对方是否”活”着,如果发现对方在指定时间(可配置)内未回应,则暂时认为对方已挂(所谓的”主观认为宕机” Subjective Down,简称sdown).

若“哨兵群”中的多数sentinel,都报告某一master没响应,系统才认为该master"彻底死亡"(即:客观上的真正down机,ObjectiveDown,简称odown),通过一定的vote算法,从剩下的slave节点中,选一台提升为master,然后自动修改相关配置.

虽然哨兵(sentinel) 释出为一个单独的可执行文件redis-sentinel,但实际上它只是一个运行在特殊模式下的 Redis 服务器,你可以在启动一个普通 Redis 服务器时通过给定 --sentinel 选项来启动哨兵(sentinel).

哨兵(sentinel) 的一些设计思路和zookeeper非常类似

单个哨兵(sentinel)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AJoRa0fc-1579610243559)(A07DF81E49664772988EEF4FE8E00A8F)]

实现步骤

1.拷贝到etc目录

cp sentinel.conf  /usr/local/redis/etc

2.修改sentinel.conf配置文件

主节点 名称 IP 端口号 选举次数 
sentinel monitor mymast  ip 6379 1  
sentinel auth-pass mymaster 密码 

3.修改心跳检测 5000毫秒

sentinel down-after-milliseconds mymaster 5000
sentinel parallel-syncs mymaster 2 --- 做多多少合格节点

5.启动哨兵模式

./redis-server /usr/local/redis/etc/sentinel.conf --sentinel &
发布了240 篇原创文章 · 获赞 435 · 访问量 9万+

猜你喜欢

转载自blog.csdn.net/fjxcsdn/article/details/104065585