CodeDeploy integridade da instância - AWS CodeDeploy

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á.

CodeDeploy integridade da instância

CodeDeploy monitora o status de integridade das instâncias em um grupo de implantação. Ele reprovará as implantações se o número de instâncias íntegras cair abaixo do número mínimo de instâncias íntegras que foram especificadas para o grupo de implantação durante uma implantação. Por exemplo, se 85% das instâncias precisarem permanecer íntegras durante uma implantação e o grupo de implantação contiver 10 instâncias, a implantação geral falhará se a implementação em uma única instância falhar. Isso ocorre porque, quando uma instância é desconectada para que a última revisão de aplicativo possa ser instalada, a contagem de instâncias íntegras disponíveis já cai para 90%. Uma instância com falha mais outra instância off-line significaria que apenas 80% das instâncias estão íntegras e disponíveis. CodeDeployfalhará na implantação geral.

É importante recordar que a implantação total terá sucesso se os itens a seguir forem alcançados:

  • CodeDeploy é capaz de implantar em cada instância na implantação.

  • A implantação em pelo menos uma instância precisa ser bem-sucedida. Isso significa que, mesmo se o valor mínimo de hosts íntegros for 0, a implantação em pelo menos uma instância deve ser bem-sucedida, ou seja, no mínimo uma instância precisa estar íntegra. Dessa maneira, a implantação geral será bem-sucedida.

Status de integridade

CodeDeploy atribui dois valores de status de integridade a cada instância: integridade da revisão e integridade da instância.

Integridade da revisão

A integridade da revisão se baseia na revisão de aplicativo atualmente instalada na instância. Ela tem os seguintes valores de status:

  • Current: a revisão instalada na instância corresponde à revisão da última implantação bem-sucedida do grupo de implantação.

  • Old: a revisão instalada na instância corresponde a uma versão mais antiga do aplicativo.

  • Unknown: a revisão de aplicativo não foi instalada com sucesso na instância.

Integridade da instância

A integridade da instância se baseia em se as implementações em uma foram ou não bem-sucedidas. Ela tem os seguintes valores:

  • Healthy: a última implantação na instância foi bem-sucedida.

  • Unhealthy: a tentativa de implantar uma revisão na instância falhou, ou uma revisão ainda não foi implantada na instância.

CodeDeploy usa a integridade da revisão e a integridade da instância para agendar a implantação nas instâncias do grupo de implantação na seguinte ordem:

  1. Integridade de instância - não íntegra.

  2. Integridade da revisão - desconhecida.

  3. Integridade da revisão - antiga.

  4. Integridade da revisão - atual.

Se a implantação geral for bem-sucedida, a revisão será atualizada e os valores do status da integridade do grupo de implantação são atualizados para refletir a implantação mais recente.

  • Todas as instâncias atuais que tiveram uma implantação bem-sucedida permanecerão atuais. Caso contrário, elas se tornarão desconhecidas.

  • Todas as instâncias antigas ou desconhecidas que tiveram uma implantação bem-sucedida se tornarão atuais. Caso contrário, eles permanecerão antigas ou desconhecidas.

  • Todas as instâncias íntegras que tiveram uma implantação bem-sucedida permanecerão íntegras. Caso contrário, elas se tornarão não íntegras.

  • Todas as instâncias não íntegras que tiveram uma implantação bem-sucedida se tornarão íntegras. Caso contrário, eles permanecerão não íntegras.

Se a implantação geral falhar ou for interrompida:

  • Cada instância na qual CodeDeploy tentou implantar a revisão do aplicativo tem sua integridade definida como íntegra ou não íntegra, dependendo se a tentativa de implantação dessa instância foi bem-sucedida ou falhou.

  • Cada instância na qual CodeDeploy não tentou implantar a revisão do aplicativo mantém seu valor atual de integridade da instância.

  • A revisão do grupo de implantação permanecerá a mesma.

Sobre o número mínimo de instâncias íntegras

O número mínimo necessário de instâncias íntegras é definido como parte de uma configuração de implantação.

Importante

Durante uma implantação azul/verde, a configuração de implantação e o valor mínimo de hosts íntegros se aplicam a instâncias no ambiente de substituição, e não ao ambiente original. No entanto, quando as instâncias no ambiente original forem canceladas do balanceador de carga, a implantação geral será marcada como falha se o registro de até mesmo uma única instância original não for cancelado com sucesso.

CodeDeploy fornece três configurações de implantação padrão que normalmente usam valores mínimos de host íntegro:

Nome da configuração de implantação padrão Valor mínimo de hosts íntegros predefinido
CodeDeployDefault. OneAtUma hora 1
CodeDeployDefault. HalfAtUma hora 50%
CodeDeployDefault.AllAtOnce 0

Você encontrará mais informações sobre configurações de implantação padrão em Trabalhando com configurações de implantação em CodeDeploy.

