【问题标题】:403 errors from load balancer while new instances are booting新实例启动时来自负载均衡器的 403 错误
【发布时间】:2013-12-18 10:56:52
【问题描述】:

我有一个在弹性豆茎上运行的 RoR 应用程序。一段时间以来,我偶尔会看到来自乘客的 403 错误。大多数时候只有 1 个服务器在运行,但在白天的繁忙时段会增加到 3 或 4 个实例。

会话粘性未开启

我注意到当一个新服务器启动时,ELB 会在捆绑安装完成之前向它发送请求。

如果我 ssh 到新启动的服务器,我可以在 /var/app/current/ 中看到该应用程序尚未安装,如果我运行 top,它看起来像 bundler 正在运行并使用 cc1 等编译东西。 /var/app/support/log/passenger.log 显示正在接收对我的 rails 应用程序中有效 url 的请求并以 404 响应。这不足为奇,因为该应用程序还没有出现

5-10 分钟后,所有编译完成,应用文件出现在 /var/app/current 中,一切正常。

这对我来说似乎不太正确。如何设置 ELB/我的 rails 应用程序,以便 ELB 可以判断何时准备好接收请求?

【问题讨论】:

    标签: ruby-on-rails amazon-web-services passenger load-balancing amazon-elastic-beanstalk


    【解决方案1】:

    我找到了答案。没有设置应用程序运行状况检查 url。在这种情况下,ELB 会 ping 实例以查看它是否健康,即它检查它是否已启动,而不是检查 rails 是否启动并运行。将运行状况检查 url 设置为“/login/”为我修复了它,因为这会给出一个 404,直到 rails 正在运行,然后是 200。

    Elastic beanstalk 需要 2 次正确响应才能认为实例是健康的。它每 5 分钟检查一次实例。这意味着实例可能需要一段时间才能开始服务请求。即它需要启动时间 + 等待来自 elb 的下一次轮询 + 5 分钟才能看到任何实际流量

    【讨论】:

    • 谢谢 - 这是一个很大的帮助。
    猜你喜欢
    • 1970-01-01
    • 2018-08-20
    • 2014-11-20
    • 1970-01-01
    • 2021-12-07
    • 2020-05-07
    • 2018-09-20
    • 2021-01-03
    • 1970-01-01
    相关资源
    最近更新 更多