确保ECS仅在新任务就绪时才杀死旧任务

时间:2018-07-19 15:02:45

标签: amazon-web-services docker amazon-ecs aws-ecs

我们提供了基于Docker的ECS服务,该服务一旦启动,就需要在开始准备处理请求之前同步应用程序状态。这可能需要一些时间(过程开始后的几秒钟)。

使用ECS Services时,更改任务定义版本会触发滚动替换任务(良好),但是这样做太快了。一旦任务达到RUNNING状态,下一个任务就会被杀死。但是RUNNING只是意味着该过程已经开始,并不意味着它已经满足了其内部所有要求就可以开始工作...在这种情况下,还没有准备好服务请求

整个更新过程是如此之快,以至于在某些情况下,所有旧任务在所有新任务完成其状态加载之前就被杀死了,最终导致中断。

确保ECS服务不终止旧的/热的任务,直到新的任务实际上是热的且完全联机,而不只是简单地运行容器进程的最佳或正确方法是什么?

1 个答案:

答案 0 :(得分:2)

您可以通过设置以下参数来控制部署的速度:

  • deploymentConfiguration(具体来说,您的情况是minimumHealthyPercent
  • 启用运行状况检查(如果使用负载均衡器,则使用load balancer health checks或使用container health checks
  • 设置healthCheckGracePeriodSeconds(用于负载平衡器运行状况检查)或startPeriod(用于容器运行状况检查)以说明启动同步时间。