如何找到 EC2 自动扩展组“运行状况检查”失败的原因?(不涉及负载平衡器)

Sco*_*ith 7 amazon-ec2 amazon-web-services

我的 AWS 自动扩展组中的 EC2 实例都在运行 1-4 小时后终止。确切的时间各不相同,但当它发生时,整个组在几分钟内就会倒下。

每个的缩放历史描述很简单:

在 2016-08-26T05:21:04Z,一个实例被停止服务以响应 EC2 运行状况检查,表明它已终止或停止。

但我没有添加任何健康检查。EC2 状态检查实例生命周期内的所有通过。

我如何确定这种“健康检查”失败的实际含义?

大多数关于 ASG 终止的问题都会回到负载平衡器,但我没有负载平衡器。该集群处理批处理作业,最小/最大/期望值由基于系统中其他地方的工作负载积压的软件控制。

ASG 历史记录不指示缩减事件,并且实例也都明确地受到缩减保护。

我尝试将运行状况检查宽限期设置为 20 小时,看看这是否至少让实例保持运行状态,以便我可以检查它,但它们仍然会终止。

实例正在运行 ECS AMI,而 ECS 正在容器中运行单个任务,在启动时启动。该任务的日志看起来很正常,并且在实例消失前几分钟前一切似乎都在愉快地运行。

该任务是 CPU 密集型的,但是当我让它休眠六个小时时仍然会发生错误。

ken*_*orb 5

这里有一些建议:

  • 要查看实例终止的原因,请在 EC2 的实例列表中选择终止的实例,然后在实例设置(菜单)中选择获取系统日志,然后向下滚动到底部以查看任何明显问题。实例终止后,日志会保留一段时间。
  • 在活动服务内的 ECS 集群中,检查事件选项卡是否有任何消息。
  • 目标群体部分,确认健康检查目标注册的目标和自己的状态,和健康的的可用性区域

    要使用 AWS 控制台修改目标组的运行状况检查设置,请选择Target Groups,然后编辑Health checks

  • 在 ASG(EC2 的Auto Scaling 组)中,检查Details(对于Termination Policies)、Activity History(对于终止消息)、Instances(对于它们的Health Status)、Scheduled ActionsScaling Policies

  • 检查CloudWatch以获取任何可用日志。
  • 检查CloudTrail是否有任何可疑事件。
  • 验证 ECS 代理是否已连接:为什么我的 Amazon ECS 代理被列为已断开连接?
  • 另请检查:目标组的运行状况检查Amazon ECS 故障排除
  • 有关更多建议,请查看:terraform-ecs。注册的容器实例显示为 0


Mar*_*k B 4

默认情况下,如果没有 ELB,ASG 将仅使用实例状态检查。然而,您收到的实际消息“实例已停止服务,以响应 EC2 运行状况检查,表明它已被终止或停止”听起来更像是实例关闭时的操作系统或某人(或某个进程)启动了停止或终止命令。这些是现货实例吗?这是您在竞价实例终止时将看到的内容。