记一次 Redis 连接问题排查

﹏ヽ暗。殇╰゛Y 2023-09-26 23:07 333阅读 0赞

Redis 和业务应用部署在同一个 K8s 集群中,Redis Server 暴露了一个 redis-service,指向到 master 节点,业务应用通过 redis-service 连接 Redis。

问题发现

客户端:业务应用使用 lettuce 客户端

服务端:Redis server 部署架构采用 1 主 + 1 从 + 3 哨兵

Redis 和业务应用部署在同一个 K8s 集群中,Redis Server 暴露了一个 redis-service,指向到 master 节点,业务应用通过 redis-service 连接 Redis。

某个时刻起,开始发现业务报错,稍加定位,发现是 Redis 访问出了问题,搜索业务应用日志,发现关键信息:

  1. org.springframework.data.redis.RedisSystemException: Error in execution; nested exception is io.lettuce.core.RedisCommandExecutionException: READONLY You can't write against a read only replica.

这是一个 Redis 访问的报错,看起来跟 Redis 的读写配置有关。

问题定位

首先排查下业务应用和 Redis 的连接情况

  1. # netstat -ano | grep 6379
  2. tcp 0 0 172.24.7.34:44602 10.96.113.219:6379 ESTABLISHED off (0.00/0/0)

其中 172.24.7.34 是业务 pod 的 ip,10.96.113.219 是 redis 的 K8s service ip,连接是 ESTABLISHED 状态,说明连接没有断。

继续排查 Redis 的 pod 是否正常:

  1. redis-shareredis-0 2/2 Running 0
  2. redis-shareredis-1 2/2 Running 0
  3. redis-shareredis-sentinel-5f7458cd89-7dwpz 2/2 Running 0
  4. redis-shareredis-sentinel-5f7458cd89-rrfz7 2/2 Running 0
  5. redis-shareredis-sentinel-5f7458cd89-xzpmb 2/2 Running 0

无论是读写节点还是哨兵节点,都没有重启过。

既然报了只读节点的异常,索性看下 redis 节点的读写角色情况。

  1. root@redis-shareredis-0:/data# redis-cli -h 172.24.1.95 -a xxxx role
  2. 1) "slave"
  3. 2) "172.24.1.96"
  4. 3) (integer) 6379
  5. 4) "connected"
  6. 5) (integer) 6942040980
  7. root@redis-shareredis-0:/data# redis-cli -h 172.24.1.96 -a xxxx role
  8. 1) "master"
  9. 2) (integer) 6942173072
  10. 3) 1) 1) "172.24.1.95"
  11. 2) "6379"
  12. 3) "6942173072"

可以看到此时 redis-shareredis-0(172.24.1.95)是 slave 节点,redis-shareredis-1(172.24.1.96)是 master

发表评论

表情:
评论列表 (有 0 条评论,333人围观)

还没有评论,来说两句吧...

相关阅读

    相关 cpu飙升问题排查

    前言 首先问题是这样的,周五正在写文档,突然收到了线上报警,发现cpu占用达到了90多,上平台监控系统查看容器,在jvm监控中发现有一个pod在两个小时内产生了61次yo

    相关 艰难的GC问题排查

    背景 gc问题一直是一个很难排查的问题,但是他又是一个经常在我们开发业务中出现的。这不,最近在我的项目中就出现了一个比较奇葩的gc问题,排查过程比较繁琐,所以在这里分享一

    相关 oom问题排查

    大家好,我是大彬~ 今天给大家分享最近出现的OOM问题。 上周五早上,测试同学反馈测试环境的子系统服务一直超时,请求没有响应。 收到这个问题之后,我有点纳闷,最近这个系统

    相关 xxljob异常排查

    我们使用开源的xxljob封装了一个job服务作为平台的job组件。有一个项目组生产上总是隔些天就会有一次异常发生,调度失败,且没什么报错信息。jobadmin、执行器服务都是

    相关 生产事故OOM问题排查

    背景 线上应用需要进行一个涉及600W数据的操作,之前我们应用从来没有一次性应对这么大量的数据,最多就一次数十万而已。结果,这次600W的数据操作引起了生产事故,直接导致