我想提一下,我不是一个经验丰富的技术人员,但是我一直在尝试通过在线课程学习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]”。我已经尝试了所有可以想到的方法,甚至尝试进行了一些研究,但无法弄清楚。
在激怒任何人之前,我以前没有使用过堆栈溢出,因此,如果这是一个重复的线程,我深表歉意,但是在我看到的其他线程中,还有其他更复杂的条件。
有人有什么想法吗?
答案 0 :(得分:1)
您的脚本从未运行过,因为用户数据需要以#!
开头,但是您的脚本仅以#
开头。
如果没有#!
,那么它将不会作为脚本执行。
在调试Load Balancer情况时,一个好的过程是:
/var/log/cloud-init-output.log
以查看用户数据是否产生任何错误。ELB-SG
)上的安全组,允许来自Internet的入站Web流量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?