클러스터 Auto Scaling을 통해 Amazon ECS 용량 자동 관리 - Amazon Elastic Container Service

클러스터 Auto Scaling을 통해 Amazon ECS 용량 자동 관리

Amazon ECS는 클러스터에 등록된 Amazon EC2 인스턴스의 크기 조정을 관리할 수 있습니다. 이를 Amazon ECS 클러스터 Auto Scaling이라고 합니다. Amazon ECS Auto Scaling 그룹 용량 공급자를 생성할 때 Managed Scaling을 켭니다. 그런 다음 이 Auto Scaling 그룹에서 인스턴스 사용률에 대한 목표 백분율(targetCapacity)을 설정합니다. Amazon ECS는 Auto Scaling 그룹에 대한 두 가지 사용자 지정 CloudWatch 지표와 대상 추적 조정 정책을 생성합니다. 그런 다음 Amazon ECS는 태스크에서 사용하는 리소스 사용률에 따라 스케일 인 및 스케일 아웃 작업을 관리합니다.

클러스터와 연결된 각 Auto Scaling 그룹 용량 공급자에 대해 Amazon ECS는 다음 리소스를 생성하고 관리합니다.

  • 지표 값이 낮은 CloudWatch 경보

  • 지표 값이 높은 CloudWatch 경보

  • 대상 추적 조정 정책입니다.

    참고

    Amazon ECS에서 대상 추적 조정 정책을 생성하여 Auto Scaling 그룹에 연결합니다. 대상 추적 조정 정책을 업데이트하려면 조정 정책을 직접 업데이트하는 대신 용량 공급자 관리형 조정 설정을 업데이트해야 합니다.

관리형 조정을 끄거나 클러스터에서 용량 공급자 연결을 해제하면 Amazon ECS가 CloudWatch 지표와 대상 추적 조정 정책 리소스를 제거합니다.

Amazon ECS는 다음 지표를 사용하여 수행할 작업을 결정합니다.

CapacityProviderReservation

특정 용량 공급자에 대해 사용 중인 클러스터 컨테이너 인스턴스의 백분율. Amazon ECS는 이 지표를 생성합니다.

Amazon ECS는 CapacityProviderReservation 값을 0에서 100 사이의 숫자로 설정합니다. Amazon ECS는 다음 수식을 사용하여 Auto Scaling 그룹에 남아 있는 용량의 비율을 나타냅니다. Amazon ECS는 CloudWatch에 지표를 게시합니다. 지표를 계산하는 방법에 대한 자세한 내용은 Deep Dive on Amazon ECS Cluster Auto Scaling을 참조하세요.

CapacityProviderReservation = (number of instances needed) / (number of running instances) x 100
DesiredCapacity

Auto Scaling 그룹에 대한 용량의 양입니다. 이 지표는 CloudWatch에 게시되지 않습니다.

Amazon ECS는 CapacityProviderReservation 지표를 CloudWatch에 AWS/ECS/ManagedScaling 네임스페이스로 게시합니다. CapacityProviderReservation 지표를 사용하면 다음 작업 중 하나가 발생합니다.

CapacityProviderReservation 값이 targetCapacity와 같음

Auto Scaling 그룹을 스케일 인 또는 스케일 아웃할 필요가 없습니다. 목표 사용률에 도달했습니다.

CapacityProviderReservation 값이 targetCapacity보다 큼

targetCapacity 백분율보다 높은 비율의 용량을 사용하는 작업이 많습니다. CapacityProviderReservation 지표 값이 증가하면 관련 CloudWatch 경보가 작동합니다. 이 경보는 Auto Scaling 그룹에 대한 DesiredCapacity 값을 업데이트합니다. Auto Scaling 그룹은 이 값을 사용하여 EC2 인스턴스를 시작한 다음 클러스터에 등록합니다.

targetCapacity가 기본값인 100%인 경우 작업을 실행할 인스턴스에 사용할 수 있는 용량이 없기 때문에 스케일 아웃 중 새 작업은 PENDING 상태가 됩니다. 새 인스턴스가 ECS에 등록되면 이러한 작업이 새 인스턴스에서 시작됩니다.

