AWS Load Balancer EC2运行状况检查请求超时失败

时间:2017-06-07 05:09:51

标签: ruby-on-rails amazon-web-services amazon-ec2 elastic-load-balancer

我正在尝试使用DevOps来解决问题并且我遇到了运行状况检查请求超时失败。问题是我的Elastic Load Balancer向我的EC2实例发送运行状况检查并获得网络超时。我不确定我做错了什么。我正在关注this tutorial并完成了所有步骤,包括“使用弹性负载均衡器”。我的EC2实例似乎工作正常,我能够在EC2实例中成功地在端口9292上卷曲localhost。

EC2实例安全组设置: description

Elastic Load Balancer设置: enter image description here

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

健康检查配置:enter image description here

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

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

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

Here's something我在AWS论坛上发帖但无济于事。

更新:我可以在EC2实例中正常卷曲目标的私有IP。我认为这不是目标实例,我认为这与安全组设置有关。我无法确定原因,因为我基本上允许从Load Balancer到EC2实例的所有流量。

1 个答案:

答案 0 :(得分:6)

我在“设置您的VPC”步骤中犯了错误。我完成了为RDS实例创建子网。我开始启动一个实例,当我切换到我的VPC时,AWS选择的默认子网是我为RDS制作的子网,它不是公共子网。因此,任何来自任何EC2实例或我的负载均衡器的尝试都无法访问它,因为我只设置了我的公共子网来接收请求。

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

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

很高兴再回答任何问题!