阿里云负载均衡502报错踩坑记录

时间:2024-03-01 22:31:33

阿里云负载均衡踩坑记录

问题

最近在部署一个测试项目时,遇到了一个这样的怪事,就是我后端运行的是 Tomcat,然后我在阿里云的负载均衡上面添加了一个 HTTP 层 代理,并且是走的默认配置,最后进行访问页面显示的是 502。

但是我如果我是配置一个 tcp 层的监听后,发现访问这样是可以正常访问的。这就给我很大疑惑了,是我后端 Tomcat 的问题(因为我 Tomcat 最近调优了),还是 阿里云的负载均衡的问题呢。

问题缘由

经过排查。

问题的原因是: 阿里云的负载均衡在 HTTP和HTTPS 默认开启了健康检查,如果健康检查没有通过的话,后端对应的服务器是接收不到请求的。但是我们这里是没有对健康检查进行详细配置,所以默认健康检查一直失败的。请求也一直到达不了后端。但是阿里云的负载均衡在 TCP 和UDP 默认是没有开启健康检查,所以是可以进行访问的。

问题解决办法

  • 关闭健康检查

    将健康检查功能关闭。

  • 设置健康检查路径

    找到我们我们网站可以正常访问的而且不会经常改变的一个路径,然后将它配置在健康检查路径里。健康状态检查就不会出错了。

  • 设置状态码

    默认的访问路径是 /,但是,访问这个路径是没有任何数据返回的,所以会报 400 错误,我们可以在健康检查的高级配置中,将正常状态码中的 http_4xx 勾选为 正常状态码。(不建议使用)