没有外部IP的Google Cloud HTTP负载均衡器运行状况检查失败

时间:2018-06-11 10:24:15

标签: google-cloud-platform load-balancing

情境: 我有一个通过HTTP端口80公开Web应用程序的Google Compute Engine实例,我可以使用外部IP地址直接访问它。

然后,我添加了一个带有运行状况检查的HTTP负载均衡器,之后,我可以通过负载均衡器访问Web应用程序,没有任何问题。

现在,如果我删除计算实例的外部IP地址,负载均衡器的运行状况检查将开始失败。我阅读[1]并添加了一个防火墙规则,允许健康检查探针来自130.211.0.0/22和35.191.0.0/16范围内的地址,但健康检查仍然失败。

如果我将外部IP地址添加回计算实例,则运行状况检查将变为活动状态。我在这里要求的是删除计算实例的公共IP地址,并仅将负载均衡器IP地址暴露给互联网。

问题: 是否必须在Google Cloud Compute Engine实例上设置外部IP地址,以便通过Google Cloud HTTP负载均衡器路由流量?如果没有,我可以知道如何使用HTTP负载均衡器将HTTP流量路由到计算实例,而计算实例上没有外部IP地址吗?感谢你对此的看法。

[1] https://cloud.google.com/compute/docs/load-balancing/health-checks

3 个答案:

答案 0 :(得分:2)

我就此问题联系了Google云支持团队,发现将HTTP流量从HTTP负载均衡器路由到计算引擎实例需要外部IP地址。

此处唯一可行的解​​决方案可能是应用防火墙规则并根据当前设计阻止对VM的直接访问。

答案 1 :(得分:1)

根据公众documentation

  

HTTP(S)负载平衡利用目标的内部IP,而不是目标IP。   他们的外部IP。

因此,您不需要外部IP 。 实际上,该部分说明了如何删除负载平衡器后面的后端的外部IP,同时将至少一个实例与外部IP保持在同一网络中。这可以帮助您使用外部IP对实例进行SSH,然后通过其内部IP从该实例SSH到负载平衡的实例。

此方案应与HTTP(S)负载均衡器一起使用(第7层)。如果您使用的是network load balancer(第3层),则需要外部IP,并且不仅需要35.191.0.0/16中的健康检查探针,还需要209.85.152.0/22和209.85.204.0/中的健康检查探针22 here

答案 2 :(得分:0)

负载均衡器后面的VM不需要公共IP地址。我有一个运行在后端没有公共IP地址的设置,并且从负载均衡器地址打开了防火墙规则以进行运行状况检查。