我做了一个简单的设置,在负载均衡器后面有两个 GCE 实例。但在平衡器日志中,我可以看到随机的 502 响应,并显示以下错误:“failed_to_connect_to_backend”
Al 认为最后一次健康检查没有问题,响应为 200,但检查我的 nginx 日志发现请求甚至没有通过后端到达 nginx。
我不知道问题是什么,是否有任何类型的日志显示为什么无法连接到后端?这是一个健康检查问题吗?有健康检查日志吗?
答案1
您是否正确配置了保持活动超时?
TCP 会话超时,其值固定为 10 分钟(600 秒)。此会话超时有时称为保持活动超时或空闲超时,其值无法通过修改后端服务来配置。您必须配置后端使用的 Web 服务器软件,使其保持活动超时长于 600 秒,以防止后端过早关闭连接。
这现在已在官方 GCP 文档中。nginx 的推荐设置:KeepAliveTimeout 620。Apache 的推荐设置:keepalive_timeout 620s。
https://blog.percy.io/tuning-nginx-behind-google-cloud-platform-http-s-load-balancer-305982ddb340
https://cloud.google.com/compute/docs/load-balancing/http/
https://cloud.google.com/load-balancing/docs/https/#timeouts_and_retries