Fargate 纵向扩展工作一致,但纵向扩展工作不一致

bst*_*ack 5 containers amazon-ecs autoscaling aws-fargate aws-auto-scaling

我们有一个简单的示例,为基于 CPU 和内存的 ecs 容器化应用程序配置了目标跟踪自动缩放。我们通过下面的代码自动配置了 4 个警报(2 个 CPU - 1 个向上扩展、1 个向下扩展和 2 个内存、1 个向上扩展和 1 个向下扩展)

我们看到,当 cloudwatch 警报触发自动扩展时,我们的 ecs 服务任务会立即自动扩展(在 ecs 方面,存在立即设置所需计数的事件)。然而,当 cloudwatch 警报触发自动缩减时,我们观察到不同的行为:

  1. 有时,ecs 服务任务会立即缩小(缩小警报会立即响起,并设置所需的向下计数事件立即出现在 ecs 端)
  2. 有时,ecs 服务任务会延迟缩减,例如 7-15 分钟后,甚至几个小时后(缩减警报会立即响起,但在 ecs 端设置所需的向下计数事件延迟 7-15 分钟,或几个小时)几个小时以后)
  3. 有时 ecs 服务任务根本不会缩减(我们在周末看到触发了缩减警报,但 ecs 服务任务从未在 48 小时内缩减,并且设置所需的递减计数事件从未到达 ecs 端)

在cloudwatch警报方面,我们观察到警报总是在预期的扩展和缩减时响起,我们认为问题出在ecs方面。

自动缩放代码如下:

resource aws_appautoscaling_target this {
  max_capacity = 5
  min_capacity = 1
  resource_id = "service/dev/service1"
  scalable_dimension = "ecs:service:DesiredCount"
  service_namespace = "ecs"
}

resource aws_appautoscaling_policy memory {
  name               = "memory"
  policy_type        = "TargetTrackingScaling"
  resource_id        = aws_appautoscaling_target.this.resource_id
  scalable_dimension = aws_appautoscaling_target.this.scalable_dimension
  service_namespace  = aws_appautoscaling_target.this.service_namespace

  target_tracking_scaling_policy_configuration {
    predefined_metric_specification {
      predefined_metric_type = "ECSServiceAverageMemoryUtilization"
    }

    scale_in_cooldown = 60
    scale_out_cooldown = 60
    target_value       = 50
  }
}

resource aws_appautoscaling_policy cpu {
  name = "cpu"
  policy_type = "TargetTrackingScaling"
  resource_id = aws_appautoscaling_target.this.resource_id
  scalable_dimension = aws_appautoscaling_target.this.scalable_dimension
  service_namespace = aws_appautoscaling_target.this.service_namespace

  target_tracking_scaling_policy_configuration {

    predefined_metric_specification {
      predefined_metric_type = "ECSServiceAverageCPUUtilization"
    }

    scale_in_cooldown = 60
    scale_out_cooldown = 60
    target_value = 60
  }
}
Run Code Online (Sandbox Code Playgroud)

有没有人见过这种行为,即cloudwatch中的警报正确发出,ecs服务总是在预期时扩展,但并不总是在预期时缩小?我们在这里遗漏了一些明显的东西吗?非常感谢帮助

小智 1

检查您的策略配置。当您有多个扩展策略时,它们必须准备好一起缩小。

如果您的目标是在不活动后缩小规模,则可以尝试禁用某些策略的缩小规模,以减少缩小规模的变量和/或提高某些策略的目标利用率。如果活动是间歇性的,这可能是向特定政策发出的信号,表明其还不应该缩减规模。它需要持续的低活动才能缩小规模。