我创建了一个HTTP负载均衡器,基本上从端口80重定向到端口8080.我的实例上的服务器正在端口8080上运行。 我可以直接连接到服务器,但LB无法连接到实例,直接访问LB的IP,健康检查也总是失败。 LB正在使用的实例组仅由该单个实例组成。
我看了Google Compute Engine health checks failing
并且google-address-manager正在运行。但是,当运行ip route table list local
时,我的LB没有路由。上面问题中的用户正在使用网络负载平衡而不是HTTP负载平衡(就像我一样)所以我不知道这是否相关?
或许它与防火墙有关?我已将LB的ip地址添加到允许tcp:8080
的防火墙规则中anybode有什么想法我该如何解决这个问题?我对debian和gcp没有经验。 显示我只是尝试运行上述问题中引用的route add命令?如果是这样,谷歌地址管理员怎么没有添加路线?
提前谢谢!
答案 0 :(得分:3)
您需要确保将实例组上的端口映射设置为正确的端口,在您的情况下为8080。
然后,导航到您的http后端设置,并将默认端口更改为您在实例组中配置的端口名称。
最后,确保您的防火墙规则允许从0.0.0.0/0或至少从HTTP负载均衡器的IP地址(130.211.0.0/22)访问端口8080
答案 1 :(得分:3)
我有同样的问题并通过为健康检查程序添加防火墙规则来修复它(不与您的LB相同的IP!)。有关说明,请参阅https://cloud.google.com/compute/docs/load-balancing/health-checks?hl=en_US#http_and_https_load_balancing。
答案 2 :(得分:0)
就我而言,我没有正确配置HTTP health check。
我使用“ /”作为 path ,但是在我的后端,“ /”重定向到登录页面(HTTP 301),并以HTTP 200进行响应。
运行状况检查不会遵循重定向,每个HTTP响应代码!= 200都被认为是不健康的(来自Debugging Health Checks in Load Balancing on Google Compute Engine)。
因此,我将 path 更改为“ / login”,这解决了我的问题。