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 ouCMD-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ão1.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:
-
Se o status de um contêiner essencial for
UNHEALTHY
, o status da tarefa seráUNHEALTHY
. -
Se o status de um contêiner essencial for
UNKNOWN
, o status da tarefa seráUNKNOWN
. -
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.