Políticas e configurações de implantação - 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á.

Políticas e configurações de implantação

O AWS Elastic Beanstalk oferece várias opções de processamento das implantações, incluindo as políticas de implantação (Tudo ao mesmo tempo, Contínua, Contínua com batch adicional, Imutável e Divisão de tráfego) e opções que permitem configurar o tamanho do lote e o comportamento da verificação de integridade durante as implantações. Por padrão, o ambiente usa implantações de uma só vez. Se você criou o ambiente com a CLI do EB e se ele for um ambiente de escalável (você não especificou a opção --single), ele usa implantações contínuas.

Com implantações contínuas, o Elastic Beanstalk divide as instâncias do Amazon EC2 do ambiente em lotes e implanta a nova versão da aplicação em um lote por vez. Ele deixa o restante das instâncias no ambiente executando a versão antiga do aplicativo. Durante uma implantação contínua, algumas instâncias atenderão a solicitações com a versão antiga do aplicativo, enquanto as instâncias em lotes completos atenderão a outras solicitações com a nova versão. Para obter mais detalhes, consulte Como funcionam as implantações gradativas.

Para manter a capacidade total durante as implantações, você pode configurar o ambiente para iniciar um novo lote de instâncias antes de tirar qualquer instância de serviço. Essa opção é conhecida como uma implantação contínua com um lote adicional. Quando a implantação for concluída, o Elastic Beanstalk encerrará os lotes adicionais de instâncias.

As implantações imutáveis executam uma atualização imutável para iniciar um conjunto completo de novas instâncias executando a nova versão da aplicação em outro grupo de Auto Scaling junto com as instâncias que executam a versão antiga. As implantações imutáveis podem impedir problemas causados por implantações contínuas parcialmente concluídas. Se as novas instâncias não passarem pela verificação de integridade, o Elastic Beanstalk as encerrará, deixando as instâncias originais inalteradas.

As implantações de divisão de tráfego permitem executar testes canary como parte da implantação de aplicativos. Em uma implantação de divisão de tráfego, o Elastic Beanstalk executa um conjunto completo de novas instâncias, como durante uma implantação imutável. Depois, ele encaminha uma porcentagem especificada de tráfego de entrada do cliente para a nova versão do aplicativo por um período de avaliação especificado. Se as novas instâncias permanecerem íntegras, o Elastic Beanstalk encaminhará todo o tráfego para elas e encerrará as antigas. Se as novas instâncias não passarem nas verificações de integridade ou se você optar por interromper a implantação, o Elastic Beanstalk moverá o tráfego de volta para as instâncias antigas e encerrará as novas. Nunca há interrupção de serviço. Para obter mais detalhes, consulte Como funcionam as implantações de divisão de tráfego.

Atenção

Algumas políticas substituem todas as instâncias durante a implantação ou a atualização. Por conta disso, todo o equilíbrio de intermitência do Amazon EC2 é perdido. Isso acontece nos seguintes casos:

  • Atualizações de plataforma gerenciada com substituição de instância habilitada

  • Atualizações imutáveis

  • Implantações com atualizações imutáveis ou divisão de tráfego habilitada

Se o seu aplicativo não passar em todas as verificações de integridade, mas ainda estiver funcionando corretamente em um status de integridade inferior, você poderá permitir que as instâncias passem pelas verificações de integridade com um status inferior, como Warning, modificando a opção Limite de integridade. Se suas implantações falham por não passarem nas verificações de integridade e você precisar forçar uma atualização, independentemente do status de integridade, especifique a opção Ignorar verificação de integridade.

Ao especificar um tamanho de lote para atualizações constantes, o Elastic Beanstalk também usa esse valor para implantar reinicializações de aplicações. Use as reinicializações contínuas quando precisar reiniciar o proxy e os servidores de aplicativos em execução em suas instâncias do ambiente sem tempo de inatividade.

Configurar implantações de aplicativos

No console de gerenciamento do ambiente, ative e configure as implantações em lote de versão do aplicativo editando Atualizações e implantações na página Configuração do ambiente.

Para configurar as implantações (console)
  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 Application Deployments (Implantações de aplicativos), escolha uma Deployment policy (Política de implantação), as configurações de lote e as opções de verificação de integridade.

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

A seção Implantações de aplicativos da página Atualizações e implantações contínuas tem as seguintes opções para implantações de aplicativos:

  • Deployment policy (Política de implantação): escolha uma das seguintes opções de implantação:

    • All at once (Todos de uma vez): implante a nova versão em todas as instâncias simultaneamente. Todas as instâncias em seu ambiente ficam fora de serviço por um curto período durante a implantação.

    • Rolling (Contínua): implante a nova versão em lotes. Cada lote é retirado de serviço durante a fase de implantação, reduzindo a capacidade de seu ambiente de acordo com o número de instâncias em um lote.

    • Rolling with additional batch (Contínua com lote adicional): implante a nova versão em lotes, mas primeiro inicie um novo lote de instâncias para garantir a capacidade total durante o processo de implantação.

    • Immutable (Imutável): implante a nova versão em um novo grupo de instâncias executando uma atualização imutável.

    • Traffic splitting (Divisão de tráfego): implante a nova versão em um novo grupo de instâncias e divida temporariamente o tráfego de entrada do cliente entre a versão existente da aplicação e a nova.

