如何设置ECS自动缩放?

问题描述

我正在通过

One event correctly displayed on calendar while second event is on the wrong date.

使用ECS来部署我的API。

我首先使用以下命令启动集群实例实例:

sudo ecs-cli up --region MY REGION --keypair MY KEY PAIR --instance-type t2.micro --capability-iam --size 1 --cluster MY CLUSTER NAME --spot-price 0.01

然后,使用以下docker-compose.yml和ecs-params.yml文件:

version: '3'

services:
  selenium:
    image: selenium/standalone-chrome
    ...etc

  api:
    image: myapithatusesselenium/myapithatusesselenium
    ports:
      - 3000:3000
    links:
      - selenium
    ...etc
version: 1
task_definition:
  task_execution_role: ROLE ID
  services:
    selenium:
      cpu_shares: 600
      mem_limit: 700000000
    api:
      repository_credentials:
        credentials_parameter: REPO CREDENTIALS
      cpu_shares: 400
      mem_limit: 300000000

我正在使用此命令通过负载均衡器部署服务:

sudo ecs-cli compose --file docker-compose.yml --ecs-params ecs-params.yml --project-name MY PROJECT NAME service up --cluster MY CLUSTER NAME --target-group-arn LOAD BALANCER RESSOURCE ID --container-name api --container-port 3000

因此,当我的API负载很大时(当它开始通知我API即将关闭时),我可以通过使用以下命令进行扩展来添加其他实例:

# 1 - scale the number of ec2 instances in the cluster
sudo ecs-cli scale --size 3 --capability-iam
# 2 - scale the number of tasks
sudo ecs-cli compose --file docker-compose.yml --project-name MY PROJECT NAME service scale 3

您可以看到任务数和ec2实例数相同,因为每个容器可以处理一个任务。

当负载不多时,我再次减小尺寸。

我现在需要的是一种自动完成此功能的方法(自动缩放)。我不知道该怎么做。

谢谢!

解决方法

ECS不会自动缩放。为此,您必须使用应用程序自动缩放服务。您需要使用常规的AWS CLI并调用register-scalable-target,然后创建缩放策略

https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-auto-scaling.html

https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/register-scalable-target.html

https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/put-scaling-policy.html

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...