使用自动修复来更换失败的实例 - AWS OpsWorks

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用自动修复来更换失败的实例

重要

AWS OpsWorks Stacks 不再接受新客户。在 2024 年 5 月 26 日之前,现有客户将能够照常使用 OpsWorks 控制台、API、CLI 和 CloudFormation 资源,届时这些工具或资源将停用。为准备此过渡,我们建议您尽快将堆栈过渡到AWS Systems Manager。有关更多信息,请参阅 AWS OpsWorks Stacks 生命周期终止常见问题解答将 AWS OpsWorks Stacks 应用程序迁移到 AWS Systems Manager Application Manager

每个实例都有一个定期与服务通信的 AWS OpsWorks Stacks 代理。AWS OpsWorksStacks 使用这种通信方式来监控实例的运行状况。如果代理超过五分钟左右的时间未与服务通信,AWS OpsWorks Stacks 将认为该实例已失败。

自动修复是在层级别设置的;您可以通过编辑层设置来更改自动修复设置,如以下屏幕截图所示。

注意

实例可能属于多个层中的某个层。如果这些层中的任何层禁用了自动修复,则 AWS OpsWorks Stacks 在实例失败后不会修复该实例。

如果层启用了自动修复 (默认设置),则 AWS OpsWorks Stacks 会自动更换层的失败的实例,如下所示:

实例存储支持的实例
  1. 停止 Amazon EC2 实例,并验证其是否已关闭。

  2. 删除根卷上的数据。

  3. 创建具有相同的主机名、配置和层成员关系的新 Amazon EC2 实例。

  4. 重新连接任何 Amazon EBS 卷 (包括最初启动原有实例后连接的卷)。

  5. 分配新的公有和私有 IP 地址。

  6. 如果原有实例与弹性 IP 地址关联,则会将新的实例与相同的 IP 地址关联。

由 Amazon EBS 提供支持的实例
  1. 停止 Amazon EC2 实例,并验证其是否已停止。

  2. 启动 EC2 实例。

当自动修复的实例恢复为联机状态后,AWS OpsWorks Stacks 会在堆栈的所有实例上触发 Configure 生命周期事件。关联的堆栈配置和部署属性包括实例的公有和私有 IP 地址。自定义配置配方可以从节点对象中获取新的 IP 地址。

如果您为层的实例指定 Amazon EBS 卷,AWS OpsWorks Stacks 会创建一个新卷并在实例启动时将该卷连接到每个实例。如果您后来又想将卷与实例分离,可使用 Resources 页面。

当 AWS OpsWorks Stacks 自动修复层的某个实例时,它将按以下方式处理卷:

  • 如果卷在实例失败时已经连接到实例了,则系统将保存该卷及其数据,然后 AWS OpsWorks Stacks 会将其连接到新的实例。

  • 如果卷在实例失败时没有连接到实例,则 AWS OpsWorks Stacks 将创建一个新的空卷 (具有层指定的配置),并将该卷连接到新的实例。

默认情况下为所有层启用了自动修复功能,但您可以编辑层的常规设置来禁用这项功能。

重要

如果您启用了自动修复功能,请务必执行以下操作:

  • 仅使用 AWS OpsWorks Stacks 控制台、CLI 或 API 来停止实例。

    如果您通过其他方式停止实例(例如,使用 Amazon EC2 控制台),则 AWS OpsWorks Stacks 会认为该实例已失败,并自动修复该实例。

  • 使用 Amazon EBS 卷存储您不想在自动修复实例后丢失的任何数据。

    自动修复功能会停止原有的 Amazon EC2 实例,这会销毁没有存储到 Amazon EBS 卷上的任何数据。Amazon EBS 卷将重新连接到新的实例上,这将保留存储的所有数据。