Amazon EC2에서 용량 공급자로 Amazon ECS 클러스터 용량 프로비저닝 속도 높이기
Amazon EC2에서 용량 공급자로 Amazon ECS 클러스터 용량 프로비저닝 속도 높이기
Amazon EC2에서 Amazon ECS를 실행하는 고객은 Amazon ECS Cluster Auto Scaling(CAS)을 활용해 Amazon EC2 Auto Scaling 그룹(ASG)의 확장을 관리할 수 있어요. CAS를 사용하면 Amazon ECS가 ASG를 자동으로 확장하도록 구성하고 태스크 실행에만 집중하면 됩니다.
출처: 문서
본문
Amazon EC2에서 Amazon ECS를 실행하는 고객은 Amazon ECS Cluster Auto Scaling(CAS)을 활용해 Amazon EC2 Auto Scaling 그룹(ASG)의 확장을 관리할 수 있습니다. CAS를 사용하면 Amazon ECS가 ASG를 자동으로 확장하도록 구성하고, 태스크 실행에만 집중하면 됩니다. Amazon ECS가 추가 개입 없이 필요에 따라 ASG가 축소·확장하도록 보장해요. Amazon ECS 용량 공급자는 애플리케이션의 수요를 충족할 만큼 충분한 컨테이너 인스턴스가 있도록 하여 클러스터의 인프라를 관리하는 데 사용됩니다.
CAS가 어떻게 동작하는지 보려면 "Deep Dive on Amazon ECS Cluster Auto Scaling"을 참고하세요.
CAS는 클러스터 용량 조정을 위해 ASG와 CloudWatch 기반 통합에 의존하므로, 다음과 같은 고유한 지연 시간이 있습니다.
- CloudWatch 메트릭 게시
CapacityProviderReservation메트릭이 CloudWatch 알람(높음과 낮음 둘 다)을 위반하는 데 걸리는 시간- 새로 시작된 Amazon EC2 인스턴스가 워밍업하는 데 걸리는 시간
더 빠른 배포를 위해 CAS를 더 민첩하게 만드는 조치를 할 수 있습니다.
용량 공급자 단계 확장 크기
Amazon ECS 용량 공급자는 애플리케이션 수요를 충족하도록 컨테이너 인스턴스를 늘리거나 줄입니다. Amazon ECS가 시작할 최소 인스턴스 수는 기본값이 1입니다. 보류 중인 태스크를 배치하는 데 여러 인스턴스가 필요하다면 이는 배포에 추가 시간을 더할 수 있어요. Amazon ECS API로 minimumScalingStepSize를 늘려 Amazon ECS가 한 번에 확장·축소하는 최소 인스턴스 수를 증가시킬 수 있습니다. maximumScalingStepSize가 너무 낮으면 한 번에 확장·축소할 수 있는 컨테이너 인스턴스 수가 제한되어 배포 속도가 느려질 수 있습니다.
참고: 이 구성은 현재
CreateCapacityProvider또는UpdateCapacityProviderAPI로만 사용 가능합니다.
인스턴스 워밍업 기간
인스턴스 워밍업 기간(instance warm-up period)은 새로 시작된 Amazon EC2 인스턴스가 Auto Scaling 그룹의 CloudWatch 메트릭에 기여할 수 있게 되는 시간입니다. 지정된 워밍업 기간이 지나면 인스턴스는 ASG의 집계 메트릭에 포함되고, CAS는 필요한 인스턴스 수를 추정하는 다음 계산 반복을 진행합니다.
instanceWarmupPeriod의 기본값은 300초입니다. 더 민첩하게 확장하려면 CreateCapacityProvider 또는 UpdateCapacityProvider API로 더 낮은 값으로 구성할 수 있습니다.
여유 용량(Spare capacity)
용량 공급자에 태스크를 배치할 컨테이너 인스턴스가 없으면, 즉석에서 Amazon EC2 인스턴스를 시작해 클러스터 용량을 늘리고(scale out), 인스턴스가 부팅될 때까지 기다린 뒤에 컨테이너를 시작해야 합니다. 이는 태스크 시작 속도를 크게 낮출 수 있어요. 여기에는 두 가지 옵션이 있습니다.
- 이 경우 이미 시작되어 태스크를 실행할 준비가 된 여유 Amazon EC2 용량이 있으면 효과적인 태스크 시작 속도가 높아집니다. Target Capacity 구성을 사용해 클러스터에 여유 용량을 유지하고 싶다고 표시할 수 있습니다. 예를 들어 Target Capacity를 80%로 설정하면 클러스터가 항상 20%의 여유 용량을 유지해야 한다는 뜻입니다. 이 여유 용량 덕분에 독립 실행형 태스크를 즉시 시작할 수 있어 태스크 시작이 스로틀링되지 않습니다. 이 방식의 트레이드오프는 여유 클러스터 용량을 유지하는 잠재적 비용 증가입니다.
- 고려할 수 있는 대안은 용량 공급자가 아니라 서비스에 헤드룸(headroom)을 추가하는 것입니다. 즉, 여유 용량을 시작하도록 Target Capacity 구성을 줄이는 대신, 대상 추적 확장 메트릭이나 서비스 자동 확장의 단계 확장 임계값을 수정해 서비스의 복제본(replicas) 수를 늘리는 것입니다. 이 방식은 급증(spiky)하는 워크로드에만 도움이 되며, 새 서비스를 배포해 처음으로 0에서 N 태스크로 갈 때는 효과가 없습니다. 관련 확장 정책에 대한 자세한 내용은 "Target Tracking Scaling Policies" 또는 "Step Scaling Policies"를 참고하세요.
더 알아보기 (Learn more)
- Amazon ECS Cluster Auto Scaling에 대한 자세한 내용은 AWS 공식 문서를 참고해 주세요.