Eu tenho uma configuração de aplicativo Web com um balanceador de carga e um grupo de dimensionamento automático para gerenciar o dimensionamento. O código-fonte está em um repositório git, então não preciso atualizar as imagens quando o código for alterado, mas ocasionalmente o ambiente muda, para criarmos uma nova imagem. Em seguida, essa imagem precisa ser alternada para o grupo de dimensionamento automático.
Existe uma maneira de alternar as imagens automaticamente? No momento, planejo uma ação de aumento e redução que se livra das instâncias antigas.
amazon-ec2
amazon-web-services
autoscaling
plataformas
fonte
fonte
as-set-instance-health
íntegra (por exemplo, usando ), para que o dimensionamento automático simplesmente o substitua por uma nova instância.Respostas:
Gostaria de sugerir "AWS-HA-Release" para fazer isso - da maneira que o AWS-HA-Release funciona:
Nesse caso, você pode enviar um novo código ou novas versões da AMI sem tempo de inatividade e se beneficiar de instâncias totalmente novas. A ferramenta AWS-HA-Release está disponível em https://github.com/colinbjohnson/aws-missing-tools .
fonte
A maneira mais fácil é aumentar o número de instâncias mínimas no ASG (Auto-Scaling Group) para dobrar sua contagem atual, aguardar quando todas elas forem iniciadas e depois alterar esse número mínimo de instâncias para o que era. O ELB matará instâncias mais antigas e deixará instâncias mais novas com código. Para alcançar essa política de rescisão, deve ser definido como ' OldestInstance ' para funcionar como pretendido. A política de encerramento padrão pode ter efeitos colaterais indesejados.
Você pode consultar os parâmetros e exemplos da AWS CLI aqui: http://docs.aws.amazon.com/cli/latest/reference/autoscaling/update-auto-scaling-group.html
fonte
A maneira como gerencio esse cenário é usar o recurso UpdatePolicy do objeto AWS :: AutoScaling :: AutoScalingGroup na formação da nuvem. Quando a pilha de formação de nuvens é atualizada, ele gerencia o ciclo das instâncias.
algumas referências. http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-group.html http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-updatepolicy .html
fonte
Veja também a ferramenta Netflix Asgard , que agora é de código aberto. Além de configurar grupos de dimensionamento automático, também pode executar lançamentos contínuos de novas imagens da AMI para um grupo de instâncias.
fonte
Na verdade, não há uma maneira realmente boa de fazê-lo para ser honesto. A melhor maneira de encontrar isso é colocar uma versão no nome ASG. Sempre que atualizo a AMI, crio um novo ASG + Launch Config com a nova versão, para que não entre em conflito com o outro grupo. Então, encerro todas as instâncias no grupo antigo.
Se uma implantação mais tolerante a falhas for necessária, recomendo adicionar outra etapa, envolvendo a criação de um novo loadbalancer. Isso permite que você tenha ambos ASG isolados um do outro. Também permite que você tenha uma área "Preparo" para testar suas alterações uma última vez antes de atualizar. Quando estiver pronto para alternar, atualize os registros DNS e encerre todas as instâncias no grupo antigo.
fonte
Como eu postei aqui (pergunta semelhante, apenas com o Terraform), ele não é incorporado ao ASG de forma alguma, exceto se você usar a formação de nuvens. Eu lutei com isso também, então acabei escrevendo um "rolo" que assiste a vários ASG, verifica seu estado e atualizações. Sempre feliz em receber feedback. http://github.com/deitch/aws-asg-roller
fonte