Amazon ECS 서비스 할당량 및 API 제한 한도 처리 - Amazon Elastic Container Service

Amazon ECS 서비스 할당량 및 API 제한 한도 처리

Amazon ECS는 Elastic Load Balancing, AWS Cloud Map, Amazon EC2를 비롯한 여러 AWS 서비스에 통합됩니다. Amazon ECS는 이러한 긴밀한 통합을 통해 서비스 로드 밸런싱, Service Connect, 작업 네트워킹, 클러스터 Auto Scaling 등의 여러 기능을 포함합니다. Amazon ECS 및 통합되는 기타 AWS 서비스는 모두 서비스 할당량 및 API 속도 제한을 유지 관리하여 일관된 성능 및 사용률을 보장합니다. 또한 이러한 서비스 할당량은 필요한 수준을 초과하여 많은 리소스가 실수로 프로비저닝되는 것을 방지하고 청구 비용을 늘릴 수 있는 악의적인 행동으로부터 보호합니다.

서비스 할당량 및 AWS API 속도 제한을 숙지하면 예상치 못한 성능 저하에 대한 걱정 없이 워크로드 규모 조정을 계획할 수 있습니다. 자세한 내용은 Amazon ECS API에 대한 요청 제한을 참조하세요.

Amazon ECS에서 워크로드 규모를 조정할 때는 다음 서비스 할당량을 고려하는 것이 좋습니다.

  • AWS Fargate에는 각 AWS 리전에서 동시에 실행되는 작업 수를 제한하는 할당량이 있습니다. Amazon ECS에는 온디맨드 작업 및 Fargate 스팟 작업 모두에 대한 할당량이 있습니다. 각 서비스 할당량에는 Fargate에서 실행하는 모든 Amazon EKS 포드도 포함됩니다.

  • Amazon EC2 인스턴스에서 실행되는 작업의 경우 각 클러스터에 등록할 수 있는 Amazon EC2 인스턴스의 최대 개수는 5,000개입니다. Auto Scaling 그룹 용량 공급자와 함께 Amazon ECS 클러스터 Auto Scaling을 사용하거나 클러스터의 Amazon EC2 인스턴스를 자체적으로 관리하는 경우 이 할당량으로 인해 배포 병목 현상이 발생할 수 있습니다. 더 많은 용량이 필요한 경우 클러스터를 생성하거나 서비스 할당량 증가를 요청할 수 있습니다.

  • Auto Scaling 그룹 용량 공급자와 함께 Amazon ECS 클러스터 Auto Scaling을 사용하는 경우 서비스 규모를 확장할 때 Tasks in the PROVISIONING state per cluster 할당량을 고려합니다. 이 할당량은 각 클러스터에서 용량 공급자가 용량을 늘릴 수 있는 PROVISIONING 상태의 최대 작업 수입니다. 동시에 많은 작업을 시작하면 이 할당량을 쉽게 충족할 수 있습니다. 한 가지 예로, 각각 수백 개의 작업을 포함하는 수십 개의 서비스를 동시에 배포하는 경우가 있습니다. 이 경우 용량 공급자는 클러스터의 용량이 부족할 때 새 컨테이너 인스턴스를 시작하여 작업을 배치해야 합니다. 용량 공급자가 추가 Amazon EC2 인스턴스를 시작하는 동안에도 Amazon ECS 서비스 스케줄러는 작업을 계속 병렬로 시작할 수 있습니다. 하지만 클러스터 용량이 충분하지 않아 이 활동이 제한될 수 있습니다. Amazon ECS 서비스 스케줄러는 새 컨테이너 인스턴스가 시작될 때 작업 배치를 재시도하기 위한 백오프 및 지수 제한 전략을 구현합니다. 따라서 배포 또는 스케일 아웃 시간이 느려질 수 있습니다. 이러한 상황을 방지하려면 다음 중 하나로 서비스 배포를 계획할 수 있습니다. 클러스터 용량을 늘릴 필요 없이 많은 작업을 배포하거나 새 작업을 시작할 수 있도록 예비 클러스터 용량을 확보합니다.

워크로드 규모를 조정할 때 Amazon ECS 서비스 할당량을 고려하는 것 외에도 Amazon ECS와 통합된 다른 AWS 서비스 서비스의 서비스 할당량도 고려합니다.

Elastic Load Balancing

Elastic Load Balancing을 사용하여 작업 전체에 균일하게 트래픽 분산하도록 Amazon ECS 서비스를 구성할 수 있습니다. 로드 밸런서를 선택하는 방법에 대한 자세한 내용 및 권장 모범 사례는 로드 밸런싱을 사용하여 Amazon ECS 서비스 트래픽 분산 섹션을 참조하세요.

Elastic Load Balancing 서비스 할당량

워크로드 규모를 조정할 때는 다음과 같은 Elastic Load Balancing 서비스 할당량을 고려하세요. 대부분의 Elastic Load Balancing 서비스 할당량은 조정 가능하며 Service Quotas 콘솔에서 증가를 요청할 수 있습니다.

