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 警报触发自动缩减时,我们观察到不同的行为:
在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
检查您的策略配置。当您有多个扩展策略时,它们必须准备好一起缩小。
如果您的目标是在不活动后缩小规模,则可以尝试禁用某些策略的缩小规模,以减少缩小规模的变量和/或提高某些策略的目标利用率。如果活动是间歇性的,这可能是向特定政策发出的信号,表明其还不应该缩减规模。它需要持续的低活动才能缩小规模。
| 归档时间: |
|
| 查看次数: |
2083 次 |
| 最近记录: |