跳至内容

为什么我的 Amazon EC2 Linux 实例会自行重启?

2 分钟阅读
0

我想知道为什么 Amazon Elastic Compute Cloud (Amazon EC2) Linux 实例会意外重启。

简短描述

由于以下原因,您的实例可能会意外重启:

  • 该实例未通过其状态检查。
  • 托管您的实例的底层硬件存在问题,Amazon EC2 重启了该实例以将其移至运行状况良好的硬件。
  • 对您的实例进行定期维护引发了重启。
  • 服务器内部的用户或应用程序重启了实例。
  • 存在内核错误。
  • 您在创建亚马逊机器映像 (AMI) 期间启用了 Reboot instance(重启实例)。
  • AWS Systems Manager 重启了托管实例。

解决方法

**注意:**如果您在运行 AWS 命令行界面 (AWS CLI) 命令时收到错误,请参阅 AWS CLI 错误故障排除。此外,请确保您使用的是最新版本的 AWS CLI

检查您的 Health Dashboard

检查 AWS Health Dashboard 中是否存在实例重启事件,例如简化的自动恢复计划维护和停用。要根据运行状况通知采取行动,可以重新安排计划的事件,或者手动停止和启动实例

查看状态检查结果

使用 Amazon EC2 控制台或 AWS CLI 查看实例的状态检查结果。如果实例未通过状态检查,请参阅如何对 EC2 Linux 实例的状态检查失败问题进行故障排除?

查看系统日志

如果实例未通过状态检查,则该实例可能会因为操作系统 (OS) 出现问题而重启。要解决操作系统级别的问题,请检查 /var/log/messages/var/log/syslog 系统日志。如果实例未通过状态检查,请重启该实例以检索系统日志

然后,对系统日志中列出的错误进行故障排除

查看重启历史记录

要检查服务器内部的用户或应用程序是否发起了重启,请运行以下命令:

grep reboot /home/*/.bash_history
grep reboot /root/.bash_history
history | grep -i reboot
history | grep -i init
last reboot

查看 CloudTrail 事件历史记录

您在 Amazon EC2 控制台或 AWS CLI 上发起的实例重启会显示在 AWS CloudTrail 事件历史记录中。查看您的 CloudTrail 事件历史记录中是否存在 RebootInstances 事件。

注意:创建 AMI 时,Amazon EC2 会默认启用 Reboot instance(重启实例),并在创建 AMI 之前重启该实例。此次重启出现在 CreateImage 事件中,而不是 RebootInstances 事件中。

如果您已创建 AMI 生命周期策略,请在 Instance reboot(实例重启)下,检查是否将 Reboot instance at policy run(在策略运行时重启实例)设置为 Yes(是)。如果是,则实例是在创建 AMI 期间重启的。

要自动恢复因硬件问题而重启的实例,请配置基于 Amazon CloudWatch 操作的恢复

更新您的内核

**注意:**最佳做法是先创建实例的 AMI 备份,然后再更新该实例的软件包。此配置允许您在需要时恢复更改。

要更新内核,请完成以下步骤:

  1. 要检查实例使用的内核版本,请运行以下命令:

    sudo uname -r
  2. 要更新内核,请根据您的 Linux 操作系统运行以下命令之一。
    Red Hat Enterprise Linux (RHEL) 或 Amazon Linux:

    sudo yum update kernel

    SUSE Linux Enterprise Server (SLES):

    sudo zypper up kernel-default

    Ubuntu:

    sudo apt upgrade linux-image-aws
  3. 要重启实例并使用新内核,请运行以下命令:

    sudo reboot

查看 Run Command 历史记录,以检查 Systems Manager 是否重启了实例

如果您在 RebootOption 设置为 RebootIfNeeded 的实例上配置修补操作,则 Systems Manager 会在修补操作期间重启该实例。

要检查 Systems Manager 是否运行了 Run Command,请完成以下步骤:

  1. 打开 Systems Manager 控制台
  2. 在导航窗格中,选择 Run Command
  3. 选择 Command history(命令历史记录)选项卡
  4. 在搜索框中输入您的实例 ID,以查看 Systems Manager 针对该实例运行的所有命令。

相关信息

对状态检查失败的 Amazon EC2 Linux 实例进行故障排除

状态检查类型

在 AWS 用户通知服务中管理 AWS Health 通知

更新导致我的 EC2 实例无法重启时,如何恢复到已知的稳定内核?

AWS 官方已更新 8 个月前