Como posso reciclar automaticamente uma nova imagem em um grupo do AWS Auto Scaling?

19

Eu tenho uma configuração de aplicativo da web com um balanceador de carga e um grupo de escalonamento 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 muda, mas ocasionalmente o ambiente muda, então criamos uma nova imagem. Então essa imagem precisa ser reciclada no grupo de escalonamento automático.

Existe uma maneira de reciclar as imagens automaticamente? No momento, eu programo uma ação de aumento de escala e escala que elimina as antigas instâncias.

    
por platforms 30.04.2012 / 19:59

6 respostas

10

Gostaria de sugerir "AWS-HA-Release" para fazer isso - o modo como o AWS-HA-Release funciona:

  1. Se o grupo de escalonamento automático atual e o ELB relatarem cinco ocorrências saudáveis,
  2. O AWS-HA-Release traz uma nova instância para produção e espera que o ELB a identifique como saudável (leve o número total de instâncias saudáveis para 6)
  3. Remove uma instância antiga (total até 5)
  4. coloca outra instância em serviço (total para 6)
  5. Remove uma instância antiga (total até 5)
  6. e assim por diante até que todas as instâncias tenham sido substituídas

Nesse caso, você pode enviar novo código ou novas versões da AMI sem tempo de inatividade e ter o benefício de instâncias totalmente novas. A ferramenta AWS-HA-Release está disponível no link .

    
por 12.11.2012 / 05:05
7

A maneira mais fácil é aumentar o número de instâncias mínimas em ASG para o dobro da sua contagem atual de espera quando todas elas forem iniciadas e, em seguida, alterar esse número mínimo de instâncias para o que era. O ELB vai matar as instâncias mais antigas e deixará as novas instâncias com código.

Você pode ver os parâmetros e exemplos do AWS CLI aqui: link

    
por 07.04.2017 / 14:36
5

a maneira como eu gerencio esse cenário é usar o recurso UpdatePolicy do objeto AWS :: AutoScaling :: AutoScalingGroup na formação de nuvens. quando a pilha de formação de nuvens for atualizada, ela gerenciará o ciclo das instâncias.

algumas referências. link link

    
por 07.04.2015 / 03:42
3

Também dê uma olhada na ferramenta Netflix Asgard que agora é de código aberto. Além de configurar grupos de escalonamento automático, ele também pode executar lançamentos contínuos de novas imagens da AMI para um grupo de instâncias.

    
por 17.11.2012 / 14:12
0

Não há realmente uma maneira realmente boa de fazer isso para ser honesto. A melhor maneira que encontrei para fazer isso é colocar uma versão no nome ASG. Toda vez que eu atualizar o AMI, eu crio um novo ASG + Launch Config com a nova versão para que ele não entre em conflito com o outro grupo. Então termino todas as instâncias do grupo antigo.

Se for necessária uma implementação mais tolerante a falhas, recomendo adicionar outra etapa envolvendo também a criação de um novo balanceador de carga. Isso permite que você tenha ambos os ASG isolados uns dos outros. Também permite que você tenha uma área "Staging" para testar suas alterações uma última vez antes de atualizar. Então, quando você estiver pronto para mudar, atualize os registros DNS e encerre todas as instâncias do grupo antigo.

    
por 01.05.2012 / 17:41
0

Como publiquei aqui (questão semelhante, apenas com o Terraform), ele não é construído de forma alguma no ASG, exceto se você usar cloudformation. Eu também lutei com isso, então acabei escrevendo um "rolo" que assiste múltiplos ASG, verifica seu estado e atualizações. Sempre feliz em receber feedback. link

    
por 21.11.2018 / 11:02