+86 13541016684Mon. - Fri. 10:00-22:00

使用 AWS Fargate 上进行 AutoScale设置

使用 AWS Fargate 上进行 AutoScale设置

使用 AWS Fargate 上进行 AutoScale设置

AWS Fargate变得更加强大 Auto Scaleing我会尝试实施它。

AWS官方 博客进行设置的。 

在Terraform中进行配置,参考使用

旧 ECS 中的 AutoScale

容器实例( EC2)有装订,有一种匆忙的感觉。
下面两个 Auto Scale需要进行设置。

  • 容器实例 Auto Scale
  • ECS ServiceAuto Scale

https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F73176%2Fa8935b54-e25b-a786-1d31-cfaf301d0515.pngixlibrb-4.0

Fargate 的自动缩放

容器实例( EC2),您可以在ECS集群内自由安排任务。

  • 容器实例 Auto Scale

不再需要。

https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F73176%2F1bd78673-860e-eb46-c3fd-6d4e7c44f930.pngixlibrb-4.0

使用 Terraform 配置

下面一次性创建所有内容。
https://github.com/Thirosue/terraform-sample/tree/master/aws_fargate

请比较下面与ECS的差异。
https://github.com/Thirosue/terraform-sample/tree/master/aws_ecs

  • 供应
$ cd /path/to/directory/aws_fargate
$ cat terraform.tfvars
access_key="[アクセスキー記載]"
secret_key="[シークレットキーを記載]"
aws_id="[AWS IDを記載]"
$ terraform plan
$ terraform apply
  • 破坏
$ terraform destroy

使用管理控制台进行配置

Fargate起动

我们将使用 Terraform 从 VPC 一次性创建所有内容。

创建后的图像 (Fargate)

我想确认管理控制台中不存在EC2。

https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F73176%2Faf679849-01fd-0feb-5520-44ba1390c677.pngixlibrb-4.0

上一张图片 (ECS)

唯一的区别是容器实例是否存在。
仍然需要围绕 NetWork 进行设置,例如 VPC/子网/ALB。

https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F73176%2F3c7d9e59-f408-bf2a-855c-cfbd1158dac5.pngixlibrb-4.0

ECS 配置文件的更改

  • 由于不再需要实例设置,因此删除与 Auto Scale 相关的文件。
  • Task定义
地形
  requires_compatibilities = ["FARGATE"]
  network_mode             = "awsvpc"
  execution_role_arn       = "arn:aws:iam::${var.aws_id}:role/ecsAdminRole" #AWS標準ECS関連のポリシーAmazonECSTaskExecutionRolePolicy/AmazonECS_FullAccessを含む
  cpu                      = 256 #Fargate準拠の組み合わせのみ指定可能
  memory                   = 512 #Fargate準拠の組み合わせのみ指定可能
任务定义.json
[
  {
    "name": "nginx",
    "image": "nginx:alpine",
    "cpu": 256, //必要に応じ変更
    "memory": 512, //必要に応じ変更
    "essential": true,
    "network_mode": "awsvpc", //追加 
    "portMappings": [
      {
        "containerPort": 80
      }
    ],
    "logConfiguration": {
        "logDriver": "awslogs",
        "options": {
            "awslogs-group": "awslogs-${app_name}-nginx-log",
            "awslogs-region": "${aws_region}",
            "awslogs-stream-prefix": "awslogs-${app_name}-nginx"
        }
    }
  }
]

单击此处了解 CPU/内存组合

  • ALB 目标群体

以下追加

   target_type = "ip"
  • 云服务器服务

IAM 删除
从自动缩放传输网络设置

差异
-  iam_role                           = "ecsServiceRole"
+  launch_type                        = "FARGATE"

+  launch_type = "FARGATE"
+
+  network_configuration {
+    subnets = [
+      "${aws_subnet.public-subnet1.id}",
+      "${aws_subnet.public-subnet2.id}"
+    ]
+
+    security_groups = [
+      "${aws_security_group.public_firewall.id}"
+    ]
+    assign_public_ip = "true"
+  }

地形运行

  • 地形版本
$ terraform --version
Terraform v0.11.3
+ provider.aws v1.9.0
+ provider.template v1.0.0
  • GitHub
衬套
## Dry Run
terraform plan -var 'aws_id=[AWS Account Idを記載]'

## apply
terraform apply -var 'aws_id=[AWS Account Idを記載]'

## 削除
terraform destroy -var 'aws_id=[AWS Account Idを記載]'

# network-configurationでassignPublicIp=ENABLEDにupdate
$ aws ecs update-service \
  --cluster fargate-auth \
  --service fargate-auth-service \
  --network-configuration "awsvpcConfiguration={subnets=[subnet-xxxxxxx,subnet-xxxxxx],securityGroups=[sg-xxxxxxx],assignPublicIp=ENABLED}"

最后

我们还能够成功确认管理控制台上不存在该容器实例。
,我想尝试自动缩放。

  • 实施后服务状况

https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F73176%2F4db30678-8553-d6c7-cb7d-4255ba7b34f4.pngixlibrb-4.0

CloudWatch Alarm设置

AWS官方 博客实现 参考

  • 实施后报警状态

由于CPU利用率低, ScaleIn处于报警状态, ScaleOut还可以

https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F73176%2F1da0423e-7de5-7360-1ea9-4d112e2275d0.pngixlibrb-4.0

ECS Service AutoScale设置

AWS官方 博客实现 参考

  • Service更新

https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F73176%2Ff4f52cee-4332-9313-72e3-e3794054aa8e.pngixlibrb-4.0

  • Auto Scaling Policy设置

已创建 Alarm并且冷却时间固定为60秒进行测试。
同样下面, ScaleInPolicy还创建了

https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F73176%2F577c6786-0cc5-f079-1b81-83c493322280.pngixlibrb-4.0

  • 设置后 Auto Scaling的状态

还调整和更新最大任务数。

https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F73176%2F9854a905-6dff-8d1e-9f41-e401a3e7809a.pngixlibrb-4.0

加载

Apache Bench等,施加负载, ScaleOutAlarm点燃。
另请根据需要调整安全组。

巴什
$ ab -n 1000000 -c 1000 http://fargate-nginx-alb-XXXXXXXXXXXX.us-east-1.elb.amazonaws.com/
  • ScaleOut着火了

https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F73176%2Fa523d312-a435-5046-36d6-9926b591c94c.pngixlibrb-4.0

  • task那里有两个 RUNNING变成

https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F73176%2F4cdf70a8-17de-0531-8b2d-95fbd7c62efa.pngixlibrb-4.0

访问暂停

CPU 利用率下降, ScaleInAlarm火灾和任务停止。

  • AutoScale历史

Alarm经过 startstop可以查看历史记录。

https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F73176%2F06e0ad0c-4dcb-764e-de14-86e9cc65e3ab.pngixlibrb-4.0

  • task是一(重新十进制) RUNNING还给

https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F73176%2F0f0cca62-423b-e2c7-9ae9-1b0231a0e5ba.pngixlibrb-4.0

最后

ECS所以我过得很艰难 Auto Scale现在可以轻松且不受限制地实现。