Redis从入门到放弃系列(九) Sentinel

栏目: 数据库 · 发布时间: 5年前

内容简介:本文例子基于:5.0.4Redis Sentinel作为Redis高可用方案,具有监听,通知,自动故障转移等功能.这一切都是依赖主备同步的大前提(参考上一节:Redis从入门到放弃系列(八) 主备同步).在互联网应用中,程序如果只是单台部署的话,都会存在单点问题,那么作为Redis高可用方案的Sentinel是如何解决这一问题呢?

本文例子基于:5.0.4

Redis Sentinel作为 Redis 高可用方案,具有监听,通知,自动故障转移等功能.这一切都是依赖主备同步的大前提(参考上一节:Redis从入门到放弃系列(八) 主备同步).

  • 监听: Sentinel会不断检查master节点跟replica节点是否正常工作
  • 通知: 当某个节点运行出现问题的时候,能够通知其他的进程(eg:客户端)
  • 自动故障转移: 当master节点down了,Sentinel会启用故障转移进程,将replica节点提升为master节点,其他的replica节点重新配置新的master节点,并且告知客户端需要重新连接的是哪个master地址.

在互联网应用中,程序如果只是单台部署的话,都会存在单点问题,那么作为Redis高可用方案的Sentinel是如何解决这一问题呢?

欢迎关注微信公众号黑搜丶D(black-search)

启动方式

  • redis-server sentinel配置文件 --sentinel
  • redis-sentinel sentinel配置文件

Sentinel配置

sentinel monitor mymaster 127.0.0.1 6379 2
sentinel down-after-milliseconds mymaster 60000
sentinel failover-timeout mymaster 180000
sentinel parallel-syncs mymaster 1
复制代码

以上配置为Sentinel最少配置。

  • sentinel monitor <master-group-name> <ip> <port> <quorm> 监听127.0.0.1地址的6379端口,为其命名为mymaster,当集群有2个Sentinel节点认为mymaster节点down了才客观的下线。

其他Sentinel配置

sentinel <option_name> <master_name> <option_value>
复制代码
  • down-after-milliseconds 以毫秒为单位,当超过该时间没有心跳,Sentinel则主观认为该节点已经关闭,只有绝大部分Sentinel判定该节点已经关闭,才会启动故障转移(即客观下线)
  • parallel-syncs 指定了在执行故障转移时,最多可以有多少个从服务器同时对新的主服务器进行同步,这个数字越小,完成故障转移所需的时间就越长(当故障转移的时候,每次只允许该值数量的replica节点同步到新节点,那么如果集群中有比较多的replica节点,就需要耗时长一些,但是设置比较多的replica又会因为RDB造成replica节点短时间不可用)
  • failover-timeout 故障转移超时时间
    • 在先前的故障转移已经由一个给定的Sentinel对同一个主机进行了尝试之后,重新启动故障转移所需的时间是故障转移超时的两倍
    • 使用新的replicate节点作为master节点,并且强制使用新master的数据备份作为其他replica节点的数据的超时时间
    • 取消已在进行中但未产生任何配置更改的故障转移所需的时间(新master节点还没有同步到其他的replica节点)
    • 正在进行的故障转移等待所有replica重新配置为新master服务器副本的最长时间

主观下线 && 客观下线

  • 主观下线: 单个sentinel程序对服务器做出的下线判断
  • 客观下线: 指多于quorm个sentinel程序对服务器做出的下线判断.

sentinel程序会对redis节点发送PING命令,如果redis节点没有正确回复sentinel的请求的话 or 指定时间内没有回复,那么sentinel程序会认为该redis主观下线.

有效回复:

  • +PONG
  • -LOADING
  • -MASTERDOWN

客观下线条件只适用于master节点,对于其他的replica节点,sentinel在将他们判断为主观下线的话即下线. 只有参与了判断客观下线的sentinel程序才有可能参与故障转移操作.

我们在设置sentinel集群程序的时候,不需要在对应的配置文件中设置不同节点的sentinel的配置信息,那么sentinel是如何知道彼此且发送消息的呢?

自动发现sentinel和replica节点

sentinel通过发布/订阅功能来发现其他的sentinel程序,这一功能是通过向频道 __sentinel__:hello 发送信息来实现的。 发现replica节点是通过询问master节点来获取所有从服务器的信息.

__sentinel__:hello

搭建sentinel集群

首先要确保已经搭建了master-replica主备

1.copy一份sentinel.conf配置文件,分别修改为sentinel_26379.conf sentinel_26380.conf sentinel_26381.conf.修改如下内容:

//指定端口
port 26379
//设置后台启动
daemonize yes
//设置pidfile
pidfile "/var/run/redis-sentinel_26379.pid"
//设置日志存放地点,方便查看问题
logfile "/var/log/redis-sentinel_26379.log"
//设置监听的master节点
sentinel monitor mymaster 127.0.0.1 6379 2
复制代码

2.分别执行 redis-sentinel sentinel_26379.conf 配置文件启动。 启动sentinel之前需要先准备好redis master-replica主备已经启动~

Redis从入门到放弃系列(九) Sentinel

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

众包

众包

杰夫·豪 / 牛文静 / 中信出版社 / 2009-6 / 36.00元

本书是继《长尾理论》之后的重要商业书籍。本书回答了《长尾理论》遗留的一大悬念。在长尾中作者详细阐述了长尾之所以成为可能的一个基础,但是没有详细解读,本书就是对这一悬念的详细回答,是《长尾理论》作者强力推荐的图书,在国际上引起了不小的轰动,“众包”这一概念也成为一个标准术语被商界广泛重视。本书大致分为三个部分,介绍众包的现在、过去和未来,解释了它的缘起、普遍性、力量以及商业上的适用性,通俗易懂,精彩......一起来看看 《众包》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

SHA 加密
SHA 加密

SHA 加密工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换