【问题标题】:Why does Elastic Load Balancing report 'Out of Service'?为什么 Elastic Load Balancing 报告“停止服务”?
【发布时间】:2011-10-29 20:28:03
【问题描述】:

我正在尝试在 AWS 中设置 Elastic Load Balancing (ELB) 以在多个实例之间拆分请求。我已经基于同一个 AMI 创建了我的网络服务器的多个映像,并且我能够单独 ssh 到每个映像并通过每个不同的公共 DNS 访问该站点。

我已将每个实例添加到负载均衡器,但它们都返回 Status: Out of Service,因为它们未通过运行状况检查。我很困惑,因为我可以从公共 DNS 访问每个实例,但是每当我访问负载均衡器 DNS 名称时都会超时。

我一直在尝试通读所有文档并在谷歌上搜索它,但我被困住了。任何指向正确方向的指针或链接将不胜感激。

【问题讨论】:

    标签: amazon-web-services load-balancing amazon-elb


    【解决方案1】:

    健康检查(默认情况下)通过访问负载均衡器中每个实例上的 index.html 来进行。如果实例的文档根目录中没有 index.html - 默认运行状况检查将失败。您可以在创建弹性负载均衡器时设置自定义协议、端口和路径进行健康检查。

    【讨论】:

    • 如果你还没有安装 apache/nginx.. 为小费干杯。
    • 这是我的问题,我的整个 Web 应用程序都需要登录,因此运行状况检查将 302 重定向到登录页面!
    【解决方案2】:

    我就同样的问题联系了 AWS 支持。显然,如果 ELB 后面的所有实例都停止了很长时间,他们的系统不知道如何处理这些情况。如果您立即需要,AWS 支持可以手动刷新状态。

    建议修复它以从 ELB 中取消注册 ec2 实例,而不是仅仅停止它们并在重新启动时重新注册它们。

    【讨论】:

    • 我有同样的问题,删除实例(在我创建 ELB 时已停止)并在它们运行时添加,似乎无法解决问题。我仍然停止服务
    • 这是我发现对我有用的相同解决方案。
    • 如果其中一个实例出现故障,我们必须进行手动交互才能使 ELB 恢复到默认工作状态,这很糟糕。在我看来,它应该能够通知 ELB 它已重新上线,并且 ELB 将其标记为重新投入使用。如果你只有 2 个实例(不同的可用区)并且它们都在一夜之间崩溃了,我不禁想到会发生什么……
    【解决方案3】:

    最后我得到了这个工作。问题出在 Amazon 安全组,因为我已将端口 80 的访问权限限制在我的开发区域中的少数机器上,并且负载均衡器无法访问实例上的 apache 服务器。一旦负载均衡器获得对我的实例的访问权限,它就会In Service

    我在我的实例中使用tail -f /var/log/apache2/access.log 进行了检查,以验证负载平衡器是否正在尝试访问我的服务器,并查看服务器为负载平衡器提供的答案。

    希望这会有所帮助。

    【讨论】:

    • 我得到了这个“GET / HTTP/1.1”302 625“-”“ELB-HealthChecker/1.0”...你能帮我吗
    • 这意味着 LoadBalancer 可以访问该实例。它应该随时服务中
    • 它可能会帮助其他人。确保还检查您的 elb 安全组,我的不允许从 elb 到 ec2 实例的出站流量。
    • 在 EC2 控制台上,我设置了 Load Balancers -> Health Check -> Edit Health Check -> Ping Path: /index.html。我在sudo tail -f /var/log/httpd/error_log 中阅读了错误日志并需要touch /var/www/html/index.html,因为错误说Cannot serve directory /var/www/html/: No matching DirectoryIndex (index.html,index.php) found, and server-generated directory index forbidden by Options directive。 30 秒后,我的负载均衡器恢复正常。
    • 我遇到了这个问题,这是由于我的入站和出站规则都只允许端口 80 上的 HTTP。我需要在端口 443 上为 HTTPS 添加另一个规则。
    【解决方案4】:

    我想为您提供解决此问题的一般方法。设置好 apache 或 nginx 等 Web 服务器后,请尝试读取访问日志文件以查看发生了什么。在我的情况下,它报告401 error,因为我已经在 nginx 中添加了基本身份验证。当然,就像@ivankoni 提醒的那样,可能是因为您检查的文件不存在。

    【讨论】:

      【解决方案5】:

      就我而言,分配给实例和负载均衡器的安全组规则不允许流量在两者之间传递。这导致运行状况检查失败。

      【讨论】:

        【解决方案6】:

        我在编写有关托管 Web 应用程序的 AWS 教程时遇到了这个问题。 Step 7b 声明如下:

        "将 Ping 路径设置为 /。这会将查询发送到您的默认页面,无论是否 它被命名为 index.html 或其他名称。”

        他们可以将正斜杠放在引号中,例如“/”。确保你的健康检查中有这个,而不是这个“/”。 .

        【讨论】:

          【解决方案7】:

          添加这个是因为我花了好几个小时试图弄清楚...

          如果您配置了健康检查端点,但它仍然显示 Out of Service,这可能是因为您的服务器正在重定向请求(即返回 301302 响应)。

          例如,如果您的端点应该是/app/health/,但您只在 ELB 上的健康检查端点字段中输入 /app/health(没有尾部斜杠),您将不会收到 200 响应,因此健康检查会失败。

          【讨论】:

            【解决方案8】:

            我面临同样的问题,我将 Ping 协议从 https 更改为 ssl .. 它成功了!

            转到健康检查 --> 单击编辑健康检查 --> 将 Ping 协议从 HTTPS 更改为 SSL Ping 目标 SSL:443 超时 5 秒 间隔 30 秒 不健康阈值 5 健康门槛 10

            【讨论】:

              【解决方案9】:

              如果您的网络服务器运行良好,则意味着健康检查在一个不返回 200 的 url 上进行。

              对我有用的技巧:继续实例,输入 curl localhost:80/pathofyourhealthcheckurl

              在您可以调整您的健康检查网址以始终获得 200 响应之后。

              【讨论】:

              • 这确实帮助我找到了我的问题:我在我的 ec2 实例上启用了 .htaccess 密码保护。当然负载均衡器无法通过它。所以它得到了401。 :-)
              【解决方案10】:

              我遇到了类似的问题。该问题似乎是由于我使用 HTTP 运行状况检查以及使用 .htaccess 密码保护站点而引起的。

              【讨论】:

                【解决方案11】:

                我遇到了同样的错误,在我的情况下,我必须将特定的 html 文件从 s3 存储桶复制到“/var/www/html”位置。负载均衡器路径中引用的相同 html。

                复制 html 文件后问题解决。

                【讨论】:

                  【解决方案12】:

                  对于看到此线程的其他人,因为未列出:

                  检查运行状况检查是否正在检查响应服务器正在侦听的端口。

                  例如node.js 在端口 3000 上运行 -> 将健康检查指向端口 3000;

                  不是端口 80 或 443。这些是您的 ALB 将使用的。

                  我花了一个上午的时间。是的。

                  【讨论】:

                    【解决方案13】:

                    我也遇到了这个问题,这是由于我的负载均衡器安全组的入站和出站规则只允许端口 80 上的 HTTP 流量。我需要为端口 443 上的 HTTPS 流量添加另一个规则。

                    【讨论】:

                      猜你喜欢
                      • 2017-07-14
                      • 1970-01-01
                      • 1970-01-01
                      • 2016-11-28
                      • 1970-01-01
                      • 2018-11-16
                      • 2011-08-27
                      • 2012-05-01
                      • 1970-01-01
                      相关资源
                      最近更新 更多