Atualização contínua - Serviço Amazon Elastic Container

Atualização contínua

Quando o tipo de implantação de atualização contínua (ECS) é usado para o serviço e uma nova implantação de serviço é iniciada, o programador de serviço do Amazon ECS substitui as tarefas atualmente em execução por novas tarefas. O número de tarefas que o Amazon ECS adiciona ou remove do serviço durante uma atualização contínua é controlado pela configuração de implantação. A configuração de implantação consiste nos valores minimumHealthyPercent e maximumPercent, que são definidos quando o serviço é criado, mas também podem ser atualizados em um serviço existente.

O minimumHealthyPercent representa o limite inferior do número de tarefas que devem estar sendo executadas para um serviço durante uma implantação ou quando uma instância de contêiner está sendo drenada, como uma porcentagem do número desejado de tarefas para o serviço. Esse valor é arredondado para cima. Por exemplo, se a porcentagem mínima de integridade é 50 e a contagem de tarefas desejadas é quatro, o programador pode interromper duas tarefas existentes antes de iniciar duas novas tarefas. Da mesma forma, se a porcentagem mínima de integridade é 75% e a contagem de tarefas desejada é dois, o programador não pode parar quaisquer tarefas porque o valor resultante também é dois.

O maximumPercent representa o limite superior do número de tarefas que devem estar sendo executadas para um serviço durante uma implantação ou quando uma instância de contêiner está sendo drenada, como uma porcentagem do número desejado de tarefas para o serviço. Esse valor é arredondado para baixo. Por exemplo, se a porcentagem máxima de integridade for 200 e a contagem de tarefas desejadas for quatro, o programador poderá iniciar quatro novas tarefas antes de interromper quatro tarefas existentes. Da mesma forma, se a porcentagem máxima de integridade é 125 e a contagem de tarefas desejada é três, o programador não pode iniciar quaisquer tarefas porque o valor resultante também é três.

Importante

Ao definir um percentual mínimo de integridade ou um percentual máximo, você deve garantir que o programador possa interromper ou iniciar pelo menos uma tarefa quando uma implantação é acionada. Se seu serviço tiver uma implantação travada devido a uma configuração de implantação inválida, será enviada uma mensagem de evento de serviço. Para mais informações, consulte O serviço (service-name) não conseguiu interromper ou iniciar tarefas durante uma implantação devido à configuração de implantação do serviço. Atualize o valor minimumHealthyPercent ou maximumPercent e tente novamente..

Quando a implantação de um novo serviço é iniciada ou quando uma implantação é concluída, 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 mais informações, consulte Eventos de alteração do estado da implantação de serviço.

Para criar um novo serviço do Amazon ECS que use o tipo de implantação de atualização contínua, consulte Criar um serviço do Amazon ECS.

Usar o disjuntor de implantação

Por padrão, quando um serviço que usa o tipo de implantação de atualização contínua inicia uma nova implantação, o programador de serviço inicia novas tarefas até que a contagem desejada seja atingida. Opcionalmente, você pode usar a lógica do disjuntor de implantação no serviço, o que fará com que a implantação passe para um estado de falha se não conseguir atingir um estado estacionário. A lógica do disjuntor de implantação também pode acionar o Amazon ECS para reverter para a última implantação concluída após uma falha de implantação.

Os seguinte exemplo de create-service AWS CLI mostra como criar um serviço do Linux quando o disjuntor de implantação está habilitado com reversão.

aws ecs create-service \ --service-name MyService \ --deployment-controller type=ECS \ --desired-count 2 \ --deployment-configuration "deploymentCircuitBreaker={enable=true,rollback=true}" \ --task-definition sample-fargate:1 \ --launch-type FARGATE \ --platform-os LINUX \ --platform-version 1.4.0 \ --network-configuration "awsvpcConfiguration={subnets=[subnet-12344321],securityGroups=[sg-12344321],assignPublicIp=ENABLED}"

Quando for ativada a lógica do disjuntor de implantação em um serviço, deverá ser levado em consideração o seguinte.

  • O disjuntor de implantação só é compatível com serviços do Amazon ECS que usam a atualização contínua (ECS) e não usam um classic load balancer.

  • Se uma implantação de serviço tiver pelo menos uma tarefa em execução bem-sucedida, a lógica do disjuntor não será acionada independentemente de a implantação ter tarefas com falha anteriores ou futuras.

  • Existem dois novos parâmetros adicionados à resposta de uma ação da API DescribeServices, que fornecem insight sobre o estado de uma implantação, rolloutState e rolloutStateReason. Quando uma nova implantação é iniciada, a implantação começa no estado IN_PROGRESS. Quando o serviço atinge um estado estacionário, o estado da implantação passa a ser COMPLETED. Se o serviço não conseguir alcançar um estado estacionário e o disjuntor estiver habilitado, a implantação passará para o estado FAILED. Uma implantação em um estado FAILED 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 habilitado 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 mais informações, consulte Eventos de alteração do estado da implantação de serviço.

  • Se uma nova implantação for iniciada porque uma implantação anterior tiver apresentado falha e a reversão tiver sido habilitada, 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.

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 10 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 menor que o mínimo de 10, o limite de falha será definido como 10. Quando o resultado do cálculo for maior que o máximo de 200, o limite de falha será definido como 200.

nota

Você não pode alterar nenhum dos valores de limite.

Há dois estágios para a verificação do status da implantação.

  1. 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 estado RUNNING e prossegue para o próximo estágio. Quando as tarefas não conseguem alcançar no estado RUNNING, 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.

  2. Esse estágio inicia quando há uma das 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

10 <= 0.5 * 1 => 200
10 (o valor calculado é menor que o mínimo)

25

10 <= 0.5 * 25 => 200
13 (o valor é arredondado para cima)

400

10 <= 0.5 * 400 => 200
200

800

10 <= 0.5 * 800 => 200
200 (o valor calculado é maior do que o máximo)

Para obter exemplos adicionais sobre como usar a opção de reversão, consulte Anunciar o disjuntor de implantação do Amazon ECS.