一、前言

说到Redis服务器的高可用,如何保证备份的及其是原始服务器的完整备份呢?这时候就需要哨兵复制
1、**哨兵(Sentinel)?*可以管理多个Redis服务器,它提供了监控,提醒以及自动的故障转移的功能
2、复制(Replication):则是负责让一个Redis服务器可以配备多个备份的服务器
Redis就是利用这两个功能来保证Redis的高可用性

二、哨兵

哨兵是Redis集群架构中非常重要的一个组件,哨兵的出现主要是解决来主从复制出现故障时需要人为干预的问题

1、哨兵的主要功能:

(1)集群监控:负责监控Redis master和slave进程是否正常工作
(2)消息通知:如果某个Redis实例有故障,那么哨兵负责发送消息作为报警通知给管理员
(3)故障转移:如果master node挂调来,会自动转移到slave node上
(4)配置中心:如果故障转移发生了,通知client客户端新的master地址

2、Redis哨兵的高可用

原理:当主节点出现故障时,由Redis Sentinel自动完成故障发现和转移,并通知应用方,实现高可用性。

redis哨兵集群搭建 redis哨兵与集群_服务器


1)哨兵机制建立了多个哨兵节点(进程),共同监控节点的运行状况

2)同时哨兵节点之间也互相通信,交换对主从节点的监控状况

3)每隔1秒每个哨兵会向整个集群:Master主服务器+Slave从服务器+其他哨兵进程,发送一次ping命令做一次心跳检测

这个就是哨兵用来判断节点是否正常的重要依据,涉及了两个新的概念:主观下线和客观下线

(1)主观下线:一个哨兵节点判定主节点down点是主观下线

(2)客观下线:只有半数哨兵节点都主观判定主节点down掉,此时多个哨兵节点交换主观判定结果,才会判定主节点客观下线

(3)原理:基本上哪个哨兵节点最先判断出这个主节点客观下线,就会在各个哨兵节点中发起投票机制,Raft算法(选举算法),最终被投为领导者的哨兵节点完成主从自动化切换的过程

三、Reids复制(Replication)

Redis为了解决单点数据库问题,会把数据复制多个副本部署到其他节点上,通过复制,实现Redis的高可用行

1数据复制原理(执行步骤)

redis哨兵集群搭建 redis哨兵与集群_Redis_02


①从数据库向主数据库发送sync(数据同步)命令

②主数据库接收到同步命令后,会保存快照,创建一个RDB文件

③当主数据库执行完保持快照后,会向从数据库发送RDB文件,而从数据库会接收并载入该文件

④主数据库将缓存区的所有写命令发送给从服务器执行

⑤以上处理完之后,之后主数据库每执行一个写命令,都会将被执行的写命令发送给从数据库

注意:在Redis2.8之后,主从断开重连后会根据断开之前最新的命令偏移量进行增量复制

redis哨兵集群搭建 redis哨兵与集群_redis哨兵集群搭建_03

四 Redis主从复制、哨兵和集群这三个有什么区别

主从复制是为了数据备份,哨兵是为了高可用,Redis主服务器挂了哨兵可以切换,集群则是因为单实例能力有限,搞多个分散压力。总结如下:
**主从模式:**备份数据,负载均衡,一个Master可以有多个Slaves
sentinel发现master挂了后,就会从slave中重新选举一个master
cluster是为了解决单机Redis容量有限问题,将数据按一定的规则分配到多台机器
sentinel着眼于高可用,Cluster提高并发量
1、主从复制:读写分离,备份,一个master可以有多个Slave(延伸阅读:主从同步
2、哨兵sentinel:监控,自动转移,哨兵发现主服务器挂了后,就会从slave中选举出一个主服务器
3、集群:为了解决单机Redis容量有限的问题,将数据按照一定的规则分配到多台机器,内存/Qps不受限于单机,可收益于分布式集群高扩展性