서비스 자동 크기 조정 - Amazon Elastic Container Service

서비스 자동 크기 조정

자동 크기 조정은 Amazon ECS 서비스에서 원하는 작업 수를 자동으로 늘리거나 줄이는 기능입니다. Amazon ECS는 Application Auto Scaling 서비스를 활용하여 이 기능을 제공합니다. 자세한 정보는 Application Auto Scaling 사용 설명서를 참조하세요.

Amazon ECS는 서비스의 평균 CPU 및 메모리 사용량과 함께 CloudWatch 지표를 게시합니다. 자세한 정보는 서비스 사용률 섹션을 참조하세요. 이와 함께 다른 CloudWatch 지표를 사용하여 피크 시간에는 서비스를 확장(더 많은 태스크를 추가)하여 높은 수요를 처리하고 사용률이 낮은 기간에는 서비스를 축소(더 적은 태스크를 실행)하여 비용을 절감할 수 있습니다.

Amazon ECS 서비스 자동 크기 조정은 다음과 같은 유형의 자동 크기 조정을 지원합니다.

  • 대상 추적 조정 정책— 특정 지표에 대한 대상 값을 기준으로 서비스가 실행하는 작업의 수를 늘리거나 줄입니다. 이 과정은 온도 조절기를 사용하여 집안 온도를 유지하는 방법과 비슷합니다. 사용자가 온도를 선택하면 나머지는 모두 온도 조절기에서 자동으로 수행됩니다.

  • 단계 조정 정책— 일련의 조정 조절(경보 위반의 크기에 따라 달라지는 단계 조절)을 기준으로 서비스가 실행하는 작업의 수를 늘리거나 줄입니다.

  • 예약된 조정—날짜 및 시간을 기준으로 서비스가 실행하는 작업 수를 늘리거나 줄입니다.

서비스 자동 크기 조정 및 배포

Application Auto Scaling은 Amazon ECS 배포가 진행 중인 동안 축소 프로세스를 비활성화합니다. 그러나 배포 중에 일시 중단되지 않는 한 확장 프로세스는 계속 발생합니다. 배포가 진행되는 동안 확장 프로세스를 일시 중단하려면 다음 단계를 수행합니다.

  1. describe-scalable-targets 명령을 호출하여 Application Auto Scaling에서 확장 가능한 대상과 연결된 서비스의 리소스 ID를 지정합니다(예:service/default/sample-webapp). 출력 결과를 기록합니다. 다음 명령을 호출할 때 필요합니다.

  2. register-scalable-target 명령을 호출하여 리소스 ID, 네임스페이스 및 확장 가능한 차원을 지정합니다. DynamicScalingInSuspendedDynamicScalingOutSuspended 모두에 대해 true를 지정합니다.

  3. 배포가 완료되면 register-scalable-target 명령을 호출하여 조정을 재개할 수 있습니다.

자세한 정보는 Application Auto Scaling의 조정 일시 중지 및 재개를 참조하세요.

서비스 자동 크기 조정에 필요한 IAM 권한

서비스 자동 크기 조정은 Amazon ECS, CloudWatch 및 Application Auto Scaling API의 조합을 통해 수행됩니다. 서비스는 Amazon ECS를 통해 생성 및 업데이트됩니다. CloudWatch는 경보를 생성합니다. 크기 조정 정책은 Application Auto Scaling을 통해 생성됩니다.

서비스 자동 크기 조정 설정에 액세스하는 IAM 사용자에게는 서비스 생성 및 업데이트에 대한 표준 IAM 권한에 더해 동적 크기 조정을 지원하는 서비스에 대한 적절한 권한이 있어야 합니다. IAM 사용자에게는 다음 예제 정책에 나온 태스크를 수행할 수 있는 권한이 있어야 합니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "application-autoscaling:*", "ecs:DescribeServices", "ecs:UpdateService", "cloudwatch:DescribeAlarms", "cloudwatch:PutMetricAlarm", "cloudwatch:DeleteAlarms", "cloudwatch:DescribeAlarmHistory", "cloudwatch:DescribeAlarmsForMetric", "cloudwatch:GetMetricStatistics", "cloudwatch:ListMetrics", "cloudwatch:DisableAlarmActions", "cloudwatch:EnableAlarmActions", "iam:CreateServiceLinkedRole", "sns:CreateTopic", "sns:Subscribe", "sns:Get*", "sns:List*" ], "Resource": [ "*" ] } ] }

