Amazon ec2 在ec2完成其上运行的进程之前停止ec2以缩小规模

Amazon ec2 在ec2完成其上运行的进程之前停止ec2以缩小规模,amazon-ec2,amazon-ecs,Amazon Ec2,Amazon Ecs,我们有一个在ec2实例上运行的应用程序,我们将其用作ecs集群中的docker主机。在每个ec2上运行多个任务。每个任务从SQS中提取一条消息并处理一些事件(将数据从一种格式转换为另一种格式并上传到文件系统),这可能需要几秒钟到12-15小时,具体取决于它包含的数据大小。事件处理完成后,停止任务,并为新消息(事件)创建新任务。每当SQS中有大量消息时,我们都会扩展实例来处理消息(以避免等待时间)。当(消息数)

我们有一个在ec2实例上运行的应用程序,我们将其用作ecs集群中的docker主机。在每个ec2上运行多个任务。每个任务从SQS中提取一条消息并处理一些事件(将数据从一种格式转换为另一种格式并上传到文件系统),这可能需要几秒钟到12-15小时,具体取决于它包含的数据大小。事件处理完成后,停止任务,并为新消息(事件)创建新任务。每当SQS中有大量消息时,我们都会扩展实例来处理消息(以避免等待时间)。当(消息数)<(正在运行的任务数)持续一定时间时,我们需要缩小规模,即需要终止ec2实例

对于ec2的缩减,我们需要确保没有任务正在运行,即容器没有处理任何事件。无法确定哪个ec2是空闲的(不处理任何事件),所以我们将容器标记为排空状态,然后终止ec2。但是,当我们将任何容器标记为排空状态时,在其上运行的任务将停止(因此在此期间事件处理将被终止,数据将丢失)。为什么我们可以在任务停止之前完成这个过程,或者任何人都可以建议更好的方法