我们的Redis采用的Sentinel方案,由Jedis客户端进行路由。最近出现一次系统网络故障,持续时间有点长;网络恢复后,发现诸多系统出现Redis的READONLY异常:即写操作在Redis的从库上被执行。网络故障恢复后,Sentinel应该重新从Redis Server获取最新的主从关系,但是应用APP侧保存的主从关系并未被更新。
于是把应用APP重新启动,发现大部分系统都已经恢复正常,但是其中一个系统还是会有READONLY异常。于是开始怀疑有Sentinel上的这组Redis主从关系有问题,检查后发现果不其然。这样看来网络出问题时,是可能导致sentinel对Redis主从关系检测的错乱,网络故障恢复后sentinel还是错的,这个不知道算不算sentinel的脑裂。
于是把应用APP重新启动,发现大部分系统都已经恢复正常,但是其中一个系统还是会有READONLY异常。于是开始怀疑有Sentinel上的这组Redis主从关系有问题,检查后发现果不其然。这样看来网络出问题时,是可能导致sentinel对Redis主从关系检测的错乱,网络故障恢复后sentinel还是错的,这个不知道算不算sentinel的脑裂。