我已启动并运行EC2实例。 我有一个负载均衡器,它与EC2实例相关联。
Ping Target : HTTP:3001/healthCheck
Timeout : 5 seconds
Interval : 24 seconds
Unhealthy threshold : 2
Healthy threshold : 10
现在,实例显示为OutofService。 我甚至尝试改变监听端口和所有。事情一直在努力,直到重新启动我的EC2实例。 任何帮助都将受到高度赞赏。
仅供参考:我有在端口3001运行的rails应用程序,我有一个HTTP的监听器:80(loadbalancer)到HTTP:3001。
我还通过终端中的ssh检查了工作应用程序。
答案 0 :(得分:2)
如果您的部分或全部实例的当前状态是OutOfService和 description字段显示Instance具有的消息 至少失败了健康检查的不健康阈值数 连续地,实例已经使负载均衡器健康失败 检查。
以下是要查找的问题,可能的原因以及您可以通过以下链接解决问题的步骤:Troubleshoot a Classic Load Balancer: Health Checks
chrisa_pm已针对此问题提出了一些建议:
如果您可以确认您的EC2实例可以访问,则可以删除 它来自您的Load Balancer并再次添加回来。负载均衡器 会在几分钟后认出来。
请记住,您需要确认您的健康状况 健康检查配置:
- 对于HTTP:80,您需要指定实际可访问的页面(如index.html)
- 对于TCP:80,只需要访问80 TCP端口。
醇>
qh2通过以下方式制定解决方案
在启动时创建服务以取消注册并再次注册您的实例。
示例:文件awsloadbalancer
#!/bin/sh
chkconfig: 2345 95 20
当意图停止时,错过了负载均衡器。这个重建负载 平衡器
case "$1" in
start)
aws --region eu-west-1 elb deregister-instances-from-load-balancer --load-balancer-name test --instances i-3c339b7c
aws --region eu-west-1 elb register-instances-with-load-balancer --load-balancer-name test --instances i-3c339b7c
;;
stop)
echo "stopping aws instances"
;;
restart)
echo "Restarting aws, nothing to do"
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
;;
esac
在/etc/init.d/
之后创建文件,注册为服务。
Kenneth Snyder也解决了特定ELB问题的问题。
我也有类似的问题,但我能解决这个问题。
我为ELB创建了一个安全组,它接受端口请求 80并在端口80上转发到EC2。之前的安全组 为EC2创建的还有端口80和RDP的入站规则。
实际情况显示为ELB下的OutOfService。后来我 尝试在EC2的安全组中添加另一个入站规则以允许 为ELB创建的SG的端口80。这很有效。
我想它需要在为其创建的规则中允许ELB SG 个人实例的SG。希望有所帮助。
答案 1 :(得分:1)
您是否提供了健康检查端点并在EC2控制台中指定了它?类似的东西:
注意端口80和有效路由。您可能没有在nginx
/ apache
配置中设置端口3001
在rails应用中,创建一个类似的动作:
class HealthCheckController < ActionController::Base
def ping
head :ok
end
end
和路线:
get 'health_check/ping'
AWS负载均衡器将对其端点执行ping操作,如果响应时间200 OK
足够{(1}},则会将实例视为&#34;健康&#34;。< / p>
答案 2 :(得分:1)
我发现您的ELB运行状况检查配置存在一些问题。现在,您已经配置了运行状况检查,以便在ELB发送请求之前每24秒检查一次实例10次。因此,需要
24seconds x 10 = 240secs # 4mins after reboot
假设你的Unicorn开始更快&amp;运行后不会死亡,你应该减少内部和健康检查。健康的门槛
以上内容应该有助于ELB更快地使用“服务”实例。
这假设您的服务器配置已正确设置为从外部主机侦听/healthcheck
端口3001
。如果不是这样,请检查您的防火墙/安全组/服务器配置。
答案 3 :(得分:1)
问题是,在重新启动实例后,aws会分配 new ip 我没有注意到的EC2。
我正在通过ssh
彻底登录到旧的ec2实例。
因此卷曲也从未失败过。
(我很好奇为什么这个IP地址仍然有效,而且我上次检查时它甚至在15天后仍然有效)
然而SkyWalker提供了很好的检查点(一般来说)。
最后我要做的事情:
使用新的ip,我的pem文件也搞砸了。因此创建了新的实例,新的pem文件,调整后的负载均衡器以指向此实例和安全组accorindgly。
PS:我不能再愚蠢了。
答案 4 :(得分:0)
确保应用服务器的安全组允许ELB安全组访问您在运行状况检查中指定的端口的运行状况检查端点。