主从复制二之哨兵模式

一、哨兵模式

#哨兵模式就是不时地监控redis是否按照预期良好地运行(至少是保证主节点是存在的),若一台主机出现问题时,哨兵会自动将该主机下的某一个从机设置为新的主机,并让其他从机和新主机建立主从关系。

1、redis哨兵的主要功能

#(1)集群监控:负责监控Redis master和slave进程是否正常工作

#(2)消息通知:如果某个Redis实例有故障,那么哨兵负责发送消息作为报警通知给管理员

#(3)故障转移:如果master node挂掉了,会自动转移到slave node上

#(4)配置中心:如果故障转移发生了,通知client客户端新的master地址

2、具体操作

#1、在配置文件目录下新建 sentinel.conf 文件,名字绝不能错
#2、在该文件中输入
       sentinel monitor 被监控机器的名字(自己起名字) ip地址 端口号 得票数

#3、启动哨兵
    redis-sentinel /etc/redis/sentinel.conf

3、哨兵机制实现高可用的原理

原理:当主节点出现故障时,由Redis Sentinel自动完成故障发现和转移,并通知应用方,实现高可用性。
   1、 哨兵机制建立了多个哨兵节点(进程),共同监控数据节点的运行状况。
   2、 同时哨兵节点之间也互相通信,交换对主从节点的监控状况。
    3、每隔1秒每个哨兵会向整个集群:Master主服务器+Slave从服务器+其他Sentinel(哨兵)进程,发送一次ping命令做一次心跳检测。
这个就是哨兵用来判断节点是否正常的重要依据,涉及两个新的概念:主观下线和客观下线。

1. 主观下线:一个哨兵节点判定主节点down掉是主观下线。

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

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

 

 

二、redis复制原理

1、redis为什么需要复制

Redis为了解决单点数据库问题,会把数据复制多个副本部署到其他节点上,通过复制,实现Redis的高可用性,实现对数据的冗余备份,保证数据和服务的高度可靠性。

 

2、redis复制原理

#1、从-------->>----发送SYNC命令(数据同步)-->>----主

#2、主(缓存所有写操作命令)-----fork子进程--->>生成RDB快照
          (客户端写入操作命令)

    RDB持久化完成后
#3、主------->>--发送RDB文件和缓存起来的命令--->>从


复制初始化完成后
#4、主------->>----同步写操作----->>从
        ^
        |
   写入操作命令
       ^
        |
    客户端

 

注意:在Redis2.8之后,主从断开以后,会根据断开前的最新命令进行增量复制,因为重新连接发送的PSYNC带有从库ID

 

 

三、Redis主从复制,哨兵,集群   有什么区别

#1、主从复制是为了数据备份
#2、哨兵是为了高可用
#3、集群的目的,哨兵模式也存在单点故障问题,如果哨兵机器挂了,那么就无法进行监控了,解决办法是哨兵也建立集群


主从模式:备份数据、负载均衡,一个Master可以有多个Slaves。
sentinel发现master挂了后,就会从slave中重新选举一个master。

cluster是为了解决单机Redis容量有限的问题,将数据按一定的规则分配到多台机器。

sentinel着眼于高可用,Cluster提高并发量。

1.主从模式:读写分离,备份,一个Master可以有多个Slaves。
2.哨兵sentinel:监控,自动转移,哨兵发现主服务器挂了后,就会从slave中重新选举一个主服务器。
3.集群:为了解决单机Redis容量有限的问题,将数据按一定的规则分配到多台机器,内存/QPS不受限于单机,可受益于分布式集群高扩展性。

 

posted @ 2019-08-01 21:13  pdun  阅读(195)  评论(0编辑  收藏  举报