之前说要搞redis cluster,而且也已经搭建了很久了,但是一直在测试环境上测,并没有上到生产环境,前不久终于上到生产了。基本没啥大问题,但期间还是遇到了那么个小坑。
这个坑是关于redis持久化AOF的,之前我有一篇关于搭建redis cluster时遇到的坑的笔记,但是我不打算在那篇后面续写这个问题,所以重新开了一篇。
当时的情况是这样的,这里生产环境的rediscluster规模是11个redis实例5主6从。运行算是平稳,没有报过问题,就是偶尔有些slowlog(当初没在意),但是有时候会发现master实例莫名奇妙的会切换。讲道理这种情况只有在failover的情况下才会发生,在排除人为failover后,开始排查问题。排查的情况还是很顺利的,看了下日志,有时候会有
* Asynchronous AOF fsync is taking too long (disk is busy?). Writing the AOF buffer without waiting for fsync to complete, this may slow down Redis.
这样的记录。然后看下redis实例配置确实都开启了aof,初步判断是由于在master实例aof的时候可能阻塞了一下,导致其他集群节点误认为他挂掉了进而导致重新选举主节点。(讲道理即使aof有阻塞一下,但也应该不至于此,不过这几台部署redis的服务器是比较老了,都是被淘汰下来的,磁盘io性能也确实比较弱,而且测试环境下没啥量,体现不出这个问题)后面确认了下使用rediscluster的业务场景下仅仅是缓存,不需要持久化。然后就将所有redis实例的aof关闭了。然后到目前为止就没有发现有master实例自动切换的情况了,而且发现slowlog也消失了。
Cloudhu 个人随笔|built by django|
沪ICP备16019452号-1