containers - Fargate 向上扩展始终如一,但向下扩展并不始终如一

标签 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
  }
}

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

最佳答案

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

如果您的目标是在不活动后缩减规模,您可以尝试禁用某些政策的规模缩减,以减少规模缩减的变量和/或提高某些政策的目标利用率。如果事件是间歇性的,这可能是给定策略的一个信号,它不应该缩减。它需要持续的低事件来缩小规模。

关于containers - Fargate 向上扩展始终如一,但向下扩展并不始终如一,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66227797/

相关文章:

Azure 自动缩放规则映射不正确

amazon-web-services - 特定 Auto-Scaling 组 Cloudformation AWS

c++ - std::allocator 是否需要默认可构造?

docker - 为什么docker容器名称末尾有一个随机数?

azure - Docker 永远不会在 Azure 上运行 - 等待对容器预热请求的响应

amazon-web-services - 为同一服务器使用多个证书

amazon-web-services - 一台大EC2、多台小EC2、一台ECS,哪个划算?

css - 切换 div 容器与其下方的另一个容器重叠

docker - ECS Agent启动Docker容器未完成。手动启动成功

amazon-web-services - Terraform Auto Scaling 组 - 为什么没有启动任何实例?