2014-11-14 149 views
3

我有两个虚拟机实例上的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] 

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

回答

7

在与Google Compute Engine团队进行联系后,我恢复了工作。 GCE虚拟机上有一个服务进程,需要在启动时运行,并在VM处于活动状态时继续运行。该过程被命名为google-address-manager。它应该以运行级别0-6运行。出于某种原因,当我的一个VM启动/重启时,此服务停止并不会启动。手动启动服务。以下是我们所经历,以确定哪些是错误的步骤:(这是一个Debian VM)

sudo ip route list table all 

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

local lb.pub.ip.addr dev eth0 table local proto 66 scope host 

如果没有,检查谷歌地址管理器正在运行:

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池是健康

+2

我regretoverflow曾在这个问题上,并且我们发现从https://github.com/GoogleCloudPlatform/compute-image-packages/pull/121允许google-address-manager应用修复程序即可正确启动。 – David 2014-11-24 18:39:50