我一直在关注lynda.com的AWS基本培训,并且已经成功设置了一个EC2实例,但是当我尝试把它放在负载均衡器的后面时,我无法通过ELB的公共DNS访问它。
在AWS Load Balancer控制台上,它表示我的实例的状态是OutOfService。 根据教程,我为负载平衡器设置了健康检查,path为/heartbeat.php
。
我也有两个安全组织 。 第一个名为Load Balancer – Prod允许来自任何人的端口80
上的HTTP通信。 我的负载平衡器属于这个安全组。 此外,我有一个名为Web Tier – Prod的安全组,它只允许来自Load Balancer – Prod安全组的端口80
上的HTTPstream量,以及我自己的IP和MYSQLstream量的Web Tier – Prod安全组。
我可以使用自己的公共DNS访问实例,并且可以通过SSH访问它,但是我无法通过负载均衡器public DNS访问它。
当我ssh进入它和劈NGINX访问日志,我看到这个logging多次。
172.??.??.?? - - [26/Aug/2015:16:43:46 +0000] "GET /heartbeat.php HTTP/1.1" 401 203 "-" "ELB-HealthChecker/1.0"
我应该看到一个200状态代码,而不是401 203我猜。 我尝试改变/var/www/
到777作为一个testingrecursion权限,但没有任何区别。
如果状态检查返回401,则AWS将该实例视为不健康,并将其从ELB中取出。 既然你没有健康的事例,ELB就会倒闭。
请注意,AWS通过IP访问/heartbeat.php
, 而不是通过DNS名称 。 使用curl -I http://<your instance IP>/heartbeat.php
检查响应,并调整您的服务器configuration,如果它没有被默认的虚拟主机提供服务。