Como determinar a integridade das tarefas do Amazon ECS usando verificações de integridade de contêineres - Amazon Elastic Container Service

Como determinar a integridade das tarefas do Amazon ECS usando verificações de integridade de contêineres

Ao criar uma definição de tarefa, você pode configurar uma verificação de integridade para os contêineres. As verificações de integridade são comandos executados localmente em um contêiner e validam a integridade e a disponibilidade da aplicação.

O agente de contêiner do Amazon ECS apenas monitora e comunica as verificações de integridade especificadas na definição da tarefa. O Amazon ECS não monitora as verificações de integridade do Docker incorporadas em uma imagem do contêiner, mas não especificadas na definição do contêiner. Os parâmetros de verificação de integridade especificados em uma definição de contêiner substituem as verificações de integridade do Docker existentes na imagem do contêiner.

Quando uma verificação de integridade é definida em uma definição de tarefa, o contêiner executa o processo de verificação de integridade dentro do contêiner e avalia o código de saída para determinar a integridade da aplicação.

A verificação de integridade consiste nos seguintes parâmetros:

  • Comando: o comando executado pelo contêiner para determinar a integridade. A matriz de strings pode começar com CMD para executar os argumentos de comando diretamente ou CMD-SHELL para executar o comando com o shell padrão do contêiner.

  • Intervalo: o período (em segundos) entre cada verificação de integridade.

  • Tempo limite: o período (em segundos) de espera para que uma verificação de integridade seja bem-sucedida antes de ser considerada uma falha.

  • Repetições: o número de novas tentativas de uma verificação de integridade com falha até o contêiner ser considerado não íntegro.

  • Período de início: o período de carência opcional para fornecer tempo aos contêineres para inicializar antes que as verificações de integridade com falha sejam contabilizadas no número máximo de novas tentativas.

Para obter informações sobre como especificar uma verificação de integridade em uma definição de tarefa, consulte Verificação de integridade.

Os seguintes itens descrevem os possíveis valores do status de integridade de um contêiner:

  • HEALTHY: a verificação de integridade do contêiner foi aprovada.

  • UNHEALTHY: a verificação de integridade do contêiner falhou.

  • UNKNOWN: a verificação de integridade do contêiner está sendo avaliada, não há verificação de integridade do contêiner definida ou o Amazon ECS não tem o status de integridade do contêiner definido.

Os comandos de verificação de integridade são executados no contêiner. Portanto, você deve incluir os comandos na imagem do contêiner.

A verificação de integridade se conecta à aplicação por meio da interface de loopback do contêiner em localhost ou 127.0.0.1. Um código de saída 0 indica êxito, e um código de saída diferente de zero indica falha.

Considere o seguinte ao usar verificações de integridade do contêiner:

  • As verificações de integridade do contêiner exigem a versão 1.17.0 ou posterior do agente de contêiner do Amazon ECS.

  • As verificações de integridade do contêiner serão compatíveis com tarefas do Fargate se estiver usando a versão 1.1.0 da plataforma Linux ou posterior ou a versão 1.1.0 da plataforma Windows ou posterior.

Como o Amazon ECS determina a integridade da tarefa

Os contêineres essenciais e que têm o comando de verificação de integridade na definição da tarefa são os únicos considerados para determinar a integridade da tarefa.

As seguintes regras são avaliadas em ordem:

  1. Se o status de um contêiner essencial for UNHEALTHY, o status da tarefa será UNHEALTHY.

  2. Se o status de um contêiner essencial for UNKNOWN, o status da tarefa será UNKNOWN.

  3. Se o status de todos os contêineres essenciais for HEALTHY, o status da tarefa será HEALTHY.

Considere o exemplo de integridade da tarefa a seguir com dois contêineres essenciais.

Integridade do contêiner 1 Integridade do contêiner 2 Integridade da tarefa
UNHEALTHY UNKNOWN UNHEALTHY
UNHEALTHY HEALTHY UNHEALTHY
HEALTHY UNKNOWN UNKNOWN
HEALTHY HEALTHY HEALTHY

Considere o exemplo de integridade da tarefa a seguir com três contêineres.

Integridade do contêiner 1 Integridade do contêiner 2 Integridade do contêiner 3 Integridade da tarefa
UNHEALTHY UNKNOWN UNKNOWN UNHEALTHY
UNHEALTHY UNKNOWN HEALTHY UNHEALTHY
UNHEALTHY HEALTHY HEALTHY UNHEALTHY
HEALTHY UNKNOWN HEALTHY UNKNOWN
HEALTHY UNKNOWN UNKNOWN UNKNOWN
HEALTHY HEALTHY HEALTHY HEALTHY

Como as verificações de integridade são afetadas pelas desconexões de agentes

Se o agente de contêiner do Amazon ECS for desconectado do serviço do Amazon ECS, isso não fará com que o contêiner mude para um status UNHEALTHY. Isso ocorre intencionalmente para garantir que os contêineres permaneçam em execução durante reinicializações do agente ou indisponibilidades temporárias. O status da verificação de integridade é a resposta para a “ultima comunicação recebida” do agente do Amazon ECS, portanto, se o contêiner foi considerado HEALTHY antes da desconexão, esse status permanecerá até que o agente se reconecte e ocorra outra verificação de integridade. Não há suposições sobre o status das verificações de integridade do contêiner.