我为我的节点应用程序使用 VM 规模集。我的应用程序有一个可以通过公共访问的操作,www.mydomain.com/api/healthcheck
并且只打印一些 json。当我将运行状况探测配置为使用TCP
协议时,一切正常,并且我的 api 也返回了预期的 json(和状态 200)。但是,当我现在将运行状况探测切换为使用HTTP
和 path=/api/healthcheck
时,我的网站不再可访问(ERR_CONNECTION_TIMED_OUT
......我猜负载均衡器会取出所有实例,因为运行状况探测告诉他每个实例都不健康)
我在我的节点应用程序前面使用 nginx,但我也尝试(用于测试)配置我的 LoadBalancer 以将端口 80 路由到后端端口 8080(我的节点应用程序在每台机器上运行,所以我可以避免使用 nginx 代理)。但我得到了同样的行为。
我不知道为什么我的自定义健康检查不起作用。希望你能帮忙。
编辑:为了测试,我做了以下事情:
- 在每个 VM 上的端口 3000 上运行另一个 nodejs 应用程序,它只打印“hello world”(没有 nginx 代理!)
- 为端口 3000 创建一个 LB 规则,并将我的 NSG 配置为允许:3000 为所有
- 一开始,我的健康探测配置为使用
tcp
- 结果:
mydoamin.com:3000/hello
可用(打印hello并返回 200) - 现在我将运行状况探测配置为使用
http
-protocol、port3000
和 location/hello
。 - 结果:我的整个网络应用程序不再可用