Como o disjuntor de implantação do Amazon ECS realiza a detecção de falhas
O disjuntor de implantação é o mecanismo de atualização contínua que determina se as tarefas atingem um estado estacionário. O disjuntor de implantação tem uma opção que reverterá automaticamente uma implantação com falha para a implantação que estiver no estado COMPLETED
.
Quando uma implantação de serviço muda de estado, o Amazon ECS envia um evento de alteração de estado de implantação de serviço para o EventBridge. Isso fornece uma maneira programática de monitorar o status das implantações de serviço. Para ter mais informações, consulte Eventos de alteração no estado da implantação do serviço do Amazon ECS. Recomendamos que você crie e monitore uma regra do EventBridge com um eventName
de SERVICE_DEPLOYMENT_FAILED
para que você possa realizar uma ação manual para iniciar sua implantação. Para obter mais informações, consulte Criar uma regra para o EventBridge no Guia do usuário do Amazon EventBridge.
Quando o disjuntor de implantação determina que uma implantação falhou, ele procura a implantação mais recente que estiver em um estado COMPLETED
. Essa será a implantação que ele usará como implantação de reversão. Quando a reversão começa, a implantação muda de COMPLETED
para IN_PROGRESS
. Isso significa que a implantação não está qualificada para outra reversão até atingir o estado COMPLETED
. Quando o disjuntor de implantação não encontra uma implantação que esteja em um estado COMPLETED
, o disjuntor não inicia novas tarefas e a implantação é paralisada.
Ao criar um serviço, o programador acompanha as tarefas que falharam na execução em dois estágios.
-
Estágio 1: o programador monitora as tarefas para ver se elas mudam para o estado RUNNING.
-
Sucesso: a implantação tem uma chance de mudar para o estado COMPLETED porque há mais de uma tarefa que passou para o estado RUNNING. O critério de falha é ignorado e o disjuntor passa para o estágio 2.
-
Falha: há tarefas consecutivas que não mudaram para o estado RUNNING e a implantação pode passar para o estado FAILED.
-
-
Estágio 2: a implantação entra nesse estágio quando há pelo menos uma tarefa no estado RUNNING. O disjuntor analisa as verificações de integridade das tarefas na implantação atual que está sendo avaliada. As verificações de integridade validadas são Elastic Load Balancing, verificações de integridade de serviços do AWS Cloud Map e verificações de integridade de contêineres.
-
Sucesso: há pelo menos uma tarefa em execução com verificações de integridade concluídas.
-
Falha: as tarefas que foram substituídas devido a falhas na verificação de integridade atingiram o limite de falhas.
-
Considere o seguinte quando usar o método do disjuntor de implantação em um serviço. O EventBridge gera a regra.
-
A resposta
DescribeServices
fornece um insight sobre o estado de uma implantação, orolloutState
e orolloutStateReason
. Quando uma nova implantação é iniciada, a implantação começa no estadoIN_PROGRESS
. Quando o serviço atinge um estado estacionário, o estado da implantação passa a serCOMPLETED
. Se o serviço não conseguir alcançar um estado estacionário e o disjuntor estiver ativado, a implantação passará para o estadoFAILED
. Uma implantação em um estadoFAILED
não iniciará qualquer nova tarefa. -
Além dos eventos de alteração de estado de implantação do serviço que o Amazon ECS envia para implantações que foram iniciadas e concluídas, o Amazon ECS também envia um evento quando uma implantação com disjuntor ativado apresenta falha. Esses eventos fornecem detalhes sobre o motivo da falha de uma implantação ou se uma implantação foi iniciada devido a uma reversão. Para ter mais informações, consulte Eventos de alteração no estado da implantação do serviço do Amazon ECS.
-
Se uma nova implantação for iniciada porque uma implantação anterior apresentou falha e a reversão ocorreu, o campo
reason
do evento de alteração de estado de implantação do serviço indicará que a implantação foi iniciada devido a uma reversão. -
O disjuntor de implantação só é compatível com serviços do Amazon ECS que usam o controlador de implantação de atualização contínua (
ECS
). -
É necessário usar o console do Amazon ECS ou a AWS CLI quando utilizar o disjuntor de implantação com a opção CloudWatch. Para obter mais informações, consulte Criar um serviço usando parâmetros definidos e create-service na Referência da AWS Command Line Interface.
Os seguinte exemplo de create-service
da AWS CLI mostra como criar um serviço do Linux quando o disjuntor de implantação é usado com reversão.
aws ecs create-service \ --service-name
MyService
\ --deployment-controller type=ECS
\ --desired-count3
\ --deployment-configuration "deploymentCircuitBreaker={enable=true
,rollback=true
}" \ --task-definitionsample-fargate:1
\ --launch-typeFARGATE
\ --platform-familyLINUX
\ --platform-version1.4.0
\ --network-configuration "awsvpcConfiguration={subnets=[subnet-12344321
],securityGroups=[sg-12344321
],assignPublicIp=ENABLED
}"
Exemplo:
A implantação 1 está em um estado COMPLETED
.
A implantação 2 não pode ser iniciada, então o disjuntor reverte para a implantação 1. A implantação 1 faz a transição para o estado IN_PROGRESS
.
A implantação 3 é iniciada e não há nenhuma implantação no estado COMPLETED
, portanto, a implantação 3 não pode reverter ou iniciar tarefas.
Limite de falha
O disjuntor de implantação calcula o valor limite e, em seguida, usa o valor para determinar quando mover a implantação para um estado FAILED
.
O disjuntor de implantação tem um limite mínimo de 3 e um limite máximo de 200, e usa os valores na fórmula a seguir para determinar a falha de implantação.
Minimum threshold <= 0.5 * desired task count
=> maximum threshold
Quando o resultado do cálculo for maior que o mínimo de 3, mas menor que o máximo de 200, o limite de falha é definido como o limite calculado (arredondado para cima).
nota
Você não pode alterar nenhum dos valores de limite.
Há dois estágios para a verificação do status da implantação.
-
O disjuntor de implantação monitora as tarefas que fazem parte da implantação e verifica se há tarefas que estão no estado
RUNNING
. O programador ignora os critérios de falha quando uma tarefa na implantação atual está no estadoRUNNING
e prossegue para o próximo estágio. Quando as tarefas não conseguem alcançar no estadoRUNNING
, o disjuntor de implantação aumenta a contagem de falhas em um. Quando a contagem de falhas é igual ao limite, a implantação é marcada comoFAILED
. -
Esse estágio inicia quando há uma ou mais tarefas no estado
RUNNING
. O disjuntor de implantação executa verificações de integridade nos seguintes recursos para as tarefas na implantação atual:-
Load balancers Elastic Load Balancing
-
Serviço da AWS Cloud Map
-
Verificações de integridade do contêiner do Amazon ECS
Quando uma verificação de integridade falha para a tarefa, o disjuntor de implantação aumenta a contagem de falhas em um. Quando a contagem de falhas é igual ao limite, a implantação é marcada como
FAILED
. -
A tabela a seguir oferece alguns exemplos.
Contagem de tarefas desejada | Cálculo | Limite |
---|---|---|
1 |
|
3 (o valor calculado é menor que o mínimo) |
25 |
|
13 (o valor é arredondado para cima) |
400 |
|
200 |
800 |
|
200 (o valor calculado é maior do que o máximo) |
Por exemplo, quando o limite é 3, o disjuntor começa com a contagem de falhas definida em 0. Quando uma tarefa não atinge o estado RUNNING
, o disjuntor de implantação aumenta a contagem de falhas em um. Quando a contagem de falhas é igual a 3, a implantação é marcada como FAILED
.
Para obter exemplos adicionais sobre como usar a opção de reversão, consulte Announcing Amazon ECS deployment circuit breaker