Você pode criar configurações de implantação personalizadas CodeDeploy para definir seus próprios valores mínimos de host íntegro. Você pode definir esses valores como números inteiros ou porcentagens usando as seguintes operações:

CodeDeploy permite que você especifique um número mínimo de instâncias íntegras para a implantação com duas finalidades principais:

  • Para determinar se a implantação geral foi bem-sucedida ou falhou. A implantação será bem-sucedida se a revisão de aplicativo tiver sido implantada com sucesso pelo menos no número mínimo de instâncias íntegras.

  • Para determinar o número de instâncias que devem ser íntegras durante uma implantação para permitir que essa implantação continue.

Você pode especificar o número mínimo de instâncias íntegras para o seu grupo de implantação como um número de instâncias ou como uma porcentagem do número total de instâncias. Se você especificar uma porcentagem, no início da implantação, CodeDeploy converterá a porcentagem no número equivalente de instâncias, arredondando todas as instâncias fracionárias.

CodeDeploy rastreia o status de integridade das instâncias do grupo de implantação durante o processo de implantação e usa o número mínimo especificado de instâncias íntegras da implantação para determinar se a implantação deve continuar. O princípio básico é que uma implantação nunca deve fazer com que o número de instâncias íntegras caia abaixo do número mínimo que você especificou. A única exceção a essa regra é quando um grupo de implantação tem inicialmente menos do que o número mínimo especificado de instâncias íntegras. Nesse caso, o processo de implantação não reduz ainda mais o número de instâncias íntegras.

nota

CodeDeploy tentará implantar em todas as instâncias em um grupo de implantação, mesmo aquelas que estão atualmente em um estado Parado. No cálculo do mínimo de hosts íntegros, uma instância interrompida tem o mesmo impacto que uma instância com falha. Para resolver falhas de implantação devido a muitas instâncias interrompidas, reinicie instâncias ou altere suas tags para excluí-las do grupo de implantação.

CodeDeploy inicia o processo de implantação tentando implantar a revisão do aplicativo nas instâncias não íntegras do grupo de implantação. Para cada implantação bem-sucedida, CodeDeploy altera o status de integridade da instância para íntegro e o adiciona às instâncias íntegras do grupo de implantação. CodeDeploy em seguida, compara o número atual de instâncias íntegras com o número mínimo especificado de instâncias íntegras.

  • Se o número de instâncias íntegras for menor ou igual ao número mínimo especificado de instâncias íntegras, CodeDeploy cancela a implantação para garantir que o número de instâncias íntegras não diminua com mais implantações.

  • Se o número de instâncias íntegras for maior que o número mínimo especificado de instâncias íntegras em pelo menos uma, CodeDeploy implanta a revisão do aplicativo no conjunto original de instâncias íntegras.

Se uma implantação em uma instância íntegra falhar, CodeDeploy alterará o status de integridade dessa instância para não íntegra. Conforme a implantação progride, CodeDeploy atualiza o número atual de instâncias íntegras e o compara com o número mínimo especificado de instâncias íntegras. Se o número de instâncias íntegras cair para o número mínimo especificado em qualquer ponto do processo de implantação, a implantação CodeDeploy será interrompida. Essa prática impede a possibilidade de falha da próxima implantação, diminuindo o número de instâncias íntegras​abaixo do mínimo especificado.

nota

Certifique-se de que o número mínimo de instâncias íntegras que você especificar seja menor que o número total de instâncias no grupo de implantação. Se você especificar um valor percentual, lembre-se de que ele será arredondado. Caso contrário, quando a implantação começar, o número de instâncias íntegras já será menor ou igual ao número mínimo especificado de instâncias íntegras e CodeDeploy falhará imediatamente na implantação geral.

CodeDeploy também usa o número mínimo especificado de instâncias íntegras e o número real de instâncias íntegras para determinar se e como implantar a revisão do aplicativo em várias instâncias. Por padrão, CodeDeploy implanta a revisão do aplicativo no maior número possível de instâncias sem nenhum risco de que o número de instâncias íntegras fique abaixo do número mínimo especificado de instâncias íntegras.

Para determinar o número de instâncias que devem ser implantadas de uma só vez, CodeDeploy use o seguinte cálculo:

[total-hosts] - [minimum-healthy-hosts] = [number-of-hosts-to-deploy-to-at-once]

Por exemplo: .

  • Se seu grupo de implantação tiver 10 instâncias e você definir o número mínimo de instâncias íntegras como 9, CodeDeploy implanta em 1 instância por vez.

  • Se seu grupo de implantação tiver 10 instâncias e você definir o número mínimo de instâncias íntegras como 3, CodeDeploy implanta em 7 instâncias ao mesmo tempo no primeiro lote e depois nas 3 restantes no segundo lote.

  • Se seu grupo de implantação tiver 10 instâncias e você definir o número mínimo de instâncias íntegras como 0, CodeDeploy implanta em 10 instâncias ao mesmo tempo.

Exemplos

