Como lidar com as cotas de serviço e os limites de controle de utilização de API do Amazon ECS
O Amazon ECS está integrado a vários Serviços da AWS, incluindo o Elastic Load Balancing, o AWS Cloud Map e o Amazon EC2. Com essa forte integração, o Amazon ECS inclui vários recursos, como balanceamento de carga do serviço, Service Connect, rede de tarefas e ajuste de escala automático de clusters. O Amazon ECS e os outros Serviços da AWS que ele integra mantêm cotas de serviço e limites de taxa de API para garantir desempenho e utilização consistentes. As cotas de serviço também evitam o provisionamento acidental de mais recursos do que o necessário e protegem contra ações maliciosas que possam aumentar sua fatura.
Ao se familiarizar com as cotas de serviço e os limites de taxa de API da AWS, você pode planejar a escalabilidade das workloads sem se preocupar com a degradação inesperada do desempenho. Para obter mais informações, consulte Request throttling for the Amazon ECS API.
Ao escalar as workloads no Amazon ECS, recomendamos que você considere a cota de serviço a seguir.
-
O AWS Fargate tem cotas que limitam o número de tarefas em execução simultânea em cada Região da AWS. Há cotas para tarefas sob demanda e do Fargate Spot no Amazon ECS. Cada cota de serviço também inclui todos os pods do Amazon EKS executados no Fargate.
-
Em tarefas executadas nas instâncias do Amazon EC2, o número máximo de instâncias do Amazon EC2 que você pode registrar em cada cluster é 5 mil. Caso use o ajuste de escala automático de cluster do Amazon ECS com um provedor de capacidade de grupo do Auto Scaling, ou caso gerencie instâncias do Amazon EC2 para o cluster sem ajuda, essa cota pode virar um gargalo de implantação. Se precisar de mais capacidade, você pode criar mais clusters ou solicitar um aumento na cota de serviço.
-
Se você usa o ajuste de escala automático de cluster do Amazon ECS com um provedor de capacidade de grupo do Auto Scaling, considere a cota
Tasks in the PROVISIONING state per cluster
ao escalar os serviços. Essa cota é o número máximo de tarefas no estadoPROVISIONING
de cada cluster para as quais os provedores de capacidade podem aumentar a capacidade. Ao executar um grande número de tarefas ao mesmo tempo, você pode facilmente atingir essa cota. Um exemplo é se você implantar simultaneamente dezenas de serviços, cada um com centenas de tarefas. Quando isso acontece, o provedor de capacidade precisa executar novas instâncias de contêiner para posicionar as tarefas quando o cluster não tem capacidade suficiente. Enquanto o provedor de capacidade executa instâncias adicionais do Amazon EC2, é provável que o programador de serviços do Amazon ECS continue executando tarefas em paralelo. No entanto, essa atividade pode ter controle de utilização devido à capacidade insuficiente do cluster. O programador de serviços do Amazon ECS implementa uma estratégia de recuo e controle de utilização exponencial para repetir o posicionamento de tarefas à medida que novas instâncias de contêineres são executadas. Como resultado, você pode enfrentar tempos de implantação ou de aumento horizontal de escala mais lentos. Para evitar essa situação, você pode planejar as implantações de serviços em uma das opções a seguir. Implemente um grande número de tarefas que não exijam aumento da capacidade do cluster ou mantenha uma capacidade disponível do cluster para a execução de novas tarefas.
Além de considerar a cota de serviços do Amazon ECS ao escalar as workloads, considere também a cota de serviço dos outros Serviços da AWS integrados ao Amazon ECS.
Elastic Load Balancing
Você pode configurar os serviços do Amazon ECS para usar o Elastic Load Balancing para distribuir o tráfego uniformemente entre as tarefas. Para obter mais informações e as práticas recomendadas sobre como escolher um balanceador de carga, consulte Uso do balanceamento de carga para distribuir o tráfego de serviço do Amazon ECS.
Cotas de serviço do Elastic Load Balancing
Ao escalar as workloads, considere as cotas de serviço do Elastic Load Balancing a seguir. A maioria das cotas de serviço do Elastic Load Balancing é ajustável, e você pode solicitar um aumento no console do Service Quotas.
Application Load Balancer
Ao usar um Application Load Balancer, dependendo do seu caso de uso, pode ser necessário solicitar um aumento de cota para:
-
A cota de
Targets per Application Load Balancer
, que é o número de destinos por trás do Application Load Balancer. -
A cota de
Targets per Target Group per Region
, que é o número de destinos por trás dos grupos de destino.
Para obter mais informações, consulte Quotas for your Application Load Balancers no Guia do usuário para Application Load Balancers.
Network Load Balancer
Há limitações mais rígidas no número de destinos que você pode registrar com um Network Load Balancer. Ao usar um Network Load Balancer, talvez você queira habilitar o suporte entre zonas, que vem com limitações adicionais de escalabilidade no Targets per Availability Zone Per
Network Load Balancer
, o número máximo de destinos por zona de disponibilidade para cada Network Load Balancer. Para obter mais informações, consulte Quotas for your Network Load Balancers no Guia do usuário para Network Load Balancers.
Controle de utilização da API do Elastic Load Balancing
Ao configurar um serviço do Amazon ECS para usar um balanceador de carga, as verificações de integridade do grupo de destino devem ser aprovadas para que o serviço seja considerado íntegro. Para realizar essas verificações de integridade, o Amazon ECS invoca as operações de API do Elastic Load Balancing em seu nome. Caso tenha um grande número de serviços configurados com balanceadores de carga na conta, você pode tornar as implantações de serviços mais lentas devido ao possível controle de utilização específico das operações de API RegisterTarget
, DeregisterTarget
e DescribeTargetHealth
do Elastic Load Balancing. Quando ocorre o controle de utilização, ocorrem erros de controle de utilização nas mensagens de eventos do serviço do Amazon ECS.
Caso enfrente problemas de controle de utilização na API do AWS Cloud Map, entre em contato com o Suporte para obter orientação sobre como aumentar os limites de controle de utilização na API do AWS Cloud Map. Para obter mais informações sobre como monitorar e solucionar problemas desses erros de controle de utilização, consulte Lidar com problemas de controle de utilização do Amazon ECS.
Interfaces de rede elástica
Com as tarefas usando o modo de rede awsvpc
, o Amazon ECS provisiona uma interface de rede elástica (ENI) exclusiva para cada tarefa. Quando os serviços do Amazon ECS usam um balanceador de carga do Elastic Load Balancing, essas interfaces de rede também são registradas como destinos no grupo de destino apropriado definido no serviço.
Cotas de serviço da interface de rede elástica
Ao executar tarefas que usam o modo de rede awsvpc
, uma interface de rede elástica exclusiva é anexada a cada tarefa. Caso essas tarefas precisem ser acessadas pela Internet, atribua um endereço IP público à interface de rede elástica dessas tarefas. Ao escalar as workloads do Amazon ECS, considere estas duas cotas importantes:
-
A cota de
Network interfaces per Region
, que é o número máximo de interfaces de rede em uma Região da AWS para sua conta. -
A cota de
Elastic IP addresses per Region
, que é o número máximo de endereços IP elásticos em uma Região da AWS.
Ambas as cotas de serviço são ajustáveis e você pode solicitar um aumento delas no console do Service Quotas. Para obter mais informações, consulte Amazon VPC service quotas no Guia do usuário da Amazon Virtual Private Cloud.
Em workloads do Amazon ECS hospedadas em instâncias do Amazon EC2, ao executar tarefas que usam o modo de rede awsvpc
, considere a cota de serviço Maximum network
interfaces
, o número máximo de instâncias de rede para cada instância do Amazon EC2. Essa cota limita o número de tarefas que você pode posicionar em uma instância. Não é possível ajustar a cota e ela não está disponível no console do Service Quotas. Para obter mais informações, consulte Endereços IP por interface de rede por tipo de instância no Guia do usuário do Amazon EC2.
Embora você não possa alterar o número de interfaces de rede que podem ser anexadas a uma instância do Amazon EC2, é possível usar o recurso de truncamento da interface de rede elástica para aumentar o número de interfaces de rede disponíveis. Por exemplo, por padrão, uma instância c5.large
pode ter até três interfaces de rede. A interface de rede primária da instância conta como uma. Portanto, é possível anexar mais duas interfaces de rede à instância. Como cada tarefa que usa o modo de rede awsvpc
requer uma interface de rede, normalmente só é possível executar duas dessas tarefas nesse tipo de instância. Isso pode levar à subutilização da capacidade do cluster. Se você habilitar o truncamento da interface de rede elástica, poderá aumentar a densidade da interface de rede para posicionar um número maior de tarefas em cada instância. Com o truncamento ativado, uma instância c5.large
pode ter até 12 interfaces de rede. A instância tem a interface de rede primária e o Amazon ECS cria e anexa uma interface de rede de “truncamento” à instância. Como resultado, com essa configuração, você pode executar dez tarefas na instância em vez das duas tarefas padrão. Para obter mais informações, consulte Aumento das interfaces de rede de instâncias de contêiner do Linux no Amazon ECS.
Controle de utilização da API de interface de rede elástica
Ao executar tarefas que usam o modo de rede awsvpc
, o Amazon ECS depende das APIs do Amazon EC2 mencionadas a seguir. Cada uma dessas APIs tem controles de utilização de API diferentes. Para obter mais informações, consulte Request throttling for the Amazon EC2 API na Referência de APIs do Amazon EC2.
-
CreateNetworkInterface
-
AttachNetworkInterface
-
DetachNetworkInterface
-
DeleteNetworkInterface
-
DescribeNetworkInterfaces
-
DescribeVpcs
-
DescribeSubnets
-
DescribeSecurityGroups
-
DescribeInstances
Se as chamadas de API do Amazon EC2 receberem controle de utilização durante os fluxos de trabalho de provisionamento da interface de rede elástica, o programador de serviços do Amazon ECS repete automaticamente com recuos exponenciais. Às vezes, essas repetições automáticas podem levar a um atraso na execução de tarefas, resultando em velocidades de implantação mais lentas. Quando ocorrer o controle de utilização da API, você verá a mensagem Operations are being
throttled. Will try again later.
nas mensagens de eventos do serviço. Caso atenda consistentemente aos controle de utilização de API do Amazon EC2, entre em contato com o Suporte para obter orientações sobre como aumentar os limites de controle de utilização da API. Para obter mais informações sobre como monitorar e solucionar problemas de controle de utilização, consulte Handling throttling issues.
AWS Cloud Map
A descoberta de serviços do Amazon ECS e o Service Connect usam APIs do AWS Cloud Map para gerenciar namespaces para os serviços do Amazon ECS. Se os serviços tiverem um grande número de tarefas, considere as recomendações a seguir.
Cotas de serviço do AWS Cloud Map
Quando os serviços do Amazon ECS são configurados para usar a descoberta de serviços ou o Service Connect, a cota de Tasks per service
, que é o número máximo de tarefas do serviço, é afetada pela cota de serviço de Instances per service
do AWS Cloud Map, que é o número máximo de instâncias desse serviço. Especificamente, a cota de serviço do AWS Cloud Map diminui a quantidade de instâncias que você pode executar para, no máximo, 1.000 instâncias por serviço. Não é possível alterar a cota do AWS Cloud Map. Para obter mais informações, consulte as Service Quotas do AWS Cloud Map.
Controle de utilização da API do AWS Cloud Map
O Amazon ECS chama as APIs ListInstances
, GetInstancesHealthStatus
, RegisterInstance
e DeregisterInstance
do AWS Cloud Map em seu nome. Elas ajudam na descoberta de serviços e realizam verificações de integridade ao executar uma tarefa. Quando vários serviços que usam a descoberta de serviços com um grande número de tarefas são implantados ao mesmo tempo, isso pode resultar na ultrapassagem dos limites de controle de utilização da API do AWS Cloud Map. Quando isso acontecer, é provável que surja a mensagem Operations are being throttled. Will try again later
nas mensagens de eventos do serviço do Amazon ECS e que a velocidade de implantação e execução de tarefas fique mais lenta. O AWS Cloud Map não documenta os limites de controle de utilização dessas APIs. Caso enfrente problemas de controle de utilização, entre em contato com o Suporte para obter orientações sobre como aumentar os limites de controle de utilização da API. Para obter mais recomendações sobre como monitorar e solucionar esses erros de controle de utilização, consulte Lidar com problemas de controle de utilização do Amazon ECS.