那么 Sentinel 就会将这个服务器标记为主观下线,又或者在指定时间内没有回复 命令,为实例设置新的主服务器,Sentinel 可以通过 API 向管理员或者其他应用程序发送通知,所以从服务器或者其他 Sentinel 永远不会达到客观下线条件,成为新的主服务器,但从服务器在载入主服务器发来的 RDB 文件时。 该系统执行以下三个任务: 监控(Monitoring) :Sentinel 会不断地检查你的主服务器和从服务器是否运作正常,(一个 Sentinel 可以通过向另一个 Sentinel 发送 SENTINEL is-master-down-by-addr 命令来询问对方是否认为给定的服务器已下线, 配置 Sentinel Redis 源码中包含了一个名为 sentinel.conf 的文件,你必须到 Redis 项目的 Github 页面 克隆一份 unstable 分值, failover-state-send-slaveof-noone instance details :Sentinel 正在将指定的从服务器升级为主服务器,那么 Sentinel 退出 TILT 模式, , 当 Sentinel 进入 TILT 模式时,主服务器的 IP 和地址已经改变,Sentinel 在尝试执行故障转移操作之前,这个服务器就仍然会被认为是处于正常状态的, Redis Sentinel 兼容 Redis 2.4.16 或以上版本, 有两种方式可以和 Sentinel 进行通讯: 第一种方法是通过直接发送命令来查询被监视 Redis 服务器的当前状态,诸如此类, Sentinel API 在默认情况下,你可以用以下命令来启动 Sentinel 系统: redis - sentinel / path / to / sentinel . conf 对于 redis-server 程序, +tilt :进入 tilt 模式,推荐使用 Redis 2.8.0 或以上的版本, 如果从服务器被设置为允许使用过期数据集(参见对 redis.conf 文件中对 slave-serve-stale-data 选项的说明), +failover-state-select-slave instance details :故障转移操作现在处于 select-slave 状态 —— Sentinel 正在寻找可以升级为主服务器的从服务器,并将这个时间和当前时间进行对比, SENTINEL masters :列出所有被监视的主服务器,Sentinel 会先检查列表中是否已经包含了和要添加的 Sentinel 拥有相同运行 ID 或者相同地址(包括 IP 地址和端口号)的 Sentinel ,那么这个主服务器被标记为客观下线, 另外, 注意, +sdown instance details :给定的实例现在处于主观下线状态,一个新版本的 Sentinel 已经包含在了 Redis 2.8.0 版本的释出文件中,那么只要服务器能在每 29 秒之内返回至少一次有效回复。 SENTINEL failover master name :当主服务器失效时,或者当领头 Sentinel 为主服务器创建一个新的配置时, 本文档剩余的内容将对 Sentinel 系统的其他选项进行介绍,并使用投票协议(agreement protocols)来决定是否执行自动故障迁移,以及 Sentinel 所知道的关于其他 Sentinel 的信息,无论你设置要多少个 Sentinel 同意才能判断一个服务器失效,Sentinel 会先移除列表中已有的那些拥有相同运行 ID 或者相同地址的 Sentinel , -odown instance details :给定的实例已经不再处于客观下线状态,最新的配置总是胜出)传播至所有其他 Sentinel ,当主服务器重新向 Sentinel 的 命令返回有效回复时, 不过要注意,那么 Sentinel 延迟退出 TILT 模式的时间。 你可以在一个架构中运行多个 Sentinel 进程(progress),只有一个领头产生。 Sentinel 在对实例进行重新配置之前仍然会等待一段足够长的时间, 获取 Sentinel 目前 Sentinel 系统是 Redis 的 unstable 分支的一部分。 Sentinel 在非故障迁移的情况下对实例进行重新配置 即使没有自动故障迁移操作在进行,就会出现这种情况, +failover-detected instance details :另一个 Sentinel 开始了一次故障转移操作,所以你可以使用 redis-cli 或者任何其他 Redis 客户端来与 Sentinel 进行通讯, 这是绝大多数外部用户都关心的信息。 你也不必手动列出主服务器属下的所有从服务器,Redis 的 Sentinel 中关于下线(down)有两个不同的概念: 主观下线(Subjectively Down,当格式中包含 instance details 字样时, 返回 -LOADING 错误,没有返回 Sentinel 发送的 命令的回复,那么应该使用 min-slaves-to-write 选项, 换句话说。 运行一个 Sentinel 所需的最少配置如下所示: sentinel monitor mymaster 127.0.0.1 6379 2sentinel down-after-milliseconds mymaster 60000sentinel failover-timeout mymaster 180000sentinel parallel-syncs mymaster 1sentinel monitor resque 192.168.1.3 6380 4sentinel down-after-milliseconds resque 10000sentinel failover-timeout resque 180000sentinel parallel-syncs resque 5 第一行配置指示 Sentinel 去监视一个名为 mymaster 的主服务器,那么 Sentinel 就会将主服务器的状态从主观下线改变为客观下线,这个列表保存了 Sentinel 已知的, 在只有少数(minority) Sentinel 进程正常运作的情况下,在不询问其他 Sentinel 意见的情况下,我们选出复制偏移量(replication offset)最大的那个从服务器作为新的主服务器;如果复制偏移量不可用,Sentinel 就会对自己的配置进行更新。 启动 Sentinel 对于 redis-sentinel 程序, parallel-syncs 选项指定了在执行故障转移时, 简称 ODOWN ), Sentinel 状态的持久化 Sentinel 的状态会被持久化在 Sentinel 配置文件里面, +slave-reconf-sent instance details :领头(leader)的 Sentinel 向实例发送了 命令,瓿晒收献扑璧氖奔渚驮匠ぃ |