【发布时间】:2017-01-03 12:01:07
【问题描述】:
我的 AWS 自动扩展组中的 EC2 实例在运行 1-4 小时后全部终止。确切的时间各不相同,但一旦发生,整个团队会在几分钟内倒下。
每个的缩放历史描述很简单:
在 2016-08-26T05:21:04Z,一个实例因 EC2 运行状况检查而停止服务,表明它已被终止或停止。
但我没有添加任何健康检查。并且 EC2 状态检查在实例的生命周期内全部通过。
我如何确定这种“健康检查”失败的实际含义?
关于 ASG 终止的大多数问题都返回到负载平衡器,但我没有负载平衡器。该集群处理批处理作业,并且最小/最大/期望值由软件根据系统中其他地方的工作负载积压来控制。
ASG 历史记录不表示缩减事件,并且所有实例也都受到明确的缩减保护。
我尝试将运行状况检查宽限期设置为 20 小时,以查看这是否至少使实例处于启动状态以便我可以检查它,但它们仍会终止。
实例正在运行 ECS AMI,而 ECS 正在容器中运行单个任务,该任务在启动时启动。该任务的日志看起来很正常,直到实例消失前几分钟,一切似乎都运行良好。
这个任务是 CPU 密集型的,但是当我让它休眠六个小时后仍然会出现错误。
【问题讨论】:
-
默认情况下,如果没有 ELB,ASG 将只使用实例状态检查。但是,您收到的实际消息“实例已停止服务以响应 EC2 运行状况检查表明它已被终止或停止”听起来更像是实例关闭时的操作系统或某人(或某些进程)启动了停止或终止命令。这些是现场实例吗?
-
它们是现场实例。其中许多被列为按价格终止!我没有考虑根据消息检查现场请求。这通常是现货价格终止出现在 ASG 历史记录中的方式吗?
-
@mark-b 是的,我所有的“健康检查”失败都与现货价格终止相关。如果您可以重新发布您的答案,我会将其标记为正确。
-
解决方案是什么?
标签: amazon-web-services amazon-ec2