Para as políticas Contínua e Contínua com lote adicional, você pode configurar:

  • Batch size (Tamanho do lote): o tamanho do conjunto de instâncias para implantar em cada lote.

    Escolha Percentage (Porcentagem) para configurar uma porcentagem do número total de instâncias do EC2 no grupo de Auto Scaling (até 100%), ou escolha Fixed (Fixo) para configurar um número fixo de instâncias (até a contagem máxima de instâncias na configuração de Auto Scaling do ambiente).

Para a política de implantação de divisão de tráfego, você pode fazer a seguinte configuração:

  • Traffic split (Divisão de tráfego): a porcentagem inicial de tráfego de entrada do cliente que o Elastic Beanstalk desloca para instâncias de ambiente executando a nova versão da aplicação que está sendo implantada.

  • Traffic splitting evaluation time (Tempo de avaliação da divisão de tráfego): o período, em minutos, que o Elastic Beanstalk aguarda após uma implantação íntegra inicial antes de prosseguir para deslocar todo o tráfego de entrada de cliente para a nova versão da aplicação que está sendo implantada.

Página de configuração Elastic Beanstalk application deployment (Implantação de aplicações do Elastic Beanstalk)

A seção Deployment preferences (Preferências de implantação) contém opções relacionadas a verificações de integridade.

  • Ignore health check (Ignorar verificação de integridade): impede que uma implantação seja revertida quando um lote não fica íntegro dentro do Command timeout (Tempo limite do comando).

  • Healthy threshold (Limite de integridade): reduz o limite no qual uma instância é considerada íntegra durante as implantações e atualizações contínuas e as atualizações imutáveis.

  • Command timeout (Tempo limite do comando): o número de segundos de espera para que uma instância se torne íntegra antes de cancelar a implantação ou, se a opção Ignore health check (Ignorar verificação de integridade) estiver definida, prosseguir para o próximo lote.

Página de configuração Elastic Beanstalk application deployments (Implantações de aplicações do Elastic Beanstalk)

Como funcionam as implantações gradativas

Ao processar um lote, o Elastic Beanstalk separa todas as instâncias no lote do balanceador de carga, implanta a nova versão da aplicação e, depois, anexa as instâncias novamente. Se você tiver habilitado a diminuição de conexão, o Elastic Beanstalk diminuirá as conexões existentes das instâncias do Amazon EC2 em cada lote antes de iniciar a implantação.

Depois de anexar novamente as instâncias em um lote ao balanceador de carga, o Elastic Load Balancing espera até que elas passem em um número mínimo de verificações de integridade do Elastic Load Balancing (o valor Healthy check count threshold (Limite de contagem de verificações de integridade)) e, depois, inicia o roteamento de tráfego para elas. Se nenhum URL de verificação de integridade estiver configurado, isso poderá acontecer muito rapidamente, porque uma instância passará pela verificação de integridade assim que puder aceitar uma conexão TCP. Se um URL de verificação de integridade estiver configurado, o load balancer não roteará o tráfego para as instâncias atualizadas até que retornem um código de status 200 OK em resposta a uma solicitação HTTP GET para o URL de verificação de integridade.

O Elastic Beanstalk aguarda até que todas as instâncias em um lote estejam íntegras antes de avançar para o próximo lote. Com os relatórios básicos de integridade, a integridade da instância depende do status da verificação de integridade do Elastic Load Balancing. Quando todas as instâncias no lote passarem em verificações de integridade suficientes para serem consideradas íntegras pelo Elastic Load Balancing, o lote estará concluído. Se os relatórios aprimorados de integridade estiverem habilitados, o Elastic Beanstalk considerará vários outros fatores, incluindo o resultado de solicitações recebidas. Com os relatórios de integridade avançados, todas as instâncias devem passar por 12 verificações de integridade consecutivas com status OK dentro de dois minutos para ambientes de servidor web e 18 verificações de integridade dentro de três minutos para ambientes de operador.

Se um lote de instâncias não se tornar íntegro dentro do tempo limite do comando, a implantação falhará. Depois de uma implantação com falha, verifique a integridade das instâncias no ambiente para obter informações sobre a causa da falha. Em seguida, execute outra implantação com uma versão corrigida ou comprovadamente boa de seu aplicativo para reverter.

Se uma implantação falhar após um ou mais lotes serem concluídos com êxito, os lotes concluídos executar a nova versão de seu aplicativo enquanto os eventuais lotes pendentes continuam a executar a versão antiga. Você pode identificar a versão em execução nas instâncias em seu ambiente na página de integridade no console. Essa página exibe o ID da implantação mais recente executada em cada instância em seu ambiente. Se você encerrar instâncias a partir da implantação com falha, o Elastic Beanstalk as substituirá por instâncias executando a versão da aplicação a partir da implantação bem-sucedida mais recente.

