我们有基于 Docker 的 ECS 服务,一旦进程启动,它需要在准备好开始服务请求之前同步应用程序状态。这可能需要一些时间(进程开始后的几秒钟)。
使用 ECS 服务时,更改任务定义版本会触发任务的滚动替换(很好),但它执行得太快了。一旦一个任务达到一个RUNNING
状态,下一个任务就会被杀死。但这RUNNING
只是意味着流程已启动,并不意味着它满足了准备工作的所有内部要求……在这种情况下,还没有准备好服务请求
整个更新过程发生得如此之快,以至于在某些情况下,所有旧任务都在任何新任务完成加载其状态之前被杀死,最终导致中断。
确保 ECS 服务在新任务真正热且完全在线之前不会终止旧/热任务的最佳或正确方法是什么,而不仅仅是容器进程正在运行?