Servidores EC2 com dimensionamento automático e código de atualização

4

Chegamos ao ponto em que precisamos configurar o escalonamento automático para nosso servidor da Web e não tenho certeza de como proceder para dimensionar servidores e atualizar o código existente sem refazer uma nova AMI e alterar o escalonamento automático config para usá-lo.

Eu li um pouco sobre as pessoas agruparem o novo código e enviá-lo para o s3 e ter novos servidores agarrando o pacote no boot, mas isso também não parece muito agradável.

Atualmente, os arquivos do aplicativo da web residem em um repositório do git e, quando atualizamos o código, o enviamos para o github, ssh no aplicativo da web e executamos um hook para derrubar o código mais recente.

Então eu estava pensando que outra opção seria apenas executar esse gancho em uma tarefa cron por hora ou por dia. Infelizmente, isso não cobre todo tipo de atualização (por exemplo, imagens de novas postagens de blogs e outras que não estão incluídas no repositório do git), mas é algo.

Alguém poderia fornecer alguns conselhos sobre o que é uma solução comum ou qualquer outra coisa sobre por que minha solução proposta é uma má idéia?

Obrigado a todos

    
por jstats 13.11.2012 / 08:09

2 respostas

2

Sou fã de criar novas AMIs para grandes lançamentos e mudanças no sistema, mas para lançamentos menores também gosto de ter caixas configuradas para fazer uma git pull na inicialização para atualizar apenas a base de código. Nós lançamos pequenas alterações de código regularmente, então o ônus de criar novas AMIs não vale a pena.

Depois que a máquina estiver em funcionamento, acho que é melhor usar ferramentas como o capistrano para fazer implementações no estilo push. Não gosto de ver o novo lançamento automático de código para um servidor com tarefas agendadas, pois é muito mais difícil lidar com exceções. Inevitavelmente, alguém enviará o código para o repositório que precisa reverter e, enquanto isso, os cronjobs podem acionar e lançar o código errôneo.

A questão principal é que, quando uma nova instância é criada em um contexto de escalonamento automático, ela pode se atualizar com a última base de código autônoma.

    
por 13.11.2012 / 08:21
2

A recomendação da Amazon é que a AMI de escalonamento automático deva ser capaz de se configurar completamente na inicialização. Então, para um bom aplicativo na nuvem, você deve ter sua AMI para se reportar a algum armazenamento de configuração central (S3?) E pegar o código / configs. A configuração central pode ser usada para obter informações sobre instâncias em execução para enviar novas versões de software, etc. O conteúdo estático também deve ser colocado no S3, para que não dependa de instâncias de código / execução.

    
por 13.11.2012 / 10:46