Os exemplos a seguir supõem um grupo de implantação com 10 instâncias.

Instâncias mínimas íntegras: 95%

CodeDeploy arredonda o número mínimo de instâncias íntegras para até 10 instâncias, o que equivale ao número de instâncias íntegras. A implantação global falhará imediatamente sem implantar a revisão em uma instância.

Instâncias mínimas íntegras: 9

CodeDeploy implanta a revisão em uma instância por vez. Se a implantação em qualquer uma das instâncias falhar, a implantação geral falhará CodeDeploy imediatamente, pois o número de instâncias íntegras é igual ao número mínimo de instâncias íntegras. A exceção a essa regra é que, se a última instância falhar, a implantação ainda será bem-sucedida.

CodeDeploy continua a implantação, uma instância por vez, até que qualquer implantação falhe ou a implantação geral seja concluída. Se todas as 10 implantações forem bem-sucedidas, o grupo de implantação tem 10 instâncias íntegras.

Instâncias mínimas íntegras: 8

CodeDeploy implanta a revisão em duas instâncias por vez. Se duas dessas implantações falharem, a implantação geral falhará CodeDeploy imediatamente. A exceção a essa regra é que, se a última instância for a segunda a falhar, a implantação ainda será bem-sucedida.

Instâncias mínimas íntegras: 0

CodeDeploy implanta a revisão em todo o grupo de implantação de uma só vez. A menos uma implantação a uma instância deve suceder para implantação total suceda. Se 0 instâncias estiverem íntegras, então a implantação falhará. Isso ocorre porque, para marcar uma implantação geral como bem-sucedida, no mínimo uma instância precisa estar íntegra quando a implantação geral for concluída, mesmo que o valor mínimo de instâncias íntegras seja 0.

Sobre o número mínimo de instâncias íntegras por zona de disponibilidade.

nota

Esta seção utiliza os termos instância e host de forma intercambiável para se referir às instâncias do Amazon EC2.

Se você estiver implantando em instâncias em várias zonas de disponibilidade, você pode habilitar opcionalmente o zonal configuration recurso, que permite CodeDeploy implantar em uma zona de disponibilidade por vez.

Quando esse recurso estiver ativado, CodeDeploy garantirá que o número de hospedeiros saudáveis permaneça acima dos valores de “hospedeiros saudáveis mínimos por zona” e dos valores de “hospedeiros saudáveis mínimos”. Se o número de hosts íntegros ficar abaixo de qualquer um dos valores, a implantação CodeDeploy falhará em todas as zonas de disponibilidade.

Para calcular o número de hosts nos quais implantar de uma só vez, CodeDeploy use os valores de “hosts íntegros mínimos por zona” e “hosts íntegros mínimos”. CodeDeploy usará o menor dos cálculos [A] e[B], onde [A] e onde [B] estão:

[A] = [total-hosts] - [min-healthy-hosts] = [number-of-hosts-to-deploy-to-at-once]
[B] = [total-hosts-per-AZ] - [min-healthy-hosts-per-AZ] = [number-of-hosts-to-deploy-to-at-once-per-AZ]

Depois de determinar o número de hosts nos quais implantar de uma vez, CodeDeploy implanta nos hosts em lotes desse número, uma zona de disponibilidade por vez, com uma pausa opcional (ou “tempo de cozimento”) entre as zonas.

Exemplo

Se a implantação estiver configurada como:

  • [total-hosts] é 200

  • [minimum-healthy-hosts] é 160

  • [total-hosts-per-AZ] é 100

  • [minimum-healthy-hosts-per-AZ] é 50

Então...

  • [A] = 200 - 160 = 40

  • [B] = 100 - 50 = 50

  • 40 é menor que 50

Portanto, CodeDeploy será implantado nos 40 hosts de uma só vez.

Nesse cenário, a implantação ocorre da seguinte forma:

  1. CodeDeploy é implantado na primeira zona de disponibilidade:

    1. CodeDeploy é implantado nos primeiros 40 hosts.

    2. CodeDeploy é implantado nos próximos 40 hosts.

    3. CodeDeploy é implantado nos 20 hosts restantes.

      A implantação na primeira zona de disponibilidade agora está concluída.

  2. (Opcional) CodeDeploy aguarda enquanto a implantação na primeira zona “cozinha”, conforme definido pela configuração Duração do monitor ou Adicionar uma duração do monitor para a primeira zona. Se não houver problemas, CodeDeploy continua.

  3. CodeDeploy é implantado na segunda zona de disponibilidade:

    1. CodeDeploy é implantado nos primeiros 40 hosts.

    2. CodeDeploy é implantado nos próximos 40 hosts.

    3. CodeDeploy é implantado nos 20 hosts restantes.

      A implantação na segunda zona de disponibilidade final agora está concluída.

Para saber mais sobre o recurso de configuração de zonas e como especificar o número mínimo de instâncias íntegras por zona de disponibilidade, consulte zonal configuration.