AWS Load Balancer EC2 健康检查请求超时失败

AWS Load Balancer EC2 health check request timed out failure

我正试图沉迷于 DevOps,但我 运行 遇到健康检查请求超时失败。问题是我的 Elastic Load Balancer 向我的 EC2 实例发送健康检查并获得网络超时。我不确定我做错了什么。我正在关注 this tutorial,并且我已经完成了包括 "Using a Elastic Load Balancer" 在内的所有步骤。我的 EC2 实例似乎工作正常,我能够从 EC2 实例内成功地 curl localhost 端口 9292。

EC2 实例安全组设置:

弹性负载均衡器设置:

我的 ELB 路由目标组通过 HTTP 打开了端口 9292,这是我的目标组中不健康的目标的屏幕截图。

健康检查配置:

我有一个 VPC,我的 EC2 实例是其中的一部分,我的 ELB 连接到同一个 VPC。我没有安装 Apache,也没有安装 nginx。据我了解,我不需要这些。我有一个 Rails Puma 服务器 运行,我可以向服务器发送成功的 curl 请求。

我的直觉是我的 ELB 无法访问我的 EC2 实例,导致网络超时和健康检查失败。我找不到原因。有任何想法吗?这个 SO post 没有多大帮助。我的安全组是否配置错误?还有什么可能会阻止从 ELB 到我的 EC2 实例的路由请求?

另外,有没有办法查看我的 EC2 实例的网络请求/日志?我一直看到 VPC 流日志记录,但我觉得有更简单的替代方案。

Here's something 我在 AWS 论坛上发帖但没有用。

更新:我可以从 EC2 实例中很好地卷曲目标的私有 IP。我不认为这是目标实例,我认为这与安全组设置有关。我无法确定原因,因为我基本上允许从负载均衡器到 EC2 实例的所有流量。

我在 "Setup your VPC" 步骤中犯了错误。我完成了为 RDS 实例创建子网。我继续启动一个实例,当我切换到我的 VPC 时 AWS 选择的默认子网是我为我的 RDS 创建的子网,它不是 public 子网。因此,来自任何 EC2 实例或我的负载均衡器的任何尝试都无法到达它,因为我只设置了我的 public 子网来接收请求。

解决方案是创建一个新实例,这次选择正确的 public 子网。我的原始 EC2 实例与私有子网关联,而负载均衡器指向 public 子网。

这里是 a link 手绘图像,它帮助我查明了我的问题,希望可以帮助其他遇到设置问题的人。我没有直接把图片放在这里,因为它大于2MB。

也很高兴回答任何进一步的问题!