通过 AWS 自动扩展重复使用 EBS 卷

通过 AWS 自动扩展重复使用 EBS 卷

我正在尝试为我的 EC2 实例设置自动修复。因此,每当我的实例发生故障或无法访问时,它都应该自动重新启动或启动新实例,最好是在同一 AWS 区域的不同可用区中。

我研究了如何设置 CloudWatch 警报并添加操作以在发生故障时重新启动实例。如果我希望我的 EC2 实例在发生故障时重新启动,这种方法很有效。

但它不包括 AZ 本身无法访问的情况。因此,我尝试设置 AWS 自动扩展组,将最小/最大实例数设置为 1。如果发生故障,我希望使用终止实例的 EBS 卷启动新实例。我该如何继续?

或者如果有其他方法可以实现我的目标,我也会很感激。

答案1

因此,我在 ASG 中运行了很多单个服务器,以实现自动修复。

我所做的是给 EBS 卷设置标签。

启动时,有一个 cloud-init 脚本,它使用 aws 元数据 api 和 CLI,并通过 API 获取自己的实例 ID,然后在自己的 AZ 中搜索带有设置标签的 EBS 卷。一旦获得卷 ID,它就会强制分离以确保安全。然后将其附加到自身。

到目前为止,效果非常好。

答案2

您知道 EFS 或 Amazon Elastic File System 吗?它是 EC2 实例的文件存储服务,您可以使用它执行您描述的操作。如果您不需要块设备(EBS 卷),请尝试一下。

有一个很好的 CloudFormation 模板示例,它在与 Amazon EFS 文件系统关联的 AutoScaling 组中部署 EC2 实例: Amazon Elastic File System 示例模板

答案3

这是可以做到的,但是我认为这并不容易。

您需要使用辅助卷来保存实例重启后想要保留的任何数据。我认为您无法使用现有卷作为根分区来创建实例。至少不能以任何合理或简单的方式实现。

将 EBS“终止时删除”设置为 false,并让启动配置/启动脚本在启动时扫描未附加的卷。如果您发现卷标记为“KeepMeAlive:true”或类似内容,请让它自动将该卷附加到自身。

相关内容