Google Cloud:运行状况检查不会从HTTP负载平衡器中移除失败的实例

我有一个实例组,在HTTP负载平衡器后面有两个实例。 一个实例运行正常(返回http 200),另一个崩溃(HTTP请求超时)。 我不知道我在做什么错,但根据文档,失败的实例应自动从负载平衡器中删除。

以下是相关文档: https : //cloud.google.com/compute/docs/load-balancing/health-checks及相关段落:

为了健康检查被认为是成功的,后端必须返回一个有效的代码为200的HTTP响应,并在timeoutSec期间内正常closures连接。 如果某个实例未通过健康状况检查,则将其从组或池中删除,而不会发送任何通知。 如果它稍后通过健康检查,则会返回到组或池,而不会再有任何通知。

这是我目前在我的谷歌云控制台页面上看到的HTTP负载平衡器的后端。

在这里输入图像说明

当我访问我的网站( http://stage2.phantomjscloud.com )Rougly一半的时间,我得到

错误:服务器错误服务器遇到临时错误,无法完成您的请求。 请在30秒后重试。

HTTP负载均衡器(和运行状况检查)可以清楚地检测到发生故障的实例,但stream量仍然在服务于它。

我该如何解决这个问题?

运行状况检查pipe理的实例组VS健康检查负载平衡

受pipe实例组使用的运行状况检查与负载平衡使用的运行状况检查相同,但行为有所不同。 适用于负载平衡服务的运行状况检查可帮助负载平衡器确定将networkingstream量引导到何处。 这些运行状况检查不会导致Compute Engine重新创build实例。 您应用于受pipe实例组的健康检查将主动向受pipe实例组发出信号,以便在实例成为不健康时删除并重新创build实例。

对于大多数情况下,使用单独的运行状况检查进行负载平衡和监视受pipe实例组。 负载平衡的运行状况检查可以并且应该更加积极,因为这些健康检查确定实例是否接收用户stream量。 由于客户可能依赖于您的服务,因此您希望快速捕获无响应的实例,以便在必要时redirectstream量。 相比之下,对实例组进行运行状况检查将导致Compute Engine主动replace失败的实例,因此您可以创build比负载均衡器运行状况检查更保守的运行状况检查。

https://cloud.google.com/compute/docs/instance-groups/creating-groups-of-managed-instances#monitoring_groups

我有一段时间(6个月左右)还没有看到这种错误,所以我认为这是Google Cloud的一个错误,他们修正了这个错误。