繁体   English   中英

部署期间,所需任务计入ECS服务

[英]Desired tasks count in ECS service during deployment

假设我正在运行ECS服务。 它被配置为至少运行2个任务,期望的计数为2,最大任务计数为10。最小健康百分比设置为100,最大百分比设置为150。

使用CloudFormation模板管理ECS服务。

如果我通过更改要使用的docker image标签来更新我的ECS服务CloudFormation模板并将这些更改应用到堆栈,则将开始新的部署。

假设在部署之前,该应用程序处于高负载下,并且通过自动缩放将任务数增加到最多10个正在运行的任务。

在这种情况下,我对ECS服务部署的期望如下:

  1. 10个旧任务正在运行。
  2. 产生了5个新任务。
  3. 将5个旧任务设置为耗尽状态。
  4. 5个旧任务已停止。
  5. 产生了5个新任务。
  6. 剩余的5个旧任务被设置为耗尽状态。
  7. 5个旧任务停止了。

我得到的是:

  1. 将8个旧任务设置为耗尽状态。
  2. 通过自动扩展将新部署的所需计数设置为10。
  3. 产生了5个新任务。
  4. 停止了8个旧任务。
  5. 产生了5个新任务。
  6. 2个旧任务设置为耗尽状态。
  7. 2个旧任务停止了。

问题是,ECS并未考虑部署之前正在运行的旧任务的数量。 它尝试以期望的数量2进行部署,该数量最初在CloudFormation模板中设置。 这会导致自动缩放开始前意外终止8个任务。

如果通过CloudFormation更新服务,是否有办法在新版本部署期间实现“预期”方案? 我知道,我可以在部署前手动将模板中所需的计数更改为当前正在运行的任务数。 也许有更好的方法?

如果您希望在特定时刻的计数是10,并且您将最小健康百分比设置为150,最大百分比设置为200,那么它将产生5个以上的任务并启动5个旧任务的消耗。

另外,您不必更改所需的计数并处理处于耗尽状态的任务。 连接一旦关闭,便会排干。

似乎可能不提供所需的计数 然后,新部署将使用旧的所需计数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM