跳至内容

如何对 Amazon ECS 中的 EC2 实例终止问题进行故障排除?

1 分钟阅读
0

我在 Amazon Elastic Cloud Compute (Amazon EC2) 上运行的 Amazon Elastic Container Service (Amazon ECS) 容器实例被意外终止。

解决方法

要确定实例终止的原因,请查看 AWS CloudTrail 事件中的 TerminateInstances API 调用。在事件详细信息中,记下调用 API 的 AWS Identity and Access Management (IAM) 用户或角色的 userAgent 值。此外,记下 SourceIPaddresseventTimeerrorCodeerrorMessage 的值。

根据实例终止问题的原因,执行以下故障排除操作。

查看运行状况检查问题的指标

查看已终止实例的 Amazon CloudWatch 指标 CPUUtilizationStatusCheckFailed_Instance。异常可能表明存在性能问题或硬件故障。有关详细信息,请参阅 Amazon EC2 实例的状态检查。如果您已激活 CloudWatch Container Insights,则还需查看 Container Insights 指标

查看实例日志,以了解您的实例是否存在网络连接、内存不足或其他潜在问题。高资源使用率可能会导致实例终止问题。根据您的工作负载需求调整容器实例类型的大小

查看自动扩缩历史记录中是否存在问题

查看您的 Amazon EC2 Auto Scaling 组活动历史记录,以检查计划的 EC2 Auto Scaling 事件是否终止了该实例。如果您遇到意外的自动扩缩操作,请检查您的自动扩缩配置、扩缩策略和阈值

为避免实例意外终止,请使用托管终止保护,以保留正在运行任务的 Amazon ECS 容器实例。

您还可以为您的实例激活终止保护,以防止意外终止。如果您已激活终止保护但仍遇到问题,请参阅如何解决 Amazon ECS 中容量提供商的托管终止保护设置错误?

检查是否存在竞价型实例中断

如果您的集群使用竞价型实例,请检查竞价型实例被终止或中断的原因。确定 Amazon EC2 是否终止了竞价型实例。如果 Amazon EC2 会中断您的竞价型实例,则您将在中断前 2 分钟收到通知

对于具有不可中断的关键工作负载的应用程序,最佳做法是使用按需型实例

为实例设置监控器

创建 CloudWatch 警报,以监控实例何时自动停止、终止、重启或恢复,从而主动识别问题。此外,针对重要指标(例如 CPUUtilization、DiskReadOps、DiskWriteOps、NetworkIn 或 NetworkOut创建 CloudWatch 警报

使用 Amazon Simple Notification Service (Amazon SNS) 和 Amazon EventBridge 来接收有关实例状态变化的警报,例如停止、终止和运行状况检查失败。您还可以创建警报,以便在实例状态更改时发送电子邮件

要在集群级别、实例级别、服务级别和任务级别收集指标,请设置 Container Insights

设置高可用性

使用任务放置策略(例如 spread(分散)任务和 binpack(装箱)任务),以避免在单个实例上集中过多任务。

此外,请将您的容器实例分散到多个可用区,以减少实例意外终止的影响。有关详细信息,请参阅 Amazon ECS availability best practices

AWS 官方已更新 1 年前