고해상도 메트릭으로 더 빠른 자동 확장

고해상도 메트릭으로 더 빠른 자동 확장

기본적으로 Amazon ECS는 CPUUtilization과 MemoryUtilization 메트릭을 60초 해상도로 게시해요. 20초 해상도를 구성하면 서비스 자동 확장을 더 빠르게 구동할 수 있어요.

출처: 문서

본문

기본적으로 Amazon ECS는 CPUUtilization과 MemoryUtilization 메트릭을 60초 해상도로 게시합니다. 더 빠른 서비스 자동 확장을 구동하려면 20초 해상도를 구성할 수 있습니다. 대상 추적 확장 정책에 대해 다음 고해상도 사전 정의 메트릭을 사용할 수 있습니다.

PredefinedMetricType 설명
ECSServiceAverageCPUUtilizationHighResolution 20초 해상도의 평균 CPU 사용률
ECSServiceAverageMemoryUtilizationHighResolution 20초 해상도의 평균 메모리 사용률

더 빠른 자동 확장을 위해 고해상도 메트릭으로 새 서비스 만들기

  1. Clusters 페이지에서 서비스를 만들 클러스터를 선택합니다.
  2. Services 섹션에서 Create를 선택합니다.
  3. Create Service 양식의 Monitoring configuration 섹션에서 Add metric configuration을 선택합니다.
  4. Metric name에서 고해상도로 수집하려는 메트릭을 선택합니다. CPUUtilization 또는 MemoryUtilization을 선택합니다.
  5. **Resolution (seconds)**에서 20을 선택합니다.
  6. (선택 사항) 두 메트릭을 모두 고해상도로 추가하려면 Add metric configuration을 다시 선택하고 다른 메트릭에 대해 앞의 두 단계를 반복합니다.
  7. Service auto scaling 섹션에서 Use service auto scaling을 선택합니다.
  8. Minimum number of tasks에 서비스 자동 확장이 사용할 작업 수의 하한을 입력합니다. desired count는 이 수보다 아래로 내려가지 않습니다.
  9. Maximum number of tasks에 서비스 자동 확장이 사용할 작업 수의 상한을 입력합니다. desired count는 이 수보다 위로 올라가지 않습니다.
  10. Scaling policy type에서 Target tracking을 선택합니다.
  11. Metric type에서 해당 고해상도 메트릭을 선택합니다. 예를 들어 CPUUtilization을 20초 해상도로 구성했다면 ECSServiceAverageCPUUtilizationHighResolution을, MemoryUtilization을 20초 해상도로 구성했다면 ECSServiceAverageMemoryUtilizationHighResolution을 선택합니다.
  12. Target value에 대상 사용률 백분율을 입력합니다. 서비스 자동 확장은 평균 사용률이 대상 값이 되거나 지정한 최대 작업 수에 도달할 때까지 용량을 확장합니다.
  13. Additional Settings 아래에서 다음을 구성합니다.
    • Scale-out cooldown period에 이전 확장 활동이 적용되기를 기다리는 시간(초)을 입력합니다.
    • Scale-in cooldown period에 축소 활동이 완료된 후 다른 축소 활동이 시작될 수 있기까지 기다리는 시간(초)을 입력합니다.
  14. Create를 선택해 서비스를 만듭니다.

create-service 명령으로 모니터링 구성이 있는 서비스를 만드세요.

aws ecs create-service --region us-east-1 \
    --cluster my-cluster \
    --service-name my-service \
    --task-definition my-app:1 \
    --desired-count 2 \
    --monitoring "metricConfigurations=[{metricNames=[CPUUtilization,MemoryUtilization],resolutionSeconds=20}]"

register-scalable-target 명령으로 서비스를 확장 가능한 대상으로 등록하세요.

aws application-autoscaling register-scalable-target \
    --service-namespace ecs \
    --resource-id service/my-cluster/my-service \
    --scalable-dimension ecs:service:DesiredCount \
    --min-capacity 1 \
    --max-capacity 10 \
    --region us-east-1

고해상도 사전 정의 메트릭으로 대상 추적 확장 정책을 put-scaling-policy 명령으로 만드세요.

aws application-autoscaling put-scaling-policy \
    --service-namespace ecs \
    --resource-id service/my-cluster/my-service \
    --scalable-dimension ecs:service:DesiredCount \
    --policy-name my-highres-cpu-policy \
    --policy-type TargetTrackingScaling \
    --target-tracking-scaling-policy-configuration '{
        "TargetValue": 50.0,
        "PredefinedMetricSpecification": {
            "PredefinedMetricType": "ECSServiceAverageCPUUtilizationHighResolution"
        }
    }' \
    --region us-east-1

describe-scaling-policies 명령으로 정책이 생성되었는지 확인하세요.