Como funcionam as implantações de divisão de tráfego

As implantações de divisão de tráfego permitem a execução de testes canary. Você direciona algum tráfego de entrada do cliente para a nova versão do aplicativo de modo a verificar a integridade do aplicativo antes de confirmar a nova versão e direcionar todo o tráfego para ele.

Durante uma implantação de divisão de tráfego, o Elastic Beanstalk cria um conjunto de instâncias em um grupo de Auto Scaling temporário separado. Depois, o Elastic Beanstalk instrui o balanceador de carga a direcionar uma certa porcentagem do tráfego de entrada do ambiente para as novas instâncias. Depois, durante um período configurado, o Elastic Beanstalk rastreia a integridade do novo conjunto de instâncias. Se tudo estiver bem, o Elastic Beanstalk vai deslocar o tráfego restante para as novas instâncias e anexá-las ao grupo de Auto Scaling original do ambiente, substituindo as instâncias antigas. Depois, o Elastic Beanstalk limpa, ou seja, encerra as instâncias antigas e remove o grupo temporário de Auto Scaling.

nota

A capacidade do ambiente não muda durante uma implantação de divisão de tráfego. O Elastic Beanstalk inicia o mesmo número de instâncias no grupo temporário que há no grupo original de Auto Scaling no momento em que a implantação é iniciada. Ele mantém um número constante de instâncias nos dois grupos de Auto Scaling durante a implantação. Leve esse fato em consideração ao definir o tempo de avaliação da divisão de tráfego do ambiente.

A reversão da implantação para a versão anterior do aplicativo é rápida e não afeta o serviço para o tráfego do cliente. Se as novas instâncias não passarem nas verificações de integridade ou se você optar por interromper a implantação, o Elastic Beanstalk moverá o tráfego de volta para as instâncias antigas e encerrará as novas. É possível cancelar implantações usando a página de visão geral do ambiente no console do Elastic Beanstalk e escolher Abort current operation (Anular operação atual) em Environment actions (Ações de ambiente). Também é possível chamar a API AbortEnvironmentUpdate ou o comando da AWS CLI equivalente.

As implantações de divisão de tráfego exigem um Application Load Balancer. O Elastic Beanstalk usa esse tipo de balanceador de carga por padrão quando você cria seu ambiente usando o console do Elastic Beanstalk ou a CLI do EB.

Namespaces da opção de implantação

Você pode usar as opções de configuração no namespace aws:elasticbeanstalk:command para configurar suas implantações. Se você escolher a política de divisão de tráfego, opções adicionais para essa política estarão disponíveis no namespace aws:elasticbeanstalk:trafficsplitting.

Use a opção DeploymentPolicy para definir o tipo de implantação. Os valores a seguir são aceitos:

  • AllAtOnce: desabilita implantações contínuas e sempre implanta em todas as instâncias simultaneamente.

  • Rolling: habilita as implantações contínuas padrão.

  • RollingWithAdditionalBatch: inicia um lote adicional de instâncias antes de iniciar a implantação para manter a capacidade total.

  • Immutable: executa uma atualização imutável para cada implantação.

  • TrafficSplitting: executa implantações de divisão de tráfego para fazer testes canary nas suas implantações de aplicações.

Quando você habilitar as implantações constantes, defina as opções BatchSize e BatchSizeType para configurar o tamanho de cada lote. Por exemplo, para implantar 25% de todas as instâncias em cada lote, especifique as opções e os valores a seguir.

exemplo .ebextensions/rolling-updates.config
option_settings: aws:elasticbeanstalk:command: DeploymentPolicy: Rolling BatchSizeType: Percentage BatchSize: 25

Para implantar em cinco instâncias em cada lote, independentemente do número de instâncias em execução, e para abrir mais um lote de cinco instâncias executando a nova versão antes de colocar qualquer instância fora de serviço, especifique as opções e os valores a seguir.

exemplo .ebextensions/rolling-additionalbatch.config
option_settings: aws:elasticbeanstalk:command: DeploymentPolicy: RollingWithAdditionalBatch BatchSizeType: Fixed BatchSize: 5

Para executar uma atualização imutável para cada implantação com um limite de verificação de integridade Aviso e continuar com a implantação, mesmo se as instâncias em um lote não passarem nas verificações de integridade em um limite de tempo de 15 minutos, especifique as seguintes opções e valores.

exemplo .ebextensions/immutable-ignorehealth.config
option_settings: aws:elasticbeanstalk:command: DeploymentPolicy: Immutable HealthCheckSuccessThreshold: Warning IgnoreHealthCheck: true Timeout: "900"

Para executar implantações de divisão de tráfego, encaminhando 15% do tráfego do cliente para a nova versão do aplicativo e avaliando a integridade por 10 minutos, especifique as seguintes opções e valores.

exemplo .ebextensions/traffic-splitting.config
option_settings: aws:elasticbeanstalk:command: DeploymentPolicy: TrafficSplitting aws:elasticbeanstalk:trafficsplitting: NewVersionPercent: "15" EvaluationTime: "10"

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.