我们提供了基于Docker的ECS服务,该服务一旦启动,就需要在开始准备处理请求之前同步应用程序状态。这可能需要一些时间(过程开始后的几秒钟)。
使用ECS Services时,更改任务定义版本会触发滚动替换任务(良好),但是这样做太快了。一旦任务达到RUNNING
状态,下一个任务就会被杀死。但是RUNNING
只是意味着该过程已经开始,并不意味着它已经满足了其内部所有要求就可以开始工作...在这种情况下,还没有准备好服务请求
整个更新过程是如此之快,以至于在某些情况下,所有旧任务在所有新任务完成其状态加载之前就被杀死了,最终导致中断。
确保ECS服务不终止旧的/热的任务,直到新的任务实际上是热的且完全联机,而不只是简单地运行容器进程的最佳或正确方法是什么?
答案 0 :(得分:2)
您可以通过设置以下参数来控制部署的速度:
deploymentConfiguration
(具体来说,您的情况是minimumHealthyPercent
healthCheckGracePeriodSeconds
(用于负载平衡器运行状况检查)或startPeriod
(用于容器运行状况检查)以说明启动同步时间。