Sentinel

 

   +reset-master :主服务器已被重置。
    +slave :一个新的从服务器已经被 Sentinel 识别并关联。
    +failover-state-reconf-slaves :故障转移状态切换到了 reconf-slaves 状态。
    +failover-detected :另一个 Sentinel 开始了一次故障转移操作,或者一个从服务器转换成了主服务器。
    +slave-reconf-sent :领头(leader)的 Sentinel 向实例发送了 [SLAVEOF](/commands/slaveof.html) 命令,为实例设置新的主服务器。
    +slave-reconf-inprog :实例正在将自己设置为指定主服务器的从服务器,但相应的同步过程仍未完成。
    +slave-reconf-done :从服务器已经成功完成对新主服务器的同步。
    -dup-sentinel :对给定主服务器进行监视的一个或多个 Sentinel 已经因为重复出现而被移除 —— 当 Sentinel 实例重启的时候,就会出现这种情况。
    +sentinel :一个监视给定主服务器的新 Sentinel 已经被识别并添加。
    +sdown :给定的实例现在处于主观下线状态。
    -sdown :给定的实例已经不再处于主观下线状态。
    +odown :给定的实例现在处于客观下线状态。
    -odown :给定的实例已经不再处于客观下线状态。
    +new-epoch :当前的纪元(epoch)已经被更新。
    +try-failover :一个新的故障迁移操作正在执行中,等待被大多数 Sentinel 选中(waiting to be elected by the majority)。
    +elected-leader :赢得指定纪元的选举,可以进行故障迁移操作了。
    +failover-state-select-slave :故障转移操作现在处于 select-slave 状态 —— Sentinel 正在寻找可以升级为主服务器的从服务器。
    no-good-slave :Sentinel 操作未能找到适合进行升级的从服务器。Sentinel 会在一段时间之后再次尝试寻找合适的从服务器来进行升级,又或者直接放弃执行故障转移操作。
    selected-slave :Sentinel 顺利找到适合进行升级的从服务器。
    failover-state-send-slaveof-noone :Sentinel 正在将指定的从服务器升级为主服务器,等待升级功能完成。
    failover-end-for-timeout :故障转移因为超时而中止,不过最终所有从服务器都会开始复制新的主服务器(slaves will eventually be configured to replicate with the new master anyway)。
    failover-end :故障转移操作顺利完成。所有从服务器都开始复制新的主服务器了。
    +switch-master :配置变更,主服务器的 IP 和地址已经改变。 这是绝大多数外部用户都关心的信息。
    +tilt :进入 tilt 模式。
    -tilt :退出 tilt 模式。

 

 



  • 故障转移


一次故障转移操作由以下步骤组成:

    发现主服务器已经进入客观下线状态。
    对我们的当前纪元进行自增(详情请参考 Raft leader election ), 并尝试在这个纪元中当选。
    如果当选失败, 那么在设定的故障迁移超时时间的两倍之后, 重新尝试当选。 如果当选成功, 那么执行以下步骤。
    选出一个从服务器,并将它升级为主服务器。
    向被选中的从服务器发送 SLAVEOF NO ONE 命令,让它转变为主服务器。
    通过发布与订阅功能, 将更新后的配置传播给所有其他 Sentinel , 其他 Sentinel 对它们自己的配置进行更新。
    向已下线主服务器的从服务器发送 SLAVEOF 命令, 让它们去复制新的主服务器。
    当所有从服务器都已经开始复制新的主服务器时, 领头 Sentinel 终止这次故障迁移操作。

每当一个 Redis 实例被重新配置(reconfigured) —— 无论是被设置成主服务器、从服务器、又或者被设置成其他主服务器的从服务器 —— Sentinel 都会向被重新配置的实例发送一个 CONFIG REWRITE 命令, 从而确保这些配置会持久化在硬盘里。

  • Sentinel 使用以下规则来选择新的主服务器:


    在失效主服务器属下的从服务器当中, 那些被标记为主观下线、已断线、或者最后一次回复 PING 命令的时间大于五秒钟的从服务器都会被淘汰。
    在失效主服务器属下的从服务器当中, 那些与失效主服务器连接断开的时长超过 down-after 选项指定的时长十倍的从服务器都会被淘汰。
    在经历了以上两轮淘汰之后剩下来的从服务器中, 我们选出复制偏移量(replication offset)最大的那个从服务器作为新的主服务器; 如果复制偏移量不可用, 或者从服务器的复制偏移量相同, 那么带有最小运行 ID 的那个从服务器成为新的主服务器。

posted @ 2018-07-29 17:03  卖臭豆腐喽  阅读(311)  评论(0编辑  收藏  举报