Serviços do Amazon ECS - Amazon ECS

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Serviços do Amazon ECS

Você pode 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.

Conceitos do programador de serviços

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. Você pode 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 agendador 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 maximumPercent desiredCount de definição do serviço. Se uma tarefa for marcada como não íntegra, o agendador de serviços iniciará primeiro uma tarefa de substituição. Se a tarefa de substituição tiver um status de integridade deHEALTHY, o agendador de serviços interromperá a tarefa não íntegra. Se a tarefa de substituição tiver um status de integridade deUNHEALTHY, o agendador 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. desiredCount Se o maximumPercent parâmetro limitar o agendador de iniciar uma tarefa de substituição primeiro, o agendador 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 saudáveis sejam substituídas por tarefas saudáveis. 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 adesiredCount, as tarefas íntegras serão interrompidas aleatoriamente até que a contagem total de tarefas seja igualdesiredCount. Para obter mais informações sobre maximumPercent edesiredCount, consulte Parâmetros de definição de serviço.

nota

Esse comportamento não se aplica às tarefas executadas e mantidas por serviços que usam o tipo de implantação de atualização contínua. Durante uma atualização contínua, o agendador de serviços primeiro interrompe as tarefas não íntegras e, em seguida, inicia as tarefas de substituiçã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 ter mais informações, consulte Lógica de controle de utilização de serviço e Mensagens de evento de serviço.

Há duas estratégias de programador de serviços disponíveis:

  • REPLICA: a estratégia de programação de réplica coloca e mantém o número desejado de tarefas no seu cluster. Por padrão, o programador de serviço distribui tarefas por zonas de disponibilidade. Você pode usar estratégias e limitações de posicionamento de tarefas para personalizar decisões de posicionamento de tarefa. Para obter mais informações, consulte Réplica.

  • DAEMON: a estratégia de programação do daemon implanta exatamente uma tarefa em cada instância de contêiner ativa que atenda a todas as restrições de posicionamento de tarefas que você especifica no seu cluster. Ao usar essa estratégia, não há necessidade de especificar um número desejado de tarefas, uma estratégia de posicionamento de tarefas ou usar políticas de Auto Scaling do serviço. Para obter mais informações, consulte Daemon no Guia do desenvolvedor do Amazon Elastic Container Service.

    nota

    As tarefas do Fargate não são compatíveis com a estratégia de programação do DAEMON.

Réplica

A estratégia de programação de réplica posiciona e mantém o número desejado de tarefas no seu cluster.

Para um serviço que executa tarefas no Fargate, quando o agendador de serviços inicia novas tarefas ou interrompe a execução de tarefas, o agendador de serviços usa a melhor tentativa de manter o equilíbrio entre as zonas de disponibilidade. Você não precisa especificar estratégias ou restrições de posicionamento de tarefas.

Conceitos de serviços adicionais

  • Você também pode executar o serviço por trás de um load balancer. Para obter mais informações, consulte Balanceamento de carga do serviço.

  • É possível especificar uma configuração de implantação para seu serviço. Uma implantação é iniciada com a atualização da definição da tarefa de um serviço. Durante uma implantação, o programador de serviço usa os parâmetros de porcentagem mínima de integridade e de porcentagem máxima para determinar a estratégia de implantação. Para obter mais informações, consulte Parâmetros de definição de serviço.

  • O serviço pode ser opcionalmente configurado para usar a descoberta de serviço do Amazon ECS. A descoberta de serviços usa as APIs de nomeação automática do AWS Cloud Map para gerenciar entradas de DNS para as tarefas do seu serviço. Isso as torna detectáveis dentro da sua VPC. Para obter mais informações, consulte Descoberta de serviço.

  • Ao excluir um serviço, se ainda houver tarefas em execução que exijam limpeza, o status do serviço mudará de ACTIVE para DRAINING, e não será possível visualizar o serviço no console ou na operação da API ListServices. Depois que todas as tarefas fizerem a transição para um status STOPPING ou STOPPED, o serviço mudará do status DRAINING para INACTIVE. Você pode visualizar os serviços no status DRAINING ou INACTIVE usando a operação da API DescribeServices. Porém, no futuro, os serviços INACTIVE poderão ser limpos e removidos da manutenção de registros do Amazon ECS, e as chamadas DescribeServices nesses serviços retornarão um erro ServiceNotFoundException.

  • O tempo de incorporação é um período depois do aumento da escala horizontalmente de uma nova versão do serviço e da redução da escala horizontalmente da versão antiga do serviço, durante o qual o Amazon ECS continua a monitorar o alarme associado à implantação. O Amazon ECS calcula esse período com base na configuração do alarme associada à implantação.

    O tempo de cozimento se aplica somente quando você usa CloudWatch alarmes para detectar falhas de implantação. Para ter mais informações, consulte Métodos de detecção de falhas.