记一次Druid连接池监控页面无法打开的乌龙及处理方案

2020-10-03  本文已影响0人  我菠菜今天就是要为所欲为

下午的时候同事反映Druid连接池无法登录,随后查看现象为:

  1. 服务无异常。
  2. 使用账号密码登录Druid后,http状态为302,跳转回登录页面。
  3. 后台无日志输出。

初步判断是账号密码不正确,或者白名单没有设置。

检查了账号密码,与白名单发现没有问题。

于是查看以前的项目,发现配置和之前的几个项目相同,而其他项目并无异常。

回忆项目之间的差别:

  1. 项目使用了Docker搭建。
  2. 项目为分布式服务。
  3. Docker容器部署在同一台VM中,为了避免端口冲突所以直接使用一个Nginx容器从内部使用Docker交换机做负载均衡。
image.png

逐步分析后猜测:

  1. Nginx给Druid监控做了负载均衡
  2. 负载均衡导致单个实例的Cookie失效
  3. 产生重复登录现象

验证:
干掉了一台服务后重新尝试登录,发现登录成功。

分析:Druid是针对单个实例的监控,理应直接访问单个服务的监控页面,无需负载均衡。

解决方案:由于无法将端口映射至宿主VM,所以拟采用url参数的访问方式,使用http://{ip}/{instance_id}/druid/*的方式,根据实例id将请求分发至不同的容器,达到访问指定容器的目的。

上一篇下一篇

猜你喜欢

热点阅读