Amazon ELB 健康检查如何工作?

Amazon ELB 健康检查如何工作?

我在为我的服务器配置 ELB 时遇到了问题。

我启动了 2 个具有完全相同配置的微实例并尝试进行负载平衡。但它们从未通过健康检查(HTTP 端口 80 路径:“/”)。

  • 网站上 Ping 没问题。80 上的 telnet 也正常。

健康检查如何进行?我做错了什么吗?

编辑:

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

答案1

我也遇到同样的问题。我只是让它检查 TCP:80 作为临时解决方案(效果很好)。

答案2

我得出的结论是,除了是 HTTP 200 响应之外,响应还必须包含某些标头。我曾经遇到过从实例上运行的 tomcat 服务器返回的 HTTP 200 不起作用的情况,但 httpd 提供的静态 html 页面(也返回 200 代码)工作正常。查看标头,少数差异之一是 tomcat 不包含内容类型。但不确定为什么这会有所不同。

答案3

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

如果请求成功处理,那么要问的第二件事是:您是否已配置服务器的安全组,以便将对端口 80 的访问限制为特定的源地址或子网?如果是这样,您需要将 ELB 的安全组添加到过滤器中。该组始终称为:

amazon-elb/amazon-elb-sg

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

答案4

因此我只需将其指向一个静态 html 文件(而不是 php 页面)即可使 http 检查正常工作。

尽管在使用 curl 等时“/”返回了有效的 http 状态,但它不起作用。但是“/file.html”通过了健康检查。

相关内容