我们有基于Docker的ECS服务,一旦进程启动,就需要同步应用程序状态,然后才能开始服务请求。这可能需要一些时间(进程启动后的几秒钟)。
使用ECS服务时,更改任务定义版本会触发任务的滚动替换(好的),但它执行得太快。一旦任务到达 RUNNING 状态,下一个任务被终止。但是 跑步 只是意味着这个过程已经开始了,并不意味着它已经满足了自己所有的内部需求,准备好了工作……在这种情况下,不准备满足请求
RUNNING
跑步
整个更新过程发生得如此之快,以至于在某些情况下,所有旧任务在任何新任务完成其状态加载之前都会被终止,最终导致停机。
在新任务完全联机之前(而不仅仅是容器进程正在运行),确保ECS服务不会终止旧任务/热任务的最佳或正确方法是什么?
可以通过设置以下参数来控制展开的速度:
deploymentConfiguration
minimumHealthyPercent
healthCheckGracePeriodSeconds
startPeriod