我正在尝试在AWS中设置Elastic Load Balancing (ELB)以在多个实例之间拆分请求。我已经基于相同的AMI创建了我的网络服务器的几个图像,并且我能够单独进入每个图像并通过每个不同的公共DNS访问该网站。
我已将每个实例添加到负载均衡器,但它们都返回Status: Out of Service
,因为它们未通过运行状况检查。我很困惑,因为我可以从其公共DNS访问每个实例,但每当我访问负载均衡器DNS名称时,我都会收到超时。
我一直在尝试阅读所有文档并使用Google搜索,但我被卡住了。任何指向正确方向的指针或链接都将非常感激。
答案 0 :(得分:20)
我就此问题与AWS支持部门联系。显然他们的系统不知道如何处理ELB背后的所有实例都停止了很长一段时间。如果您需要立即支持,AWS支持可以手动刷新状态。
建议修复它以从ELB取消注册ec2实例,而不是仅停止它们并在重新启动时重新注册它们。
答案 1 :(得分:16)
通过访问负载均衡器中包含的每个实例上的index.html,(默认情况下)进行运行状况检查。如果在实例的文档根目录中没有index.html,则默认运行状况检查将失败。您可以在创建弹性负载均衡器时设置自定义协议,端口和运行状况检查路径。
答案 2 :(得分:9)
最后,我得到了这个工作。问题出在亚马逊安全组上,因为我已将对端口80的访问限制在我的开发区域中的少数计算机上,并且负载均衡器无法访问该实例上的apache服务器。一旦负载均衡器获得了对我的实例的访问权限,它就会在服务中。
我在我的实例中使用tail -f /var/log/apache2/access.log
进行了检查,以验证负载均衡器是否正在尝试访问我的服务器,并查看服务器为负载均衡器提供的答案。
希望这有帮助。
答案 3 :(得分:2)
如果您的网络服务器运行正常,则表示运行状况检查会发送到不会返回200的网址。
一个适合我的技巧:继续实例,输入curl localhost:80 / pathofyourhealthcheckurl
在您可以调整您的健康检查网址后,总是有200响应。
答案 4 :(得分:1)
就我而言,分配给实例和负载均衡器的安全组规则不允许流量在两者之间传递。这导致健康检查失败。
答案 5 :(得分:1)
我面对同样的问题,我将Ping协议从https更改为ssl .. 它有效!
Go to Health Check --> click on Edit Health Check -- > change Ping protocol from HTTPS to SSL
Ping Target SSL:443 Timeout 5 seconds Interval 30 seconds Unhealthy Threshold 5 Healthy Threshold 10
答案 6 :(得分:0)
我想为您提供解决此问题的一般方法。当您设置了像apache或nginx这样的Web服务器时,请尝试读取访问日志文件以查看发生了什么。在我的场合,它报告401 error
因为我在nginx中添加了基本身份验证。当然,就像@ivankoni提醒的那样,可能因为您检查的文件不存在。
答案 7 :(得分:0)
我正在开发有关托管网络应用的AWS Tutorial并遇到了这个问题。 Step 7b声明如下:
"将Ping路径设置为/。这会将查询发送到您的默认页面 它被命名为index.html或其他东西。"
他们本可以在这样的语录中加上正斜杠" /"。确保你在健康检查中有这个而不是这个" /."
答案 8 :(得分:0)
添加这个是因为我花了好几个小时试图解决这个问题......
如果您配置了运行状况检查端点,但仍然显示Out of Service
,则可能是因为您的服务器正在重定向请求(即返回301
或302
响应。
例如,如果您的端点应该是/app/health/
,但您只需要在ELB上的运行状况检查端点字段中输入/app/health
(没有尾部斜杠),那么您将无法获得200响应,所以健康检查会失败。
答案 9 :(得分:0)
我有类似的问题。该问题似乎是由于我使用HTTP运行状况检查以及使用.htaccess密码保护站点引起的。
答案 10 :(得分:0)
我遇到了同样的错误,就我而言,必须将特定的html文件从s3存储桶复制到“ / var / www / html”位置。负载均衡器路径中引用的HTML相同。
复制html文件后,该问题已解决。
答案 11 :(得分:0)
对于其他未看到此线程的人:
检查运行状况检查是否正在检查响应服务器正在侦听的端口。
例如在端口3000上运行的node.js->将healthcheck指向端口3000;
不是端口80或443。这些是您的ALB将使用的端口。
我为此花了一个早晨。是。
答案 12 :(得分:0)
我也遇到了这个问题,这是由于我的负载均衡器安全组的入站和出站规则仅允许端口80上的HTTP流量。我需要为端口443上的HTTPS流量添加另一个规则。