【问题标题】:AWS ELB load balancers keeps failing health check (HTTP)AWS ELB 负载均衡器不断失败运行状况检查 (HTTP)
【发布时间】:2017-01-05 23:28:18
【问题描述】:

在我的 EC2 实例上,我的应用使用端口 80,因此无法安装 Apache 来简单地让 ELB 运行状况检查成功。

对于 ELB 上的健康检查设置, 我正在使用端口 - HTTP/80 Ping 路径 - /index.html

我也将此 index.html 放在 /var/www 和 /var/www/html/ 目录中。

<!DOCTYPE html PUBLIC "-//IETF//DTD HTML 2.0//EN">
<HTML>
<BODY>
   <H1>Hi</H1>
   <P>Hello to the World.</P> 
</BODY>
</HTML>

任何线索为什么这会导致健康检查失败? 没有这个,没有流量流向我的 EC2 实例。

【问题讨论】:

  • 您必须安装 apache 并使其监听端口 80 并将此路径 /var/www/html/ 添加为 apache 配置文件中的 doc 根目录,然后只有运行状况检查才会成功。或者您可以将该健康检查更改为 TCP 而不是 HTTP。
  • 简而言之,您需要某种 Web 服务器来通过 http 健康检查。
  • 由于我的应用程序使用端口 80,我不认为添加 apache 是一个选项,因为我想保持 80 免费。如果我更改为 TCP - 我该怎么办?
  • 你不必为 TCP 做任何事情,只需将健康检查更改为 TCP
  • 已经做了,没用。将其设置为 TCP - 并依次使用我在安全组中拥有的不同入站端口。不起作用 - 仍然不健康

标签: amazon-web-services amazon-ec2 amazon-elb elastic-load-balancer


【解决方案1】:

发现问题..一旦我为我的 LB 创建了一个新的安全组并将其保留为用于 EC2 的 SG 的 IB,它就可以正常工作。在 LB 和 EC2 之间保持相同的 SG 会导致它因任何原因而中断。

http://docs.aws.amazon.com/elasticloadbalancing/latest/classic/elb-security-groups.html

【讨论】:

    【解决方案2】:

    只要页面返回 200 响应,它就应该最终通过健康检查。健康检查配置包括健康检查需要返回良好结果的次数以及检查频率。因此,每 30 秒检查一次的健康计数为 5 需要 2.5 分钟才能恢复为健康。

    如果 HTTP 健康检查失败,请根据您配置的服务器在端口 8080 或 80 上尝试 TCP 健康检查

    此外,以防万一,请检查您的 VPC 配置是否允许从负载均衡器连接到 EC2 实例。如果它们在同一个子网中,这将是自动的,但网络 ACL 可能会影响不同子网之间的连接。

    还检查以下内容;

    您的 ELB 后面的实例是否运行 Web 服务器?如果是,它会返回“200”(OK)吗?如果不是,那是你的问题。

    如果您正在运行返回 200 的 Web 服务,您的安全组是否对 ELB 开放?这意味着 ELB 的源安全组必须允许进入您实例的安全组。

    ping路径应该是你在浏览器中输入ELB的url后要点击的文件名。

    【讨论】:

    • 无法使用 HTTP,因为我不需要 Apache。发现了问题..一旦我为我的 LB 创建了一个新的安全组并将其保留为用于 EC2 的 SG 的 IB,它就可以正常工作。在 LB 和 EC2 中保持相同的 SG 会导致它因任何原因而中断。 docs.aws.amazon.com/elasticloadbalancing/latest/classic/…
    猜你喜欢
    • 2019-08-26
    • 2020-05-28
    • 2016-06-09
    • 2017-11-08
    • 2020-04-28
    • 2021-02-21
    • 2018-01-20
    • 2021-04-04
    • 1970-01-01
    相关资源
    最近更新 更多