首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将ecs自动标度时间从地形减少到最小?

如何将ecs自动标度时间从地形减少到最小?
EN

Server Fault用户
提问于 2021-06-23 10:47:28
回答 1查看 410关注 0票数 0

当您创建ECS自动标度策略时,有两个告警标记:一个用于扩展("out"),一个用于缩小("in")。

我看到创建的扩展数据似乎每分钟采样CPU利用率(或感兴趣的度量),并且只有在连续三个数据点超过阈值时才触发自动缩放。

这意味着,如果我看到交通高峰,三分钟后,规模扩大发生。(实际上,平均阈值缺口将发生在采样间隔的中间,因此延迟为3.5分钟。)

我可以调整采样率和数据点的数量需要通过AWS控制台网络接口。

然而,我想通过Terraform来管理我的基础设施。

我如何使用Terraform但没有手动点击来缩短(a)第一次突破阈值之间的时间;(b)我开始扩展的时间点?(还有:这是一件愚蠢的尝试吗?我是在用一种方框式的方式来做吗?)

据我所知,它看起来像滑上坡:创建自动标度策略(我可以通过Terraform完成)会自动创建两个警报并将句柄返回给它们(请参阅https://docs.aws.amazon.com/autoscaling/application/APIReference/API_PutScalingPolicy.html),但Terraform不公开这些句柄(参见https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/appautoscaling_策略#属性-引用)。在Terraform还有可能吗?这需要英勇的努力吗?

EN

回答 1

Server Fault用户

回答已采纳

发布于 2021-06-24 15:47:40

你绝对可以用Terraform来实现这一点。有几种方法可以实现这一点,但我将重点关注给您提供更多灵活性的方法。

假设您已经定义了您的aws_autoscaling_group资源,然后您需要为您的ASG和CloudWatch警报定义您的缩放策略,以触发它们。我通常跟踪3种不同的自动标度度量: MemoryReservation、CPUReservation和CPUUtilization。

--一个基于CPUUtilization.

的自动标度设置示例我们的ASG:

的扩展策略

代码语言:javascript
运行
复制
resource "aws_autoscaling_policy" "my-cpu-scale-up" {
  name = "my-cpu-scale-up"
  scaling_adjustment = 1
  adjustment_type = "ChangeInCapacity"
  cooldown = 60
  autoscaling_group_name = aws_autoscaling_group.[your-asg-resource].name
}

resource "aws_autoscaling_policy" "my-cpu-scale-down" {
  name = "my-cpu-scale-down"
  scaling_adjustment = -1
  adjustment_type = "ChangeInCapacity"
  cooldown = 300
  autoscaling_group_name = aws_autoscaling_group.[your-asg-resource].name
}

CloudWatch警报将触发我们的策略之一.

代码语言:javascript
运行
复制
resource "aws_cloudwatch_metric_alarm" "my-cpu-usage-high" {
  alarm_name = "my-cpu-usage-high"
  comparison_operator = "GreaterThanOrEqualToThreshold"
  evaluation_periods = "2"
  metric_name = "CPUUtilization"
  namespace = "AWS/EC2"
  period = "60" // in seconds
  statistic = "Average"
  threshold = "70" // in %
  alarm_description = "This metric monitors the cluster for high CPU usage"
  alarm_actions = [
    aws_autoscaling_policy.my-cpu-scale-up.arn
  ]
  dimensions ={
    AutoScalingGroupName= aws_autoscaling_group.[your-asg-resource].name
  }
}

resource "aws_cloudwatch_metric_alarm" "my-cpu-usage-low" {
  alarm_name = "my-cpu-usage-low"
  comparison_operator = "LessThanOrEqualToThreshold"
  evaluation_periods = "2"
  metric_name = "CPUUtilization"
  namespace = "AWS/EC2"
  period = "60"
  statistic = "Average"
  threshold = "20"
  alarm_description = "This metric monitors my cluster for low CPU usage"
  alarm_actions = [
    aws_autoscaling_policy.my-cpu-scale-down.arn
  ]
  dimensions ={
    AutoScalingGroupName= aws_autoscaling_group.[your-asg-resource].name
  }
}

正如您从这个例子中可以看到的那样,我们可以使用警报配置,直到达到预期的结果。

希望这能帮上忙!

票数 1
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/1067540

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档