

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

# 使用自动修复来更换失败的实例
<a name="workinginstances-autohealing"></a>

**重要**  
该 AWS OpsWorks Stacks 服务于 2024 年 5 月 26 日终止，新客户和现有客户均已禁用。我们强烈建议客户尽快将其工作负载迁移到其他解决方案。如果您对迁移有疑问，请通过 re [AWS : Post 或通过 Pre](https://repost.aws/) mium Su [AWS pp](https://aws.amazon.com/support) ort 与 AWS 支持 团队联系。

每个实例都有一个 OpsWorks Stacks 代理，可以定期与服务通信。 OpsWorks Stacks 使用该通信来监控实例的运行状况。如果代理与服务通信的时间不超过大约五分钟， OpsWorks Stacks 会认为该实例已失败。

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

![\[Layer settings interface showing Auto healing enabled option set to Yes.\]](http://docs.aws.amazon.com/zh_cn/opsworks/latest/userguide/images/layer_auto_healing.png)


**注意**  
实例可能属于多个层中的某个层。如果其中任何一个层禁用了自动治疗，则在实例失败时， OpsWorks Stacks 不会对其进行治疗。

如果图层启用了自动修复（默认设置），OpsWorks Stacks 会自动替换该图层的失败实例，如下所示：

**实例存储支持的实例**  

1. 停止 Amazon EC2 实例，并验证其是否已关闭。

1. 删除根卷上的数据。

1. 使用相同的主机名、配置和层成员资格创建新 Amazon EC2 实例。

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

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

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

**由 Amazon EBS 提供支持的实例**  

1. 停止 Amazon EC2 实例，并验证其是否已停止。

1. 启动实 EC2 例。

自动修复的实例恢复在线状态后， OpsWorks Stacks 会在堆栈的所有实例上触发配置[生命周期事件](workingcookbook-events.md)。关联的[堆栈配置和部署属性](workingcookbook-json.md)包括实例的公有和私有 IP 地址。自定义配置配方可以从节点对象中获取新的 IP 地址。

如果您为层[的实例指定 Amazon EBS 卷](workinglayers-basics-edit.md#workinglayers-basics-edit-ebs)， OpsWorks Stacks 会创建一个新卷，并在实例启动时将其连接到每个实例。如果您后来又想将卷与实例分离，可使用 [Resources](resources.md) 页面。

当 OpsWorks Stacks auto 治疗图层的其中一个实例时，它会通过以下方式处理体积：
+ 如果在实例出现故障时卷已连接到实例，则会保存该卷及其数据，并且 OpsWorks Stacks 会将其连接到新实例。
+ 如果卷在实例失败时没有连接到实例，则 OpsWorks Stacks 将创建一个新的空卷 (具有层指定的配置)，并将该卷连接到新的实例。

默认情况下为所有层启用了自动修复功能，但您可以[编辑层的常规设置](workinglayers-basics-edit.md)来禁用这项功能。

**重要**  
如果您启用了自动修复功能，请务必执行以下操作：  
仅使用 OpsWorks 堆栈控制台、CLI 或 API 来停止实例。  
如果您以任何其他方式（例如使用 Amazon EC2 控制台）停止实例， OpsWorks Stacks 会将该实例视为失败，并且 auto 会对其进行修复。
使用 Amazon EBS 卷存储您不想在自动修复实例后丢失的任何数据。  
自动修复会停止旧的 Amazon EC2 实例，该实例会销毁所有未存储在 Amazon EBS 卷上的数据。Amazon EBS 卷将重新连接到新的实例上，这将保留存储的所有数据。