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

sit*_*ith 15 amazon-ec2 amazon-web-services amazon-ecs docker

我已经拥有Docker和EC2的经验.但我是ECS的新手.有人可以帮助我理解这两个参数实际上做了什么,它们的区别和用法.

官方文件说:

最低百分之健康代表在部署过程中必须保持运行状态,如任务所需数量(四舍五入到最接近的整数)的百分比为您服务的任务数的下限.此参数使您无需使用其他群集容量即可进行部署.例如,如果您的服务具有所需数量的四个任务且最低健康百分比为50%,则调度程序可以在启动两个新任务之前停止两个现有任务以释放群集容量.不使用负载均衡器的服务任务如果处于RUNNING状态则被认为是健康的; 对于使用负载均衡器的服务的任务,如果它们处于RUNNING状态,并且托管在其上的容器实例被负载均衡器报告为正常,则被认为是健康的.最低健康百分比的默认值在控制台中为50%,对于AWS CLI,AWS开发工具包和API为100%.

最大百分比参数表示正在部署过程中允许在运行或PENDING状态,因为任务所需数量(四舍五入到最接近的整数)的百分比为您服务的任务数的上限.使用此参数可以定义部署批处理大小.例如,如果您的服务具有所需数量的四个任务且最大百分比值为200%,则调度程序可以在停止四个较旧任务之前启动四个新任务(前提是执行此操作所需的群集资源可用).最大百分比的默认值为200%.

我仍然没有清楚地了解这两个参数.

  1. 如果我的服务具有所需数量的4个任务且最低健康百分比为25%,那么最低健康百分比,调度程序启动/停止的现有/新任务数量是多少?
  2. 如果我的服务具有所需数量的4个任务且最大百分比值为50%,则调度程序启动/停止有多少现有/新任务?
  3. 如果我的服务只有一个任务正在运行,那么如何设置这些参数以使现有任务停止并运行新任务.

Tob*_*sen 29

  1. 如果期望的任务为4,最低健康状态为25%,那么在部署期间,ECS可以在启动新任务之前停止除1之外的所有任务
  2. 最大值应为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*期望任务之间运行.在这种情况下2-6个任务之间.

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