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)?