【问题标题】:AWS Load Balancer EC2 health check request timed out failureAWS 负载均衡器 EC2 运行状况检查请求超时失败
【发布时间】:2017-11-08 07:05:16
【问题描述】:

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

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 实例的所有流量。

【问题讨论】:

  • 您能否向我们展示您的负载均衡器上的运行状况检查配置?
  • 刚刚添加!
  • 我没有发现您的负载均衡器和 VPC/安全组配置有任何问题。我猜您的应用程序根本没有为/ 的请求返回 200 响应代码。您的应用程序是否可能会针对该路径返回 301 响应?
  • 当我 curl -I localhost:9292 时,它返回 200,所以我很困惑
  • 您是否可以将子网中另一个框的curl -I $InstanceIP:9292 作为目标,并且与 ALB 属于同一安全组的成员?如果是,请确保您的 ALB 与目标框位于同一 AZ。

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


【解决方案1】:

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

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

这是a link 的手绘图像,它帮助我指出了我的问题,希望可以帮助其他在设置时遇到问题的人。图片超过2MB,我没有直接放在这里。

也很高兴回答任何其他问题!

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2019-08-26
  • 2017-01-05
  • 2020-05-28
  • 2016-06-09
  • 2020-04-28
  • 2021-02-21
  • 2021-04-04
  • 1970-01-01
相关资源
最近更新 更多