0

我在 AWS 上部署了一个有状态的集群,其中实例在启动时附加到一个已经存在的 EBS 卷,然后这个卷将被挂载到实例上运行的 Docker 容器。如果我强行分离此卷,则实例和 Docker 容器将继续正常工作。要附加到同一卷,必须终止实例,并且自动缩放组启动的新实例将通过 userdata 脚本附加到分离的卷。

有没有办法自动检测卷分离并触发附件?或者如果它的 EBS 卷被强制分离,是否可以自动终止该实例?

4

1 回答 1

1

我不知道有任何自动方式来实现这个开箱即用。我能提供的最好的就是一些调查的想法。

  1. 在您的 docker 主机上运行一个 cron 脚本,每隔 X 分钟检查一次该路径是否仍可访问。如果路径不可访问,并且如果实例设置为在关闭时终止,则只需调用shutdown -h以终止它。或者使用 docker 主机中的 AWS CLI 请求终止当前实例。脚本可以在运行时通过 curl 从实例 MetaData 获取当前实例InstanceId,您将需要一个 IAM 策略并将其分配给实例的 IAM 角色以获得终止实例的权限。
  2. 基本上相同的事情,但是从另一台服务器或按计划查询 API 以获取实例/卷列表(基于标签等)的 Lambda 函数执行此操作,然后检查附件状态并在必要时终止实例。
  3. 根据您的用例,您可以使用 cloudwatch 来监控卷的 EBS 指标。您能否基于此为您的用例检测故障,然后执行 lambda 以实际检查实例并终止它?
于 2018-07-26T20:48:05.143 回答