AWS扩展在EC2容器服务的终端保护中

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AWS扩展在EC2容器服务的终端保护中相关的知识,希望对你有一定的参考价值。

在Amazon AWS中使用Auto Scaling时,我无法弄清楚如何保护我的ECS任务实例。我有一个长期运行的任务,可以根据需要扩展,但我想标记运行为“不可破坏”的任务实例。我找到了几个讨论实例保护的资源,例如:

https://aws.amazon.com/blogs/aws/new-instance-protection-for-auto-scaling/

和(因为我使用的是python)API文档在这里:

http://boto3.readthedocs.io/en/latest/reference/services/autoscaling.html#AutoScaling.Client.set_instance_protection

此方法需要InstanceId,因此我尝试使用如下命令获取当前容器的实例ID:

卷曲http://169.254.169.254/latest/meta-data/instance-id

但是,此方法只返回正在运行任务的EC2计算机的实例ID。所以我的问题是:有没有办法获得docker任务实例的实例ID(如果它甚至存在)?如果没有,我可以采用另一种方法阻止Auto Scaling终止仍在运行的任务吗?我是否必须编写管理Scaling In的自己的任务管理器?

答案

为了解决同样的问题,我们开发了一个简单的应用程序,该应用程序在其中一个Auto Scaling Group(ASG)实例上完成作业时启动。此应用程序检查队列,如果队列中没有作业(比方说10分钟或10次),它将终止其实例并减少ASG的Desired值。这为我们提供了一种可靠的扩展机制。另一方面,扩展是由ASG本身根据队列中的作业数量完成的。

以上是关于AWS扩展在EC2容器服务的终端保护中的主要内容,如果未能解决你的问题,请参考以下文章

AWS EC2 容器服务/Elastic Beanstalk Docker 容器端口 udp 绑定

具有 Auto Scaling 与弹性容器服务 (ECS) 的 AWS EC2 - Docker

AWS Elastic Beanstalk 与 EC2 容器服务 (ECS) - Docker

如何为在 EC2 模式下运行在 AWS ECS 集群中的容器分配公共 IP

网络负载均衡器的AWS EC2安全组权限

无法访问 AWS ECS EC2 实例中的端口