首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >健康探针标记实例为不健康,但不是

健康探针标记实例为不健康,但不是
EN

Stack Overflow用户
提问于 2017-08-08 13:45:59
回答 1查看 1K关注 0票数 6

对于我的节点应用程序,我使用VM比例集。我的应用程序有一个可以通过www.mydomain.com/api/healthcheck公开访问的动作,并且只打印一些json。当我将我的健康探测器配置为使用TCP协议时,一切正常工作,我的api也返回预期的json (和状态200)。然而,当我现在切换我的健康探测器使用HTTP和path=/api/healthcheck时,我的网站就无法访问了(ERR_CONNECTION_TIMED_OUT.我猜负载平衡器会取出所有实例,因为健康探测器告诉他每个实例都是不健康的)

我在我的节点应用程序前面使用nginx,但我也尝试(用于测试)将我的LoadBalancer配置为将端口80路由到backendport 8080 (在这里,我的节点应用程序在每台机器上运行,这样就可以避免nginx代理)。但我也有同样的行为。

我不知道为什么我的自定义健康检查不起作用。希望你能帮上忙。

编辑:为了测试,我做了以下工作:

  • 在每个VM的3000端口上运行另一个nodejs应用程序,它只打印"hello world“(没有nginx代理!)
  • 为端口3000创建LB规则,并将我的NSG配置为允许所有人:3000
  • 在开始时,我的健康探测被配置为使用tcp
  • 结果:mydoamin.com:3000/hello可用(打印hello并返回200)
  • 现在,我将我的健康探测器配置为使用http-protocol、端口3000和location /hello
  • 结果:我的整个网络应用程序都没有了
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-14 18:49:54

我看不见你服务器的代码,所以很难弄清楚。如果您共享一些代码,这将更容易。

因此,让我们试着分析一下情况:

初始检查

到实例的连接已超时。

尝试从机器终端执行以下命令

代码语言:javascript
复制
curl –I private-IP-address-of-the-instance:port/health-check-target-page

现在取决于不同的原因.

初步检查结果:非200响应

  • 没有在实例上配置目标页。
  • 未设置响应中内容长度标题的值。
  • 应用程序未配置为接收来自负载均衡器的请求或返回200响应代码。

初始检查结果:能够直接连接到实例

  • 实例未能在配置的响应超时期间内响应。
  • 实例负载很大,响应时间比配置的响应超时时间要长。
  • 如果您正在使用HTTP或HTTPS连接,并且在ping path字段中指定的目标页上执行健康检查(例如,HTTP:80/index.html),则目标页面可能需要比您配置的超时时间更长的响应时间。

其他:实例没有从负载均衡器接收流量。

问题:实例的安全组正在阻塞负载均衡器的通信量.

在实例上执行数据包捕获以验证该问题。使用以下命令:

代码语言:javascript
复制
tcpdump port health-check-port
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45570112

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档