如何亚马逊ELB健康检查工作?

我在为我的服务器configurationELB时遇到问题。

我使用完全相同的conf来启动2个微型实例,并尝试进行负载平衡。 但是他们从来没有通过健康检查(HTTP端口80path:“/”)。

  • Ping在网站上没问题。 80也是telnet。

健康检查是如何工作的? 我做错了什么?

编辑:

  • 直接浏览器访问和GET(通过curl)都可以正常工作(状态200)

我也有同样的问题。 我只是把它检查TCP:80作为一个临时解决scheme(工作正常)。

我得出的结论是,除了作为HTTP 200响应之外,响应必须包含某些标题。 我有一个从我的tomcat服务器返回的HTTP 200运行的实例不工作,但由httpd(也返回200代码)服务的静态HTML页面正常工作。 看看这些头文件,less数的差异之一是tomcat中没有包含内容types。 不知道为什么会有所作为,但。

我假定它对每个服务器的指定path“/”执行HTTP GET请求,并查找成功的HTTP响应代码(200)。 您可以通过浏览器(或CLI工具,如wgetcurl )成功地向http://<backend_server_IP>:80/发出GET请求。

如果请求服务成功,第二件要问的是:你是否configuration了服务器的安全组,以便对端口80的访问仅限于特定的源地址或子网? 如果是这样,您需要将ELB的安全组添加到filter。 该组总是被称为:

 amazon-elb/amazon-elb-sg 

因此,您可以将其添加到AWS控制台“安全组”部分的“源”字段下。

您必须在您的networking服务器上使用特定的域名。 或者您设置您的Web服务器以满足任何请求(绑定*)或按照文档 。

所以我刚刚通过指向一个静态的HTML文件(而不是一个PHP页面)的http检查工作。

'/'不起作用,尽pipe它在使用curl时返回一个有效的http状态等。然而'/file.html'确实通过了健康检查。

  • 首先,确保ELB安全stream量允许来自实例的stream量返回,并且实例安全组允许来自ELB的stream量。
  • 有人提到响应必须是200
  • 最后你有多个接口,我可以告诉它将随机select哪个接口。
  • ELB需要在与IGW互联网路由的子网中