Amazon ECS 관리형 규모 조정 동작
관리형 규모 조정을 사용하는 Auto Scaling 그룹 용량 공급자가 있는 경우 Amazon ECS에서는 클러스터에 추가할 인스턴스의 최적 개수를 예측하고 이 값을 사용하여 요청하거나 릴리스할 인스턴스 수를 결정합니다.
관리형 확장 동작
Amazon ECS는 서비스, 독립 실행형 태스크 또는 클러스터 기본값의 용량 공급자 전략에 따라 각 태스크에 대한 용량 공급자를 선택합니다. 단일 용량 공급자의 경우 Amazon ECS는 이러한 단계의 나머지 내용을 따릅니다.
용량 공급자 전략이 없는 작업은 용량 공급자가 무시합니다. 용량 공급자 전략이 없는 보류 중인 작업의 경우 용량 공급자가 스케일 아웃하지 않습니다. 시작 유형을 설정하는 작업 또는 서비스에서는 용량 공급자 전략을 설정할 수 없습니다.
관리형 확장에 대한 자세한 설명은 아래와 같습니다.
-
각 그룹에 똑같은 리소스 요구 사항이 적용되도록 이 용량 공급자의 모든 프로비저닝 작업을 그룹화합니다.
-
Auto Scaling 그룹에서 여러 인스턴스 유형을 사용하는 경우 Auto Scaling 그룹의 인스턴스 유형은 파라미터를 기준으로 정렬됩니다. 이러한 파라미터에는 vCPU, 메모리, 탄력적 네트워크 인터페이스(ENI), 포트, GPU 등이 있습니다. 각 파라미터의 가장 작은 인스턴스 유형과 가장 큰 인스턴스 유형이 선택됩니다. 인스턴스 유형을 선택하는 방법에 대한 자세한 내용은 Amazon ECS에 대한 Amazon EC2 컨테이너 인스턴스 섹션을 참조하세요.
중요
작업 그룹의 리소스 요구 사항이 Auto Scaling 그룹의 가장 작은 인스턴스 유형보다 큰 경우 해당 작업 그룹은 이 용량 공급자로 실행할 수 없습니다. 용량 공급자는 Auto Scaling 그룹의 규모를 조정하지 않습니다. 작업은
PROVISIONING
상태로 유지됩니다.작업이
PROVISIONING
상태로 유지되지 않도록 하려면 여러 최소 리소스 요구 사항에 대해 Auto Scaling 그룹과 용량 공급자를 별도로 생성하는 것이 좋습니다. 작업을 실행하거나 서비스를 생성할 때 Auto Scaling 그룹의 가장 작은 인스턴스 유형에서 작업을 실행할 수 있는 용량 공급자 전략에만 용량 공급자를 추가하세요. 다른 파라미터에는 배치 제약 조건을 사용할 수 있습니다. -
각 작업 그룹에 대해 Amazon ECS는 배치되지 않은 작업을 실행하는 데 필요한 인스턴스 개수를 계산합니다. 이 계산에서는
binpack
전략을 사용합니다. 이 전략은 작업의 vCPU, 메모리, 탄력적 네트워크 인터페이스(ENI), 포트, GPU 요구 사항을 고려합니다. 또한 Amazon EC2 인스턴스의 리소스 가용성을 고려합니다. 가장 큰 인스턴스 유형의 값은 계산된 최대 인스턴스 개수로 처리됩니다. 가장 작은 인스턴스 유형에 대한 값은 보호로 사용됩니다. 가장 작은 인스턴스 유형이 작업의 인스턴스를 하나 이상 실행할 수 없는 경우 계산에서 작업을 호환되지 않는 것으로 간주합니다. 따라서 스케일 아웃 계산에서 작업이 제외됩니다. 모든 작업이 가장 작은 인스턴스 유형과 호환되지 않으면 클러스터 Auto Scaling이 중지되고CapacityProviderReservation
값은targetCapacity
값으로 유지됩니다. -
Amazon ECS는 다음 중 하나에 해당하는 경우
minimumScalingStepSize
를 기준으로CapacityProviderReservation
지표를 CloudWatch에 게시합니다.-
계산된 최대 인스턴스 수가 최소 조정 단계 크기보다 작습니다.
-
maximumScalingStepSize
또는 계산된 최대 인스턴스 수 중 낮은 값입니다.
-
-
CloudWatch 경보는 용량 공급자에
CapacityProviderReservation
지표를 사용합니다.CapacityProviderReservation
지표가targetCapacity
값보다 크면 경보로 인해 Auto Scaling 그룹의DesiredCapacity
가 증가합니다.targetCapacity
값은 클러스터 Auto Scaling 활성화 단계에서 CloudWatch 경보로 전송되는 용량 공급자 설정입니다.targetCapacity
의 기본값은 100%입니다. -
Auto Scaling 그룹은 추가 EC2 인스턴스를 시작합니다. 오버프로비저닝을 방지하기 위해, Auto Scaling은 최근에 시작된 EC2 인스턴스 용량이 새 인스턴스를 시작하기 전에 안정화되었는지 확인합니다. Auto Scaling이 모든 기존 인스턴스가
instanceWarmupPeriod
를 통과했는지 검사합니다(현재에서 인스턴스 시작 시간을 뺀 값).instanceWarmupPeriod
내에 있는 인스턴스에 대해 스케일 아웃이 차단됩니다.새로 시작된 인스턴스의 기본 워밍업 시간은 300초입니다.
자세한 내용은 Deep dive on Amazon ECS cluster auto scaling
확장 고려 사항
확장 프로세스에 대해 다음 사항을 고려하세요.
-
여러 배치 제약이 있지만
distinctInstance
작업 배치 제약만 사용하는 것을 권장합니다. 이는 샘플링된 인스턴스와 호환되지 않는 배치 제약 조건을 사용하기 때문에 스케일 아웃 프로세스가 중지되지 않습니다. -
관리형 확장은 Auto Scaling 그룹에서 동일하거나 유사한 인스턴스 유형을 사용해야 가장 효과적입니다.
-
스케일 아웃 프로세스가 필요하고 현재 실행 중인 컨테이너 인스턴스가 없으면 Amazon ECS는 항상 처음에는 인스턴스 2개로 스케일 아웃한 다음 추가 스케일 아웃 또는 스케일 인 프로세스를 수행합니다. 인스턴스 워밍업 기간에는 추가 스케일 아웃이 대기합니다. 스케일 인 프로세스의 경우 Amazon ECS는 항상 스케일 아웃 프로세스 후 15분을 기다린 다음 스케일 인 프로세스를 시작합니다.
-
두 번째 스케일 아웃 단계는 전체 스케일링 제한에 영향을 미칠 수 있는
instanceWarmupPeriod
가 만료될 때까지 기다려야 합니다. 이 시간을 줄여야 하는 경우 EC2 인스턴스가 Amazon ECS 에이전트(오버프로비저닝 방지)를 시작하고 시작할 수 있을 만큼instanceWarmupPeriod
가 충분히 커야 합니다. -
클러스터 Auto Scaling은 용량 공급자 Auto Scaling에서 시작 구성, 시작 템플릿 및 여러 인스턴스 유형을 지원합니다. 또한 여러 인스턴스 유형 없이 속성 기반 인스턴스 유형 선택을 사용할 수도 있습니다.
-
Auto Scaling 그룹과 온디맨드 인스턴스, 여러 인스턴스 유형 또는 스팟 인스턴스를 사용할 경우 우선순위 목록에서 용량이 큰 인스턴스 유형을 높은 순위에 올리고 가중치를 지정하지 않습니다. 현재는 가중치 지정을 지원하지 않습니다. 자세한 정보는 AWS Auto Scaling 사용 설명서의 여러 인스턴스 유형을 제공하는 Auto Scaling 그룹을 참조하세요.
-
그러면 Amazon ECS가 계산된 인스턴스 최댓값이 최소 조정 단계 크기보다 작을 경우
minimumScalingStepSize
를 시작하고, 그렇지 않으면maximumScalingStepSize
또는 계산된 인스턴스 개수의 최댓값 중 작은 개수를 시작합니다. -
Amazon ECS 서비스 또는
run-task
가 작업을 시작하고 용량 공급자 컨테이너 인스턴스에 작업을 시작하기에 충분한 리소스가 없는 경우 Amazon ECS는 각 클러스터에 대해 이 상태의 작업 수를 제한하고 이 제한을 초과하여 작업이 실행되지 않도록 합니다. 자세한 내용은 Amazon ECS 서비스 할당량 섹션을 참조하세요.
관리형 축소 동작
Amazon ECS는 클러스터 내의 각 용량 공급자에 대한 컨테이너 인스턴스를 모니터링합니다. 컨테이너 인스턴스에 실행 중인 작업이 없으면 컨테이너 인스턴스는 비어 있는 것으로 간주되고 Amazon ECS는 스케일 인 프로세스를 시작합니다.
CloudWatch 축소 경보에는 Auto Scaling 그룹의 축소 프로세스가 시작되기 전에 15데이터 포인트(15분)가 필요합니다. Amazon ECS가 등록된 컨테이너 인스턴스의 수를 줄여야 할 때까지 축소 프로세스가 시작된 후, Auto Scaling 그룹은 DesireCapacity
값을 인스턴스 1개보다 크고 매분 50% 미만으로 설정합니다.
스케일 인 프로세스가 진행 중인 동안 Amazon ECS가 스케일 아웃을 요청하는 경우(CapacityProviderReservation
이 100보다 큼) 스케일 인 프로세스가 중지되고 필요한 경우 처음부터 시작됩니다.
다음은 스케일 인 동작에 대해 자세히 설명합니다.
-
Amazon ECS는 비어 있는 컨테이너 인스턴스의 수를 계산합니다. 대몬(daemon) 작업이 실행 중인 경우에도 컨테이너 인스턴스는 비어 있는 것으로 간주됩니다.
-
Amazon ECS는 다음 수식을 사용하여 Auto Scaling 그룹의 실제 크기 대비 필요한 크기의 비율을 백분율로 나타내는 0~100 사이의 숫자로
CapacityProviderReservation
값을 설정합니다. Amazon ECS는 CloudWatch에 지표를 게시합니다. 지표를 계산하는 방법에 대한 자세한 내용은 Deep Dive on Amazon ECS Cluster Auto Scaling을 참조하세요. CapacityProviderReservation = (number of instances needed) / (number of running instances) x 100
-
CapacityProviderReservation
지표는 CloudWatch 경보를 생성합니다. 이 경보는 Auto Scaling 그룹에 대한DesiredCapacity
값을 업데이트합니다. 그러면 다음 작업 중 하나가 수행됩니다.-
용량 공급자 관리형 종료를 사용하지 않는 경우 Auto Scaling 그룹은 Auto Scaling 그룹 종료 정책을 사용하여 EC2 인스턴스를 선택하고 EC2 인스턴스 수가
DesiredCapacity
에 도달할 때까지 인스턴스를 종료합니다. 그런 다음 컨테이너 인스턴스가 클러스터에서 등록 취소됩니다. -
모든 컨테이너 인스턴스가 관리형 종료 보호를 사용하는 경우 Amazon ECS는 비어 있는 컨테이너 인스턴스에서 스케일 인 보호를 제거합니다. 그러면 Auto Scaling 그룹에서 EC2 인스턴스를 종료할 수 있습니다. 그런 다음 컨테이너 인스턴스가 클러스터에서 등록 취소됩니다.
-