Google Compute Engine运行状况检查失败

reg*_*low 3 google-compute-engine

我在两个VM实例上有一个node.js应用程序,我正在尝试通过网络负载平衡来实现负载平衡.为了测试我的服务器已启动并正在服务,我在应用程序内部侦听端口上有健康检查请求'/health.txt'.我有相同的标签,防火墙规则等相同配置的两个实例,但健康检查没有一个实例不断,我可以用我的内部网络上或从外部卷曲做检查和测试工作正常,在这两种情况下,但网络负载平衡器始终将一个实例报告为关闭.

我使用了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]
Run Code Online (Sandbox Code Playgroud)

但在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]
Run Code Online (Sandbox Code Playgroud)

但是如果我从健康的实例>不健康的实例中卷曲同一个文件,那么我的'不健康'实例会很好地响应.

reg*_*low 7

在与Google Compute Engine团队联系后,我恢复了工作.GCE VM上有一个需要在引导时运行的服务进程,并在VM处于活动状态时继续运行.该过程名为google-address-manager.它应该在0-6的运行级别运行.出于某种原因,此服务已停止,并且在我的某个VM启动/重新启动时无法启动.手动启动服务.以下是我们确定错误的步骤:(这是Debian VM)

sudo ip route list table all
Run Code Online (Sandbox Code Playgroud)

这将显示您的路线表.在表中,应该有一个到Load Balancer Public IP的路由:

local lb.pub.ip.addr dev eth0  table local  proto 66  scope host
Run Code Online (Sandbox Code Playgroud)

如果没有,请检查google-address-manager是否正在运行:

sudo service google-address-manager status
Run Code Online (Sandbox Code Playgroud)

如果它没有运行,请启动它:

sudo service google-address-manager start
Run Code Online (Sandbox Code Playgroud)

如果它开始正常,请检查您的路由表,您现在应该有一条到您的负载均衡器IP的路由.您也可以手动添加此路线:

sudo /sbin/ip route add to local lb.pub.ip.addr/32 dev eth0 proto 66
Run Code Online (Sandbox Code Playgroud)

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

  • 我在这个问题上使用了regretoverflow,我们发现应用来自https://github.com/GoogleCloudPlatform/compute-image-packages/pull/121的修复程序允许google-address-manager正确启动. (2认同)