Amazon ECS 中的最小健康百分比和最大百分比是多少

Posted

技术标签:

【中文标题】Amazon ECS 中的最小健康百分比和最大百分比是多少【英文标题】:What is the minimum healthy percent and maximum percent in Amazon ECS 【发布时间】:2017-04-05 11:53:57 【问题描述】:

我已经有 Docker 和 EC2 方面的经验。但我是 ECS 的新手。有人可以帮助我了解这两个参数的实际作用,它们的区别和用法。

Official Docs 说:

最低健康百分比表示在部署期间必须保持在 RUNNING 状态的服务任务数的下限,以所需任务数的百分比表示(四舍五入到最接近的整数)。此参数使您能够在不使用额外集群容量的情况下进行部署。例如,如果您的服务具有所需数量的四个任务和至少 50% 的健康百分比,则调度程序可能会停止两个现有任务以释放集群容量,然后再启动两个新任务。不使用负载均衡器的服务的任务如果处于 RUNNING 状态则被认为是健康的;使用负载均衡器的服务的任务如果处于 RUNNING 状态并且负载均衡器将其托管的容器实例报告为健康,则认为它们是健康的。最低健康百分比的默认值在控制台中为 50%,在 AWS CLI、AWS 开发工具包和 API 中为 100%。

最大百分比参数表示在部署期间允许处于 RUNNING 或 PENDING 状态的服务任务数的上限,以所需任务数的百分比表示(向下取整到最接近的整数)。此参数使您能够定义部署批量大小。例如,如果您的服务具有所需数量的四个任务并且最大百分比值为 200%,则调度程序可能会在停止四个旧任务之前启动四个新任务(前提是执行此操作所需的集群资源可用)。最大百分比的默认值为 200%。

这两个参数我还是没有搞清楚。

    对于最低健康百分比,如果我的服务有 4 个任务的期望数量和 25% 的最低健康百分比,调度程序将启动/停止多少现有/新任务? 在最大百分比的情况下,如果我的服务有 4 个任务的期望数量和 50% 的最大百分比值,调度程序将启动/停止多少现有/新任务? 如果我的服务只运行一个任务,如何设置这些参数以停止现有任务并运行新任务。

【问题讨论】:

在我的情况下,一个容器的任务一切正常。我无法运行多个容器。任务中的每个容器都会自动停止。 【参考方案1】:
    在所需任务为 4 且最低运行状况为 25% 的情况下,在部署期间,允许 ECS 在开始新任务之前停止除 1 之外的所有任务 最大值应为 100+,这样配置就没有意义了。但是,如果您有 4 个期望的任务并且最大为 150%,则允许 ECS 在停止其他任务之前启动 2 个新任务。 如果您想确保在重新部署期间运行的任务不超过 1 个,则需要将希望设置为 1,最小值设置为 0%,最大值设置为 100%。 如果您想确保始终至少有 1 个任务在运行,您需要将希望设置为 1,最小值设置为 100%,最大值设置为 200%。

其他例子。如果您希望达到 4,则最小值为 50%,最大值为 150%。然后 ECS 可以决定它在部署期间会做什么。

如果集群没有更多资源可以决定停止2个任务,在新版本中启动2个新任务,等待新任务健康。然后停止剩余的两个任务并开始两个新的任务。 如果集群有更多资源,则 ECS 可以决定在停止现有任务之前启动两个新任务。

或者你可以这样看。在重新部署期间,ECS 需要在 MinimumPercent/100*desired 和 MaximumPercent/100*desired 任务之间运行。在这种情况下,在 2-6 个任务之间。

【讨论】:

如果您使用守护程序策略,您只有 1 个 EC2 实例,并且您将最小值设置为 100%,会发生什么情况。如果您通过添加想要部署相同服务的新版本来“重新部署”。它会被阻止这样做吗?还是会强制关闭该 1 个服务任务并部署新的服务任务? @CMCDragonkai 由于守护程序服务自动具有 max=100,设置 min=100 会导致错误:“maximumPercent 和 minimumHealthyPercent 都不能为 100,因为这将阻止部署。”在一个实例中,您需要精确地 min=0 才能进行部署。 min>0 意味着至少有一项任务需要在部署期间保持运行。对于 2 个实例,min 最多为 50,三个最多为 66,依此类推。如果您坚持使用 1 个实例,则副本策略将适合您描述的情况,然后您可以设置例如min=100 和 max=200,前提是您的实例具有用于这两个任务的资源。

以上是关于Amazon ECS 中的最小健康百分比和最大百分比是多少的主要内容,如果未能解决你的问题,请参考以下文章

父级具有最小/最大高度时的 CSS 百分比高度

将角度从转换为最小/最大旋转的百分比

如何设置 ECS 服务最小和最大任务

需要弹性说明:宽度、最小(最大)宽度、显式宽度、显式最小(最大)宽度、测量宽度、测量最小宽度、百分比宽度

javascript 计算两个值(最小值,最大值)和值之间的百分比

最小(最大)处理器状态的 API,C++