Balanceamento de carga do serviço - Serviço Amazon Elastic Container

Balanceamento de carga do serviço

O serviço do Amazon ECS pode ser configurado opcionalmente para usar o Elastic Load Balancing para distribuir o tráfego uniformemente entre as tarefas do serviço.

nota

Quando você usa conjuntos de tarefas, todas as tarefas do conjunto devem ser configuradas para usar o Elastic Load Balancing ou para não usar o Elastic Load Balancing.

Os serviços do Amazon ECS hospedados em instâncias do Amazon EC2 oferecem suporte a Application Load Balancers, Network Load Balancers e Classic Load Balancers. Os serviços do Amazon ECS hospedados no AWS Fargate só oferecem suporte ao Application Load Balancer e ao Network Load Balancer. Balanceadores de carga da aplicação são usados para encaminhar o tráfego HTTP/HTTPS (ou camada 7). Os Network Load Balancers são usados para encaminhar o tráfego TCP ou UDP (ou camada 4). Os classic load balancers são usados para encaminhar o tráfego TCP. Para mais informações, consulte Tipos de balanceador de carga.

Os application load balancers oferecem vários recursos que os tornam atrativos para uso com serviços do Amazon ECS:

  • Cada serviço pode atender a tráfego de vários load balancers e expor várias portas de balanceamento de carga especificando vários grupos de destino.

  • Eles são compatíveis com tarefas hospedadas em instâncias do Fargate e do EC2.

  • Os application load balancers permitem que os contêineres usem mapeamento de porta host dinâmico (de modo que várias tarefas do mesmo serviço sejam permitidas por instância de contêiner).

  • Os Application Load Balancers oferecem suporte a regras de roteamento e prioridade com base no caminho (de modo que vários serviços possam usar a mesma porta de listener em um único Application Load Balancer).

Recomendamos que usar Application Load Balancers nos serviços do Amazon ECS para poder aproveitar esses novos recursos, a menos que o serviço exija um recurso que esteja disponível apenas com network load balancers ou classic load balancers. Para obter mais informações sobre Elastic Load Balancing e as diferenças entre esses tipos de balanceadores de carga, consulte o Guia do usuário do Elastic Load Balancing.

Com o load balancer, você paga somente pelo que utilizar. Para obter mais informações, consulte Preço do Elastic Load Balancing.

Considerações sobre balanceamento de carga do serviço

Considere o seguinte ao usar o balanceamento de carga do serviço.

Considerações sobre o Application Load Balancer e o Network Load Balancer

