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

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.

Os serviços do Amazon ECS hospedados em instâncias do Amazon EC2 oferecem suporte aos balanceadores de carga da aplicação, aos balanceadores de carga da rede e aos balanceadores de carga clássicos. Os serviços do Amazon ECS hospedados no AWS Fargate só oferecem suporte aos balanceadores de carga da aplicação e aos balanceadores de carga da rede. Balanceadores de carga da aplicação são usados para encaminhar o tráfego HTTP/HTTPS (ou camada 7). Os balanceadores de carga da rede são usados para encaminhar o tráfego TCP ou UDP (ou camada 4). Os balanceadores de carga clássico são usados para encaminhar o tráfego TCP. Para obter mais informações, consulte . Tipos de balanceador de carga.

Os balanceadores de carga da aplicação 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 balanceadores de carga da aplicação 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 balanceadores de carga da aplicação 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 balanceador de carga da aplicação).

Recomendamos que você use balanceadores de carga da aplicação 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 balanceadores de carga da rede ou balanceadores de carga clássicos. 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 balanceador de carga da aplicação e o balanceador de carga da rede

As considerações a seguir são específicas para serviços do Amazon ECS usando balanceadores de carga da aplicação ou balanceadores de carga da rede:

  • 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 obter mais informações, consulte . Função vinculada ao serviço para o Amazon ECS.

  • Para serviços que usam um balanceador de carga da aplicação ou um balanceador de carga da rede, 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 balanceador de carga da aplicação 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 balanceador de carga da aplicação no Guia do usuário de balanceadores de carga da aplicação.

  • 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.

  • Depois que você cria um serviço, o ARN do grupo de destino ou o nome do balanceador de carga, o nome do contêiner e porta do contêiner especificados na definição do serviço são imutáveis. Não é possível adicionar, remover ou alterar a configuração do balanceador de carga de um serviço existente. Se você atualizar a definição de tarefa para o serviço, o contêiner e a porta de contêiner especificados quando o serviço foi criado deverão permanecer na definição da tarefa.

  • 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.

  • O modo de inicialização lenta do balanceador de carga da aplicação é compatível. Para obter mais informações, consulte . Considerações sobre o modo de inicialização lenta do balanceador de carga da aplicação.

  • Quando são usados balanceadores de carga da rede configurados com endereços IP como destinos, as solicitações são vistas como provenientes do endereço IP privado dos balanceadores de carga da rede. Isso significa que os serviços por trás de um balanceador de carga da rede 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 balanceador de carga da rede 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 da plataforma.

  • 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 modo de inicialização lenta do balanceador de carga da aplicação

Os balanceadores de carga da aplicação habilitados para o modo de inicialização lenta são compatíveis com os serviços do Amazon ECS. Para obter mais informações sobre o modo de inicialização lenta, consulte Grupos de destino para balanceadores de carga da aplicação.

Para garantir que o programador de serviços ignore as verificações de integridade do contêiner não íntegras até que suas tarefas tenham sido preparadas e estejam prontas para receber tráfego, as seguintes configurações são necessárias:

  • É necessário configurar a verificação de integridade do contêiner para retornar um status UNHEALTHY até que o período de iniciação lenta termine.

  • É necessário configurar o valor do período de carência da verificação de integridade do serviço do Amazon ECS para a mesma duração do modo de inicialização lenta.

Considere o seguinte ao usar diferentes modos de rede de tarefas com o modo de inicialização lenta do balanceador de carga da aplicação:

  • Ao ser usado o modo de rede awsvpc, cada tarefa recebe sua própria interface de rede elástica (ENI) e endereço IP, o que permite que o balanceador de carga da aplicação registre cada tarefa como um destino no grupo de destino. Isso permite que cada destino recém-registrado tenha o modo de inicialização lento habilitado.

  • Ao ser usado o modo de rede host, a tarefa ignora as construções de rede do Docker e mapeia portas de contêiner diretamente na interface ou interfaces de rede da instância do Amazon EC2. Registre a instância de contêiner como destino do balanceador de carga da aplicação, em vez do endereço IP da tarefa. Isso significa que é possível executar somente uma tarefa por instância se quiser que o modo de iniciação lenta funcione efetivamente. Se você atualizasse uma tarefa ou serviço existente ou reiniciasse a instância de contêiner, isso não registraria novamente a instância de contêiner como um destino do balanceador de carga da aplicação e não acarretaria o início da duração da inicialização lenta.

  • Ao usar o modo de rede bridge, de maneira semelhante ao modo de rede host, registre a instância de contêiner como destino do balanceador de carga da aplicação e não da tarefa do Amazon ECS, para que as mesmas considerações descritas acima sejam aplicáveis.

Além disso, as seguintes considerações são específicas para usar o modo de inicialização lenta do balanceador de carga da aplicação e adicionar tarefas do Amazon ECS como destinos:

  • Ao habilitar a iniciação lenta para um grupo de destino, os destinos já registrados no grupo não entram no modo de iniciação lenta.

  • Ao habilitar a iniciação lenta para um grupo de destino vazio e, em seguida, registrar um ou mais destinos usando uma única operação de registro, esses destinos não entram no modo de iniciação rápida. Os destinos recém-registrados entram no modo de iniciação lenta somente quando houver pelo menos um destino registrado que não esteja no modo de iniciação lenta.

  • Se você cancelar o registro de um destino no modo de iniciação lenta, o destino sai do modo. Se registrar o mesmo destino novamente, ele entra no modo de iniciação lenta novamente.

  • Se um destino no modo de iniciação lenta se tornar não íntegro e íntegro novamente antes do fim do período de duração, o destino permanece no modo de iniciação lenta até que o período de duração termine e saia do modo de iniciação lenta. Se um destino que não está no modo de iniciação lenta muda de não íntegro para íntegro, ele não entra no modo de iniciação lenta.

Considerações sobre balanceadores de carga clássicos

As considerações a seguir são específicas para serviços do Amazon ECS que usam balanceadores de carga clássicos:

  • 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 balanceadores de carga clássicos.

  • 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 Serviceda 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 painéis do OpenSearch Service e do OpenSearch por meio de dois listeners. Para obter mais informações, consulte Listeners para o balanceador de carga clássico no Guia do usuário para balanceadores de carga clássicos.

    Importante

    Não recomendamos a conexão de vários serviços ao mesmo .balanceador de carga clássico. Como instâncias de contêiner completas são registradas e canceladas com balanceadores de carga clássicos 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 balanceador de carga clássico enquanto outra tarefa de um serviço diferente da mesma instância de contêiner ainda estiver usando o balanceador de carga clássico. Se você quiser conectar vários serviços a um único balanceador de carga, recomendamos o uso de um balanceador de carga da aplicação.