当前位置: 首页 > 知识库问答 >
问题:

如果没有外部IP,Google Cloud HTTP负载均衡器健康检查失败

车嘉实
2023-03-14

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

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

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

如果我将外部IP地址添加回计算实例,则运行状况检查将变为活动状态。这里我需要的是删除计算实例的公共IP地址,并且只向internet公开负载平衡器IP地址。

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

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

共有3个答案

东郭自强
2023-03-14

负载平衡器后面的VM不需要公共IP地址。我有一个在后端没有公共IP地址的情况下运行的安装程序,我从负载平衡器地址打开了防火墙规则以进行健康检查。

壤驷德宇
2023-03-14

根据公共留档:

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

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

此方案应与HTTP(S)负载均衡器(第7层)一起使用。如果您使用的是网络负载均衡器(第3层),那么您需要外部IP,并且您不仅需要允许来自35.191.0.0/16的健康检查探针,还需要允许来自209.85.152.0/22和209.85.204.0/22的健康检查探针,如下所述。

云长恨
2023-03-14

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

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

 类似资料:
  • 根据以下官方文件,我在GKE上安装了Kubernetes入口控制器。 入口控制器运行良好。 它自动创建TCP负载平衡器、健康检查和防火墙规则。我的kubernetes群集有3个节点。有趣的是,有两次健康检查失败。它传递给入口控制器正在运行的实例。我调试了它,但没有找到任何线索。谁能帮我一下吗。

  • 我在GCP中建立了自己的Elasticsearch集群。群集已启动并运行良好。 集群包含两个客户端节点,我可以使用它们在内部访问并通过运行状况检查http://IP:9200/和

  • 我有一个ECS集群,它有多个节点(任务定义),由应用程序负载平衡器前置。在负载平衡器和容器级别(在任务定义内)配置健康检查有意义吗? 负载平衡器对每个注册的目标运行配置的健康检查,以便注销故障节点。在容器级别设置健康检查可以完成相同的事情:ECS将注销任何未通过健康检查的容器(根据您的配置)。ECS将始终实例化更多任务定义实例,以满足您所需的计数。 对我来说,如果任务定义只有一个容器,那么只在负载

  • 我试图在谷歌云上设置网络负载均衡器,但健康检查总是返回不健康的结果。 我给你我遵循的步骤 > 我创建了两个windows Server 2012 R2实例 我检查了端口80在这两个实例上是否对公众开放 我创建了转发规则,谷歌云给了我一个外部IP 我在两个服务器实例的网络环回接口中设置了外部IP 我创建了一个网络路由,用于转发两个实例上的流量(路由菜单) 我为169.254.169.254/32(网

  • 我可以连接到运行在Kubernetes的吊舱中的应用程序,但这是使用负载平衡器网关的,基于这里的文档: 有没有什么方法可以在Google Container Engine上运行web服务器,而不必为单独的负载均衡器支付18美元/月的费用?

  • 我正在Kubernetes(GKE)中运行WebService后端应用程序。它仅由我们的前端Web应用程序使用。通常,来自同一用户(ClientIP)的请求有数十个序列。我的应用程序设置为运行至少2个实例(“minReplicas:2”)。 问题:从日志中我可以看到一个pod过载(接收许多请求)而另一个闲置的情况。两个吊舱都处于就绪状态。 我试图修复它:我试图添加一个自定义就绪状态检查,当有太多打