运行状况检查失败,并显示以下代码:[502]

时间:2020-04-25 23:50:59

标签: amazon-web-services amazon-ec2 aws-application-load-balancer

我想提一下,我不是一个经验丰富的技术人员,但是我一直在尝试通过在线课程学习AWS,但我陷入了一个特定的问题:

我创建了两个目标组,每个目标组分别由两个EC2 linux实例和一些简单的代码作为每个实例的用户数据的一部分。

#/bin/bash
yum update -y
yum install httpd -y
systemctl start httpd
systemctl enable httpd
cd /var/www/html
echo "This is an INSTANCE" > index.html

然后,我使用HTTP侦听器(端口80)创建了一个应用程序负载平衡器。 ALB已与使用肯定具有公共访问权限的安全组的子网相关联(我将同一安全组用于具有公共访问权限的其他练习)

但是每次两个目标组都显示“
健康检查因以下代码而失败:[502]”。我已经尝试了所有可以想到的方法,甚至尝试进行了一些研究,但无法弄清楚。

在激怒任何人之前,我以前没有使用过堆栈溢出,因此,如果这是一个重复的线程,我深表歉意,但是在我看到的其他线程中,还有其他更复杂的条件。

有人有什么想法吗?

2 个答案:

答案 0 :(得分:1)

您的脚本从未运行过,因为用户数据需要以#!开头,但是您的脚本仅以#开头。

如果没有#!,那么它将不会作为脚本执行。

在调试Load Balancer情况时,一个好的过程是:

  • 尝试直接访问实例 ,以确认它们作为Web服务器响应。如果不是,请登录到实例并检查/var/log/cloud-init-output.log以查看用户数据是否产生任何错误。
  • 检查安全组,以确认它们的配置正确,通常是:
    • 负载均衡器(ELB-SG)上的安全组,允许来自Internet的入站Web流量
    • Amazon EC2实例(App-SG)上的安全组,该安全组允许来自ELB-SG的入站Web流量。也就是说,App-SG特别引用了ELB-SG

另外,请注意,systemctl Amazon Linux 2 上可以正常工作,但在“ Amazon Linux”(v1)上不能正常工作。

答案 1 :(得分:1)

HTTP 502错误的标题为Bad gateway

我遇到了相同的错误,这是由于运行状况检查是通过与目标组协议(HTTPS)不同的协议(HTTP)配置的。

提到其他可能的原因here

HTTP 502: Bad gateway

Possible causes:

 - The load balancer received a TCP RST from the target when attempting to establish a connection.

 - The load balancer received an unexpected response from the target, such as "ICMP Destination unreachable (Host unreachable)", when attempting to establish a connection. Check whether traffic is allowed from the load balancer subnets to the targets on the target port.

 - The target closed the connection with a TCP RST or a TCP FIN while the load balancer had an outstanding request to the target. Check whether the keep-alive duration of the target is shorter than the idle timeout value of the load balancer.

 - The target response is malformed or contains HTTP headers that are not valid.

 - The load balancer encountered an SSL handshake error or SSL handshake timeout (10 seconds) when connecting to a target.

 - The deregistration delay period elapsed for a request being handled by a target that was deregistered. Increase the delay period so that lengthy operations can complete.

 - The target is a Lambda function and the response body exceeds 1 MB.

 - The target is a Lambda function that did not respond before its configured timeout was reached.

(*)附加资源-How do I troubleshoot and fix failing health checks for Application Load Balancers?