aws application-autoscaling describe-scaling-policies \
    --service-namespace ecs \
    --resource-id service/my-cluster/my-service \
    --scalable-dimension ecs:service:DesiredCount \
    --region us-east-1

더 빠른 자동 확장을 위해 고해상도 메트릭을 사용하도록 기존 서비스 업데이트

기존 서비스를 더 빠른 서비스 자동 확장을 위해 고해상도 메트릭을 사용하도록 업데이트하는 것은 두 단계 과정입니다. 먼저 모니터링 해상도를 업데이트해야 하며, 이는 서비스 배포를 트리거합니다. 배포가 성공적으로 완료되고 모든 작업이 20초 해상도로 메트릭을 방출한 후에 고해상도 확장 정책을 구성할 수 있습니다.

중요: 서비스가 이전에 60초 메트릭 해상도를 사용했다면, 서비스를 20초 메트릭 해상도로 업데이트하고 서비스 배포가 완료된 후에만 Amazon ECS 콘솔에서 확장 정책용 고해상도 메트릭을 사용할 수 있습니다.

1단계: 모니터링 해상도 업데이트

  1. Clusters 페이지에서 업데이트할 서비스가 있는 클러스터를 선택합니다.
  2. Services 섹션에서 서비스를 선택하고 Update를 선택합니다.
  3. Update Service 양식의 Monitoring configuration 섹션에서 Add metric configuration을 선택합니다.
  4. Metric name에서 고해상도로 수집하려는 메트릭을 선택합니다. CPUUtilization 또는 MemoryUtilization을 선택합니다.
  5. **Resolution (seconds)**에서 20을 선택합니다.
  6. (선택 사항) 두 메트릭을 모두 고해상도로 추가하려면 Add metric configuration을 다시 선택하고 다른 메트릭에 대해 앞의 두 단계를 반복합니다.
  7. Update를 선택해 변경을 제출합니다. 이는 서비스 배포를 트리거합니다.
  8. 배포가 완료될 때까지 기다립니다. 서비스 세부 정보 페이지의 Deployments 탭에서 진행 상황을 모니터링할 수 있습니다.
    • 참고: 배포가 성공하고 모든 작업이 20초 해상도로 방출할 때까지 서비스 자동 확장 섹션에서 고해상도 확장 메트릭 옵션이 회색으로 표시됩니다.

2단계: 고해상도 확장 정책 구성

배포가 완료된 후 다음 방법 중 하나로 확장 정책을 구성하세요.

옵션 A: 서비스 세부 정보 페이지

  1. 서비스 세부 정보 페이지에서 Service auto scaling 탭을 선택합니다.
  2. Create scaling policy를 선택합니다(또는 기존 정책 편집).
  3. Scaling policy type에서 Target tracking을 선택합니다.
  4. Metric type에서 고해상도 메트릭을 선택합니다. 예: ECSServiceAverageCPUUtilizationHighResolution 또는 ECSServiceAverageMemoryUtilizationHighResolution.
  5. Target value에 대상 사용률 백분율을 입력합니다.
  6. Additional Settings 아래에서 다음을 구성합니다.
    • Scale-out cooldown period에 이전 확장 활동이 적용되기를 기다리는 시간(초)을 입력합니다.
    • Scale-in cooldown period에 축소 활동이 완료된 후 다른 축소 활동이 시작될 수 있기까지 기다리는 시간(초)을 입력합니다.
  7. Create scaling policy를 선택합니다.

옵션 B: Update Service 양식

  1. 서비스 세부 정보 페이지에서 Update를 선택합니다.
  2. Service auto scaling 섹션에서 Use service auto scaling을 선택합니다(아직 활성화되지 않은 경우).
  3. Minimum number of tasks에 하한을 입력합니다.
  4. Maximum number of tasks에 상한을 입력합니다.
  5. Scaling policy type에서 Target tracking을 선택합니다.
  6. Metric type에서 고해상도 메트릭(배포 완료 후 활성화됨)을 선택합니다.
  7. Target value에 대상 사용률 백분율을 입력합니다.
  8. Additional Settings 아래에서 Scale-out cooldown period와 Scale-in cooldown period를 설정합니다.
  9. Update를 선택해 변경을 제출합니다.

1단계: 모니터링 해상도 업데이트(AWS CLI)

update-service 명령으로 모니터링 구성이 있는 서비스를 업데이트하세요.

aws ecs update-service --region us-east-1 \
    --cluster my-cluster \
    --service my-service \
    --monitoring "metricConfigurations=[{metricNames=[CPUUtilization,MemoryUtilization],resolutionSeconds=20}]"

배포가 완료될 때까지 기다립니다. describe-services 명령으로 진행 상황을 모니터링하고 배포 상태를 확인할 수 있습니다.

