redis哨兵频繁提示tilt mode exited进入倾斜模式

TILT 模式:倾斜模式

TITL模式是一种保护模式,计算机发生严重的事情或者灾难的时候,会进入这个模式,禁止除了监控之外的操作,而且因为redis sentinel一般操作都是依赖时间,进入TITL模式则说明他的时间也有可能有问题,那这个sentinel的判断就不可信了。
处于该模式下Sentinel除了发送必要的PING及INFO命令外,不会主动做其他操作,例如主备倒换,标志主观、客观下线等。但可以通过INFO 命令及发布订阅连接的HELLO消息包来获取外界信息并对自身结构进行更新,直到SENTINEL_TILT_PERIOD时长(默认为30s)结束为止,我们可以认为Tilt模式是Sentinel的被动模式。

void sentinelCheckTiltCondition(void) {
    // 计算当前时间
    mstime_t now = mstime();

    // 计算上次运行 sentinel 和当前时间的差
    mstime_t delta = now - sentinel.previous_time;

    // 如果差为负数,或者大于 2 秒钟,那么进入 TILT 模式
    if (delta < 0 || delta > SENTINEL_TILT_TRIGGER) {
        // 打开标记
        sentinel.tilt = 1;
        // 记录进入 TILT 模式的开始时间
        sentinel.tilt_start_time = mstime();
        // 打印事件
        sentinelEvent(REDIS_WARNING,"+tilt",NULL,"#tilt mode entered");
    }

    // 更新最后一次 sentinel 运行时间
    sentinel.previous_time = mstime();
}

原因

However if the computer time changes in an unexpected way, or if the computer is very busy, or the process blocked for some reason, Sentinel may start to behave in an unexpected way.
如果计算机时间以意外的方式改变,或者计算机非常繁忙,或者进程由于某种原因被阻止,Sentinel可能会以意外的形式开始工作。
总结三点原因:

  • 时间频繁变化( 如果差值小于0【表示调整到过去时间】,或者大于两秒钟【前拨两秒】,那就进入TITL模式,也就是sentinel可能有问题)
  • 计算机繁忙
  • 进程被阻止

排查过程

  • 计算机繁忙(排查不是)×
#观察top命令
#数据库备份任务注释
#iotop,iostat观察io
  • 进程被阻止 ×
    (查看系统日志和redis及redis-sentinel日志,无观察到异常)

  • 时间频繁变化(重点)√

通过systemctl status chronyd 观察到ntp服务在运行

通过timedatectl 观察多次,发现有ntp同步开启,并同步状态有yes

通过chronyc sources -v 观察到有"*"状态的时间源,并且同步轮询记录

通过以上排查确定时间同步很可能有问题

验证时间同步问题

  • 关闭时间同步,同时观察sentinel是否还有“tilt mode exited”
#关闭自动同步时间
timedatectl set-ntp no  

发现再无“tilt mode exited”日志产生

  • 重启自动时间同步
#开启自动同步时间
timedatectl set-ntp yes

发现“tilt mode exited”日志重新产生

重复几次测试,确定问题所在:ntp时间源有问题,造成redis-sentinel频繁进入TILT 模式

参考

https://github.com/redis/redis/issues/10547
https://blog.51cto.com/u_13604316/2729922
https://stackoverflow.com/questions/47282085/redis-sentinel-enter-mode-tilt-when-raid-check-running
https://www.coder.work/article/550489

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值