【问题标题】:Terraform: auto-scaling ecs service using modulesTerraform:使用模块自动扩展 ecs 服务
【发布时间】:2019-05-31 15:55:12
【问题描述】:

我们有一个想要扩展 ECS 服务的用例。大约有10个服务。我不想在每个服务模块中添加缩放代码。另外,我不想为此创建一个模块并为根模块 main.tf 中的每个服务调用它们。

在下面的代码中,只有少数变量会针对示例服务名称、目标组 arn 等进行更改。

resource "aws_appautoscaling_target" "ecs_target" {
  max_capacity       = "${var.max_capacity}"
  min_capacity       = "${var.min_capacity}"
  resource_id        = "service/${var.cluster}/${aws_ecs_service.rc.name}"
  scalable_dimension = "ecs:service:DesiredCount"
  service_namespace  = "ecs"
}

resource "aws_appautoscaling_policy" "ecs_policy" {
  #count              = "${var.auto_scaling_enabled}"
  name               = "rc-ecs-auto-scale"
  policy_type        = "TargetTrackingScaling"
  resource_id        = "service/cluster/${aws_ecs_service.rc.name}"
  scalable_dimension = "ecs:service:DesiredCount"
  service_namespace  = "ecs"

  target_tracking_scaling_policy_configuration {
    predefined_metric_specification {
      predefined_metric_type = "ALBRequestCountPerTarget"

      resource_label = "${var.alb_arn_suffix}/${aws_alb_target_group.rc.arn_suffix}"
    }

    target_value       = "${var.threshold_value_to_scale}"
    scale_in_cooldown  = "${var.scale_in_cooldown}"
    scale_out_cooldown = "${var.scale_out_cooldown}"
  }

  depends_on = ["aws_appautoscaling_target.ecs_target"]
}

实现这一目标的最佳方法是什么?

【问题讨论】:

    标签: terraform


    【解决方案1】:

    您可以使用模块或不使用模块来完成它,但使用模块更优雅。

    1) 使用上述资源创建一个模块,上面每个资源的计数为 10,以便您可以循环访问它们。

    2) 使用每个服务的每个参数的 10 个值的数组调用模块。

    module "services" {
      service_names = []
      capacity = []
      ...
    }
    

    【讨论】:

      猜你喜欢
      • 2021-04-22
      • 1970-01-01
      • 2020-07-19
      • 1970-01-01
      • 2021-07-14
      • 2019-11-17
      • 2016-07-03
      • 2021-09-17
      • 2019-12-01
      相关资源
      最近更新 更多