aws ecs describe-services --region us-east-1 \
    --cluster my-cluster \
    --services my-service

배포가 완료된 후 서비스 개정판을 설명해 모니터링 구성이 활성인지 확인하세요. describe-services 출력에서 활성 서비스 개정판 ARN을 가져온 다음 다음을 실행합니다.

aws ecs describe-service-revisions --region us-east-1 \
    --service-revision-arns arn:aws:ecs:us-east-1:012345678910:service-revision/my-cluster/my-service/1234567890123456789

응답에 모니터링 구성이 나타나는지 확인하세요.

{
    "serviceRevisions": [
        {
            ...
            "monitoring": {
                "metricConfigurations": [
                    {
                        "metricNames": ["CPUUtilization", "MemoryUtilization"],
                        "resolutionSeconds": 20
                    }
                ]
            }
        }
    ]
}

2단계: 고해상도 확장 정책 구성(AWS CLI)

아직 등록되지 않았다면 register-scalable-target 명령으로 서비스를 확장 가능한 대상으로 등록하세요.

aws application-autoscaling register-scalable-target \
    --service-namespace ecs \
    --resource-id service/my-cluster/my-service \
    --scalable-dimension ecs:service:DesiredCount \
    --min-capacity 1 \
    --max-capacity 10 \
    --region us-east-1

고해상도 사전 정의 메트릭으로 대상 추적 확장 정책을 put-scaling-policy 명령으로 만드세요. 다음 예시는 50% CPU 사용률을 목표로 합니다.

aws application-autoscaling put-scaling-policy \
    --service-namespace ecs \
    --resource-id service/my-cluster/my-service \
    --scalable-dimension ecs:service:DesiredCount \
    --policy-name my-highres-cpu-policy \
    --policy-type TargetTrackingScaling \
    --target-tracking-scaling-policy-configuration '{
        "TargetValue": 50.0,
        "PredefinedMetricSpecification": {
            "PredefinedMetricType": "ECSServiceAverageCPUUtilizationHighResolution"
        }
    }' \
    --region us-east-1

정책이 생성되었는지 확인하세요.

aws application-autoscaling describe-scaling-policies \
    --service-namespace ecs \
    --resource-id service/my-cluster/my-service \
    --scalable-dimension ecs:service:DesiredCount \
    --region us-east-1

더 빠른 서비스 자동 확장 검증

1부: 고해상도 메트릭이 게시되는지 확인

  1. CloudWatch 콘솔로 이동합니다.
  2. 탐색 창에서 Metrics를 선택한 다음 All metrics를 선택합니다.
  3. AWS/ECS 네임스페이스를 선택합니다.
  4. ClusterName, ServiceName을 선택합니다.
  5. 서비스의 CPUUtilization과 MemoryUtilization 메트릭을 찾습니다.
  6. 기간을 20초로 설정합니다. 20초 간격의 데이터 포인트가 보이면 고해상도 메트릭이 활성임을 확인할 수 있습니다.

2부: 확장 정책이 고해상도 메트릭을 사용하는지 확인

  1. 서비스 세부 정보 페이지에서 Service auto scaling 탭을 선택합니다.
  2. 기존 확장 정책을 보고 메트릭이 고해상도 변형(ECSServiceAverageCPUUtilizationHighResolution 또는 ECSServiceAverageMemoryUtilizationHighResolution)으로 설정되어 있는지 확인합니다.
  3. 또는 CLI로 확인합니다.
aws application-autoscaling describe-scaling-policies \
    --service-namespace ecs \
    --resource-id service/my-cluster/my-service \
    --scalable-dimension ecs:service:DesiredCount \
    --region us-east-1

응답의 PredefinedMetricType이 고해상도 메트릭으로 설정되어 있는지 확인합니다.

고려 사항

  • 모니터링 구성 변경은 새 서비스 개정판을 만들고 서비스 배포가 필요합니다. 배포가 완료되고 모든 작업이 20초 해상도로 방출할 때까지 고해상도 확장 메트릭을 사용할 수 없습니다.
  • 고해상도 메트릭은 Application Load Balancer와 Network Load Balancer를 사용하는 서비스에 지원됩니다. 대상 그룹이 없는 Classic Load Balancer를 사용하는 서비스는 지원되지 않습니다.
  • 고해상도 메트릭은 CODE_DEPLOY 또는 EXTERNAL 배포 컨트롤러 유형을 사용하는 서비스에는 지원되지 않습니다.
  • 서비스의 모니터링 구성은 DescribeServiceRevisions로 볼 수 있습니다. 모니터링 구성은 CreateService 또는 UpdateService 응답에서는 반환되지 않습니다.

더 알아보기 (Learn more)