【发布时间】:2018-06-24 20:02:09
【问题描述】:
我正在运行一个部署在 AWS 上的 Docker 群。该设置是一组自动扩展的 EC2 实例,每个实例都充当 Docker swarm 节点。
当自动缩放组向外扩展(生成新实例)时,我想在实例上运行一个命令以加入 Docker 群(即docker swarm join ...),并在它缩小(关闭实例)时离开蜂群 (docker swarm leave)。
我知道我可以在启动配置中使用用户数据执行第一个,但我不确定如何在关机时采取行动。我想使用lifecycle hooks,文档提到我可以在启动/终止时运行自定义操作,但从未解释过如何执行此操作。应该可以不发送 SQS/SNS/Cloudwatch 事件,对吧?
我的 AMI 是基于 Ubuntu 16.04 的自定义。
谢谢。
【问题讨论】:
-
你真的必须离开群体吗? swarm 不会只是注意到一个实例消失了,然后将在另一个实例上运行的容器放在另一个实例上,而自动伸缩组会替换该实例吗?
-
另外,你为什么不使用init脚本来关闭,考虑到机器是Ubuntu,它更优雅。
-
脚本的最大问题是工作人员没有完全的权限将自己从 swarm 中移除。请参阅下面的答案。
标签: linux amazon-web-services docker amazon-ec2 autoscaling