Elastic Load Balancing API에 대한 요청 스로틀링 - Elastic Load Balancing

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Elastic Load Balancing API에 대한 요청 스로틀링

Elastic Load Balancing은 리전별로 각 AWS 계정에 대한 API 요청을 제한합니다. 이는 서비스의 성능과 가용성을 유지하는 데 도움이 됩니다. 스로틀링을 통해 Elastic Load Balancing API에 대한 요청이 허용되는 최대 API 요청 제한을 초과하지 않도록 할 수 있습니다. API 요청에는 직접 호출하든 사용자를 대신하여 호출하든 관계없이 요청 제한이 적용됩니다(예: AWS Management Console 또는 타사 애플리케이션).

Elastic Load Balancing API 스로틀링 한도를 초과하면 ThrottlingException 오류 코드와 Rate exceeded 오류 메시지가 반환됩니다.

스로틀링을 원활하게 처리할 수 있도록 준비하는 것이 좋습니다. 자세한 내용은 시간 제한, 재시도 및 지터를 사용한 백오프를 참조하세요. 제한 수준이 높으면 AWS Support 에 문의하여 API 사용량과 잠재적 솔루션을 평가할 수 있습니다. 각 사례는 개별적으로 평가됩니다. 지원 는 고가용성과 예측 가능한 성능을 유지하기 위해 시스템의 안전 한도 내에서 한도를 늘릴 수 있습니다.

제한 적용 방법

Elastic Load Balancing에서는 토큰 버킷 알고리즘을 사용하여 API 스로틀링을 구현합니다. 이 알고리즘을 사용하면 계정에 특정 수의 토큰을 보관하는 버킷이 있습니다. 버킷의 토큰 수는 지정된 초당 스로틀링 제한을 나타냅니다.

Elastic Load Balancing은 두 가지 API 작업 세트를 제공합니다. ELB API 버전 2는 Application Load Balancer, Network Load Balancer, 게이트웨이 로드 밸런서와 같은 로드 밸런서 유형을 지원합니다. ELB API 버전 1은 Classic Load Balancer를 지원합니다. 각 ELB API 버전에는 자체 버킷과 토큰이 있습니다.

Amazon EC2, Amazon ECS, Amazon EC2 Auto Scaling과 같이 사용자를 대신하여 Elastic Load Balancing API를 호출하는 서비스에는 자체 계정 수준 버킷 AWS CloudFormation 이 있습니다. 이러한 서비스는 사용자의 버킷에서 토큰을 소모하지 않습니다.

요청 속도 제한

요청 속도 제한이 적용되면 사용자가 생성하는 API 요청 수에 따라 스로틀링이 발생합니다. 제출한 각 요청은 버킷에서 하나의 토큰을 제거합니다. 예를 들어, 변경되지 않는 API 작업의 토큰 버킷 크기는 토큰 40개입니다. 초당 최대 40개의 Describe* 요청을 보낼 수 있습니다. 매초 Describe* 요청이 40개를 초과하면 스로틀링이 발생하고 해당 초 내에 나머지 요청은 실패합니다.

버킷은 설정된 속도로 자동으로 다시 채워집니다. 버킷이 최대 용량보다 적은 경우 버킷이 최대 용량에 도달할 때까지 매초 일정 수의 토큰이 버킷에 다시 추가됩니다. 다시 채우기 토큰이 도착했을 때 버킷이 다 차면 토큰은 폐기됩니다. 버킷은 최대 토큰 수를 초과하여 보관할 수 없습니다. 예를 들어, 변경되지 않는 API 작업의 버킷 크기는 토큰 40개이며 다시 채우기 속도는 초당 10토큰입니다. 1초에 40개의 DescribeLoadBalancers 요청을 하면 버킷이 토큰 0개로 줄어듭니다. 그러면 버킷이 최대 용량인 40개 토큰에 도달할 때까지 매초 10개의 다시 채우기 토큰을 추가합니다. 즉, 그 시간 동안 요청이 없으면 빈 버킷이 최대 용량에 도달하는 데 4초가 걸립니다.

API 요청을 하기 전에 버킷이 완전히 꽉 찰 때까지 기다릴 필요는 없습니다. 토큰은 버킷에 추가되는 즉시 사용할 수 있습니다. 다시 채우기 토큰을 즉시 사용하는 경우 버킷이 최대 용량에 도달하지 않습니다.

모든 Elastic Load Balancing API 작업에서 공유되는 계정 수준 스로틀링 제한이 있습니다. 계정 수준 버킷의 용량은 토큰 40개이고 다시 채우기 속도는 초당 요청 토큰 10개입니다.

