问题场景:

jumpserver堡垒机正常运行半年多了,今天登陆页面可以访问但一直无法正常登陆,用户名、密码也是正常,点击登陆后页面一直加载中,但是过一会后页面提示502和504gateway time out

主机来源:腾讯云CVM

部署方式:docker部署

接入组件:openldap


问题描述:

直接访问IP地址能正常访问登陆页面,但正确输入用户名、密码后,页面一直加载中,过段时间提示502和504gateway time out,网上有几种解释,可能是由于nginx引起也有可能是因为upstream服务异常导致

排查一:

查看nginx的error.log日志

路径:/var/log/nginx/error.log-具体日期

排查二:

查看jumpserver的coco服务日志看具体错误

进入容器:

docker exec -it jms_coco /bin/bash

查看coco服务日志:

1.查看coco服务容器ID

docker ps  #找到coco服务对应的容器ID

2.查看服务日志:

docker logs -f 93dacc10b91e  #将93dacc10b91e替换为你的实际容器ID

排查三:

查看jumpser服务本身的日志

文件路径(服务默认安装在/opt/jumpserver目录):

/opt/jumpserver/logs/jumpserver.log

 

原因分析:

排查一的日志:

2020/10/09 20:32:38 [error] 16313#16313: *51 connect() failed (111: Connection refused) while connecting to upstream, client: 源端IP, server: , request: "GET /zh-hans/jsi18n/ HTTP/1.1", upstream: "http://[::1]:8080/zh-hans/jsi18n/", host: "目的端IP", referrer: "http://目的端IP/"
2020/10/09 20:32:38 [warn] 16313#16313: *51 upstream server temporarily disabled while connecting to upstream, client: 源端IP, server: , request: "GET /zh-hans/jsi18n/ HTTP/1.1", upstream: "http://[::1]:8080/zh-hans/jsi18n/", host: "目的端IP", referrer: "http://目的端IP/"

这个是因为 Nginx 所在服务器无法将请求转发到上游服务地址所导致的问题,实际我们项目中整套jumpserver服务都是部署在同一台机器内,所以不存在有上游服务一说,这个错误可以暂时忽略

排查二的日志:

没有error日志且服务正常启动,可以排除问题二,服务异常导致无法登陆

排查三的日志:

这里提示LDAP服务DOWN,但是最开始一想这个用户认证应该是认证jumpserver本身的账户体系,和我们文章一开始提的OpenLDAP应该没啥关系,只是多了一个用户认证的途径而已,优先排查jumpserver以及jumpserver本身服务组件(jms_guacamole、jms_coco)是否正常,对jumpserver服务整体重启一遍尝试一下

重启命令:

cd /opt/jumpserver

./jms start -d   # -d为后台启动

重启完成后检查服务状态,看是否正常启动,提示UP说明服务是正常启动

OK,现在尝试下去页面重新登陆,结果还是不行,一直卡在登陆界面,过一会后又是超时。内牛满面 - - !


解决方案:

卡了几小时,突然想到排查三中的问题,报LDAP服务异常,项目中之前也接入过自己部署的一套OpenLDAP,尝试下是不是真的与OpenLDAP有关,先检查OpenLDAP是不是可以访问,发现能正常登陆,然后看下OpenLDAP与jumpserver之间是不是通的,检查下防火墙和主机的安全组,是否放开TCP:636,389端口。

安全组策略中加一条:0.0.0.0/0  TCP:636,389   的策略

#两个字段分别对应:来源IP、访问端口

再去刷新jumpserver登陆页面,可以正常登陆,恢复正常。。。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