我想知道为什么 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 备份,然后再更新该实例的软件包。此配置允许您在需要时恢复更改。
要更新内核,请完成以下步骤:
-
要检查实例使用的内核版本,请运行以下命令:
sudo uname -r
-
要更新内核,请根据您的 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
-
要重启实例并使用新内核,请运行以下命令:
sudo reboot
查看 Run Command 历史记录,以检查 Systems Manager 是否重启了实例
如果您在 RebootOption 设置为 RebootIfNeeded 的实例上配置修补操作,则 Systems Manager 会在修补操作期间重启该实例。
要检查 Systems Manager 是否运行了 Run Command,请完成以下步骤:
- 打开 Systems Manager 控制台。
- 在导航窗格中,选择 Run Command。
- 选择 Command history(命令历史记录)选项卡
- 在搜索框中输入您的实例 ID,以查看 Systems Manager 针对该实例运行的所有命令。
相关信息
对状态检查失败的 Amazon EC2 Linux 实例进行故障排除
状态检查类型
在 AWS 用户通知服务中管理 AWS Health 通知
更新导致我的 EC2 实例无法重启时,如何恢复到已知的稳定内核?