如何调试失败的 AWS 弹性负载均衡器健康检查

Posted

技术标签:

【中文标题】如何调试失败的 AWS 弹性负载均衡器健康检查【英文标题】:How to debug failed AWS elastic load balancer health checks 【发布时间】:2014-01-08 04:25:49 【问题描述】:

我在尝试调试 ELB 设置时不知所措。

我已经设置了一个带有单个实例的负载均衡器。我从实例和 EC2 内的另一个实例验证了配置的运行状况检查是否有效。此时,我删除了所有可能冲突的安全组规则。负载均衡器仍然认为实例不可访问。

我已经大量搜索并浏览了this checklist。

如何获取有关运行状况检查失败的更多信息?我能做的最接近负载均衡器并重现故障的方法是什么?

谢谢!

【问题讨论】:

【参考方案1】:

由于以下一种或多种原因,您的注册实例可能无法通过负载均衡器执行的运行状况检查:

问题:实例关闭与负载均衡器的连接。

原因:如果连接空闲超过 60 秒,Elastic Load Balancing 会终止连接。当负载均衡器的两端(客户端到负载均衡器和负载均衡器到后端实例)都没有发生读取或写入事件时,将建立空闲连接。

解决方案:在您的注册实例上将空闲超时设置为至少 60 秒。

问题:响应超时。

原因:当负载均衡器执行健康检查时,实例可能会承受很大的负载,并且响应时间可能比您配置的超时间隔长。

解决方案:尝试调整健康检查设置的超时时间。

问题:公钥认证失败。

原因:如果您使用启用了后端身份验证的 HTTPS 或 SSL 负载均衡器,如果证书上的公钥与配置的公钥不匹配,则公钥身份验证将失败负载均衡器。

解决方案:检查您的 SSL 证书是否需要更新。如果您的 SSL 证书是最新的,请尝试在负载均衡器上重新安装证书。

以下指南可帮助您对 Elastic Load Balancer 进行进一步故障排除: Troubleshoot Elastic Load Balancing

尤其是健康检查:Troubleshooting Elastic Load Balancing: Health Check Configuration

【讨论】:

谢谢安德烈。不幸的是,我没有使用 SSL,我的 tomcat 连接超时设置为 77 秒,并且我验证它实际上仅在所述数量之后才关闭连接,并且服务器上没有活动可言。我检查了安全组配置。还有一些我做错了。从 AWS 工具提供的信息中,我无​​法弄清楚是什么。 @jbelis HealthCheck 连接到 Apache。在日志中查找以下内容 (/var/log/httpd/access_log):10.2.3.4 - - [31/Jan/2012:18:34:59 +0000] "GET / HTTP/1.1" 200 7583 "-" "ELB-HealthChecker/1.0"

以上是关于如何调试失败的 AWS 弹性负载均衡器健康检查的主要内容,如果未能解决你的问题,请参考以下文章

ECS 服务的 AWS 网络负载均衡器运行状况检查失败

AWS 代码部署部署失败

aws弹性负载均衡器未分发

AWS 负载均衡器运行状况检查:运行状况检查失败,代码如下:[301]

如何使 DNS ARecord 指向 AWS 弹性 beanstalk 负载均衡器?

健康检查类型ELB具有多个负载均衡器