서비스 생성 예제서비스 업데이트 예제 IAM 정책 예제는 IAM 사용자가 AWS Management Console에서 서비스 자동 크기 조정을 사용하는 데 필요한 권한을 보여 줍니다.

Application Auto Scaling 서비스에는 Amazon ECS 서비스 및 CloudWatch 경보를 설명할 권한과 사용자 대신 원하는 서비스 수를 수정할 권한이 필요합니다. sns: 권한은 임계값이 초과되었을 때 CloudWatch가 Amazon SNS 주제로 보내는 알림에 대한 것입니다. Amazon ECS 서비스에 대해 자동 크기 조정을 사용하면 AWSServiceRoleForApplicationAutoScaling_ECSService라는 서비스 연결 역할이 생성됩니다. 이 서비스 연결 역할은 정책에 대한 경보를 설명하고, 서비스의 현재 실행 중인 작업 수를 모니터링하고, 원하는 서비스 수를 수정할 수 있는 Application Auto Scaling 권한을 부여합니다. Application Auto Scaling의 관리형 Amazon ECS 역할은 원래 ecsAutoscaleRole이었지만 더 이상 필요하지 않습니다. 서비스 연결 역할은 Application Auto Scaling의 기본 역할입니다. 자세한 정보는 Application Auto Scaling 사용 설명서Application Auto Scaling 서비스 연결 역할을 참조하세요.

Amazon ECS에서 CloudWatch 지표를 활성화하기 전에 Amazon ECS 컨테이너 인스턴스 역할을 생성한 경우 ecs:StartTelemetrySession 권한을 추가해야 할 수 있습니다. 자세한 정보는 CloudWatch 지표 사용을 참조하세요.

고려 사항

