11-17 锦上花问题排查
# 公司资源整理文档
- rancher
- 线上
- 线下
# 锦上花项目问题排查
# 问题描述
线上客户列表拉取时404

而线下同样界面却可以正常访问

# 环境对比
gitlab http://gitlab.five.com:8888/
jenkins http://jenkins.five.com:8083/
线上域名 https://jshmes.linkease.net.cn/
线下域名 http://jmes.five.com/
线上后端请求api
https://jshmes2.linkease.net.cn/api/jmes/wm/customer/information/page?page=0&size=-1
- 线下后端请求api
http://jinshanghuames.five.com/api/jmes/wm/customer/information/page?page=0&size=-1
| 线下环境 | 线上环境 | |
|---|---|---|
| 前端访问域名 | http://jmes.five.com/login | https://jshmes.linkease.net.cn/ |
| 测试账号密码 | 16666666618 888888 | 16666666666 888888 |
| rancher地址 | https://192.168.0.60:8443/ | https://119.23.230.236:8443/ |
| rancher账号密码 | admin Pass2022* | admin 123.com |
| 前端仓库url | dengjunjie/mes-client-vue3 | dengjunjie/mes-client-vue3 |
| 后端仓库url | zhy/jmes | zhy/jmes |
# 部署对比
| 线下环境 | 线上环境 | |
|---|---|---|
| Jenkins-前端 | mesclient_develop_jsh 部署分支develop | mesclient_master_jsh 部署分支master |
| Jenkins-后端 | 线上rancher的jmes | 线上rancher的jmes |
# 排查步骤
问题重现
分别将线下和线上环境都在本地运行
找到env.production里面的api路径变量配置
VITE_APP_CUSTOM_URL="https://jshmes2.linkease.net.cn/"
线上出问题就是请求这个路径时报404错误
通过运行下面的排列组合来排查问题
| 前端 | 后端 | 调用api | 结果 | |
|---|---|---|---|---|
| 第一步 | localhost:8086 | 线上环境 | jinshanghuames.five.com | 成功 |
| 第二步 | localhost:8086 | 线上环境 | jshmes2.linkease.net.cn | 失败 |
| 第三步 | localhost:8086 | 本地8080 | localhost:8080 | 成功 |
| 第四步 | develop分支代码修改api路径 为线上环境的 | 线上环境 | jinshanghuames.five.com | 成功 |
| 第五步 | master分支api路径配置文件 随便加一个空格,提交修改 | 线上环境 | jinshanghuames.five.com | 成功 |
只要api不用jshmes2.linkease.net.cn都成功了
第一步运行截图
本地部署master分支前端项目,后端直接用线上环境,但是调用api不是线上环境的jshmes2.linkease.net.cn,反而是线下环境的jinshanghuames.five.com;断定第一步中前端调用后端api的配置错了
第二步,将前端调用后端api的配置改为jshmes2.linkease.net.cn,测试后结果失败
第三步,前后端都在本地部署,api改为本地运行的后端项目localhost:8080,测试后结果成功
四五步就不说了。
最后在rancher寻找deploy的时候发现有一个一年前的mes后端项目,对外的api居然和现在线上后端的一致。
# 结案
提示
偶尔访问界面成功但是多数情况不成功的原因就是不同后端项目使用了同一个api调用url,引发api冲突。