As considerações a seguir são específicas para serviços do Amazon ECS usando application load balancers ou network load balancers:

  • O Amazon ECS exige a função do IAM vinculada ao serviço, que fornece as permissões necessárias para registrar e cancelar o registro de destinos com o balanceador de carga quando as tarefas são criadas e interrompidas. Para mais informações, consulte Função vinculada ao serviço para o Amazon ECS.

  • Para serviços que usam um Application Load Balancer ou um Network Load Balancer, não é possível anexar mais de cinco grupos de destino a um serviço.

  • Para serviços com tarefas que usam o modo de rede awsvpc, uando você cria um grupo de destino para o serviço, é necessário escolher ip como o tipo de destino, e não instance. Isso ocorre porque as tarefas que usam o modo de rede awsvpc estão associadas a uma interface de rede elástica, e não a uma instância do Amazon EC2.

  • Se o serviço usar um Application Load Balancer e exigir acesso a várias portas com carga balanceada, como a porta 80 e a porta 443 para um serviço HTTP/HTTPS, será possível configurar dois listeners. Um listener é responsável pelo HTTPS que encaminha a solicitação para o serviço e outro listener que é responsável por redirecionar solicitações HTTP para a porta HTTPS apropriada. Para obter mais informações, consulte Criar um listener no Application Load Balancer no Guia do usuário dos Application Load Balancers.

  • A configuração de sub-rede do load balancer deve incluir todas as zonas de disponibilidade nas quais as instâncias de contêiner residem.

  • Após você criar um serviço, a configuração do balanceador de carga não poderá ser alterada no AWS Management Console. É possível usar o AWS Copilot, o AWS CloudFormation, a AWS CLI ou o SDK para modificar a configuração do balanceador de carga somente para o controlador de implantação rolling do ECS, e não o AWS CodeDeploy azul/verde ou externo. Quando você adiciona, atualiza ou remove uma configuração de balanceador de carga, o Amazon ECS inicia uma nova implantação com a configuração atualizada do Elastic Load Balancing. Isso faz com que as tarefas se registrem e cancelem o registro dos balanceadores de carga. Recomendamos verificar isso em um ambiente de teste antes de atualizar a configuração do Elastic Load Balancing. Para obter informações sobre como modificar a configuração, consulte UpdateService na Referência da API do Amazon Elastic Container Service.

  • Caso a tarefa de um serviço não passe nos critérios de verificação de integridade do load balancer, a tarefa é interrompida e reiniciada. Esse processo continuará até que o serviço alcance o número de tarefas em execução desejadas.

  • Quando são usados network load balancers configurados com endereços IP como destinos, as solicitações são vistas como provenientes do endereço IP privado dos network load balancers. Isso significa que os serviços por trás de um Network Load Balancer estarão efetivamente abertos ao mundo assim que você permitir solicitações de entrada e verificações de integridade no grupo de segurança do destino.

  • O uso de um Network Load Balancer para encaminhar o tráfego UDP para as tarefas do Amazon ECS no Fargate exige que a tarefa use a versão 1.4.0 (Linux) ou 1.0.0 (Windows) da plataforma.

  • Minimize os erros em suas aplicações clientes estabelecendo o StopTimeout na definição de tarefa maior do que o atraso de cancelamento do registro do grupo de destino, que deve ser maior do que o tempo limite de conexão do cliente. Consulte a Builders Library para obter mais informações sobre a configuração recomendada do cliente aqui .

    Além disso, o atributo do grupo de destino do Network Load Balancer para encerramento da conexão fecha todas as conexões restantes após o tempo de cancelamento do registro. Isso pode fazer com que os clientes exibam mensagens de erro indesejadas, se o cliente não as manipular.

  • Caso você esteja enfrentando problemas com os serviços habilitados pelo balanceador de carga, consulte Como solucionar problemas de load balancers de serviço.

Considerações sobre o Classic Load Balancer

As considerações a seguir são específicas para serviços do Amazon ECS que usam classic load balancers:

  • Os serviços com tarefas que usam o modo de rede awsvpc, como os que têm o tipo de inicialização do Fargate, não são compatíveis com classic load balancers.

  • Todos os contêineres ativados em uma única definição de tarefa são sempre colocados na mesma instância de contêiner. Para balanceadoes de carga clássicos, você pode optar por colocar vários contêineres (na mesma definição de tarefa) atrás do mesmo balanceador de carga definindo várias portas host na definição de serviço e adicionando essas portas listener ao balanceador de carga. Por exemplo, se uma definição de tarefa consiste no uso pelo OpenSearch Service da porta 3030 na instância de contêiner, com Logstash e painéis do OpenSearch usando a porta 4040 na instância de contêiner, o mesmo balanceador de carga pode encaminhar o tráfego para o OpenSearch Service e painéis do OpenSearch por meio de dois listeners. Para obter mais informações, consulte Listeners para o Classic Load Balancer no Guia do usuário dos Classic Load Balancers.

    Importante

    Não recomendamos a conexão de vários serviços ao mesmo Classic Load Balancer. Como instâncias de contêiner completas são registradas e canceladas com classic load balancers e não com combinações de host e porta, essa configuração poderá causar problemas se uma tarefa de um serviço for interrompida. Nessa situação, uma tarefa de interrupção de um serviço pode fazer com que o registro de toda a instância de contêiner seja cancelado do Classic Load Balancer enquanto outra tarefa de um serviço diferente da mesma instância de contêiner ainda estiver usando o Classic Load Balancer. Se você quiser conectar vários serviços a um único balanceador de carga, recomendamos o uso de um Application Load Balancer.

  • O uso de provedores de capacidade não é compatível com o uso de classic load balancers para seus serviços.