Atualizações de configuração de ambiente contínuas do Elastic Beanstalk - AWS Elastic Beanstalk

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Atualizações de configuração de ambiente contínuas do Elastic Beanstalk

Quando uma alteração de configuração exige a substituição de instâncias, o Elastic Beanstalk pode executar a atualização em lotes para evitar tempo de inatividade enquanto a modificação é propagada. Durante uma atualização contínua, a capacidade só é reduzida pelo tamanho de um único lote, o qual você pode configurar. O Elastic Beanstalk coloca um lote de instâncias fora de serviço e as encerra, para, depois, iniciar um lote com a nova configuração. Depois que o novo lote começar a atender a solicitações, o Elastic Beanstalk passa para o próximo lote.

Os lotes de atualização contínua da configuração podem ser processados periodicamente (com base no tempo), com um atraso entre cada lote ou de acordo com a integridade. Para atualizações contínuas baseadas no tempo, você pode configurar a quantidade de tempo que o Elastic Beanstalk aguarda depois de concluir a inicialização de um lote de instâncias antes de passar para o próximo. Essa pausa permite que seu aplicativo faça o bootstrap e comece a atender às solicitações.

De acordo com as atualizações contínuas baseadas na integridade, o Elastic Beanstalk aguarda até que as instâncias em um lote passem por verificações de integridade antes de mudar para o próximo lote. A integridade de uma instância é determinada pelo sistema de relatórios de integridade, o qual pode ser básico ou aprimorado. Com a integridade básica, um lote é considerado íntegro assim que todas as suas instâncias passem nas verificações de integridade do Elastic Load Balancing (ELB).

Com os relatórios de integridade aprimorada, todas as instâncias em um lote devem passar por várias verificações de integridade consecutivas antes que o Elastic Beanstalk vá para o próximo lote. Além das verificações de integridade do ELB, que verificam somente suas instâncias, a integridade aprimorada monitora os logs do aplicativo e o estado de outros recursos do ambiente. Em um ambiente de servidor web com integridade aprimorada, todas as instâncias devem passar por 12 verificações de integridade durante o período de dois minutos (18 verificações em três minutos para ambientes de operador). Se qualquer instância falhar em uma verificação de integridade, a contagem recomeça.

Se um lote não se tornar íntegro dentro do tempo limite da atualização contínua (o padrão é 30 minutos), a atualização será cancelada. O timeout de atualização contínua é uma opção de configuração que está disponível no namespace aws:autoscaling:updatepolicy:rollingupdate. Caso a aplicação não passe nas verificações de integridade com o status Ok, mas esteja estável em outro nível, você pode definir a opção HealthCheckSuccessThreshold no namespace aws:elasticbeanstalk:healthreporting:system para alterar o nível no qual o Elastic Beanstalk considera uma instância como íntegra.

Se o processo de atualização contínua falhar, o Elastic Beanstalk iniciará outra atualização contínua para retornar à configuração anterior. Uma atualização contínua pode falhar devido a verificações de integridade com falha ou caso a execução de novas instâncias fizer com que você exceda as cotas na sua conta. Se você atingir uma cota para o número de instâncias do Amazon EC2, por exemplo, a atualização contínua poderá falhar quando tentar provisionar um lote de novas instâncias. Nesse caso, a reversão também falhará.

Uma de reversão com falha encerra o processo de atualização e deixa o ambiente em um estado não íntegro. Os lotes não processados ainda estão executando instâncias com a configuração antiga, enquanto todos os lotes concluídos com êxito têm a nova configuração. Para corrigir um ambiente após uma reversão com falha, primeiro resolva o problema subjacente que causou a falha da atualização e, depois, inicie outra atualização do ambiente.

Um método alternativo é implantar a nova versão do aplicativo em um ambiente diferente e, depois, executar uma troca do CNAME para redirecionar o tráfego sem qualquer inatividade. Consulte Implantações azuis/verdes com o Elastic Beanstalk para obter mais informações.

Atualizações contínuas versus implantações contínuas

As atualizações contínuas ocorrem quando você altera configurações que exigem novas instâncias do Amazon EC2 para serem provisionadas no ambiente. Isso inclui alterações na configuração do grupo de Auto Scaling como as configurações do tipo de instância e do par de chaves, bem como alterações nas configurações da VPC. Em uma atualização contínua, cada lote de instâncias é encerrado antes que um novo lote seja provisionado para substituí-lo.

As implantações contínuas ocorrem sempre que você implanta a aplicação e normalmente podem ser executadas sem a substituição de instâncias no ambiente. O Elastic Beanstalk coloca cada lote fora de serviço, implanta a nova versão da aplicação e, depois, coloca-o novamente em serviço.

A exceção é se você alterar as configurações que exigem a substituição da instância enquanto implanta uma nova versão do aplicativo. Por exemplo, se você alterar as configurações de nome da chave em um arquivo de configuração em seu pacote de origem e o implantar em seu ambiente, vai acionar uma atualização contínua. Em vez de implantar a nova versão do aplicativo para cada lote de instâncias existentes, um novo lote de instâncias é provisionado com a nova configuração. Nesse caso, uma implantação separada não ocorre, pois as novas instâncias são ativadas com a nova versão do aplicativo.

