我们正在使用 GCE 并收到一个非常奇怪的错误:
“加载健康状态时出错”
我们在所有 HTTP 负载均衡器上都看到了此错误。健康检查失败似乎对实际服务没有任何影响。换句话说,服务器本身运行正常,但健康检查为“红色”。
我们使用 DM 来设置环境,因此我们现在运行的与以往完全相同。直到今天,我们一直在使用测试版 API 来处理所有事情。我们的理论是,如果我们将所有内容转移到使用“v1”,我们就可以解决这个问题。我们了解到,即使使用所有“v1”位,我们仍然会看到相同的错误。
tcpdump -vvvs 1500 -l -A 端口 80
20:01:21.249194 IP (tos 0x80, ttl 64, id 0, offset 0, flags [DF], proto TCP (6), length 146)
130.211.1.239.42560 > master-game-100-tbmatch-us-central1-a-xxxx.c.radiant-cloud.internal.http: Flags [P.], cksum 0xe9bd (correct), seq 1:95, ack 1, win 222, options [nop,nop,TS val 92585061 ecr 407465], length 94
E.....@.@.......
[email protected]...............
...e..7.GET /healthz HTTP/1.1
Host: 10.240.0.30
User-Agent: GoogleHC/1.0
Connection: Keep-alive
我们看到健康检查请求正在接收...
20:01:21.250109 IP (tos 0x0, ttl 63, id 15146, offset 0, flags [DF], proto TCP (6), length 155)
master-game-100-tbmatch-us-central1-a-0buf.c.radiant-cloud.internal.http > 130.211.1.239.42560: Flags [P.], cksum 0x905d (incorrect -> 0xb6e0), seq 1:104, ack 95, win 220, options [nop,nop,TS val 407465 ecr 92585061], length 103
E...;*@.?.pc
[email protected]......].....
..7....eHTTP/1.1 200 OK
Content-Length: 2
Content-Type: text/plain
Date: Mon, 11 Jan 2016 20:01:21 GMT
ok
我们发现我们的服务像过去一样做出了适当的响应。还有人遇到过这个问题吗?
答案1
您需要检查以下几件事:
检查实例上的 iptables,确认它们是否阻止了来自 IP 169.254.169.254 的流量(此 IP 属于元数据服务器,健康检查从此 IP 发送到实例)。
通过运行以下命令从负载均衡器后面的任意实例运行 tcpdump:
tcpdump -A -n host 169.254.169.254
并检查标志使用命令检查“googleaddressmanager”是否正在您的实例上运行
ps aux | grep googleaddress*
。Googleaddressmanager 是一个启动脚本,负责管理从项目元数据到实例的所有地址。检查运行状况检查是否正在监听与实例上运行的服务相同的端口。
如果您的设置具有默认值,我建议将“不健康阈值”参数设置为 5,而不是默认值 2。
更多信息请见这里