事情就是这样:
我没有找到问题的解决方案,因为后端不是基于标准的Web服务器,只是有人知道ELB健康检查系统发送了什么类型的消息,因为我们&#39 ;在任何地方都找不到关于此的文档。
非常感谢帮助。谢谢。
答案 0 :(得分:33)
Amazon ELB有一个可自定义的健康检查系统,但也是一个 自动的,如here所述
使用可自定义,您可能会参考可通过AWS管理控制台(请参阅Configure Health Check Settings)或通过API(请参阅ConfigureHealthCheck)配置的运行状况检查。
HealthCheck数据类型文档的 Target 字段概述了以这种方式配置健康检查的要求:
指定要检查的实例。协议是TCP, HTTP,HTTPS或SSL。有效端口的范围是一(1)到 65535
注意强>
TCP是默认值,例如,指定为TCP:端口对 “TCP:5000”。在这种情况下,运行状况检查只是尝试打开TCP 连接到指定端口上的实例。 无法连接 在配置的超时内被认为是不健康的。
SSL也被指定为SSL:端口对,例如,SSL:5000。
对于HTTP或HTTPS协议,情况有所不同。您必须这样做 在字符串中包含一个ping路径。 HTTP被指定为 HTTP:端口; /; PathToPing;例如,分组 “HTTP:80 /天气/美国/ WA /西雅图”。在这种情况下,HTTP GET请求是 发给给定端口和路径上的实例。 任何其他答案 超时期限内的“200 OK”被认为是不健康的。
HTTP ping目标的总长度需要为1024 16位 Unicode字符或更少。
[强调我的]
使用自动,您可能会参考Why is the health check URL different from the URL displayed in API and Console?中原因中描述的运行状况检查:
除了为负载均衡器配置的运行状况检查外, 服务执行第二次健康检查以防止 实例在没有终止的情况下导致的潜在副作用 被取消注册。要执行此检查,负载平衡器将打开一个 配置运行状况检查的同一端口上的TCP连接 使用,然后在运行状况检查后关闭连接 完成。 [强调我的]
段落解决方案在此澄清了有效负载为零,即它类似于上面针对可配置运行状况检查所描述的非HTTP / HTTPS方法:
这项额外的健康检查不会影响您的表现 应用程序,因为它不会向您的后端发送任何数据 实例。您无法禁用或关闭此运行状况检查。
假设您的 RESTful API服务器(内置HTTP解析器)应该只提供HTTP,您需要处理两项运行状况检查:
HTTP GET
请求,并且必须在指定的超时内使用200 OK
回答被认为是健康的时期。总之,您的服务器似乎已经表现得非常好了,您只是对第二次健康检查的行为感到恼火 - ELB是否真的认为您的服务器不健康?
答案 1 :(得分:1)
据我所知,这只是一个寻找200 OK http响应的HTTP GET请求。