Fiz atualizações no meu grupo do Auto Scaling, mas não obtive os resultados esperados durante uma atualização da pilha do AWS CloudFormation.
Breve descrição
O recurso AWS::AutoScaling::AutoScalingGroup usa o atributo UpdatePolicy para definir como um recurso de grupo do Auto Scaling é atualizado quando a pilha do AWS CloudFormation é atualizada. Se você não tiver as configurações corretas definidas para o atributo UpdatePolicy, sua atualização contínua poderá produzir resultados inesperados.
Você pode usar a política AutoScalingRollingUpdate para controlar como o AWS CloudFormation lida com atualizações contínuas de um grupo do Auto Scaling. Essa abordagem comum mantém o mesmo grupo do Auto Scaling e, em seguida, substitui as instâncias antigas com base nos parâmetros definidos por você.
Observação: a resolução a seguir se concentra somente na política AutoScalingRollingUpdate. Você pode usar a política AutoScalingReplacingUpdate para reverter imediatamente a pilha sem falhas.
A política AutoScalingRollingUpdate oferece suporte às seguintes opções de configuração:
"UpdatePolicy": {
"AutoScalingRollingUpdate": {
"MaxBatchSize": Integer,
"MinInstancesInService": Integer,
"MinSuccessfulInstancesPercent": Integer,
"PauseTime": String,
"SuspendProcesses": [ List of processes ],
"WaitOnResourceSignals": Boolean
}
}
Resolução
Para descobrir o que está impedindo que seu grupo do Auto Scaling seja atualizado corretamente durante uma atualização de pilha, resolva os seguintes cenários de solução de problemas, conforme necessário:
Configure WaitOnResourceSignals e PauseTime para evitar problemas com sinais de sucesso
Na política AutoScalingRollingUpdate, defina a propriedade WaitOnResourceSignals como falsa.
**Observação:**se WaitOnResourceSignals estiver definido como verdadeiro, PauseTime será alterado para um valor de tempo limite. O AWS CloudFormation espera receber um sinal de sucesso até o tempo máximo especificado pelo valor PauseTime. Se um sinal não for recebido, o AWS CloudFormation cancela a atualização. Em seguida, o AWS CloudFormation reverte a pilha com as mesmas configurações, incluindo o mesmo valor PauseTime. Para mais informações, consulte Adicionar uma UpdatePolicy a um grupo do Auto Scaling.
Configure MinSuccessfulInstancesPercent para evitar a reversão da pilha
Se você estiver substituindo um grande número de instâncias durante uma atualização contínua e estiver aguardando um sinal de sucesso para cada instância, defina o valor da propriedade MinSuccessfulInstancesPercent em sua política AutoScalingRollingUpdate.
Observação: configurar a propriedade MinSuccessfulInstancesPercent impede que o AWS CloudFormation reverta toda a pilha se apenas uma única instância falhar na inicialização. Para mais informações, consulte Atributo UpdatePolicy.
Configure SuspendProcesses para evitar alterações inesperadas no grupo Auto Scaling
Durante uma atualização contínua, suspenda os seguintes processos do Auto Scaling:
- HealthCheck
- ReplaceUnhealthy
- AZRebalance
- AlarmNotification
- ScheduledActions
Importante: se você estiver usando seu grupo do Auto Scaling com o Elastic Load Balancing, não suspenda os seguintes processos: Iniciar, Encerrar e AddToLoadBalancer. Esses processos são necessários para fazer atualizações contínuas.
Observação: se uma ação de escalabilidade inesperada alterar o estado do grupo do Auto Scaling durante uma atualização contínua, a atualização poderá falhar. A falha pode resultar de uma visão inconsistente do grupo do Auto Scaling da AWS CloudFormation.