조정 정책을 사용하는 경우 다음 고려 사항을 참조하세요.

  • Amazon ECS는 1분 간격으로 지표를 CloudWatch로 보냅니다. 클러스터 및 서비스가 CloudWatch로 지표를 전송할 때까지는 지표를 사용할 수 없으며, 아직 존재하지 않는 지표에 대해 CloudWatch 경보를 생성할 수 없습니다.

  • 조정 정책은 휴지 기간을 지원합니다. 이것은 이전의 조정 활동이 적용될 때까지 대기할 시간(초)입니다.

    • 확장 이벤트의 목적은 지속적이지만 과도하지는 않게 확장하는 것입니다. 서비스 자동 크기 조정에서 조정 정책을 사용하여 성공적으로 확장하면 휴지 기간이 계산되기 시작합니다. 조정 정책은 더 큰 조정이 시작되거나 휴지 기간이 종료되지 않는 한 원하는 용량을 다시 늘리지 않습니다. 확장 휴지 기간이 진행되는 동안 확장 활동을 시작하여 추가된 용량은 다음 확장 활동에 대해 원하는 용량의 일부로 계산됩니다.

    • 축소 이벤트의 목적은 애플리케이션의 가용성을 보호하기 위해 보수적으로 축소하여 휴지 기간이 만료될 때까지 축소 활동을 차단하는 것입니다. 그러나 축소 휴지 기간 중에 다른 경보가 확장 활동을 시작하면 서비스 자동 크기 조정은 대상을 즉시 확장합니다. 이 경우 축소 휴지 기간이 중지되고 완료되지 않습니다.

  • 서비스 스케줄러는 원하는 수를 항상 신뢰하지만 서비스에 활성화된 조정 정책과 경보가 있는 한 서비스 자동 크기 조정은 사용자가 수동으로 설정한 원하는 수를 변경할 수 있습니다.

  • 원하는 서비스 수가 최소 용량 값 이하로 설정되어 있고 경보가 확장 활동을 트리거하는 경우 서비스 자동 크기 조정은 원하는 수를 최소 용량 값까지 확장한 다음 경보에 연결된 조정 정책에 따라 필요한 만큼 계속 확장합니다. 하지만 원하는 수가 이미 최소 용량 값 미만이기 때문에 축소 활동은 원하는 수를 조정하지 않습니다.

  • 원하는 서비스 수가 최대 용량 값 이상으로 설정되어 있고 경보가 축소 활동을 트리거하는 경우 서비스 자동 크기 조정은 원하는 수를 최대 용량 값까지 확장한 다음 경보에 연결된 조정 정책에 따라 필요한 만큼 계속 축소합니다. 하지만 원하는 수가 이미 최대 용량 값을 초과하므로 확장 활동은 원하는 수를 조절하지 않습니다.

  • 조정 활동 중에 서비스 오토 스케일링이 시작점으로 사용하는 값은 원하는 수가 아니라 서비스에서 실제 실행 중인 태스크 수입니다. 이것이 처리 용량입니다. 이로써, 가령 추가 태스크를 배치하기에 충분한 컨테이너 인스턴스 리소스가 없는 경우 등 충족될 수 없는 과도한(불필요한) 조정을 방지합니다. 나중에 컨테이너 인스턴스 용량을 사용할 수 있는 경우 대기 중인 조정 활동이 승계되며 휴지 기간 후에 추가 조정 활동이 계속될 수 있습니다.

  • 수행할 작업이 없을 때 태스크 수를 0으로 조정하려면 최소 용량을 0으로 설정합니다. 대상 추적 조정 정책을 사용하는 경우 실제 용량이 0이고 지표에 워크로드 요구량이 있다고 나타나면 서비스 자동 크기 조정이 확장하기 전에 하나의 데이터 포인트가 전송될 때까지 기다립니다. 이 경우 시작 지점으로 가능한 최소량만큼 확장한 다음 실제 실행 중인 작업 수를 기준으로 조정을 재개합니다.

  • Application Auto Scaling은 Amazon ECS 배포가 진행 중인 동안 축소 프로세스를 비활성화합니다. 그러나 배포 중에 일시 중단되지 않는 한 확장 프로세스는 계속 발생합니다. 자세한 정보는 서비스 자동 크기 조정 및 배포을 참조하세요.

AWS CLI 및 SDK 경험

서비스 자동 크기 조정은 Amazon ECS, CloudWatch 및 Application Auto Scaling API의 조합을 통해 수행됩니다. 서비스는 Amazon ECS를 통해 생성 및 업데이트됩니다. CloudWatch는 경보를 생성합니다. 크기 조정 정책은 Application Auto Scaling을 통해 생성됩니다.

이러한 특정 API 작업에 대한 자세한 정보는 Amazon Elastic Container Service API 참조, Amazon CloudWatch API 참조Application Auto Scaling API 참조를 참조하세요. 이러한 서비스의 AWS CLI 명령에 대한 자세한 정보는 AWS CLI 명령 참조ecs, cloudwatchapplication-autoscaling 섹션을 참조하세요.

AWS CLI를 사용하여 Amazon ECS 서비스에 대해 조정 정책을 구성하려면

  1. register-scalable-target 명령을 사용하여 ECS 서비스를 확장 가능 대상으로 등록합니다.

  2. put-scaling-policy 명령을 사용하여 조정 정책을 생성합니다.

  3. [단계 조정] put-metric-alarm 명령을 사용하여 조정 정책을 트리거하는 경보를 생성합니다.

AWS CLI를 사용한 조정 정책 구성에 대한 자세한 정보는 Application Auto Scaling 사용 설명서를 참조하세요.