Application Load Balancer

Application Load Balancer를 사용할 때는 사용 사례에 따라 다음에 대한 할당량 증가를 요청해야 할 수 있습니다.

  • Targets per Application Load Balancer 할당량: Application Load Balancer 뒤에 있는 대상의 수입니다.

  • Targets per Target Group per Region 할당량: 대상 그룹 뒤에 있는 대상의 수입니다.

자세한 내용을 알아보려면 Application Load Balancer 사용 설명서의 Quotas for your Application Load Balancers를 참조하세요.

Network Load Balancer

Network Load Balancer에 등록할 수 있는 대상 수에는 더 엄격한 제한이 적용됩니다. Network Load Balancer를 사용할 때 종종 교차 영역 지원을 활성화하려고 합니다. 이 경우 각 Network Load Balancer의 가용 영역당 최대 대상 수와 함께 Targets per Availability Zone Per Network Load Balancer의 추가 조정 제한이 적용됩니다. 자세한 내용은 Network Load Balancers 사용 설명서의 Quotas for your Network Load Balancers를 참조하세요.

Elastic Load Balancing API 제한

Amazon ECS 서비스가 로드 밸런서를 사용하도록 구성하는 경우 대상 그룹 상태 확인을 통과해야 서비스가 정상으로 간주됩니다. 이러한 상태 확인을 수행하기 위해 Amazon ECS는 사용자를 대신하여 Elastic Load Balancing API 작업을 간접 호출합니다. 계정에 로드 밸런서로 구성된 서비스가 많으면 특히 RegisterTarget, DeregisterTarget, DescribeTargetHealth Elastic Load Balancing API 작업에서 제한이 발생할 수 있으므로 서비스 배포 속도가 느려질 수 있습니다. 제한이 발생하면 Amazon ECS 서비스 이벤트 메시지에서 제한 오류가 발생합니다.

AWS Cloud Map API 제한이 발생하는 경우 지원에 AWS Cloud Map API 제한 한도 상향에 지침을 문의할 수 있습니다. 이러한 제한 오류의 모니터링 및 문제 해결에 대한 자세한 내용은 Amazon ECS 제한 문제 처리 섹션을 참조하세요.

탄력적 네트워크 인터페이스

작업이 awsvpc 네트워크 모드를 사용하는 경우, Amazon ECS는 각 작업에 대해 고유한 탄력적 네트워크 인터페이스(ENI)를 프로비저닝합니다. Amazon ECS 서비스가 Elastic Load Balancing 로드 밸런서를 사용하는 경우 이러한 네트워크 인터페이스도 서비스에 정의된 적절한 대상 그룹에 대한 대상으로 등록됩니다.

탄력적 네트워크 인터페이스 서비스 할당량

awsvpc 네트워크 모드를 사용하는 작업을 실행하면 고유한 탄력적 네트워크 인터페이스가 각 작업에 연결됩니다. 인터넷을 통해 이러한 작업에 도달해야 할 경우에는 해당 작업의 탄력적 네트워크 인터페이스에 퍼블릭 IP 주소를 할당합니다. Amazon ECS 워크로드 규모를 조정할 때는 다음과 같은 두 가지 중요한 할당량을 고려합니다.

  • Network interfaces per Region 할당량: 계정의 AWS 리전에 있는 최대 네트워크 인터페이스 수입니다.

  • Elastic IP addresses per Region 할당량: AWS 리전에 있는 최대 탄력적 IP 주소 수입니다.

이 두 서비스 할당량은 모두 조정 가능하며, Service Quotas 콘솔에서 할당량 증가를 요청할 수 있습니다. 자세한 내용은 Amazon Virtual Private Cloud 사용 설명서의 Amazon VPC service quotas를 참조하세요.

Amazon EC2 인스턴스에 호스팅되는 Amazon ECS 워크로드의 경우 awsvpc 네트워크 모드를 사용하는 작업을 실행할 때는 각 Amazon EC2 인스턴스의 최대 네트워크 인스턴스 수에 해당하는 Maximum network interfaces 서비스 할당량을 고려합니다. 이 할당량은 인스턴스에 배치할 수 있는 작업 수를 제한합니다. 할당량은 조정할 수 없으며 Service Quotas 콘솔에서 사용할 수 없습니다. 자세한 내용은 Amazon EC2 사용 설명서의 IP addresses per network interface per instance type를 참조하세요.

