本文例子基于:5.0.4redis
Redis Sentinel做为Redis高可用方案,具备监听,通知,自动故障转移等功能.这一切都是依赖主备同步的大前提(参考上一节:Redis从入门到放弃系列(八) 主备同步).服务器
在互联网应用中,程序若是只是单台部署的话,都会存在单点问题,那么做为Redis高可用方案的Sentinel是如何解决这一问题呢?微信
欢迎关注微信公众号黑搜丶D(black-search)spa
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 <option_name> <master_name> <option_value>
复制代码
sentinel程序会对redis节点发送PING命令,若是redis节点没有正确回复sentinel的请求的话 or 指定时间内没有回复,那么sentinel程序会认为该redis主观下线.code
有效回复:orm
客观下线条件只适用于master节点,对于其余的replica节点,sentinel在将他们判断为主观下线的话即下线. 只有参与了判断客观下线的sentinel程序才有可能参与故障转移操做.cdn
咱们在设置sentinel集群程序的时候,不须要在对应的配置文件中设置不一样节点的sentinel的配置信息,那么sentinel是如何知道彼此且发送消息的呢?server
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主备已经启动~