Pasta de arquivos compartilhados no ambiente do Amazon Elastic Beanstalk

4

Estou trabalhando em um aplicativo Drupal, que deve ser hospedado no ambiente do Amazon Elastic Beanstalk. Basicamente, o Elastic Beanstalk permite que o aplicativo seja dimensionado automaticamente iniciando instâncias adicionais do servidor da Web com base em regras predefinidas. O banco de dados compartilhado está sendo executado em uma instância do Amazon RDS, que todas as instâncias podem acessar corretamente. O problema é a pasta arquivos compartilhados (sites / default / files).

Estamos usando git como SCM e, com isso, podemos implantar novas versões executando $ git aws.push . No fundo, o Elastic Beanstalk exclui automaticamente ( $ rm -rf ) a base de código atual de todos os servidores em execução no ambiente e implanta a nova versão.

O plano era usar o S3 (s3fs) para arquivos compartilhados no ambiente de preparação e NFS no ambiente de produção. Conseguimos configurar o ambiente na medida em que a pasta de arquivos compartilhados é montada após a reinicialização corretamente. Mas ...

O problema é que, nesta configuração, a implementação de novas versões em instâncias em execução falha porque $ rm -rf não pode remover o diretório montado e, como resultado, todo o ambiente fica inativo e precisamos reiniciar o ambiente, o que não é realmente uma solução elegante.

A pergunta # 1 é qual seria a maneira correta de gerenciar arquivos compartilhados nesse tipo de implantação? Você está executando esse ambiente? Como você resolveu o problema?

Ao olhar para o código do Elastic Beanstalk Host (Ruby), parece haver uma maneira de ligar nossa funcionalidade (desmontar se montado na pré-implementação e montar na pós-implementação) no Hostmanager (/ opt / hostmanager / srv / lib / elasticbeanstalk /hostmanager/applications/phpapplication.rb) mas os scripts definidos no arquivo (ex. /tmp/php_post_deploy_app.sh) não parecem estar funcionando. Isso pode ser porque nossas habilidades de Ruby são inexistentes.

Pergunta # 2 é que você conseguiu prender sua funcionalidade no Hostmanager de maneira portátil (ou seja, não alterando os arquivos principais do Hostmanager)?

    
por por 07.10.2012 / 11:34

1 resposta

0

Você considerou usar sources via .ebextensions com seus arquivos compartilhados armazenados no S3?

link

Eu usei sources para implantar arquivos compartilhados (sitemaps) que são criados pelo nosso servidor de aplicativos (e armazenados no S3).

sources: 
  "c:/inetpub/sitemaps": http://[S3 bucket]/sitemaps.zip

container_commands:
  01-copy-sitemaps-to-www:
    command: copy c:\inetpub\sitemaps\*.* c:\inetpub\wwwroot\ > copy_sitemaps_to_www.log 2>&1
    waitAfterCompletion: 5
    
por 15.01.2015 / 02:11