确保 ECS 仅在新任务准备就绪时终止旧任务

2023-12-20

我们有基于 Docker 的 ECS 服务,一旦进程启动,它需要在准备好开始服务请求之前同步应用程序状态。这可能需要一些时间(进程启动后几秒钟)。

使用 ECS 服务时,更改任务定义版本会触发任务的滚动替换(很好),但速度太快。一旦任务达到RUNNING状态,下一个任务被杀死。但RUNNING只是意味着流程已启动,并不意味着它满足了准备工作的所有内部要求...在这种情况下,还没有准备好服务请求

整个更新过程发生得如此之快,以至于在某些情况下,在任何新任务完成加载其状态之前,所有旧任务都被终止,最终导致中断。

确保 ECS 服务不会终止旧/热任务直到新任务真正热且完全在线(而不仅仅是容器进程正在运行)的最佳或正确方法是什么?


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

  • deploymentConfiguration https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service_definition_parameters.html(具体来说,minimumHealthyPercent在你的情况下)
  • 启用健康检查(与负载均衡器健康检查 https://docs.aws.amazon.com/elasticloadbalancing/latest/application/target-group-health-checks.html如果您使用负载平衡器或容器健康检查 https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definition_parameters.html#container_definition_healthcheck)
  • setting healthCheckGracePeriodSeconds(用于负载均衡器运行状况检查)或startPeriod(用于容器运行状况检查)以考虑启动同步时间。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

确保 ECS 仅在新任务准备就绪时终止旧任务 的相关文章

随机推荐