Sempre que novas instâncias são provisionadas como parte de uma atualização de ambiente, há uma fase de implantação em que o código-fonte do aplicativo é implantado nas novas instâncias, e qualquer definição da configuração que modifica o sistema operacional ou o software em instâncias é aplicada. As Configurações de verificação de integridade da implantação (Ignore health check (Ignorar verificação de integridade), Healthy threshold (Limite da integridade) Command timeout (Tempo limite do comando)) também se aplicam a atualizações contínuas baseadas na integridade e a atualizações imutáveis durante a fase de implantação.

Configurar atualizações contínuas

É possível habilitar e configurar atualizações contínuas no console do Elastic Beanstalk.

Para habilitar atualizações contínuas
  1. Abra o console do Elastic Beanstalk e, na lista Regions (Regiões), selecione a sua Região da AWS.

  2. No painel de navegação, selecione Ambientes e selecione o nome do ambiente na lista.

    nota

    Se você tiver muitos ambientes, use a barra de pesquisa para filtrar a lista de ambientes.

  3. No painel de navegação, escolha Configuration (Configuração).

  4. Na categoria de configuração Rolling updates and deployments (Atualizações e implantações contínuas), escolha Edit (Editar).

  5. Na seção Configuration updates (Atualizações da configuração), para Rolling update type (Tipo de atualização contínua), selecione uma das opções de Rolling (Contínua).

    A seção de atualizações de configuração na página de modificação de atualizações e implantações contínuas
  6. Selecione as configurações Batch size (Tamanho do lote), Minimum capacity (Capacidade mínima), e Pause time (Tempo de pausa).

  7. Para salvar as alterações, escolha Apply (Aplicar) na parte inferior da página.

A seção Configuration updates (Atualizações da configuração) da página Rolling updates and deployments (Atualizações contínuas e implantações) tem as seguintes opções para atualizações contínuas:

  • Rolling update type (Tipo de atualização contínua): o Elastic Beanstalk aguarda a conclusão da atualização de um lote de instâncias para passar para o próximo lote e permitir que essas instâncias concluam o bootstrapping e comecem a atender ao tráfego. Escolha entre as seguintes opções:

    • Rolling based on Health (Contínua com base na integridade): aguarde até que as instâncias no lote atual se tornem íntegras antes de colocar instâncias em serviço e iniciar o próximo lote.

    • Rolling based on Time (Contínua com base no tempo): especifique um tempo de espera entre o início de novas instâncias e sua colocação em serviço para iniciar o próximo lote.

    • Immutable (Imutável): aplique a alteração de configuração a um novo grupo de instâncias executando uma atualização imutável.

  • Batch size (Tamanho do lote): o número de instâncias a serem substituídas em cada lote, entre 1 e 10000. Por padrão, esse valor é um terço do tamanho mínimo do grupo de Auto Scaling arredondado para um número inteiro.

  • Minimum capacity (Capacidade mínima): o número mínimo de instâncias para manter em execução enquanto outras instâncias estão sendo atualizadas, entre 0 e 9999. O valor padrão é o tamanho mínimo do grupo de Auto Scaling ou um a menos do que o tamanho máximo do grupo de Auto Scaling, qualquer que seja o número menor.

  • Pause time (Tempo de pausa) (somente baseado no tempo): a quantidade de tempo de espera após um lote ser atualizado antes de passar para o próximo lote para permitir que a aplicação comece a receber tráfego. Entre zero segundo e uma hora.

O namespace aws:autoscaling:updatepolicy:rollingupdate

Você também pode usar as opções de configuração no namespace aws:autoscaling:updatepolicy:rollingupdate para configurar as atualizações contínuas.

Use a opção RollingUpdateEnabled para habilitar atualizações contínuas e RollingUpdateType para escolher o tipo de atualização. Os valores a seguir são compatíveis com RollingUpdateType:

  • Health – aguarde até que as instâncias no lote atual se tornem íntegras antes de colocá-las em serviço e iniciar o próximo lote.

  • Time – especifique um tempo de espera entre a inicialização das novas instâncias e sua colocação em serviço para iniciar o próximo lote.

  • Immutable: aplique a alteração de configuração a um novo grupo de instâncias executando uma atualização imutável.

Quando você habilitar as atualizações constantes, defina as opções MaxBatchSize e MinInstancesInService para configurar o tamanho de cada lote. Para atualizações contínuas baseadas no tempo, também é possível configurar PauseTime e Timeout, respectivamente.

Por exemplo, para iniciar até cinco instâncias por vez mantendo pelo menos duas instâncias em serviço e aguardar cinco minutos e 30 segundos entre cada lote, especifique as opções e os valores a seguir.

exemplo .ebextensions/timebased.config
option_settings: aws:autoscaling:updatepolicy:rollingupdate: RollingUpdateEnabled: true MaxBatchSize: 5 MinInstancesInService: 2 RollingUpdateType: Time PauseTime: PT5M30S

Para habilitar atualizações contínuas baseadas na integridade, com um tempo limite de 45 minutos para cada lote, especifique as opções e os valores a seguir.

exemplo .ebextensions/healthbased.config
option_settings: aws:autoscaling:updatepolicy:rollingupdate: RollingUpdateEnabled: true MaxBatchSize: 5 MinInstancesInService: 2 RollingUpdateType: Health Timeout: PT45M

Os valores Timeout e PauseTime devem ser especificados na duração ISO8601: PT#H#M#S, em que cada # é o número de horas, minutos ou segundos, respectivamente.

A CLI do EB e o console do Elastic Beanstalk aplicam os valores recomendados para as opções anteriores. Se quiser usar arquivos de configuração para definir a mesma coisa, você precisa remover essas configurações. Para mais detalhes, consulte Valores recomendados.