Atualizar parâmetros de serviço do Amazon ECS
Após criar um serviço, talvez você precise atualizar os parâmetros do serviço, por exemplo, o número de tarefas.
Quando o agendador de serviços inicia novas tarefas, ele determina o posicionamento das tarefas em seu cluster com a seguinte lógica.
-
Determine quais instâncias de contêiner no seu cluster podem oferecer suporte à definição de tarefa do seu serviço. Por exemplo, elas têm os atributos necessários de CPU, memória, portas e de instância de contêiner.
-
Por padrão, o agendador de serviços tenta equilibrar as tarefas entre as zonas de disponibilidade dessa maneira, mesmo que você possa escolher uma estratégia de posicionamento diferente.
-
Classifique instâncias de contêiner válidas pelo menor número de tarefas em execução neste serviço na mesma zona de disponibilidade da instância. 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.
-
Coloque a nova tarefa de serviço em uma instância de contêiner válida em uma zona de disponibilidade ideal (com base nas etapas anteriores), favorecendo as instâncias de contêiner com o menor número de tarefas em execução neste serviço.
-
Quando o programador de serviços parar de executar tarefas, ele tentará manter o equilíbrio entre as zonas de disponibilidade do cluster usando a seguinte lógica:
-
Classifique as instâncias de contêiner pelo maior número de tarefas em execução para esse serviço na mesma zona de disponibilidade da instância. 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 o encerramento.
-
Interrompa a tarefa em uma instância de contêiner em zona de disponibilidade ideal (com base nas etapas anteriores), favorecendo instâncias de contêiner com o número maior de tarefas em execução neste serviço.
Use a lista para determinar se você pode alterar o parâmetro do serviço.
- Rebalanceamento de zona de disponibilidade
-
Indica se o rebalanceamento da zona de disponibilidade deve ou não ser usado para o serviço.
Você pode alterar esse parâmetro para implantações contínuas.
- Estratégia de provedor de capacidade
-
Os detalhes de uma estratégia de provedor de capacidade. Você pode definir um provedor de capacidade ao criar um cluster, executar uma tarefa ou atualizar um serviço.
Quando você usa o Fargate, os provedores de capacidade são
FARGATE
ouFARGATE_SPOT
.Quando você usa o Amazon EC2, os provedores de capacidade são grupos do Auto Scaling.
Você pode alterar provedores de capacidade para implantações contínuas e implantações azul/verde.
A lista a seguir apresenta as transições válidas:
-
Atualize o tipo de inicialização do Fargate para um provedor de capacidade de grupo do Auto Scaling.
-
Atualize o tipo de inicialização do Amazon EC2 para um provedor de capacidade do Fargate.
-
Atualize o provedor de capacidade do Fargate para um provedor de capacidade de grupo do Auto Scaling.
-
Atualize o provedor de capacidade do Amazon EC2 para um provedor de capacidade do Fargate.
-
Atualize o grupo do Auto Scaling ou o provedor de capacidade do Fargate de volta para um tipo de inicialização. Ao usar a CLI ou a API, você transmite uma lista vazia no parâmetro
capacityProviderStrategy
.
-
- Cluster
-
Não é possível mudar o nome de um cluster.
- Configuração de implantação
-
A configuração de implantação inclui os alarmes do CloudWatch e o disjuntor usado para detectar falhas e a configuração necessária.
O disjuntor de implantação determina se uma implantação de serviço apresentará falha se o serviço não conseguir alcançar um estado estacionário. Se você usar o disjuntor de implantação, uma implantação de serviço transitará para um estado com falha e parará de executar novas tarefas. Se você usar a opção de reversão, quando uma implantação de serviço apresentar falha, o serviço será revertido para a última implantação concluída com êxito.
Quando você atualiza um serviço que usa o disjuntor do Amazon ECS, o Amazon ECS cria uma implantação e uma revisão do serviço. Esses recursos permitem que você visualize informações detalhadas sobre o histórico de serviços. Para obter mais informações, consulte Visualize o histórico de serviços usando implantações de serviços do Amazon ECS.
O programador de serviço usa os parâmetros de porcentagem íntegros mínimos e máximos (na configuração de implantação para o serviço) para determinar a estratégia de implantação.
Se um serviço usar o tipo de implantação de atualização contínua (
ECS
), a porcentagem de integridade mínima representará um limite menor no número de tarefas em um serviço que deverão permanecer no estadoRUNNING
durante uma implantação, como uma porcentagem do número desejado de tarefas (arredondado para cima, para o número inteiro mais próximo). O parâmetro também se aplica enquanto qualquer instância de contêiner estiver no estadoDRAINING
se o serviço contiver tarefas usando o tipo de inicialização do EC2. Use esse parâmetro para implantar sem usar capacidade adicional de cluster. Por exemplo, se o serviço tiver um número desejado de quatro tarefas e uma porcentagem de integridade mínima de 50%, o programador poderá interromper duas tarefas existentes para liberar a capacidade do cluster antes de iniciar duas novas tarefas. O serviço considera as tarefas íntegras para serviços que não usam um balanceador de carga se estiverem no estadoRUNNING
. O serviço considera as tarefas íntegras para serviços que usam um balanceador de carga se estiverem com o statusRUNNING
e forem relatadas como íntegras pelo balanceador de carga. O valor padrão da porcentagem mínima de integridade é 100%.Se um serviço usar o tipo de implantação de atualização contínua (
ECS
), o parâmetro porcentagem máxima representará um limite superior no número permitido de tarefas em um serviço no estadoPENDING
,RUNNING
ouSTOPPING
durante uma implantação, como uma porcentagem do número desejado de tarefas (arredondado para baixo, para o menor número inteiro mais próximo). O parâmetro também se aplica enquanto qualquer instância de contêiner estiver no estadoDRAINING
se o serviço contiver tarefas usando o tipo de inicialização do EC2. Use esse parâmetro para definir o tamanho do lote de implantação. Por exemplo, se o serviço tiver um número desejado de quatro tarefas e um valor máximo de porcentagem de 200%, o programador poderá iniciar quatro tarefas novas antes de interromper as quatro tarefas mais antigas. Isso é fornecido desde que os recursos de cluster necessários para isso estejam disponíveis. O valor padrão da porcentagem máxima é 200%.Quando o programador de serviço substitui uma tarefa durante uma atualização, o serviço primeiro eliminará a tarefa do load balancer (se usado) e esperará as conexões se dissiparem. Em seguida, o equivalente de docker stop será enviado para os contêineres executados na tarefa. Isso resulta em um sinal
SIGTERM
e um tempo limite de 30 segundos, após o qualSIGKILL
é enviado, e os contêineres são interrompidos à força. Se o contêiner administra o sinalSIGTERM
com tranquilidade e sai dentro de 30 segundos após recebê-lo, nenhum sinalSIGKILL
é enviado. O programador de serviço inicia e interrompe tarefas conforme definidas por suas configurações de porcentagem íntegras mínimas e máximas.O programador de serviços também substitui tarefas consideradas não íntegras após uma falha na verificação de integridade do contêiner ou na verificação de integridade do grupo-alvo do balanceador de carga. Essa substituição depende dos parâmetros de definição do serviço
maximumPercent
edesiredCount
. Se uma tarefa for marcada como não íntegra, o programador de serviços iniciará primeiro uma tarefa de substituição. Então, acontece o seguinte.Se o status de integridade da tarefa substituta for
HEALTHY
, o agendador do serviço interromperá a tarefa que não está íntegraSe a tarefa de substituição tiver um status de integridade de
UNHEALTHY
, o programador interromperá a tarefa de substituição não íntegra ou a tarefa não íntegra existente para que a contagem total de tarefas seja igual adesiredCount
.
Se o parâmetro
maximumPercent
limitar o programador a iniciar uma tarefa de substituição primeiro, o programador interromperá aleatoriamente uma tarefa não íntegra, uma de cada vez, para liberar capacidade e, em seguida, iniciará uma tarefa de substituição. O processo de iniciar e parar continua até que todas as tarefas não íntegras sejam substituídas por tarefas íntegras. Depois que todas as tarefas não íntegras forem substituídas e somente as tarefas íntegras estiverem em execução, se a contagem total de tarefas exceder adesiredCount
, as tarefas íntegras serão interrompidas aleatoriamente até que a contagem total de tarefas seja igual adesiredCount
. Para obter mais informações sobremaximumPercent
edesiredCount
, consulte Parâmetros de definição de serviço. - Contagem de tarefas desejadas
-
O número de instanciações da tarefa a posicionar e manter em execução no seu serviço.
Caso queira interromper temporariamente o serviço, defina esse valor como 0. Em seguida, quando estiver tudo pronto para iniciar o serviço, atualize-o com o valor original.
Você pode alterar esse parâmetro para implantações contínuas e implantações azul/verde.
- Habilitar tags gerenciadas
-
Determina se as tags gerenciadas do Amazon ECS devem ou não ser ativadas para as tarefas no serviço.
Somente as tarefas iniciadas após a atualização refletirão a atualização. Para atualizar as tags em todas as tarefas, use a opção de implantação forçada.
Você pode alterar esse parâmetro para implantações contínuas e implantações azul/verde.
- Habilitar o ECS Exec
-
Determina se o Amazon ECS Exec será usado.
Se você não quiser substituir o valor que foi definido quando o serviço foi criado, você poderá defini-lo como null ao executar essa ação.
Você pode alterar esse parâmetro para implantações contínuas.
- Período de carência da verificação de integridade
-
O período, em segundos, durante o qual o programador de serviço do Amazon ECS ignora verificações de integridade não íntegras de Elastic Load Balancing, VPC Lattice e contêiner depois que uma tarefa é iniciada pela primeira vez. Se você não especificar um valor de período de tolerância de verificação de integridade, o valor padrão
0
será usado. Se você não usar nenhuma das verificações de integridade, entãohealthCheckGracePeriodSeconds
não será usado.Se as tarefas do serviço demorarem um pouco para iniciar e responder às verificações de integridade, você poderá especificar um período de carência de até 2.147.483.647 segundos (cerca de 69 anos) para a verificação de integridade. Durante esse tempo, o programador do Amazon ECS Service ignorará o status de verificações de integridade. Esse período de carência pode evitar que o programador do serviço marque tarefas como não íntegras e as interrompa antes de terem tempo de surgir.
Você pode alterar esse parâmetro para implantações contínuas e implantações blue/green.
- balanceador de cargas
-
Você precisa usar um perfil vinculado ao serviço ao atualizar um balanceador de carga.
Uma lista de objetos de balanceador de carga do Elastic Load Balancing. Ela contém o nome do balanceador de carga, o nome do contêiner e a porta do contêiner para acesso do balanceador de carga. O nome do contêiner como aparece em uma definição de contêiner.
O Amazon ECS não atualiza automaticamente os grupos de segurança associados aos balanceadores de carga do Elastic Load Balancing ou às instâncias de contêiner do Amazon ECS.
Quando você adiciona, atualiza ou remove uma configuração de balanceador de carga, o Amazon ECS inicia novas tarefas com a configuração atualizada do Elastic Load Balancing e então interromperá as tarefas antigas quando as novas tarefas estiverem em execução.
Para serviços que usam atualizações contínuas, você pode adicionar, atualizar ou remover grupos de destino do Elastic Load Balancing. Você pode atualizar de um único grupo de destino para vários grupos de destino e de vários grupos de destino para um único grupo de destino.
Para serviços que usam implantações azul/verde, você pode atualizar os grupos de destino do Elastic Load Balancing usando
CreateDeployment
por meio do CodeDeploy. Observe que não há suporte para vários grupos de destino para implantações azul/verde. Para obter mais informações, consulte Registrar vários grupos de destino em um serviço.Para serviços que usam o controlador de implantação externo, você pode adicionar, atualizar ou remover balanceadores de carga usando CreateTaskSet. Observe que não há suporte para vários grupos de destino para implantações externas. Para obter mais informações, consulte Registrar vários grupos de destino em um serviço.
Transmita uma lista vazia para remover os balanceadores de carga.
Você pode alterar esse parâmetro para implantações contínuas.
- Configuração de rede
-
A configuração de rede para o serviço.
Você pode alterar esse parâmetro para implantações contínuas.
- Restrições de posicionamento
-
Uma matriz de objetos de restrição de posicionamento de tarefa para atualizar o serviço a ser usado. Se nenhum valor for especificado, as restrições de posicionamento existentes para o serviço permanecerão inalteradas. Se esse valor for especificado, ele substituirá todas as restrições de posicionamento existentes definidas para o serviço. Para remover todas as restrições de posicionamento existentes, especifique uma matriz vazia.
É possível especificar no máximo 10 restrições por tarefa. Esse limite inclui restrições na definição de tarefa e aquelas especificadas em runtime.
Você pode alterar esse parâmetro para implantações contínuas e implantações azul/verde.
- Estratégia de posicionamento
-
Os objetos da estratégia de posicionamento de tarefa para atualizar o serviço a ser usado. Se nenhum valor for especificado, a estratégia de posicionamento existente para o serviço permanecerá inalterada. Se esse valor for especificado, ele substituirá todas a estratégia de posicionamento existente definida para o serviço. Para remover uma estratégia de posicionamento existente, especifique um objeto vazio.
Você pode alterar esse parâmetro para implantações contínuas e implantações azul/verde.
- Versão da plataforma
-
A versão da plataforma do Fargate na qual seu serviço funciona.
Não é possível atualizar um serviço que usa uma versão da plataforma Linux para usar uma versão da plataforma Windows e vice-versa.
Você pode alterar esse parâmetro para implantações contínuas.
- Propagar tags
-
Determina se as tags da definição de tarefa ou do serviço devem ser propagadas para a tarefa. Se nenhum valor for especificado, as tags não serão propagadas.
Somente as tarefas iniciadas após a atualização refletirão a atualização. Para atualizar as tags em todas as tarefas, defina
forceNewDeployment
comotrue
, para que o Amazon ECS inicie novas tarefas com as tags atualizadas.Você pode alterar esse parâmetro para implantações contínuas e implantações azul/verde.
- Configuração do Service Connect
-
A configuração do Amazon ECS Service Connect. Esse parâmetro determina como o serviço se conecta a outros serviços dentro da sua aplicação.
Você pode alterar esse parâmetro para implantações contínuas.
- Registros de serviço
-
Você precisa usar um perfil vinculado ao serviço ao atualizar os registros de serviço.
Os detalhes dos registros de descoberta de serviços a serem atribuídos a este serviço. Para obter mais informações, consulte Descoberta de serviços.
Quando você adiciona, atualiza ou remove a configuração dos registros de serviço, o Amazon ECS inicia novas tarefas com a configuração atualizada dos registros de serviço e então interromperá as tarefas antigas quando as novas tarefas estiverem em execução.
Transmita uma lista vazia para remover os registros de serviço.
Você pode alterar esse parâmetro para implantações contínuas.
- Definição de tarefa
-
A definição e a revisão da tarefa a serem usadas para o serviço.
Se você alterar as portas usadas por contêineres em uma definição de tarefa, talvez seja necessário atualizar os grupos de segurança da instância de contêiner para que funcionem com as portas atualizadas.
Se você atualizar a definição de tarefa para o serviço, o nome do contêiner e a porta do contêiner especificados na configuração do balanceador de carga deverão permanecer na definição da tarefa.
O comportamento de extração de imagem de contêiner é diferente dependendo do tipo de inicialização. Para obter mais informações, consulte um dos seguintes:
Você pode alterar esse parâmetro para implantações contínuas.
- Configurações de volume
-
Os detalhes do volume que foi
configuredAtLaunch
. Quando definido como true, esse parâmetro configura o anexo da tarefa do Amazon EBS durante a implantação. Você pode configurar os parâmetros size, volumeType, IOPS, throughput, snapshot e encryption em ServiceManagedEBSVolumeConfiguration. Oname
do volume precisa corresponder aoname
da definição da tarefa. Se definido como null, nenhuma nova implantação será acionada. Caso contrário, se essa configuração for diferente da existente, ela acionará uma nova implantação.Você pode alterar esse parâmetro para implantações contínuas.
- Configuração do VPC Lattice
-
A configuração do VPC Lattice para seu serviço. Isso define como o serviço se integra ao VPC Lattice para comunicação entre serviços.
Você pode alterar esse parâmetro para implantações contínuas.
Considerações sobre o AWS CDK
O AWS CDK não rastreia os estados dos recursos. Ele não sabe se você está criando ou atualizando um serviço. Os clientes devem usar a escotilha de fuga para acessar diretamente o constructo Service
L1.
Para obter informações sobre escotilhas de fuga, consulte Personalizar constructos da AWS Construct Library no Guia do desenvolvedor AWS Cloud Development Kit (AWS CDK) v2.
Para migrar o serviço existente para o constructo ecs.Service
, faça o seguinte:
-
Use a escotilha de fuga para acessar o constructo
Service
L1. -
Defina manualmente as seguintes propriedades no constructo
Service
L1.Se o seu serviço usar a capacidade do Amazon EC2:
-
daemon?
-
placementConstraints?
-
placementStrategies?
-
Se você usar o modo de rede
awsvpc
, precisará definir os constructosvpcSubnets?
esecurityGroups?
.
Se o seu serviço usar o Fargate:
-
FargatePlatformVersion
-
Os constructos
vpcSubnets?
esecurityGroups?
.
-
-
Configure o
launchType
da seguinte maneira:const cfnEcsService = service.node.findChild('Service') as ecs.CfnService; cfnEcsService.launchType = "FARGATE";
Para migrar de um tipo de execução para um provedor de capacidade, faça o seguinte:
-
Use a escotilha de fuga para acessar o constructo
Service
L1. -
Adicione o constructo
capacityProviderStrategies?
. -
Implante o serviço.