Amazon ELB自动运行状况检查有何功能以及预期结果如何?

naz*_*gul 20 amazon-ec2 amazon-web-services amazon-elb

这是事情:

  1. 我们已经实现了一个C++ RESTful API服务器,内置HTTP解析器,没有像apache这样的标准HTTP服务器或类似的东西
  2. 它已经在亚马逊结构中使用了几个月,使用普通和SSL通信,并且没有发现任何与亚马逊基础设施相关的问题
  3. 我们正在使用Amazon ELB部署我们的第一个后端
  4. 亚马逊ELB有一个可定制健康检查系统,而且还为自动之一,说明这里
  5. 我们没有找到健康检查系统发送的数据的文档
  6. 后端简单地挂在套接字读取指令上,最终关闭连接

我不是在寻找问题的解决方案,因为后端不是基于标准的Web服务器,只要有人知道ELB健康检查系统发送了什么类型的消息,因为我们没有找到关于此的文档. ,任何地方.

非常感谢帮助.谢谢.

Ste*_*pel 33

亚马逊ELB有一个可定制健康检查系统,而且还为自动之一,说明这里

通过可自定义,您可能会参考可通过AWS管理控制台配置的运行状况检查(请参阅配置运行状况检查设置)或通过API(请参阅ConfigureHealthCheck).

HealthCheck数据类型文档的Target字段中概述了以这种方式配置健康检查的要求:

指定要检查的实例.协议是TCP,HTTP,HTTPS或SSL.有效端口的范围是一(1)到65535.

注意

  • TCP是默认值,指定为TCP:端口对,例如"TCP:5000".在这种情况下,运行状况检查只是尝试打开与指定端口上的实例的TCP连接.无法在配置的超时内连接被认为是不健康的.

  • SSL也被指定为SSL:端口对,例如,SSL:5000.

  • 对于HTTP或HTTPS协议,情况有所不同.您必须在字符串中包含ping路径.HTTP被指定为HTTP:port; /; PathToPing; 分组,例如"HTTP:80/weather/us/wa/seattle".在这种情况下,将向给定端口和路径上的实例发出HTTP GET请求.超时期限内除"200 OK"以外的任何答案都被认为是不健康的.

  • HTTP ping目标的总长度必须是1024个16位Unicode字符或更少.

[强调我的]

有了自动您大概指的是在一段描述的健康检查事业为什么在API和控制台中显示的网址不同的健康检查URL?:

除了为负载均衡器配置的运行状况检查之外,服务还会执行第二次运行状况检查,以防止由于实例终止而未取消注册而导致的潜在副作用.要执行此检查,负载平衡器会在运行状况检查配置为使用的同一端口上打开TCP连接,然后在运行状况检查完成后关闭连接.[强调我的]

段落解决方案在此处阐明了有效负载为零,即它类似于上面针对可配置运行状况检查所描述的非HTTP/HTTPS方法:

此额外运行状况检查不会影响应用程序的性能,因为它不会向后端实例发送任何数据.您无法禁用或关闭此运行状况检查.

摘要/解决方案

假设你的RESTful API服务器,内置的HTTP解析器应该只提供HTTP,你需要处理两个健康检查:

  1. 第一个将您自己配置为HTTP:端口; /; PathToPing - 您将收到一个HTTP GET请求,并且必须200 OK在指定的超时期限内回答才能被视为健康.
  2. 第二个由服务自动配置 - 它将在上面配置的HTTP端口上打开TCP连接,不会发送任何数据,然后在运行状况检查完成后关闭连接.

总而言之,您的服务器似乎已经表现得非常好了,您只是对第二次健康检查的行为感到恼火 - ELB真的认为您的服务器不健康吗?