Redis哨兵模式

哨兵(sentinel)是一个分布式系统,用于对主从结构中的每台服务器进行监控,当出现故障的时候通过投票机制去选举出一个新的master并将所有的slave连到新的master.

主要的作用就是:监控、通知(提醒)、自动故障转移。

需要注意的是:哨兵也是一台redis服务器,只是不去提供数据服务。通常哨兵配置数量为2n+1

使用Redis集群的时候,最容易出现的问题就是master宕机,那么一但master宕机谁去完成他的工作,不然没有写服务只有读服务,那肯定是不可以的。所以我们需要找到一个新的slave并且通知所有的slave有新的master完成了,然后启动这个master并且去做一全量复制或者是部分复制,这一系列的操作需要"Redis哨兵"去完成。

我们先去整理一下做这些操作可能会出现的问题有那些:

1.谁来确认master是宕机了(master闪连了一下我们就立刻找到新的master吗显然是不行的)宕机的标准

2.找一个新的master(谁来去找?怎么个找法)

3.找到了新的master之后修改完配置了,原来的master恢复正常了怎么办?

Linux 系统下在redis根目录sentine1.conf 进行配置(我们来看一下文件内有那些内容)

port 26379   

#哨兵的端口号

dir /tmp   

#工作信息存储目录

sentinel  monitor mymaster 127.0.0.1 6379 2

#mymaster主的自定义名称 主节点的ip 端口号 这个2是多少个哨兵认为他宕机才会选举(通常是哨兵数量一半+1个)

sentinel  down-after-milliseconds mymaster 30000

#30000(毫秒) master30秒未连接认定为宕机

sentinel  parallel-syncs mymaster 1 

# 1 配置新的master上了之后有几条线在做数据同步

sentinel  failover-timeout mymaster 180000

#180000(毫秒) 配置数据同步在180秒内完成才算同步有效

启动顺序 master-slave1-slave2-sentinel1-sentinel2-sentinel3

启动后可以关掉master进行测试

哨兵的工作原理

监控阶段同步各个节点的状态信息(同步master、slave、sentinel节点信息)

通知阶段各个sentinel节点检测完状态会通知全部的哨兵节点目前正常(类似一个哨兵的朋友圈保证信息对等)

故障转移阶段如果通过同步检测如果半数哨兵觉得master宕机就说明master真的挂了根据在线的、响应快的与原master断开时间短、优先级原则(优先级、offset、runid)的节点成为新的master。(先将slave断开原master然后成功启动新master)

 

以上属于个人理解如果有错误欢迎指点

你可能感兴趣的:(Redis哨兵模式)