情境: 我有一个通过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
答案 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地址的设置,并且从负载均衡器地址打开了防火墙规则以进行运行状况检查。