本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Amazon ECS 服務配額與 API 限流限制
Amazon ECS 與數個 整合 AWS 服務,包括 ELB AWS Cloud Map和 Amazon EC2。透過這種緊密整合,Amazon ECS 包含數個功能,例如服務負載平衡、服務探索、任務聯網與叢集自動擴展。Amazon ECS 及其與所有維護服務配額和 API 速率限制整合 AWS 服務 的另一個 ECS,以確保一致的效能和使用率。這些服務配額也可防止意外佈建超過所需的資源,並防範可能導致帳單金額增加的惡意行為。
透過熟悉您的服務配額和 AWS API 速率限制,您可以規劃擴展工作負載,而不必擔心意外的效能降低。如需詳細資訊,請參閱 Amazon ECS 服務配額與 Request throttling for the Amazon ECS API。
在 Amazon ECS 上擴展工作負載時,請考量下列服務配額。如需如何請求提高服務配額的指示,請參閱《》中的管理您的 Amazon ECS AWS Fargate 和服務配額 AWS 管理主控台。
-
AWS Fargate 具有配額,可限制每個 中並行執行中的任務數量 AWS 區域。Amazon ECS 上的隨需任務與 Fargate Spot 任務都有配額。每個服務配額的計算範圍,亦涵蓋您在 Fargate 上執行的所有 Amazon EKS Pod。如需有關 Fargate 配額的詳細資訊,請參閱 Amazon Elastic Container Service User Guide for AWS Fargate 中的 AWS Fargate service quotas。
-
對於在 Amazon EC2 執行個體上執行的任務,每個叢集可註冊的 Amazon EC2 執行個體數量上限為 5,000 個。如果您使用 Amazon ECS 叢集自動擴展搭配 Amazon EC2 Auto Scaling 群組容量提供者,或者您自行管理叢集的 Amazon EC2 執行個體,則此配額可能會成為部署瓶頸。如果需要更多容量,您可以建立更多叢集或請求提高服務配額。
-
如果您搭配 Amazon EC2 Auto Scaling 群組容量提供者使用 Amazon ECS 叢集自動擴展,則在擴展服務時,請考慮
Tasks in the PROVISIONING state per cluster配額。 Auto Scaling 此配額指每個叢集中處於PROVISIONING狀態的任務數上限,容量提供者可針對這些任務增加容量。當同時啟動大量任務時,就很容易達到此配額上限。若同時部署數十個服務,每個服務包含數百個任務,就可能出現這種情況。此時,若叢集容量不足,容量提供者需啟動新的容器執行個體來置放這些任務。在容量提供者啟動額外 Amazon EC2 執行個體的同時,Amazon ECS 服務排程器通常會持續平行啟動任務。但由於叢集容量不足,此操作可能會受到限流。隨著新容器執行個體的啟動,Amazon ECS 服務排程器會採用退避與指數限流策略,重試任務置放操作。因此,您可能會遇到部署或擴展時間延長的情況。若要避免此狀況,可透過以下任一方式規劃服務部署。部署大量無需擴充叢集容量的任務,或者為新任務啟動保留備用叢集容量。
除了在擴展工作負載時考慮 Amazon ECS 服務配額之外,也請考慮與 Amazon ECS AWS 服務 整合之其他 的服務配額。下一節將詳細介紹各服務的關鍵速率限制,並提供應對潛在限流問題的建議。
ELB
您可以設定 Amazon ECS 服務使用 ELB 將流量平均分配到任務。如需有關如何選擇負載平衡器的詳細資訊,請參閱使用負載平衡分發 Amazon ECS 服務流量。
ELB 服務配額
當您擴展工作負載時,請考慮下列 ELB 服務配額。大多數 ELB 服務配額都是可調整的,您可以在 Service Quotas 主控台中請求增加。
Application Load Balancer
在使用 Application Load Balancer 時,根據實際使用案例,可能需要申請提高以下項目的配額:
-
Targets per Application Load Balancer配額,即 Application Load Balancer 後端的目標數量。 -
Targets per Target Group per Region配額,即目標群組後端的目標數量。
如需詳細資訊,請參閱 Quotas for your Application Load Balancers。
Network Load Balancer
Network Load Balancer 的目標註冊數量存在更嚴格的限制。使用 Network Load Balancer 時,通常建議啟用跨可用區域支援功能,但此功能此功能會對 Targets per Availability
Zone Per Network Load Balancer 帶來額外的擴展限制,亦即每個 Network Load Balancer 於各可用區域中可容納的目標數量上限將受到規範。如需詳細資訊,請參閱 Quotas for your Network Load Balancers。
ELB API 限流
在設定 Amazon ECS 服務使用負載平衡器時,必須先通過目標群組運作狀態檢查,才能將服務視為正常運作。為了執行這些運作狀態檢查,Amazon ECS 會代表您叫用 ELB API 操作。如果您帳戶中有大量使用負載平衡器設定的服務,您可能會因為特別針對 RegisterTarget、 DeregisterTarget和 DescribeTargetHealthELB API 操作的潛在限流而遇到較慢的服務部署。發生限流時,Amazon ECS 服務事件訊息中會發生限流錯誤。
如果您遇到 AWS Cloud Map API 限流,您可以聯絡 支援 以取得有關如何提高 AWS Cloud Map API 限流限制的指引。如需有關監控及疑難排解此類限流錯誤的詳細資訊,請參閱因應限流問題。
彈性網路介面
隨著任務使用 awsvpc 網路模式,Amazon ECS 會為每個任務佈建唯一的彈性網路介面 (ENI)。當您的 Amazon ECS 服務使用 ELB 負載平衡器時,這些網路介面也會註冊為服務中定義之適當目標群組的目標。
彈性網路介面服務配額
當您執行使用 awsvpc 網路模式的任務時,每個任務都會連接唯一的彈性網路介面。如果必須透過網際網路到達這些任務,請將公有 IP 位址指派給這些任務的彈性網路介面。在擴展 Amazon ECS 工作負載時,請考量這兩個重要的配額:
-
Network interfaces per Region配額,這是 中 AWS 區域 您帳戶的最大網路介面數量。 -
Elastic IP addresses per Region配額,即 AWS 區域中彈性 IP 位址的最大數量。
這兩個服務配額皆可調整,您可以直接透過 Service Quotas 主控台提出調增申請。如需詳細資訊,請參閱 Amazon VPC service quotas。
對於託管在 Amazon EC2 執行個體上的 Amazon ECS 工作負載,當執行使用 awsvpc 網路模式的任務時,建議考量 Maximum network
interfaces 服務配額,即每個 Amazon EC2 執行個體的網路執行個體數量上限。此配額會限制可在執行個體上置放的任務數量。此配額無法調整,就業未於 Service Quotas 主控台中提供。如需詳細資訊,請參閱 Amazon EC2 User Guide 中的 IP addresses per network interface per instance type。
雖然您無法變更可連接至 Amazon EC2 執行個體的網路介面數量,但可透過啟用彈性網路介面主幹功能來增加可用網路介面的總數。例如,依預設,c5.large 執行個體最多可有 3 個網路介面。執行個體的主要網路介面視為一個配額。因此,您可以將額外的兩個網路介面連接至執行個體。因為每個使用 awsvpc 網路模式的任務都需要網路介面,所以通常只能對此執行個體類型執行兩個這類任務。這可能會導致叢集容量的使用率偏低。如果啟用彈性網路介面主幹功能,即可提高網路介面密度,從而在每個執行個體上部署更多任務。啟用主幹功能後,c5.large 執行個體最多可有 12 個網路介面。該執行個體本身已具備主要網路介面,而 Amazon ECS 會建立並連接「主幹」網路介面至該執行個體。因此,透過此組態,您可在該執行個體上執行 10 個任務,而非預設的 2 個任務。如需詳細資訊,請參閱彈性網路介面主幹功能。
彈性網路介面 API 限流
在執行使用 awsvpc 網路模式的任務時,Amazon ECS 會調用下列 Amazon EC2 API。每個 API 皆設有不同的 API 限流。如需詳細資訊,請參閱 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 服務探索使用 AWS Cloud Map APIs 來管理 Amazon ECS 服務的命名空間。如果服務有大量任務,建議考量下列事項。如需詳細資訊,請參閱 Amazon ECS 服務探索考量事項。
AWS Cloud Map 服務配額
當 Amazon ECS Tasks per service 服務設定為使用服務探索時,服務任務數量上限的配額會受到 AWS Cloud Map Instances per service該服務執行個體數量上限的服務配額影響。特別是, AWS Cloud Map 服務配額會將您可以執行的任務量減少到每個服務最多 1,000 個任務。 AWS Cloud Map 配額無法變更。如需更多相關資訊,請參閱 AWS Cloud Map Service Quotas。
AWS Cloud Map API 限流
Amazon ECS 會代表您呼叫 ListInstances、RegisterInstance、 GetInstancesHealthStatus和 DeregisterInstance AWS Cloud Map APIs。這些 API 可用於服務探索,會在您啟動任務時執行運作狀態檢查。當同時使用服務探索與大量任務的多個服務同時部署時,這可能會導致超過 AWS Cloud Map API 限流限制。此時,您可能會在 Amazon ECS 服務事件訊息中看到訊息 (Operations are being throttled. Will try again later),且部署與任務啟動速度會減緩。 AWS Cloud Map
未記錄這些 API 的限流限制。如果您遇到這些調節,您可以聯絡 支援 以取得提高 API 調節限制的指引。如需有關監控及疑難排解此類限流錯誤的更多建議,請參閱因應限流問題。