内容简介:本文例子基于: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主备已经启动~
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Remote
Jason Fried、David Heinemeier Hansson / Crown Business / 2013-10-29 / CAD 26.95
The “work from home” phenomenon is thoroughly explored in this illuminating new book from bestselling 37signals founders Fried and Hansson, who point to the surging trend of employees working from hom......一起来看看 《Remote》 这本书的介绍吧!