요청 토큰 버킷 크기 및 다시 채우기 속도

요청 속도 제한을 위해 API 작업은 범주로 그룹화됩니다. 각 범주는 자체적인 제한이 적용됩니다.

Categories
  • 변경 작업 – 리소스를 생성, 수정 또는 삭제하는 API 작업입니다 이 범주에는 일반적으로 변경되지 않는 작업으로 분류되지 않은 모든 API 작업이 포함됩니다. 이러한 작업의 스로틀링 제한은 변경되지 않는 API 작업보다 낮습니다.

  • 변경되지 않는 작업 – 리소스에 대한 데이터를 검색하는 API 작업입니다. 이러한 API 작업에는 일반적으로 API 스로틀링 제한이 가장 높습니다.

  • 리소스 집약적 작업 – 완료하는 데 가장 많은 시간이 걸리고 가장 많은 리소스를 소비하는 API 작업입니다. 이러한 작업의 스로틀링 제한은 변경 작업보다 훨씬 낮습니다. 이러한 작업은 다른 변경 작업과 별도로 스로틀링됩니다.

  • 등록 작업 – 대상을 등록하거나 등록 취소하는 API 작업입니다. 이러한 API 작업은 다른 변경 작업과 별도로 스로틀링됩니다.

  • 분류되지 않은 작업 – 이러한 API 작업은 다른 범주 중 하나에 속하더라도 자체 토큰 버킷 크기와 다시 채우기 속도가 적용됩니다.

다음 표에는 분류된 요청 토큰 버킷의 기본 용량 및 다시 채우기 속도가 나와 있습니다.

카테고리 ELBv2 작업 ELBv1 작업 버킷 용량 다시 채우기 속도(초당)
리소스 집약적 CreateLoadBalancer, SetSubnets CreateLoadBalancer, AttachLoadBalancerToSubnets, DetachLoadBalancerFromSubnets, EnableAvailabilityZonesForLoadBalancer, DisableAvailabilityZonesForLoadBalancer 10 0.2
등록 RegisterTargets, DeregisterTargets RegisterInstancesWithLoadBalancer, DeregisterInstancesFromLoadBalancer 20 4
변경되지 않음 DescribeAccountLimits, DescribeCapacityReservation, DescribeListenerAttributes, DescribeListenerCertificates, DescribeListeners, DescribeLoadBalancerAttributes, DescribeLoadBalancers, DescribeRules, DescribeSSLPolicies, DescribeTags, DescribeTargetGroupAttributes, DescribeTargetGroups, DescribeTargetHealth Describe* 40 10
변형 AddListenerCertificates, AddTags, CreateListener, CreateRule, CreateTargetGroup, DeleteListener, DeleteLoadBalancer, DeleteRule, DeleteTargetGroup, ModifyCapacityReservation, ModifyIpPools, ModifyListener, ModifyListenerAttributes, ModifyLoadBalancerAttributes, ModifyRule, ModifyTargetGroup, ModifyTargetGroupAttributes, RemoveListenerCertificates, RemoveTags, SetIpAddressType, SetRulePriorities, SetSecurityGroups AddTags, ApplySecurityGroupsToLoadBalancer, ConfigureHealthCheck, CreateAppCookieStickinessPolicy, CreateLbCookieStickinessPolicy, CreateLoadBalancerListener, CreateLoadBalancerPolicy, Delete*, ModifyLoadBalancerAttributes, RemoveTags, SetLoadBalancer* 20 3

다음 표에는 ELBv2에 대한 분류되지 않은 요청 토큰 버킷의 기본 용량 및 다시 채우기 속도가 나와 있습니다.

ELBv2 작업 버킷 용량 다시 채우기 속도(초당)
CreateTrustStore 10 0.2
AddTrustStoreRevocations, DeleteSharedTrustStoreAssociation, DeleteTrustStore, ModifyTrustStore, RemoveTrustStoreRevocations 10 0.2
GetResourcePolicy, GetTrustStoreCaCertificatesBundle, GetTrustStoreRevocationContent 20 4
DescribeTrustStoreAssociations, DescribeTrustStoreRevocations, DescribeTrustStores 40 10

소수점 단위의 다시 채우기 속도는 하나의 전체 토큰을 생성하는 데 몇 초가 필요합니다.

API 요청 모니터링

AWS CloudTrail 를 사용하여 Elastic Load Balancing API 요청을 모니터링할 수 있습니다. 자세한 내용은 를 사용하여 Elastic Load Balancing에 대한 API 호출 로깅 AWS CloudTrail 단원을 참조하십시오.