Controladores e estratégias de implantação de serviços do Amazon ECS
Antes de implantar seu serviço, determine as opções para implantá-lo e os recursos que o serviço utiliza.
Estratégia de programaçã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. É possível usar estratégias e limitações de posicionamento de tarefas para personalizar decisões de posicionamento de tarefa. Para obter mais informações, consulte Estratégia de agendamento de réplicas. -
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 Estratégia de agendamento de daemon.nota
As tarefas do Fargate não são compatíveis com a estratégia de programação do
DAEMON.
Estratégia de agendamento de réplicas
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 execute tarefas no Fargate, quando o programador de serviços iniciar novas tarefas ou interromper tarefas em execução, o programador de serviços tentará manter o equilíbrio entre as zonas de disponibilidade da melhor forma. Não há necessidade de especificar estratégias ou restrições de posicionamento de tarefas.
Ao criar um serviço que executa tarefas em instâncias do EC2, você pode opcionalmente especificar estratégias e restrições de posicionamento de tarefas para personalizar decisões de posicionamento de tarefas. Se nenhuma estratégia ou restrições de posicionamento de tarefas for especificada, por padrão, o programador do serviço distribuirá as tarefas entre zonas de disponibilidade. O programador de serviço usa a seguinte lógica:
-
Determina quais instâncias de contêiner no cluster podem oferecer suporte à definição de tarefa de serviço (por exemplo, atributos necessários de CPU, memória, portas e de instância de contêiner).
-
Determina quais instâncias de contêiner atendem a qualquer restrição de posicionamento definida para o serviço.
-
Quando você tiver um serviço de réplica que dependa de um serviço de daemon (por exemplo, uma tarefa de roteador de log de daemon que precise ser executada antes que as tarefas possam usar o registro em log), crie uma restrição de posicionamento de tarefas que garanta que as tarefas do serviço de daemon sejam colocadas na instância do EC2 antes das tarefas do serviço de réplica. Para obter mais informações, consulte Exemplo de restrições de posicionamento de tarefas do Amazon ECS.
-
Quando houver uma estratégia de posicionamento definida, use essa estratégia para selecionar uma instância entre os candidatos restantes.
-
Quando não houver uma estratégia de posicionamento definida, use a lógica a seguir para equilibrar as tarefas entre as zonas de disponibilidade no cluster:
-
Ordena as instâncias de contêiner válidas. Dá prioridade a instâncias que têm o menor número de tarefas em execução nesse serviço na respectiva zona de disponibilidade. Por exemplo, se a zona A tiver uma tarefa de serviço em execução e as zonas B e C tiverem nenhuma, as instâncias de contêiner válidas nas zonas B ou C serão consideradas ideais para a colocação.
-
Coloca a nova tarefa de serviço em uma instância de contêiner válida de uma zona de disponibilidade ideal de acordo com as etapas anteriores. Favorece instâncias de contêiner com o menor número de tarefas em execução para esse serviço.
-
Recomendamos usar o recurso de rebalanceamento de serviços ao usar a estratégia REPLICA, pois isso ajuda a garantir a alta disponibilidade do seu serviço.
Estratégia de agendamento de daemon
A estratégia de agendamento do daemon implanta exatamente uma tarefa em cada instância de contêiner ativa que atende a todas as restrições de posicionamento de tarefas especificado no seu cluster. O agendador de serviço avalia as restrições de atribuição das tarefas em execução e interrompe as que não atendem às restrições. Ao usar essa estratégia, não há necessidade de especificar um número desejado de tarefas, uma estratégia de posicionamento de tarefas nem de usar políticas do Amazon EC2 Auto Scaling para o serviço.
O Amazon ECS reserva recursos de computação de instância de contêiner, incluindo CPU, memória e interfaces de rede para as tarefas do daemon. Quando você inicia um serviço do daemon em um cluster com outros serviços de réplica, o Amazon ECS prioriza a tarefa do daemon. Isso significa que a tarefa do daemon é a primeira a ser iniciada nas instâncias e a última a ser interrompida após a interrupção de todas as tarefas de réplica. Essa estratégia garante que os recursos não sejam usados por tarefas de réplica pendentes e estejam disponíveis para as tarefas do daemon.
O programador de serviço do daemon não posiciona quaisquer tarefas em instâncias que possuem status DRAINING. Se uma instância de contêiner fizer a transição para o status DRAINING, as tarefas de daemon nela contidas serão interrompidas. O programador de serviço também monitora quando novas instâncias de contêiner são adicionadas ao seu cluster e adiciona as tarefas de daemon a elas.
Ao especificar uma configuração de implantação, o valor do parâmetro maximumPercent deverá ser 100 (especificado como uma porcentagem), que é o valor padrão usado se nenhum valor for definido. O valor padrão do parâmetro minimumHealthyPercent é 0 (especificado como porcentagem).
Você precisará reiniciar o serviço quando alterar as restrições de posicionamento do serviço do daemon. O Amazon ECS atualiza dinamicamente os recursos reservados em instâncias qualificadas para a tarefa do daemon. Para instâncias existentes, o programador tenta posicionar a tarefa na instância.
Uma nova implantação será iniciada quando houver uma alteração no tamanho da tarefa ou na reserva de recursos do contêiner na definição de tarefa. Uma nova implantação também começa ao atualizar um serviço ou definir uma revisão diferente da definição da tarefa. O Amazon ECS pega as reservas de CPU e memória atualizadas para o daemon e, em seguida, bloqueia esta capacidade para a tarefa do daemon.
Se não houver recursos suficientes para qualquer um dos casos acima, ocorrerá o seguinte:
-
O posicionamento da tarefa apresentará falha.
-
Será gerado um evento do CloudWatch.
-
O Amazon ECS continuará tentando programar a tarefa na instância, aguardando a disponibilização dos recursos.
-
O Amazon ECS liberará todas as instâncias reservadas que não atendam mais aos critérios de restrição de posicionamento e interromperá as tarefas correspondentes do daemon.
A estratégia de programação do daemon pode ser usada nos seguintes casos:
-
Execução de containers de aplicações
-
Execução de contêineres de suporte para tarefas de registro, monitoramento e rastreamento
As tarefas que usam o Fargate ou os tipos de controlador de implantação CODE_DEPLOY ou EXTERNAL não são compatíveis com a estratégia de programação do daemon.
Quando o programador de serviços parar de executar tarefas, ele tentará manter o equilíbrio entre as zonas de disponibilidade do cluster. O programador usa a seguinte lógica:
-
Se houver uma estratégia de posicionamento definida, use essa estratégia para selecionar quais tarefas devem ser encerradas. Por exemplo, se um serviço tiver uma estratégia de distribuição de zona de disponibilidade definida, será selecionada uma tarefa que deixa as tarefas restantes com a melhor distribuição.
-
Se não houver nenhuma estratégia de posicionamento definida, uso a lógica a seguir para manter o equilíbrio em seu cluster entre as zonas de disponibilidade:
-
Ordene as instâncias de contêiner válidas. Dê prioridade a instâncias que têm o maior número de tarefas em execução nesse serviço na respectiva zona de disponibilidade. Por exemplo, se a zona A tiver uma tarefa de serviço em execução e as zonas B e C tiverem duas, as instâncias de contêiner nas zonas B ou C serão consideradas ideais para encerramento.
-
Interrompa a tarefa em uma instância de contêiner de uma zona de disponibilidade ideal de acordo com as etapas anteriores. Favoreça instâncias de contêiner com o maior número de tarefas em execução para esse serviço.
-
Controladores de implantação
O controlador de implantação é o mecanismo que determina como as tarefas são implantadas para o seu serviço. As opções válidas são:
-
ECS
Ao criar um serviço que usa o controlador de implantação do
ECS, você pode escolher entre as seguintes estratégias de implantação:ROLLING: quando você cria um serviço que usa a estratégia de implantação com atualização contínua (ROLLING), o agendador de serviços do Amazon ECS substitui as tarefas em execução no momento 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 do serviço.Implantações de atualizações contínuas são mais adequadas para os seguintes cenários:
-
Atualizações graduais do serviço: você precisa atualizar seu serviço de forma incremental sem colocar todo o serviço offline de uma só vez.
-
Requisitos de recursos limitados: você deseja evitar os custos adicionais de recursos da execução simultânea de dois ambientes completos (conforme exigido pelas implantações azul/verde).
-
Tempo de implantação aceitável: sua aplicação pode tolerar um processo de implantação mais longo, pois as atualizações contínuas substituem as tarefas uma a uma.
-
Não há necessidade de reversão instantânea: seu serviço pode tolerar um processo de reversão que leva minutos em vez de segundos.
-
Processo de implantação simples: você prefere uma abordagem de implantação direta sem a complexidade de gerenciar vários ambientes, grupos de destino e receptores.
-
Sem necessidade de balanceador de carga: seu serviço não usa nem exige um balanceador de carga, o Application Load Balancer, o Network Load Balancer ou o Service Connect (que são necessários para implantações azul/verde).
-
Aplicações com estado: sua aplicação mantém um estado que dificulta a execução de dois ambientes paralelos.
-
Sensibilidade ao custo: você deseja minimizar os custos de implantação ao não executar ambientes duplicados durante a implantação.
As atualizações contínuas são a estratégia de implantação padrão para serviços e fornecem um equilíbrio entre a segurança de implantação e a eficiência de recursos para muitos cenários comuns de aplicações.
-
BLUE_GREEN: uma estratégia de implantação azul/verde (BLUE_GREEN) é uma metodologia de lançamento que reduz o tempo de inatividade e o risco ao executar dois ambientes de produção idênticos chamados azul e verde. Com as implantações azul/verde do Amazon ECS, você pode validar novas revisões de serviços antes de direcionar o tráfego de produção para elas. Essa abordagem fornece uma maneira mais segura de implantar alterações com a capacidade de revertê-las rapidamente, se necessário.As implantações azul/verde do Amazon ECS são mais adequadas para os seguintes cenários:
-
Validação de serviço: quando você precisa validar novas revisões de serviço antes de direcionar o tráfego de produção para elas
-
Tempo de inatividade zero: quando seu serviço exige implantações com tempo de inatividade zero
-
Reversão instantânea: quando você precisa da capacidade de reverter rapidamente se forem detectados problemas
-
Requisito de balanceador de carga: quando seu serviço usa o Application Load Balancer, o Network Load Balancer ou o Service Connect
-
LINEAR: uma estratégia de implantação linear (LINEAR) transfere gradualmente o tráfego do ambiente de produção atual para um novo ambiente em incrementos percentuais iguais durante um período especificado. Com as implantações lineares do Amazon ECS, você pode controlar o ritmo da mudança de tráfego e validar novas revisões de serviços com quantidades crescentes de tráfego de produção.As implantações lineares do Amazon ECS são mais adequadas nos seguintes cenários:
-
Validação gradual: quando você deseja validar gradualmente sua nova versão do serviço com o aumento do tráfego
-
Monitoramento de performance: quando você precisa de tempo para monitorar métricas e performance durante a implantação
-
Minimização do risco: quando você deseja minimizar o risco expondo a nova versão ao tráfego de produção de forma incremental
-
Requisito de balanceador de carga: quando seu serviço usa o Application Load Balancer, o Network Load Balancer ou o Service Connect
-
CANARY: uma estratégia de implantação canário (CANARY) transfere primeiro uma pequena porcentagem do tráfego para a nova revisão do serviço e, em seguida, transfere o tráfego restante de uma só vez após um período de tempo especificado. Isso permite que você teste a nova versão com um subconjunto de usuários antes da implantação completa.As implantações canário do Amazon ECS são mais adequadas nos seguintes cenários:
-
Teste de recursos: quando você quiser testar novos recursos com um pequeno subconjunto de usuários antes do lançamento completo
-
Validação de produção: quando você precisa validar a performance e a funcionalidade com tráfego de produção real
-
Controle do raio de explosão: quando você quiser minimizar o raio de explosão se forem descobertos problemas na nova versão
-
Requisito de balanceador de carga: quando seu serviço usa o Application Load Balancer, o Network Load Balancer ou o Service Connect
-
-
Externo
Use um controlador de implantação de terceiros.
-
Implantação azul/verde (fornecido pelo AWS CodeDeploy)
O CodeDeploy instala uma versão atualizada da aplicação como um novo conjunto de tarefas de substituição e redireciona o tráfego de produção do conjunto de tarefas original para o conjunto de tarefas de substituição. O conjunto de tarefas original é encerrado após uma implantação bem-sucedida. Use este controlador de implantação para verificar uma nova implantação de um serviço antes de enviar tráfego de produção para ele.
Terminologia de implantação
Os seguintes termos são utilizados em toda a documentação de implantação do Amazon ECS:
- Implantação azul/verde
-
Uma estratégia de implantação que cria um novo ambiente (verde) junto com o ambiente existente (azul) e, em seguida, muda o tráfego de azul para verde após a validação.
- Implantação canário
-
Uma estratégia de implantação que direciona uma pequena porcentagem do tráfego para uma nova versão, mantendo a maioria na versão estável para validação.
- Implantação linear
-
Uma estratégia de implantação que transfere gradualmente o tráfego da versão antiga para a nova versão em incrementos iguais ao longo do tempo.
- Implantação incremental
-
Uma estratégia de implantação que substitui instâncias da versão antiga por instâncias da nova versão, uma por vez.
- Conjunto de tarefas
-
Uma coleção de tarefas que executam a mesma definição de tarefa em um serviço durante uma implantação.
- Grupo de destino
-
Um agrupamento lógico de destinos que recebem tráfego de um balanceador de carga durante as implantações.
- Controlador de implantação
-
O método usado para implantar novas versões do seu serviço, como Amazon ECS, CodeDeploy ou controladores externos.
- Reversão
-
O processo de reverter para uma versão anterior da sua aplicação quando problemas são detectados durante a implantação.