Serviços do Amazon ECS
É possível usar um serviço do Amazon ECS para executar e manter simultaneamente um número especificado de instâncias de uma definição de tarefa em um cluster do Amazon ECS. Se uma das suas tarefas falhar ou for interrompida, o programador de serviços do Amazon ECS executará outra instância da sua definição de tarefa para substituí-la. Isso ajuda a manter o número desejado de tarefas no serviço.
Você também pode executar o serviço atrás de um balanceador de carga. O load balancer distribui o tráfego entre as tarefas associadas ao serviço.
Recomendamos usar o programador de serviços para serviços e aplicações sem estado de longa execução. O programador de serviços garante que a estratégia de programação que você especifica seja seguida e reprograma as tarefas em caso de falha. Por exemplo, se a infraestrutura subjacente apresentar falha, o programador de serviços reprogramará uma tarefa. É possível usar estratégias e restrições de posicionamento de tarefas para personalizar como o programador posiciona e finaliza tarefas. Se uma tarefa em um serviço é interrompida, o programador inicia uma tarefa nova para substituí-la. Esse processo continua até que o serviço atinja o número desejado de tarefas com base na estratégia de programação usada pelo serviço. A estratégia de programação do serviço também é chamada de tipo de serviço.
O programador de serviços também substitui tarefas consideradas não íntegras após uma falha na verificação de integridade do contêiner ou na verificação de integridade do grupo-alvo do balanceador de carga. Essa substituição depende dos parâmetros de definição do serviço maximumPercent
e desiredCount
. Se uma tarefa for marcada como não íntegra, o programador de serviços iniciará primeiro uma tarefa de substituição. Então, acontece o seguinte.
Se o status de integridade da tarefa substituta for
HEALTHY
, o agendador do serviço interromperá a tarefa que não está íntegraSe a tarefa de substituição tiver um status de integridade de
UNHEALTHY
, o programador interromperá a tarefa de substituição não íntegra ou a tarefa não íntegra existente para que a contagem total de tarefas seja igual adesiredCount
.
Se o parâmetro maximumPercent
limitar o programador a iniciar uma tarefa de substituição primeiro, o programador interromperá aleatoriamente uma tarefa não íntegra, uma de cada vez, para liberar capacidade e, em seguida, iniciará uma tarefa de substituição. O processo de iniciar e parar continua até que todas as tarefas não íntegras sejam substituídas por tarefas íntegras. Depois que todas as tarefas não íntegras forem substituídas e somente as tarefas íntegras estiverem em execução, se a contagem total de tarefas exceder a desiredCount
, as tarefas íntegras serão interrompidas aleatoriamente até que a contagem total de tarefas seja igual a desiredCount
. Para obter mais informações sobre maximumPercent
e desiredCount
, consulte Parâmetros de definição de serviço.
O programador de serviços inclui uma lógica que regula a frequência com que as tarefas são reiniciadas, caso elas falhem repetidamente ao tentar iniciar. Se uma tarefa for interrompida sem ter entrado em um estado RUNNING
, o programador de serviços começará a retardar as tentativas de inicialização e enviará uma mensagem de evento de serviço. Esse comportamento impede que recursos desnecessários sejam usados para tarefas com falha antes que você possa resolver o problema. Depois que o serviço for atualizado, o programador de serviços continuará com seu comportamento de programação normal. Para obter mais informações, consulte Lógica de controle de utilização do serviço do Amazon ECS e Visualizar mensagens de eventos de serviço do Amazon ECS.
Opção de computação de infraestrutura
Há duas opções de computação que distribuem as tarefas.
-
Uma estratégia de provedor de capacidade faz com que o Amazon ECS distribua as tarefas em um ou entre vários provedores de capacidade.
Para capacity provider strategy (estratégia de provedor de capacidade), por padrão, o console seleciona uma opção de computação. Veja, a seguir, a descrição da ordem que o console usa para selecionar um padrão:
-
Se o cluster tiver uma estratégia padrão de provedor de capacidade definida, ela será selecionada.
-
Se o cluster não tiver uma estratégia de provedor de capacidade padrão definida, mas você tiver os provedores de capacidade do Fargate adicionados ao cluster, será selecionada uma estratégia de provedor de capacidade personalizada que use o provedor de capacidade do
FARGATE
. -
Se o cluster não tiver uma estratégia de provedor de capacidade padrão definida, mas você tiver um ou mais provedores de capacidade do grupo do Auto Scaling adicionados ao cluster, será selecionada a opção Usar personalizada (Avançado) e a estratégia precisará ser definida manualmente.
-
Se o cluster não tiver uma estratégia de provedor de capacidade padrão definida e nenhum provedor de capacidade for adicionado ao cluster, será selecionado o tipo de inicialização do Fargate.
-
-
Um tipo de execução faz com que o Amazon ECS inicie as tarefas diretamente no Fargate ou nas instâncias do EC2 registradas nos seus clusters.
Por padrão, o serviço começa nas sub-redes da VPC do cluster.
Autoescalabilidade do serviço
Ajuste de escala automático é a capacidade de aumentar ou diminuir o número de tarefas desejadas no serviço do Amazon ECS. O Amazon ECS utiliza o serviço do Application Auto Scaling para fornecer essa funcionalidade.
Para obter mais informações, consulte Como escalar automaticamente o serviço do Amazon ECS.
Balanceamento de carga do serviço
Os serviços do Amazon ECS hospedados no AWS Fargate oferecem suporte a Application Load Balancers, Network Load Balancers e Gateway Load Balancers. Use a tabela apresentada a seguir para descobrir qual tipo de balanceador de carga usar.
Tipo de balanceador de carga | Uso para estes casos |
---|---|
Application Load Balancer |
Roteamento do tráfego HTTP/HTTPS (ou da camada 7). Os application load balancers oferecem vários recursos que os tornam atrativos para uso com serviços do Amazon ECS:
|
Network Load Balancer | Roteamento do tráfego TCP ou UDP (ou da camada 4). |
Gateway Load Balancer | Roteamento do tráfego TCP ou UDP (ou da camada 4). Use dispositivos virtuais, como firewalls, sistemas de detecção e prevenção de intrusão e sistemas de inspeção profunda de pacotes. |
Para obter mais informações, consulte Uso do balanceamento de carga para distribuir o tráfego de serviço do Amazon ECS.
Serviços de interconexão
Se você precisar de uma aplicação para se conectar a outras aplicações executadas nos serviços do Amazon ECS, o Amazon ECS oferecerá as maneiras abaixo de fazer isso sem um balanceador de carga:
-
Service Connect: permite comunicações entre serviços com descoberta automática usando nomes curtos e portas padrão.
-
Descoberta de serviços: a descoberta de serviços usa o Route 53 para criar um namespace para seu serviço, o que permite que ele seja descoberto por meio do DNS.
-
Amazon VPC Lattice: é um serviço de rede de aplicações totalmente gerenciado que você usa para conectar, proteger e monitorar seus serviços em várias contas e VPCs. Há um custo associado a ele.
Para obter mais informações, consulte Interconexão de serviços do Amazon ECS.