CapacityProviderReservation 값이 targetCapacity보다 작음

targetCapacity 백분율보다 낮은 비율의 용량을 사용하는 작업이 적고 종료할 수 있는 인스턴스가 하나 이상 있습니다. CapacityProviderReservation 지표 값이 감소하면 관련 CloudWatch 경보가 작동합니다. 이 경보는 Auto Scaling 그룹에 대한 DesiredCapacity 값을 업데이트합니다. Auto Scaling 그룹은 이 값을 사용하여 EC2 컨테이너 인스턴스를 종료한 다음 클러스터에서 등록을 취소합니다.

Auto Scaling 그룹은 그룹 종료 정책에 따라 스케일 인 이벤트 중 처음 종료할 인스턴스를 결정합니다. 또한 인스턴스 스케일 인 보호 설정이 켜진 인스턴스는 피합니다. 관리형 종료 보호를 켜는 경우 클러스터 Auto Scaling에서 인스턴스 스케일 인 보호 설정이 지정된 인스턴스를 관리할 수 있습니다. 관리형 종료 보호에 대한 자세한 내용은 Amazon ECS가 종료하는 인스턴스 제어을 참조하세요. Auto Scaling 그룹에서 인스턴스를 종료하는 방법에 대한 자세한 내용은 Amazon EC2 Auto Scaling 사용 설명서의 Control which Auto Scaling instances terminate during scale in을 참조하세요.

클러스터 Auto Scaling을 사용할 때는 다음 사항을 고려해야 합니다.

  • Amazon ECS가 관리하는 것 이외의 조정 정책이 있는 용량 공급자와 연결된 Auto Scaling 그룹에 대해 원하는 용량을 변경하거나 관리하지 마세요.

  • Amazon ECS는 사용자를 대신하여 다른 AWS Auto Scaling를 호출하는 데 필요한 권한에 대해 AWSServiceRoleForECS 서비스 연결 IAM 역할을 사용합니다. 자세한 내용은 Amazon ECS에 대해 서비스 연결 역할 사용 단원을 참조하십시오.

  • Auto Scaling 그룹에 용량 공급자를 사용하는 경우 용량 공급자를 생성하는 사용자, 그룹 또는 역할에는 autoscaling:CreateOrUpdateTags 권한이 필요합니다. 이는 용량 공급자와 연결할 때 Amazon ECS가 Auto Scaling 그룹에 태그를 추가하기 때문입니다.

    중요

    사용하는 도구가 Auto Scaling 그룹에서 AmazonECSManaged 태그를 제거하지 않는지 확인합니다. 이 태그가 제거되면 Amazon ECS에서는 규모 조정을 관리할 수 없습니다.

  • 클러스터 Auto Scaling은 그룹에 대해 MinimumCapacity 또는 MaximumCapacity를 수정하지 않습니다. 그룹을 스케일 아웃하려면 MaximumCapacity 값이 0보다 커야 합니다.

  • Auto Scaling(관리형 조정)이 켜져 있을 때 한 번에 하나의 클러스터에만 용량 공급자를 연결할 수 있습니다. 용량 공급자가 관리형 크기 조정을 해제한 경우 이를 여러 클러스터와 연결할 수 있습니다.

  • 관리형 조정이 꺼져 있으면 용량 공급자가 스케일 인 또는 스케일 아웃하지 않습니다. 용량 공급자 전략을 사용하여 용량 공급자 간에 작업의 균형을 조정할 수 있습니다.

  • binpack 전략은 용량 측면에서 가장 효율적인 전략입니다.

  • 목표 용량이 100% 미만인 경우 배치 전략은 binpack 전략보다 순위가 더 높은 spread 전략 없이 binpack 전략을 사용해야 합니다. 이렇게 하면 각 작업에 전용 인스턴스가 있거나 한도에 도달할 때까지 용량 공급자가 스케일 아웃할 수 없습니다.