连接到负载均衡器的 EC2 实例显示不健康状态

EC2 instance attached to a load balancer is showing Unhealthy status

我创建了一个负载均衡器并将其分配给 运行 EC2 实例之一。创建后,我导航到负载平衡下 AWS 控制台中的目标组部分,当我选择分配给负载均衡器的目标组时,它显示注册实例状态为 "Unhealthy" 并且注册实例上方有一条消息显示 "None of these Availability Zones contains a healthy target. Requests are being routed to all targets" 的窗格。在创建负载均衡器时,我选择了所有子网(可用区)。 下面提到了我用于健康检查的设置,

那么,为什么我注册的实例状态为 "Unhealthy",我如何 rectify/resolve 将状态更改为 "In-service"?

不健康 表示实例的健康检查失败。

要检查的事项:

  • 检查实例是运行一个网络服务器
  • 检查位于 healthcheck.html 的网页是否使用有效的 200 响应
  • 响应
  • 检查实例是否有允许在端口 80 (HTTP) 上访问的安全组

如果您在 运行 类似服务的多个 EC2 实例之间共享负载均衡器,请确保您的每个服务 运行 在不同的端口,否则您的服务将无法访问,因此你的健康检查不会通过

在我的例子中,ALB 上的健康检查配置是 / 和 https。

我通过以下步骤解决了问题。

  1. 检查安全组 - 我们是否打开了从 ALB SG 到 EC2 SG 的所需端口。
  2. Login to server and check does IIS server's default site has 443 port opened if your health-check is on 443. (whatever port you are using for health checks).

使用 curl 命令解决问题。

  1. 如果您想检查 HTTPS,请使用以下命令检查响应。使用 -k 或 --insecure 忽略 SSL 问题。

    curl https://[服务器IP] -k

  2. 对于 HTTP 测试,请使用以下命令。

    curl http://[服务器IP]