如何阻止 AWS OpsWorks Stacks 意外重新启动正常运行的实例?

上次更新时间:2021 年 8 月 17 日

即使我的 Amazon Elastic Compute Cloud (Amazon EC2) 实例通过了 Amazon EC2 运行状况检查,AWS OpsWorks Stacks 也会重新启动这些实例。为什么会出现这种情况,我要如何阻止?

简短描述

如果 OpsWorks Stacks 自动修复功能已激活,并且该服务确定其管理的实例出现故障,则会出现以下某种情况:

要防止 OpsWorks Stacks 自动修复它管理的实例,请首先按照本文中的故障排查步骤进行操作。如果问题仍然存在,您也可以在 OpsWorks Stacks 层的常规设置中关闭自动修复功能

有关更多信息,请参阅 AWS OpsWorks 调试和故障排查指南中的实例意外重新启动

解决方法

确认由 OpsWorks Stacks 管理的 Amazon EC2 实例是否可以访问互联网

如果 Amazon EC2 实例失去与 OpsWorks Stacks 服务的连接,那么 OpsWorks Stacks 会将该实例视为出现故障。

要确认您的 Amazon EC2 实例是否可以访问互联网,请进行以下操作:

  • 确保您的实例可以通过互联网网关网络地址转换 (NAT) 网关访问互联网。
  • 确认是否允许在实例、安全组和网络访问控制列表(网络 ACL)级别通过端口 443 进行入站 HTTPS 访问。

要排查 NAT 网关连接问题,请参阅为什么我的 EC2 实例无法使用 NAT 网关访问互联网?

要排查互联网网关连接问题,请参阅为什么我的 Amazon EC2 实例无法使用互联网网关连接到互联网?

确认您的应用程序是否在实例级别拥有足够的内存和 CPU 容量,以便在实例面临额外负载时正常运行。

当没有足够的实例级别资源来允许 OpsWorks 代理发送 Keepalive 信号时,OpsWorks Stacks 会将实例视为出现故障。

要查看实例的指标,请按照使用 Amazon CloudWatch 来监控堆栈中的说明进行操作。

要设置警报以便在实例的 CPU、内存或网络流量负载较高时提醒您,请参阅创建 Amazon CloudWatch 警报

确认 Amazon EC2 实例没有在 OpsWorks Stacks 控制台或 OpsWorks Stacks API 之外停止。

注意:如果您在运行 AWS Command Line Interface (AWS CLI) 命令时收到错误消息,请确保您使用的是最新版本的 AWS CLI

如果在 Amazon EC2 控制台中停止了 OpsWorks Stacks 托管的实例,那么 OpsWorks Stacks 会停止接收来自 OpsWorks 代理Keepalive 信号。然后,OpsWorks Stacks 会将实例视为出现故障。

要确认您的实例是否在 Amazon EC2 控制台中停止,请尝试在 OpsWorks Stacks 控制台中停止实例。如果实例处于 stop_failed 状态,并且您收到内部错误消息,则表示实例已在 Amazon EC2 控制台中停止。

当实例在 Amazon EC2 控制台中停止之后,要在 OpsWorks Stacks 中停止该实例,请运行 AWS CLI stop-instance 命令。

重要提示:stop-instance 命令必须包含此使用案例的 --force 参数。

有关更多信息,请参阅如何排查在停止处于“stop_failed”状态的 AWS OpsWorks Stacks 实例时出现的“内部错误”消息?

确认 Amazon EC2 实例是否使用实例元数据服务版本 1 (IMDSv1)

OpsWorks Stacks 仅支持 IMDSv1,不支持 IMDSv2。如果 OpsWorks Stacks 托管的实例使用 IMDSv2,那么 OpsWorks Stacks 会将实例视为出现故障。

要检查您的实例使用的元数据服务并在需要时重新配置实例,请参阅配置实例元数据选项


这篇文章对您有帮助吗?


您是否需要账单或技术支持?