Redis sentinel高可用方案



一. redis高可用方案–sentinel(哨兵模式)

当我们搭建好redis主从复制方案后会发现一个问题,那就是当主服务器宕机后,需要手动把一台从服务器切换为主服务器,这就需要人工干预,费事费力,同时在手动切过程中也会导致redis服务器写入功能不可用。所以需要一种方法可以完成Master故障后可以自动的将一个Slave切换为Master,这个时候就有了sentinel哨兵模式。

哨兵模式简介:
sentinel是官方提供的高可用方案,其原理是哨兵通过发送命令,等待Redis服务器响应,从而监控运行的多个Redis实例。同时 sentinel是一个分布式系统,可以在一个架构中运行多个Sentinel进程,可以做到sentinel的高可用。


sentinel工作过程:
通过向主服务器和从服务器发送ping命令,让服务器返回运行状态。

当哨兵监测到master宕机,会自动将一个slave切换成master,然后通过发布订阅模式通知其他的从服务器,修改配置文件,让它们切换主机。

关于sentinel的三个定时任务:
每1秒每个sentinel对其他sentinel和redis节点执行ping操作,心跳检测。

每10秒每个sentinel会对master和slave执行info命令,目的是发现slave结点,确定主从关系。

每2秒每个sentinel通过master节点的channel交换信息(pub/sub)。master节点上有一个发布订阅的频道(sentinel:hello)。sentinel节点通过sentinel:hello频道进行信息交换(对节点的”看法”和自身的信息),达成共识.

sentinel网络:
sentinel是一个分布式系统,可以在一个架构中运行多个Sentinel进程。所以监控同一个Master的Sentinel会自动连接,组成一个分布式的Sentinel网络,互相通信并交换彼此关于被监视服务器信息。

sentinel网络故障修复原理:
1.主观下线:

当主服务器发生故障时,此时一个sentinel发现了故障,系统并不会马上进行failover过程(这个现象称为主观下线),它会向网络中的其他Sentinel进行确认。

2.客观下线:

接着其他Sentinel也陆续发现故障,这个时候其中一个Sentinel就会发起投票。一定数量的哨兵(在配置文件中指定)确认Master被标记为主观下线,此时将Master标记为客观下线。

3.sentinel的leader选举:

要想完成故障切换(将故障master剔除,并将一个slave提升为master)就必须先选举一个leader。最先发现故障的sentinel向其他哨兵发起请求成为leader,其他哨兵在没有同意别的哨兵的leader请求时,就会把票投给该sentinel。当半数以上的sentinel投票通过后就认定该sentinel为leader。接下来的故障切换有该leader完成。

4.master选举:

leader选好后将故障master剔除,从slave中挑选一个成为master。遵照的原则如下:

slave的优先级

slave从master那同步的数据量,那个slave多就优先。

5.新Master再通过发布订阅模式通知所有sentinel更新监控主机信息。

6.故障的主服务器修复后将成为从服务器继续工作。

故障发生

故障切换

Master重新上线后


  • 快速构建企业级虚拟专用网络环境-openvpn
  • CentOS替代榜单,哪个才是最佳选择
  • fastdfs开源的轻量级分布式文件系统
  • 什么是AD域控,AD域控有什么作用?
  • Grafana,监控神器!
  • CentOS 要到期了,快来看看有哪些替代品?
  • Nginx做负载均衡、静态资源发布
  • keepalived+haproxy高可用方案
  • KVM与常用企业级虚拟化产品的对比
  • Mysql数据库
  • ansible自动化运维
  • DevOps与自动化运维:开启高效软件开发之旅
  • Haproxy做负载均衡
  • Kubernetes容器化
  • Minio分布式存储应用
  • gitlab的部署
  • Jenkins实现自动化部署
  • Linux安装优化部署
  • Redis sentinel高可用方案
  • Linux+Nginx+PHP+Mysql环境部署
  • MySQL 高可用(MHA)方案
  • Zookeeper部署
  • keepalived实现高可用介绍
  • ELK架构日志收集
  • Solr高可用解决方案
  • Kafka集群部署
  • flume集群高可用连接kafka集群
  • Tomcat Web 应用服务器
  • Squid 代理服务器
  • prometheus实现业务监控
  • 基于etcd的服务发现与注册
  • 实时可视化监控-IT管理工具-open-falcon
  • 使用confd和etcd建立基于Nginx的服务发现和负载均衡服务
  • Harbor 开源企业容器镜像仓库
  • LVS、Nginx 及 HAProxy 的工作原理
  • etcd分布式存储系统
  • Nexus搭建私服
  • 8个最受欢迎的开源项目管理工具软件
  • 使用 Docker 部署 NextCloud 个人网盘
  • 对标 Notion + Obsidian ,可离线且开源免费的知识管理工具Anytype