Amazon ECS 서비스 자동 조정
Auto Scaling은 Amazon ECS 서비스에서 원하는 작업 수를 자동으로 늘리거나 줄이는 기능입니다. Amazon ECS는 Application Auto Scaling 서비스를 활용하여 이 기능을 제공합니다. 자세한 정보는 Application Auto Scaling 사용 설명서를 참조하세요.
Amazon ECS는 서비스의 평균 CPU 및 메모리 사용량과 함께 CloudWatch 지표를 게시합니다. 자세한 정보는 Amazon ECS 서비스 사용률 지표 섹션을 참조하세요. 이와 함께 다른 CloudWatch 지표를 사용하여 피크 시간에는 서비스를 확장(더 많은 태스크를 추가)하여 높은 수요를 처리하고 사용률이 낮은 기간에는 서비스를 축소(더 적은 태스크를 실행)하여 비용을 절감할 수 있습니다.
Amazon ECS 서비스 Auto Scaling은 다음과 같은 유형의 Auto Scaling을 지원합니다.
-
목표 지표 값을 사용하여 Amazon ECS 서비스 규모 조정— 특정 지표에 대한 대상 값을 기준으로 서비스가 실행하는 작업의 수를 늘리거나 줄입니다. 이 과정은 온도 조절기를 사용하여 집안 온도를 유지하는 방법과 비슷합니다. 사용자가 온도를 선택하면 나머지는 모두 온도 조절기에서 자동으로 수행됩니다.
-
CloudWatch 경보를 기반으로 사전 정의된 증분을 사용하여 Amazon ECS 서비스 규모 조정— 일련의 조정 조절(경보 위반의 크기에 따라 달라지는 단계 조절)을 기준으로 서비스가 실행하는 작업의 수를 늘리거나 줄입니다.
-
일정을 사용하여 Amazon ECS 서비스 규모 조정 - 날짜 및 시간을 기준으로 서비스가 실행하는 작업 수를 늘리거나 줄입니다.
고려 사항
조정 정책을 사용하는 경우 다음 고려 사항을 참조하세요.
-
Amazon ECS는 1분 간격으로 지표를 CloudWatch로 보냅니다. 클러스터 및 서비스가 CloudWatch로 지표를 전송할 때까지는 지표를 사용할 수 없으며, 아직 존재하지 않는 지표에 대해 CloudWatch 경보를 생성할 수 없습니다.
-
조정 정책은 휴지 기간을 지원합니다. 이것은 이전의 조정 활동이 적용될 때까지 대기할 시간(초)입니다.
-
확장 이벤트의 목적은 지속적이지만 과도하지는 않게 확장하는 것입니다. 서비스 Auto Scaling에서 조정 정책을 사용하여 성공적으로 확장하면 휴지 기간이 계산되기 시작합니다. 조정 정책은 더 큰 조정이 시작되거나 휴지 기간이 종료되지 않는 한 원하는 용량을 다시 늘리지 않습니다. 확장 휴지 기간이 진행되는 동안 확장 활동을 시작하여 추가된 용량은 다음 확장 활동에 대해 원하는 용량의 일부로 계산됩니다.
-
축소 이벤트의 목적은 애플리케이션의 가용성을 보호하기 위해 보수적으로 축소하여 휴지 기간이 만료될 때까지 축소 활동을 차단하는 것입니다. 그러나 축소 휴지 기간 중에 다른 경보가 확장 활동을 시작하면 서비스 Auto Scaling은 대상을 즉시 확장합니다. 이 경우 축소 휴지 기간이 중지되고 완료되지 않습니다.
-
-
서비스 스케줄러는 원하는 수를 항상 신뢰하지만 서비스에 활성화된 조정 정책과 경보가 있는 한 서비스 Auto Scaling은 사용자가 수동으로 설정한 원하는 수를 변경할 수 있습니다.
-
원하는 서비스 수가 최소 용량 값 이하로 설정되어 있고 경보가 확장 활동을 시작하는 경우 서비스 Auto Scaling은 원하는 수를 최소 용량 값까지 확장한 다음 경보에 연결된 조정 정책에 따라 필요한 만큼 계속 스케일 아웃합니다. 하지만 원하는 수가 이미 최소 용량 값 미만이기 때문에 축소 활동은 원하는 수를 조정하지 않습니다.
-
원하는 서비스 수가 최대 용량 값 이상으로 설정되어 있고 경보가 스케일 인 활동을 시작하는 경우 서비스 Auto Scaling은 원하는 수를 최대 용량 값까지 스케일 아웃한 다음, 경보에 연결된 조정 정책에 따라 필요한 만큼 계속 스케일 인합니다. 하지만 원하는 수가 이미 최대 용량 값을 초과하므로 확장 활동은 원하는 수를 조절하지 않습니다.
-
조정 활동 중에 서비스 Auto Scaling이 시작점으로 사용하는 값은 원하는 수가 아니라 서비스에서 실제 실행 중인 태스크 수입니다. 이것이 처리 용량입니다. 이로써, 가령 추가 태스크를 배치하기에 충분한 컨테이너 인스턴스 리소스가 없는 경우 등 충족될 수 없는 과도한(불필요한) 조정을 방지합니다. 나중에 컨테이너 인스턴스 용량을 사용할 수 있는 경우 대기 중인 조정 활동이 승계되며 휴지 기간 후에 추가 조정 활동이 계속될 수 있습니다.
-
수행할 작업이 없을 때 태스크 수를 0으로 조정하려면 최소 용량을 0으로 설정합니다. 대상 추적 조정 정책을 사용하는 경우 실제 용량이 0이고 지표에 워크로드 요구량이 있다고 나타나면 서비스 Auto Scaling이 확장하기 전에 하나의 데이터 포인트가 전송될 때까지 기다립니다. 이 경우 시작 지점으로 가능한 최소량만큼 확장한 다음 실제 실행 중인 작업 수를 기준으로 조정을 재개합니다.
-
Application Auto Scaling은 Amazon ECS 배포가 진행 중인 동안 축소 프로세스를 비활성화합니다. 그러나 배포 중에 일시 중단되지 않는 한 확장 프로세스는 계속 발생합니다. 자세한 내용은 서비스 Auto Scaling 및 배포 단원을 참조하십시오.
-
Amazon ECS 작업을 위한 여러 Application Auto Scaling 옵션이 있습니다. 대상 추적이 가장 사용하기 쉬운 모드입니다. 이 옵션을 사용하는 경우 CPU 평균 사용률과 같은 지표의 목표 값을 설정하기만 하면 됩니다. 그러면 자동 스케일러가 해당 값을 달성하는 데 필요한 작업 수를 자동으로 관리합니다. 단계 조정을 사용하면 조정 지표의 특정 임계값과 임계값을 초과했을 때 추가 또는 제거할 작업 수를 정의하므로 수요 변화에 더 빠르게 대응할 수 있습니다. 더욱이 임계값 경보를 위반하는 시간을 최소화하여 수요 변화에 매우 빠르게 대응할 수 있습니다.
서비스 Auto Scaling 및 배포
Application Auto Scaling은 Amazon ECS 배포가 진행 중인 동안 축소 프로세스를 비활성화합니다. 그러나 배포 중에 일시 중단되지 않는 한 확장 프로세스는 계속 발생합니다. 배포가 진행되는 동안 확장 프로세스를 일시 중단하려면 다음 단계를 수행합니다.
-
describe-scalable-targets 명령을 호출하여 Application Auto Scaling에서 확장 가능한 대상과 연결된 서비스의 리소스 ID를 지정합니다(예:
service/default/sample-webapp
). 출력 결과를 기록합니다. 다음 명령을 호출할 때 필요합니다. -
register-scalable-target 명령을 호출하여 리소스 ID, 네임스페이스 및 확장 가능한 차원을 지정합니다.
DynamicScalingInSuspended
및DynamicScalingOutSuspended
모두에 대해true
를 지정합니다. -
배포가 완료되면 register-scalable-target 명령을 호출하여 조정을 재개할 수 있습니다.
자세한 정보는 Application Auto Scaling의 조정 일시 중지 및 재개를 참조하세요.