Amazon EC2 인스턴스에 연결할 수 있는 네트워크 인터페이스 수를 변경할 수는 없지만 탄력적 네트워크 인터페이스 트렁킹 기능을 사용하여 사용 가능한 네트워크 인터페이스 수를 늘릴 수 있습니다. 예를 들어 c5.large 인스턴스는 최대 3개의 네트워크 인터페이스를 보유할 수 있습니다. 인스턴스에 대한 기본 네트워크 인터페이스는 한 개로 계산됩니다. 따라서 인스턴스에 네트워크 인터페이스를 2개 더 연결할 수 있습니다. awsvpc 네트워크 모드를 사용하는 각 작업에 네트워크 인터페이스가 필요하므로 대개 이 인스턴스 유형에서는 이러한 작업을 2개만 실행할 수 있습니다. 이로 인해 클러스터 용량 사용률이 낮아질 수 있습니다. 탄력적 네트워크 인터페이스 트렁킹을 활성화하면 네트워크 인터페이스 밀도를 높여 각 인스턴스에 더 많은 작업을 배치할 수 있습니다. 트렁킹을 켜면 c5.large 인스턴스는 최대 12개의 네트워크 인터페이스를 보유할 수 있습니다. 인스턴스에는 기본 네트워크 인터페이스가 있으며, Amazon ECS는 '트렁크' 네트워크 인터페이스를 생성하고 컨테이너 인스턴스에 연결합니다. 따라서 이 구성을 사용하면 인스턴스에서 기본 2개의 작업 대신 10개의 작업을 실행할 수 있습니다. 자세한 정보는 Amazon ECS Linux 컨테이너 인스턴스 네트워크 인터페이스 증가 섹션을 참조하세요.

탄력적 네트워크 인터페이스 API 제한

awsvpc 네트워크 모드를 사용하는 작업을 실행할 때 Amazon ECS는 다음 Amazon EC2 API에 의존합니다. 이러한 API마다 API 제한이 서로 다릅니다. 자세한 내용은 Amazon EC2 API Reference의 Request throttling for the Amazon EC2 API를 참조하세요.

  • CreateNetworkInterface

  • AttachNetworkInterface

  • DetachNetworkInterface

  • DeleteNetworkInterface

  • DescribeNetworkInterfaces

  • DescribeVpcs

  • DescribeSubnets

  • DescribeSecurityGroups

  • DescribeInstances

탄력적 네트워크 인터페이스 프로비저닝 워크플로 중에 Amazon EC2 API 직접 호출이 제한되는 경우 Amazon ECS 서비스 스케줄러는 지수 백오프를 통해 자동으로 재시도합니다. 이러한 자동 사용 중지로 인해 때때로 작업 시작이 지연되어 배포 속도가 느려질 수 있습니다. API 제한이 발생하면 서비스 이벤트 메시지에 Operations are being throttled. Will try again later. 메시지가 표시됩니다. Amazon EC2 API 제한을 일관되게 충족하는 경우 API 제한 한도 상향 방법에 대한 지침을 지원에 문의할 수 있습니다. 제한 오류의 모니터링 및 문제 해결에 대한 자세한 내용은 제한 문제 처리를 참조하세요.

AWS Cloud Map

Amazon ECS 서비스 검색 및 Service Connect는 AWS Cloud Map API를 사용하여 Amazon ECS 서비스에 대한 네임스페이스를 관리합니다. 서비스에 작업 수가 많은 경우 다음 권장 사항을 고려하세요.

AWS Cloud Map service quotas

Amazon ECS 서비스가 서비스 검색 또는 Service Connect를 사용하도록 구성된 경우 서비스의 최대 작업 수에 해당하는 Tasks per service 할당량은 해당 서비스의 최대 인스턴스 수인 AWS Cloud Map Instances per service 서비스 할당량의 영향을 받습니다. 특히 AWS Cloud Map 서비스 할당량은 서비스에서 실행할 수 있는 인스턴스 수를 서비스당 최대 1,000개 인스턴스로 줄입니다. AWS Cloud Map 할당량은 변경할 수 없습니다. 자세한 내용은 AWS Cloud Map 서비스 할당량을 참조하세요.

AWS Cloud Map API 조절

Amazon ECS는 사용자를 대신하여 ListInstances, GetInstancesHealthStatus, RegisterInstanceDeregisterInstance AWS Cloud Map API를 직접 호출합니다. 이를 통해 서비스 검색을 지원하고 작업을 시작할 때 상태 확인을 수행할 수 있습니다. 많은 작업에서 서비스 검색을 사용하는 여러 서비스를 동시에 배포하는 경우, 이로 인해 AWS Cloud Map API 제한 한도가 초과될 수 있습니다. 이 경우 Amazon ECS 서비스 이벤트 메시지에 Operations are being throttled. Will try again later 메시지가 표시되고, 배포 및 작업 시작 속도가 느려집니다. AWS Cloud Map에서는 이러한 API의 제한 한도를 문서화하지 않습니다. 이로 인해 제한이 발생하는 경우 지원에 API 제한 한도 상향에 지침을 문의할 수 있습니다. 이러한 제한 오류의 모니터링 및 문제 해결에 대한 자세한 권장 사항은 Amazon ECS 제한 문제 처리 섹션을 참조하세요.