Google compute engine 谷歌计算引擎健康检查失败

Google compute engine 谷歌计算引擎健康检查失败,google-compute-engine,Google Compute Engine,我在两个虚拟机实例上有一个node.js应用程序,我正试图通过网络负载平衡来实现负载平衡。为了测试我的服务器是否正常运行,我在我的应用程序内部侦听端口上有一个健康检查请求“/health.txt”。我有两个实例使用相同的标签、防火墙规则等进行了相同的配置,但是健康检查持续失败,我可以在内部网络上或从外部使用curl进行检查,测试在两个实例上都可以正常工作,但网络负载平衡器始终报告一个实例为关闭 我使用了ngrep并从运行状况实例运行,我看到: T 169.254.169.254:65374 -&

我在两个虚拟机实例上有一个node.js应用程序,我正试图通过网络负载平衡来实现负载平衡。为了测试我的服务器是否正常运行,我在我的应用程序内部侦听端口上有一个健康检查请求“/health.txt”。我有两个实例使用相同的标签、防火墙规则等进行了相同的配置,但是健康检查持续失败,我可以在内部网络上或从外部使用curl进行检查,测试在两个实例上都可以正常工作,但网络负载平衡器始终报告一个实例为关闭

我使用了ngrep并从运行状况实例运行,我看到:

T 169.254.169.254:65374 -> my.pub.ip.addr:3000 [S]
#
T my.pub.ip.addr:3000 -> 169.254.169.254:65374 [AS]
#
T 169.254.169.254:65374 -> my.pub.ip.addr:3000 [A]
#
T 169.254.169.254:65374 -> my.pub.ip.addr:3000 [AP]
GET /health.txt HTTP/1.1.
Host: my.pub.ip.addr:3000.
.

#
T my.pub.ip.addr:3000 -> 169.254.169.254:65374 [A]
#
T my.pub.ip.addr:3000 -> 169.254.169.254:65374 [AP]
HTTP/1.1 200 OK.
X-Powered-By: NitroPCR.
Accept-Ranges: bytes.
Date: Fri, 14 Nov 2014 20:00:40 GMT.
Cache-Control: public, max-age=86400.
Last-Modified: Thu, 24 Jul 2014 17:58:46 GMT.
ETag: W/"2198506076".
Content-Type: text/plain; charset=UTF-8.
Content-Length: 13.
Connection: keep-alive.
.

#
T 169.254.169.254:65374 -> my.pub.ip.addr:3000 [AR]
但就GCE声称的不健康而言,我看到了:

T 169.254.169.254:61179 -> my.pub.ip.addr:3000 [S]
#
T 169.254.169.254:61179 -> my.pub.ip.addr:3000 [S]
#
T 169.254.169.254:61180 -> my.pub.ip.addr:3000 [S]
#
T 169.254.169.254:61180 -> my.pub.ip.addr:3000 [S]
#
T 169.254.169.254:61180 -> my.pub.ip.addr:3000 [S]

但是如果我从我的健康实例>不健康实例中卷曲相同的文件,我的“不健康”实例响应良好。

在与谷歌计算引擎团队联系后,我恢复了工作。GCE虚拟机上有一个服务进程需要在引导时运行,并在虚拟机处于活动状态时继续运行。这个过程被命名为google地址管理器。它应该在运行级别0-6下运行。由于某些原因,当我的一个VM引导/重新引导时,此服务已停止且不会启动。手动启动服务是有效的。下面是我们确定错误的步骤:(这是Debian VM)

这将显示您的路线表。在表中,应该有到负载平衡器公共IP的路由:

local lb.pub.ip.addr dev eth0  table local  proto 66  scope host
如果没有,请检查google地址管理器是否正在运行:

sudo service google-address-manager status
如果它没有运行,请启动它:

sudo service google-address-manager start
如果启动正常,请检查路由表,现在应该有到负载平衡器IP的路由。您还可以手动添加此路线:

sudo /sbin/ip route add to local lb.pub.ip.addr/32 dev eth0 proto 66

我们仍然没有解决为什么地址管理器在启动时停止和不启动,但至少LB池是健康的

我与regretoverflow一起解决了这个问题,我们发现应用来自google地址管理器的修复程序可以正确启动。
sudo /sbin/ip route add to local lb.pub.ip.addr/32 dev eth0 proto 66